Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/couchbaselabs/cbforest
C++ wrapper library around ForestDB, for use in Couchbase Lite.
https://github.com/couchbaselabs/cbforest
Last synced: 1 day ago
JSON representation
C++ wrapper library around ForestDB, for use in Couchbase Lite.
- Host: GitHub
- URL: https://github.com/couchbaselabs/cbforest
- Owner: couchbaselabs
- Created: 2014-04-02T17:23:31.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-10-10T00:35:25.000Z (about 7 years ago)
- Last Synced: 2024-04-12T16:19:11.004Z (9 months ago)
- Language: C++
- Homepage:
- Size: 66.2 MB
- Stars: 17
- Watchers: 163
- Forks: 13
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
**CBForest** is a higher-level C and C++ wrapper around [ForestDB][FDB], a new key-value storage engine based on a hierarchical B+-tree trie data structure. ForestDB is similar in functionality to the [CouchStore][COUCHSTORE] engine that currently underlies Couchbase Server, but it should be faster and more space-efficient, especially on solid-state disks (SSDs).
CBForest adds an idiomatic object-oriented C++ API for ForestDB, and also some new functionality (see below.) Recently a C API with the same functionality has been added, and Java and C# bindings to that C API.
The immediate purpose of CBForest is to serve as the storage engine of the next generation of [Couchbase Lite][CBL] (on all platforms), replacing SQLite. But it may find other uses too, perhaps for applications that want a fast minimalist data store with map/reduce indexing, but don't need any of the fancy features of Couchbase Lite like replication.
## Features
* ForestDB features, available via idiomatic C++, Java and C# APIs:
* Fast key-value storage, where keys and values are both opaque blobs.
* Extremely robust append-only file format with write-ahead log and automatic compaction.
* Reads are never blocked, even while writes or transactions are in progress.
* Iteration by key order.
* Iteration by _sequence_, reflecting the order in which changes were made to the database. (This is useful for tasks like updating indexes and replication.)
* Database encryption using AES-256.* New features implemented by CBForest:
* Optional multi-version document format that keeps a revision tree of the history of each document (as in Couchbase Lite or CouchDB.)
* Index API that uses a database as an index of an external data set.
* Map-reduce indexes that update incrementally as documents are changed in the source DB (as in Couchbase Lite or CouchDB.)
* Limited full-text indexing.
* Limited geo-indexing.
* Support for JSON-compatible structured keys in indexes, sorted according to CouchDB's JSON collation spec.## Platform Support
CBForest runs on Mac OS, iOS, tvOS, Android, various other flavors of Unix, and Windows.
CBForest has been in use since mid-2015 in the iOS/Mac version of [Couchbase Lite][CBL] 1.1, and since early 2016 in the 1.2 release on all the above platforms.
## License
Like all Couchbase source code, this is released under the Apache 2 license.
[FDB]: https://github.com/couchbase/forestdb
[CBL]: http://www.couchbase.com/nosql-databases/couchbase-mobile
[COUCHSTORE]: https://github.com/couchbase/couchstore