Frequently Asked Questions

Feedback & Support

I have feedback for you...

Great! Let us know how we are doing and where we can improve the ObjectBox database. The best place for questions is stackoverflow with a tag objectbox. For feedback you can drop us a line here: contact [at] objectbox.io. And of course, if you like what you see, you can star the database repo in your language of choice on GitHub or like us on pub.dev

I need help...

Did you check the documentation (Flutter Dart, Java / Kotlin, Go, Swift, C/C++, Data Sync)? We try to make our documentation as extensive as possible, but it’ll always be work-in-progress. If you did not find what you need, please post a question on Stack Overflow using the tag [objectbox]. Our team is monitoring this tag.

I think I found a bug...

Please search the issue tracker (Flutter Dart, Java / Kotlin,  Swift, Go, C/C++) for existing bugs. If you do not find it, please open a new issue. It helps us a lot if you can narrow the issue down a bit and have a reproducible example.

I really need feature xyz...

We also track features requests on the issue tracker(Flutter Dart, Java Kotlin, Swift, Go, C / C++). Please make sure you do a quick search on the existing issues to check if the feature was requested before. If that is the case, a simple “+1” helps us understand its importance.

How can I help?

We’re a small team and you can help us bin many ways, e.g. by providing feedback, helping others by answering questions on stackoverflow, or release tutorials to the community…. Of course, we also appreciate if you want to contribute code, e.g. to the bindings, developing a new binding, building a conncetor to another databases. Again, options are endless 😉  Last not least: Tweets, shares, and likes are always appreciated a lot too. 🙂

Technical – DB

Does ObjectBox support object relations?

Yes. ObjectBox comes with strong relation support and offers features like “lazy/eager loading” for optimal performance.

Is ObjectBox a "zero copy" database?

It depends. Internally and in the C API, ObjectBox does zero-copy reads. Language objects (Java, Go, Swift) require a single copy only.

Are there any threading constrictions?

No. The objects you get from ObjectBox are plain objects without any strings attached. You are safe to pass them around in threads.

On which platforms does ObjectBox run? Which programming languages are supported?

Android (4.0 and above), Linux (64 bit), Windows (64 bit), macOS, iOS, boards like Raspberry Pi. ObjectBox offers several easy-to-use, intuitive native-language APIs: Java, Flutter / Dart, Kotlin, Go, C, C++, and Swift.

Can I use ObjectBox on the desktop/server?

Yes, you can ObjectBox run on the desktop/server side. Contact us for details if you are interested in running ObjectBox in client/server mode or containerized!

Can I use ObjectBox on smart IoT devices?

Yes, you can run the ObjectBox database on any IoT device that runs Linux (or one of the other supported platforms).

How do I rename object properties or classes?

If you only do a rename on the language level, ObjectBox will by default remove the old and add a new entity/property. To do a rename, you must specify the UID. Check the language specific docs how to do so.

Does ObjectBox cache data?

A nice thing about ObjectBox is that it does not do caching – it delegates that to the operating system. The OS usually knows very well how to optimize memory among processes according to their usage patterns.

How does that caching work? How much RAM is used?

The underlying technology is called memory mapping (e.g. mmap on Linux). Simplified, it makes data on disk available in RAM and thus serves as an excellent cache. The management is completely up to the OS, which has significant advantages. In short, it automatically uses more memory if available. And it can operate using very little memory. Thus, there is no need to manage or limit the cache. Adding to this is the fact that ObjectBox itself consumes very little resources (CPU & RAM), and thus leaves more RAM for caching compared to traditional databases.

How many concurrent connections can ObjectBox support?

We have seen 100.000 **concurrent** clients connected to a single machine. Depending on the details of your application, a single machine might already be able to serve the need. But of course, you would want to have a cluster anyway for different reasons. Thus, the load can be shared among the cluster nodes for additional scaling.

Technical – Sync

Can ObjectBox Sync server run on my own server, in the cloud?

Yes, ObjectBox can be run on any POSIX system and in any cloud (e.g. AWS/Azure/Google Cloud/etc). If you are familiar with one of these, it’s usually simple to set up. We prefer to put this in your hands, but sometimes we can support this on an hourly basis. As a first step, we still recommend trying out Sync using a simple setup, e.g. run the server on a developer machine.

Can I sync directly from/to PostgreSQL/MySQL/Couchbase/MongoDB/etc.?

ObjectBox syncs between ObjectBox instances. We will eventually support back end DBs with connectors, but for now it needs to be custom built. If you build one, it would be great if you would give it back to the open source community and let us know. If you have more money than time and want us to build one, please reach out via contact[at]objectbox.io.

Does ObjectBox provide cloud hosting?

ObjectBox is an offline-first solution. While we do plan to offer hosting in the future, at the moment the Sync Server can only be self-hosted. You are welcome to use any cloud provider of your choice.

Is P2P sync supported?

Peer-to-peer sync is not yet possible with ObjectBox; it is on the roadmap only. However, ObjectBox Sync might be helpful in your use case even without p2p, as it tracks all changes when the device is offline and syncs them once back online. In our experience, many use cases don’t actually need p2p synchronisation. Also, consider that the Objectbox Sync Server can be hosted on small devices (like e.g. an ECU, a smartphone, a raspberry pi, a laptop) and is therefore perfect for local setups and on-site synchronisation between devices. Learn more about it here: https://sync.objectbox.io/#online-offline

Is ObjectBox Data Sync replication?

No. You can use it for full replication, but ObjectBox Data Sync is much more….

Would ObjectBox be a good fit in my case?

ObjectBox really excels in decentralised systems of restricted devices (like e.g. ECUs in cars) and offline scenarios, where efficiency and reliability matter the most. We have a strong foothold in Mobile and IoT projects, e.g. Connected Cars, Smart Manufacturing Apps, and Consumer Apps. The best way to determine if ObjectBox would be a good fit for your application is to set you up with a free trial, so you can try it hands-on. You can apply for one here: https://objectbox.io/sync.

However, you should be aware that we do not yet support user-specific data sync. This means that all data is shared between all devices/users/etc, which is an important requirement for some projects, while for others the opposite is the case.

Learn more about the limitations here: https://objectbox.io/sync#limitations

License & Pricing

What about Open Source?

We strongly believe in Open Source. With greenDAO and EventBus we have been contributing to open source for years. Therefore, we open sourced the ObjectBox language bindings under the Apache 2.0 license. We think it is the most interesting part for developers and really allows everyone to use ObjectBox. Generally, we want to open source more components at some point, but first we need to figure out some things. We shared a review of the open source landscape in the infrastructure space here. If you need access to the core, please reach out to us individually. We’re currently putting all our efforts in advancing the product. Please contact us if you have questions about this (contact [at] objectbox.io). Thank you.

Here is an overview of the current licenses for a typical Java/Android project that is hopefully helpful:

Package License Usage
Java libraries Apache License, Version 2.0 run time
Gradle plugin GNU General Public License, Version 3 build time
Native libraries ObjectBox Binary Licence run time

Note that the Gradle plugin adds Java and native libraries to your project dependencies as needed.

Maven Central search is a way to see all dependencies and their licenses.

Note that for other languages (e.g. Dart/Flutter) the situation is similar, e.g. the language binding is Apache 2.0 and the native library uses the ObjectBox Binary License.

The current license is temporary only. We will adjust it to be easier and more pragmatic as soon as we can. If you see issues with the current license, please contact us. We’re sure, we can figure it out. We want you to succeed with ObjectBox, and the license should not be an issue.

ObjectBox uses open source software like LMDB and Flatbuffers; find the list of software we love here.

What about Pricing?

The ObjectBox database will always be free to use. We are offering additional commercial services / products for / around ObjectBox database in the future. 

Example for commercial services we offer:

  • Implementing features on top of the database that could be beneficial for your app and solve challenges you might have. Check out sync, and our time series extension.
  • Training: to get you started asap, we can come in and help you integrating ObjectBox in your specific context.
  • Support: If you need professional support agreements, we can help

Still have questions?

Tweet about us

twitter logo

Open an Issue

GitHub open source

Ask a Question

stackoverflow logo