Question

Is there something akin to SQLite but a document-oriented database as opposed to an RDBMS?

Orient seemed to be something similar to what I was looking for, but it is written in Java, and I'm looking for something I can use from C++.

Ideally this would be a serverless system, like SQLite.

Was it helpful?

Solution

UnQLite

UnQLite is a in-process software library which implements a self-contained, serverless, zero-configuration, transactional NoSQL database engine. UnQLite is a document store database similar to MongoDB, Redis, CouchDB etc. as well a standard Key/Value store similar to BerkeleyDB, LevelDB, etc.

UnQLite is 100% hand-coded, written in ANSI C, Thread-safe, Full reentrant, compiles unmodified and should run in most platforms including restricted embedded devices with a C compiler. UnQLite is extensively tested on Windows and UNIX systems especially Linux, FreeBSD, Oracle Solaris and Mac OS X.

OTHER TIPS

Actually CouchDB is not strictly server-oriented. It's intended to run on a variety of environments. See here for couch on mobile.

Erlang, CouchDB’s implementation language has been designed to run on embedded devices magnitudes smaller and less powerful than today’s phones.

From http://guide.couchdb.org/draft/why.html

Tokyo/Kyoto Cabinet is written in C++, but is a simple key-value store.

See the complete nosql list for other alternatives: http://nosql-database.org/

There is RavenDB, written in .NET, with an embedded version.

Did you consider using Xapian, the C++ counterpart of Lucene? It helps you store and run complex queries on documents with multiple fields.

Another proposal is to use Berkley DB as it is optimized for embedded access to data and very mature. They do not only provide a K/V based access but in addition SQL-like, XML, and Java Object Access. In addition checkout this overview.

Try hamsterdb. It's written in C and it has also C++ support (among others). There are many platforms supported.

I haven't tried myself, but maybe this one would meet your requirements:

--CouchDB

http://couchdb.apache.org/

with

--C++ library for communicating with Apache CouchDB

http://code.google.com/p/couchdbpp/

EDIT.

I have answered too fast I see, as CouchDb is rather server oriented. Nevertheless, take a look.

There's also Fossil.

Two questions (or criticisms) that arise frequently regarding Fossil can be summarized as follows:

Why is Fossil based on SQLite instead of a distributed NoSQL database? Why is Fossil written in C instead of a modern high-level language? Neither question can be answered directly because they are both based on false assumptions. We claim that Fossil is not based on SQLite at all and that Fossil is not based on a distributed NoSQL database because Fossil is a distributed NoSQL database. And, Fossil does use a modern high-level language for its implementation, namely SQL.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top