thank you ahead of time for making the effort to check out my question.

(I know of the question Nonrelational Databases for C++., but me are a little various and there are just one answer.)

I'm creating a commercial C++ library that has to, amongst other things, persist messages. I must avoid reinventing the wheel by writing my very own DBMS. Regrettably, I've the next restricting criteria:

  1. It should be functional from C++ - I am writing a C++ library. Bindings are potentially acceptable, if the amount of effort to ensure they are work is not excessive.
  2. I want an embedded database. Stand-alone won't work.
  3. I wish to avoid a relational database. Additionally to concerns about performance overhead, you will find technical politics beyond my control like a developer that discourage a relational database.
  4. I want a permissive free software application license. It will be difficult to buy licenses, however the client does not wish to give his source away.
  5. I would like an answer that's established (existed not less than a while, past the experimental stage, has been utilized by a number of projects).

Sadly, the 2 go-to options aren't effective due to the above mentioned: -SQLite is relational -BerkeleyDB is GPL or commercial

Again, thank you for any help.

Use [cde] in [cde] mode. Public domain. Eliminates politics. Let us you're employed round the political issues by staying away from the SQL interface for performance-critical pathways, and optionally while using SQL parser path for individuals queries which are this is not on the critical path.

Both Tokyo Cabinet and QDBM are LGPL and also have C APIs.