ObjectBox is a lightweight yet powerful on-device database for objects and vectors. The out-of-the-box Data Sync keeps data in sync across devices and any kind of backend/cloud reliably for occasionally connected devices. ObjectBox Data Persistence and Data Sync follows an offline-first approach and can be used on-premise as well as with a cloud setup.
Jobs: We're looking for a C++ Developer with a ❤️ for performant code
This is the ObjectBox runtime library to run ObjectBox as an embedded database in your C or C++ application.
Here's a C++ example that inserts a Task
data object (a plain user defined struct
) into the database:
obx::Box<Task> box(store);
box.put({.text = "Buy milk"});
See ObjectBox C and C++ docs for API details.
Latest version: 4.0.3 (2024-11-11). See changelog for more details.
🧠 First on-device vector database: easily manage vector data and perform fast vector search\ 🏁 High performance on restricted devices, like IoT gateways, micro controllers, ECUs etc.\ 🪂 Resourceful with minimal CPU, power and Memory usage for maximum flexibility and sustainability\ 🔗 Relations: object links / relationships are built-in\ 💻 Multiplatform: Linux, Windows, Android, iOS, macOS
🌱 Scalable: handling millions of objects resource-efficiently with ease\ 💐 Queries: filter data as needed, even across relations\ 🦮 Statically typed: compile time checks & optimizations\ 📃 Automatic schema migrations: no update scripts needed
And much more than just data persistence\ 👥 ObjectBox Sync: keeps data in sync between devices and servers\ 🕒 ObjectBox TS: time series extension for time based data
Some more technical details:
In most cases you want to use the C and C++ APIs in combination with the ObjectBox Generator tool. This way, you get a convenient C or C++ API which requires minimal code on your side to work with the database.
The APIs come as single header file for C and C++:
Compile your code against it and use the binary library (.so, .dylib, .dll depending on the platform) to link against. Head over to ObjectBox C and C++ installation docs for step-by-step instructions.
The C++ API is built on top of the C API exposed by the library (e.g. you still need objectbox.h).
You can also use both APIs from your code if necessary.
For example, you use the C++ obx::Box
class for most database operations, but "break out" into the C API for a special function you need.
Note that to use the obx::Box
class, you also need the ObjectBox Generator to generate binding code.
Find more details how to use it the Getting started section of the docs.
Have a look at the following TaskList example apps, depending on your programming language and preference:
objectbox-generator
objectbox-generator
Please refer to the Changelog for the latest updates and changes. We are (mostly) following Semantic Versioning.
If you update from a previous version, please also check the changelog.
Note that e.g. our Android SDK (part of another repo) also exposes the C API, so you can use ObjectBox in your Android NDK projects.
The plain C API (without the Generator) also serves as a basis for ObjectBox bindings in higher languages. For example, the official APIs for Go, Swift, Dart/Flutter and Python rely on the C API. In the same way, you could create an ObjectBox API for another programming language, e.g. for JavaScript. For the C API, data consists of bytes representing FlatBuffers tables, which you can build and read in your language of choice.
ObjectBox supports multiple platforms and languages. Besides C/C++, ObjectBox also offers:
Let us know what you love, what you don’t, what do you want to see next?
We're looking forward to receiving your comments and requests:
Thank you! 🙏
Keep in touch: For general news on ObjectBox, check our blog!
Copyright 2018-2024 ObjectBox Ltd. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.