ObjectBox is an open-source object-oriented DBMS library built for IoT and mobile devices. ObjectBox supports an extensive list of programming languages, including Java, C/C++, Go, Swift, Kotlin, and Python. Therefore, ObjectBox runs on multiple platforms: Linux, Windows, Mac/iOS, and Android.[04][01]
- Website
- https://objectbox.io/[01]
- Source Code
- https://github.com/objectbox/objectbox-java[02]
- Developer
- Country of Origin
- DE
- Start Year
- 2016 [13]
- Project Types
- Commercial, Open Source
- License
- Apache v2
ObjectBox is an object-oriented DBMS, which means it stores the object directly, instead of storing data in relational DBs and accessing them through an ORM layer. It has full ACID compatibility, provides transaction semantics, and uses MVCC for concurrency control.
ObjectBox was created by the same team that created greenDAO, an Android ORM library, so it also provides briding APIs for greenDAO users.
ObjectBox is an open-source object-oriented DBMS library built for IoT and mobile devices. ObjectBox supports an extensive list of programming languages, including Java, C/C++, Go, Swift, Kotlin, and Python. Therefore, ObjectBox runs on multiple platforms: Linux, Windows, Mac/iOS, and Android.
ObjectBox is an object-oriented DBMS, which means it stores the object directly, instead of storing data in relational DBs and accessing them through an ORM layer. It has full ACID compatibility, provides transaction semantics, and uses MVCC for concurrency control.
ObjectBox was created by the same team that created greenDAO, an Android ORM library, so it also provides briding APIs for greenDAO users.[04][01]
History[05][06]
ObjectBox is presented by greenrobot. In 2011, They first created greenDAO, an Android ORM library that uses SQLite as backend. The team then decided to abandon the SQLite + ORM architecture for better performance and to build a NoSQL object-oriented DBMS from scratch, which is ObjectBox. ObjectBox is first in public beta release on 2017/1/24.
Data Model[01]
ObjectBox is object-oriented. Objects are stored directly without another layer of relational tables.
Foreign Keys[07]
Foreign keys are maintained by relations in each entity. There are 2 kinds of relations: ToOne and ToMany. By combining the type of the relation and the type of the reverse relation, the user can define one-to-one, one-to-many, and many-to-many relations.
Joins[08]
Joins in ObjectBox is implemented using relations stored in each object. Each object stores reference to the other object(s) in the relation, which is similar to index nested loop join.
Query Interface[10]
ObjectBox provides builder APIs for creating queries. Created queries are reusable by setting different parameters.
Stored Procedures
The DB itself don't have stored procedures, but it can be implemented using functions in the corresponding programming language.
System Architecture[12]
The DB runs on IoT and mobile devices and does not share disk or memory with other devices. However, the ObjectBox supports automatic synchronization of data with the backend server. When the server is unavailable (i.e. network failure), the synchronization will stop, and it is restored seamlessly when the server is available again.
Citations
13 sources- ObjectBox, the edge vector database objectbox.io
- GitHub - objectbox/objectbox-java: Database for Android and JVM - first and fast, lightweight on-device vector database · GitHub github.com
- https://objectbox.io/documentation objectbox.io
- Transactions | ObjectBox Docs objectbox.io
- Java Release History (<= v1.5) | ObjectBox Docs objectbox.io
- greenDAO: Android ORM for your SQLite database - Open Source by greenrobot greenrobot.org
- Relations | ObjectBox Docs objectbox.io
- ObjectBox Queries | ObjectBox Docs objectbox.io
- objectbox-java/objectbox-java/src/main/java/io/objectbox/query/Query.java at master · objectbox/objectbox-java · GitHub github.com
- ObjectBox Queries | ObjectBox Docs objectbox.io
- objectbox-java/objectbox-java/src/main/java/io/objectbox/BoxStore.java at master · objectbox/objectbox-java · GitHub github.com
- ObjectBox Data Sync: Edge Sync | Offline Sync | Cloud Sync objectbox.io
- package rename to io.objectbox github.com