Top vector database choices in 2023

In today’s AI-driven world, the importance of efficient data management cannot be overstated. Vector databases play a crucial role in providing the infrastructure for ML applications. In this article, we will explore the significance of vector databases in AI and examine the current top vector database options available in the market.

Continue reading

Flutter databases in 2023 – an overview

Flutter databases are databases specifically designed to give Flutter / Dart apps fast data persistence. Other databases can be used depending on the database and use case, but in our experience Flutter databases are easier to use and faster in Flutter/Dart apps. Note: Because “Dart” is such an ambiguous term, “Flutter database” is the established terminology (even though from a tech perspective it is not a great name).

As a Flutter app developer, selecting the right local database is important. After a market overview and terminology, we’ll compare the most popular options (ObjectBox, sqflite, Drift, Floor, Isar, Sembast, Realm) in a matrix.

Continue reading
Embedded Databases explained

Embedded databases explained

Accelerated by the Corona pandemic, exploding numbers of connected devices and data volumes drive a shift towards decentralized Edge Computing and with it the need for embedded database management systems continues to grow rapidly. Analysts expect the Embedded Database market to grow by 60% annually (CAGR) from 2022-2029.  

What is an Embedded Database?

What is a database vs. a DBMS?

A “database” is an organized collection of (structured or unstructured) data, typically stored electronically in a computer system. The most common database operations are Create, Read, Update, Delete (CRUD). “Database Management System” (or DBMS) refers to the piece of software for storing and managing that data. However, often the term “database” is also used loosely to refer to a DBMS, and you will find most DBMS only use the term database in their name and communication.

What does “embedded” mean in the database world?

The term “embedded” can mean two different things when used in the context of databases:

  1. Database for embedded systems” is a database specifically designed to be used in embedded systems. Embedded systems are systems consisting of a deeply integrated hardware / software combination, e.g. electronic control units (ECUs), IoT devices. A database for such systems must have
    • a small footprint and
    • be optimised to run on highly restricted hardware
    • thrifty with resource-use, e.g. CPU, Memory, Battery.
  2. Embedded database”: this means that the database is deeply integrated in the software / application. Also referred to as an “embeddable database”,  “embedded database management system” or “embedded DBMS (Database Management System)”. 
Continue reading

Database tutorial for a C++ beginner

C++ data persistence beginner tutorial – get started with ObjectBox

Are you a C++ beginner looking for a C++ database that is easy to use? In this tutorial, we’ll explain how you can install ObjectBox on Windows, even if you have never worked with an external library before. Your best option might be to set up a Linux subsystem (WSL2) first. After that, we will install the build tools and some useful development software such as CMake and Git. When this setup is ready, we can jump right into installing ObjectBox and running a simple example with it. We encourage you to explore its source code to get a grasp of ObjectBox in action.

Why use the ObjectBox C++ database as a C++ beginner?

Almost any program that stores some kind of data will benefit from incorporating a database into it. By storing data systematically, you will always be able to easily access, manipulate and search for different entries. Because of its flexibility, a NoSQL database will make a great fit for your first project and will serve you well further down the road. ObjectBox is not an ORM, so you do not need to learn another programming language, and can get started in minutes. ObjectBox uses native C++ APIs, which can be intuitively understood if you have any C++ experience. Furthermore, if you want high performance or your project is created with scalability in mind, a NoSQL database like ObjectBox might be the only viable option.

Continue reading

Objectbox database for Java / Kotlin 3.0

ObjectBox Android database for Java / Kotlin 3.0 + performance benchmarks

ObjectBox – the high performance Android database for Java / Kotlin – goes 3.0 ❤️ and apart from features. the dev team is also sharing CRUD performance benchmarks including MongoDB Realm and SQLite with Room. ObjectBox Database has been used by over 800,000 developers since the 1.0 release for Android and apart from Java / Kotlin for Android, the ObjectBox DB also has C/C++, Go, Flutter/Dart, Swift bindings now and a superfast Data Sync.

What is ObjectBox?

ObjectBox is a NoSQL ACID-compliant object database and an alternative to SQLite and Room. ObjectBox is optimized for fast object persistence on restricted devices, typically “embedded devices”, sometimes called “edge devices” like e.g. smartphones, IoT gateways, PoS systems, or Controlling Units. Because most applications today include any number of decentralized connected devices, ObjectBox also provides fast and easy access to decentralized edge data through an out-of-the-box Data Sync solution (Early Access).

Continue reading

Flutter Databases Compared

What is the best Flutter Database?

Flutter Database options are still limited. We compare the available alternatives, and share performance benchmarks. 

How to persist data in Flutter / Dart?

The database market is a long-established saturated market and still experiencing double-digit growth. Most of that growth stems from NoSQL databases and newer database technologies, like time-series databases or graph databases. As Computing is shifting towards Decentralized Computing on the Edge, local databases that support decentralized data flows on Mobile, IoT, and other Embedded Devices come into focus. Some come from the Flutter data persistence world, and we will take a look at them in a second.

databases-time-history

Before we dive into the Flutter database options and compare them, we’re quickly carifying the term to make sure we share a common ground. Don’t worry, we’ll not get theoretical, but simply make sure we share a common language.

Continue reading

Mobile databases: SQLite and SQLite alternatives for Android and iOS

UPDATED 2023 A long time ago at Droidcon Berlin, we noticed a lot of questions around databases. Many people weren’t aware of SQLite alternatives and the differentiation between databases and Object-Relational Mappers (ORMs). Therefore, we followed up with an overview of the local database landscape (Edge Databases), which we maintain ever since. We just updated the comparison table in June 2023.

Why use a local database on mobile?

There are some advantages associated with using a local database (Edge Database):

  • Always works: full offline modus for apps that depend on stored data
  • Manageable costs: Frugal on bandwidth for apps that depend on stored data
  • Speed: fast and predictable performance independent from network availability
  • Data Privacy: personal data can be stored with the user, where some say they belong)

Continue reading

EventBus 3.2 with incremental annotation processing

EventBus 3.2.0 is now available on Maven Central. In 2020, seven years since version 1.0, EventBus is still one of the most used Android libraries. This update addresses advancements in the Gradle build system and supporting Android libraries.

EventBus 3.2 adds incremental processing to the EventBus annotation processor. This can greatly reduce build times – if all involved annotation processors play along (e.g. ObjectBox is getting there too).

The EventBus annotation processor is used when building EventBus with a subscriber index. This is now recommended for all Android apps. It improves run time performance and avoids crashes by looking up subscriber methods via reflection.

EventBus 3.2 also improves support for JetPack/AndroidX. When looking for @Subscribe methods, it now ignores all base classes from the androidx package and its subpackages, e.g. AppCompatActivity (from androidx.appcompat.app) or Fragment (from androidx.fragment.app). Before 3.2, those classes were scanned using reflection, regardless if a subscriber index was available or not.

Those two changes make EventBus faster and more resilient and we hope you consider making this update soon.

The EventBus library is free open source software. If you like it, we appreciate a star on GitHub, a tweet, or any feedback to us. If you use EventBus in a cool app that is a great showcase for its usefulness, we would love to share a case study with our community. Please get in touch.

EventBus 3.1 with plain Java support

With over 25% of the top Android apps using it, EventBus is more popular than ever before. So we’re very happy to announce EventBus 3.1 today. Starting with this release, EventBus works with plain Java (non-Android) projects. This has two major benefits: Firstly, it opens up EventBus for all Java developers and makes it usable for server and desktop applications. Secondly, it allows Android developers to use EventBus in local unit tests. Before, you had to use instrumentation tests which are slow and require a device. In contrast to this, plain Java unit tests are blazingly fast as they run directly on your desktop machine.
Continue reading