All Projects → objectbox → Objectbox C

objectbox / Objectbox C

Licence: apache-2.0
ObjectBox C and C++: super-fast database for objects and structs

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Objectbox C

Awesome Wp Speed Up
Plugins and resources to speed up and optimize your WordPress site.
Stars: ✭ 375 (+312.09%)
Mutual labels:  database, performance
Orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. OrientDB Community Edition is Open Source using a liberal Apache 2 license.
Stars: ✭ 4,394 (+4728.57%)
Mutual labels:  database, performance
Objectbox Java
ObjectBox is a superfast lightweight database for objects
Stars: ✭ 3,950 (+4240.66%)
Mutual labels:  database, performance
Query track
Find time-consuming database queries for ActiveRecord-based Rails Apps
Stars: ✭ 258 (+183.52%)
Mutual labels:  database, performance
Ansible Role Memcached
Ansible Role - Memcached
Stars: ✭ 54 (-40.66%)
Mutual labels:  database, performance
Database validations
Database validations for ActiveRecord
Stars: ✭ 274 (+201.1%)
Mutual labels:  database, performance
Performance
⏱ PHP performance tool analyser your script on time, memory usage and db query. Support Laravel and Composer for web, web console and command line interfaces.
Stars: ✭ 429 (+371.43%)
Mutual labels:  database, performance
Pg flame
A flamegraph generator for Postgres EXPLAIN ANALYZE output.
Stars: ✭ 1,391 (+1428.57%)
Mutual labels:  database, performance
Active record doctor
Identify database issues before they hit production.
Stars: ✭ 865 (+850.55%)
Mutual labels:  database, performance
Libmdbx
One of the fastest embeddable key-value ACID database without WAL. libmdbx surpasses the legendary LMDB in terms of reliability, features and performance.
Stars: ✭ 729 (+701.1%)
Mutual labels:  database, performance
Immudb
immudb - world’s fastest immutable database, built on a zero trust model
Stars: ✭ 3,743 (+4013.19%)
Mutual labels:  database, performance
Powa Web
PoWA user interface
Stars: ✭ 66 (-27.47%)
Mutual labels:  database, performance
Js Search
JS Search is an efficient, client-side search library for JavaScript and JSON objects
Stars: ✭ 1,920 (+2009.89%)
Mutual labels:  database, performance
Js Worker Search
JavaScript client-side search API with web-worker support
Stars: ✭ 345 (+279.12%)
Mutual labels:  database, performance
Pg stat kcache
Gather statistics about physical disk access and CPU consumption done by backends.
Stars: ✭ 106 (+16.48%)
Mutual labels:  database, performance
Tpt Oracle
Tanel Poder's Troubleshooting & Performance Tools for Oracle Databases
Stars: ✭ 429 (+371.43%)
Mutual labels:  database, performance
Maghead
The fastest pure PHP database framework with a powerful static code generator, supports horizontal scale up, designed for PHP7
Stars: ✭ 483 (+430.77%)
Mutual labels:  database, performance
Pgtune
Pgtune - tuning PostgreSQL config by your hardware
Stars: ✭ 1,078 (+1084.62%)
Mutual labels:  database, performance
Cetus
Cetus is a high performance middleware that provides transparent routing between your application and any backend MySQL Servers.
Stars: ✭ 1,199 (+1217.58%)
Mutual labels:  database, performance
Backoffice Administration
Stars: ✭ 89 (-2.2%)
Mutual labels:  database

ObjectBox C and C++ APIs

ObjectBox is a superfast database and data synchronization solution. 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: 0.13.0 (2021-03-16). See changelog for more details.

Feature Highlights

🏁 High performance: improving response rates and enabling real-time applications.
🪂 ACID compliance: Atomic, Consistent, Isolated, Durable.
🔗 Relations: object links / relationships are built-in.
🌱 Scalable: grows with your needs, handling millions of objects with ease.
💐 Queries: filter data as needed, even across relations.
🦮 Statically typed: compile time checks & optimizations.
💻 Multiplatform: Linux, Windows, Android, iOS, macOS.
📃 Automatic schema migrations: no update scripts needed.
👥 ObjectBox Sync: keeps data in sync between devices and servers.
🕒 ObjectBox TS: time series extension for time based data.

And some more technical details:

  • Zero-copy reads for highest possible performance; access tens of millions of objects on commodity hardware
  • Lightweight for smart devices; its binary size is only around 1 MB (special feature reduced versions with 1/3 - 1/2 size are available on request)
  • Direct support for FlatBuffers data objects (aka "flatbuffers table")
  • Secondary indexes based on object properties
  • Async API for asynchronous puts, inserts, updates, removes
  • Optimized Time series types (TS edition only)
  • Data synchronization across the network (sync edition only)

Usage and Installation

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.

C++ API

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.

Examples

Have a look at the following TaskList example apps, depending on your programming language and preference:

Documentation

Current state / Changelog

The C API is a thin wrapper around a robust DB core, which is version 2.x and already used on millions of devices.

Beta notice: the C API will become stable starting from version 1.0. Until then, API improvements may result in breaking changes. For example, functions may still be renamed.

Changelog: If you update from a previous version, please check the changelog. Besides new features, there may be breaking changes requiring modifications to your code.

Supported platforms:

  • Linux 64-bit
  • Linux ARMv6hf (e.g. Raspberry PI Zero)
  • Linux ARMv7hf (e.g. Raspberry PI 3/4)
  • Linux ARMv8/AArch64 (e.g. Raspberry PI 3/4 with a 64 bit OS like Ubuntu)
  • MacOS 64-bit
  • Windows 32-bit
  • Windows 64-bit

C API as the Foundation for Higher Languages

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.

License

Copyright 2018-2021 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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].