A non-relational embedded database with a permissive free software license?
Asked Answered
E

2

5

many thanks in advance for taking the time to look at my question.

(I am aware of this question Nonrelational Databases for C++, but my needs are a bit different and it only has one answer.)

I am developing a commercial C++ library that must, among other things, persist messages. I would like to avoid reinventing the wheel by writing my own DBMS. Unfortunately, I have the following restricting criteria:

  1. It must be usable from C++ - I'm writing a C++ library. Bindings are potentially acceptable, if the level of effort to make them work isn't too high.
  2. I need an embedded database. Stand-alone will not work.
  3. I want to avoid a relational database. In addition to concerns about performance overhead, there are technical politics beyond my control as a developer that discourage a relational database.
  4. I need a permissive free software license. It'll be hard to buy licenses, but the client doesn't want to give his source away.
  5. I'd like a solution that's established (been around for at least a little while, beyond the experimental stage, has been used by several projects).

Sadly, the two go-to choices don't work because of the above: -SQLite is relational -BerkeleyDB is GPL or commercial

Again, thanks for any help.

Eclosion answered 12/4, 2011 at 18:50 Comment(2)
I would contest #3. Are you positive that your application has characteristics that make performance in a relational system slower than in a non-relational one?Marqueritemarques
No. I suspect a non-trivial cost, and have some evidence that will be the case, but we're prototyping it to be sure. The bigger issue is the strange perception of the client that relational databases are for somehow "bad".Eclosion
F
6

Use SQLite in b-tree mode. Public domain. Avoids politics. Let's you work around the political issues by avoiding the SQL interface for performance-critical paths, and optionally using the SQL parser path for those queries that are not on the critical path.

Fugue answered 12/4, 2011 at 19:4 Comment(0)
R
3

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

Rufina answered 12/4, 2011 at 19:45 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.