DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

ObjectBox


ObjectBox is an object-oriented DBMS library built for IoT and mobile devices. ObjectBox supports several programming languages (Java, C/C++, Go, Swift, Kotlin, and Python) and runs on multiple platforms (Linux, Windows, Mac/iOS, and Android).[05][01]

Country of Origin
DE
Start Year
2016 [16]
Project Types
Commercial, Open Source
Written in
C, C++, Go, Java, Python, Swift
Supported Languages
C, C++, Go, Java, Kotlin, Python, Swift
Embeds / Uses
LMDB
License
Apache v2
Twitter
@ObjectBox[04]

ObjectBox stores objects 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.

Database Entry

ObjectBox


ObjectBox is an object-oriented DBMS library built for IoT and mobile devices. ObjectBox supports several programming languages (Java, C/C++, Go, Swift, Kotlin, and Python) and runs on multiple platforms (Linux, Windows, Mac/iOS, and Android).

ObjectBox stores objects 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.[05][01]

History[06][07][08]


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 build a NoSQL object-oriented DBMS from scratch, which is ObjectBox. ObjectBox' first public beta release was on 2017/1/24.

The author of ObjectBox is Markus Junginger.

Concurrency Control[05]


Data Model[01]


ObjectBox is object-oriented. Objects are stored directly without another layer of relational tables.

Foreign Keys[09]


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.

Indexes[10]


B+ tree based with 3 different options: value, 32 bit hash, 64 bit hash (hashes for string values only)

Isolation Levels


Joins[11]


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 Compilation[12]


A query builder "compiles" query objects by setting up using code pointers that check criteria

Query Interface[13]


ObjectBox provides builder APIs for creating queries. Created queries are reusable by setting different parameters.

Storage Architecture[14]


Low-level mmap approach taking care of OS in-memory caches and ACID compliant disk storage

Storage Model


Storage Organization


Stored Procedures


The DB itself don't have stored procedures, but it can be implemented using functions in the corresponding programming language when run as an embedded database.

System Architecture[15]


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.

Views


Citations

16 sources
  1. ObjectBox, the edge vector database objectbox.io
  2. ObjectBox · GitHub github.com
  3. https://objectbox.io/documentation objectbox.io Dead — Check Archive
  4. https://twitter.com/ObjectBox.io twitter.com
  5. Transactions | ObjectBox Docs objectbox.io
  6. Java Release History (<= v1.5) | ObjectBox Docs objectbox.io
  7. greenDAO: Android ORM for your SQLite database - Open Source by greenrobot greenrobot.org
  8. greenrobot (Markus Junginger) · GitHub github.com
  9. Relations | ObjectBox Docs objectbox.io
  10. Entity Annotations | ObjectBox Docs objectbox.io
  11. ObjectBox Queries | ObjectBox Docs objectbox.io
  12. objectbox-java/objectbox-java/src/main/java/io/objectbox/query/Query.java at master · objectbox/objectbox-java · GitHub github.com
  13. ObjectBox Queries | ObjectBox Docs objectbox.io
  14. objectbox-java/objectbox-java/src/main/java/io/objectbox/BoxStore.java at master · objectbox/objectbox-java · GitHub github.com
  15. ObjectBox Data Sync: Edge Sync | Offline Sync | Cloud Sync objectbox.io
  16. package rename to io.objectbox github.com
Revision #7