-
Notifications
You must be signed in to change notification settings - Fork 0
Home
BeanDB is a small and well designed object database engine.
BeanDB is aimed to be used on database based applications running on "rich" devices, e.g. autonomous driving related vehicle applications, or some AIoT device side applications.
BeanDB is developed in C++.
BeanDB has following characteristics:
- code lines <3000
- size of binary file < 200K
In BeanDB, data are represented as objects (called bean), and data storage are also based on objects. Yes, this is one of the main characteristics of an object database.
In BeanDB, object properties are runtime dynamic. User can add/remove/modify properties of an object at run time according to specific needs. Yes, this is also one of the main characteristics of an object database.
In BeanDB, the bean object is designed to be JSON like (and is internally implemented on top of JSON), so as to make it easy to use for most JSON friendly users.
In BeanDB, properties are strong typed. Value type must be specified explicitly when a property is defined, for example int/real/bool/string etc. This is different from that of JSON.
In BeanDB, the definition of a property is global. The property with the same name always indicates the same semantics. Actually this global uniqueness of property is the guarantee of the validity of the property based search.
It is allowed in BeanDB to attach a JSON value in arbitrary structure (called Native Data) to a bean object. This mechanism makes it possible to save any data in JSON format into a BeanDB database easily.
- Define/Undefine a property (See examples for detail)
- Create/Delete a bean from database (See examples for detail)
- Load a bean object from database/Unload a bean from world (See examples for detail)
- Add/Remove/Set property values for a bean (See examples for detail)
- Add/Remove/Set native data for a bean (See examples for detail)
- Save bean/Save bean property value (See examples for detail)
- Property based search (See examples for detail)
TBD
(Build Environment currently used: Ubuntu 7.5)
- gcc (c++11)
- cmake (>2.8)
- jsoncpp
- sqlite3
./build.sh
(build output is under dist)
./build_examples.sh
(Build output is under build_examples)
./doxy_gen.sh
(Build output is under doc/doxygen/html)
See code examples under examples directory.
- JSON binary storage
- binary property support (blob)
- class hierarchy of objects
- Search/Control via Console (CLI)
- Transaction support
- Query Language support
- More database backend implementation
- Multi-language interfaces
- Backup/Restore
- Cloud-Device synchronization
- and more...
Tony: xiongyee@hotmail.com
LGPL 2.1
**Welcome to join! ** 😄