0

I'm looking for a database that provides access as SQLite or BerkeleyDB do: access through "in-process API calls". That would be for use in a desktop application.

Requirements:

  • can be linked to the desktop application (no separate process/server to be run)
  • document oriented, with query-able metadata/fields
  • indexing
  • persistent (disk storage)
  • C++ bindings
eandersson
  • 25,781
  • 8
  • 89
  • 110
Derek
  • 3,295
  • 3
  • 24
  • 31
  • Why not use one of the DBs you mentioned? – eandersson Apr 03 '13 at 10:20
  • I would prefer a schema-less DB for holding documents/entries. Each document has metadata fields + a "large" binary field (from a few kB to 5 GB: sensor data signal). I could use a combination of sqlite (for metadata) + regular files for the binary fields but consistency is not guaranteed (e.g.: if the user deletes some data files). – Derek Apr 03 '13 at 12:19
  • What have you found out already? And why do those findings not apply for you? – Sebastian Mach Apr 03 '13 at 13:25
  • I looked at [Kyoto Cabinet](http://fallabs.com/kyotocabinet/) and seemed to be a framework to create database software and to be key-value oriented. However, @eandersson in an answer below suggests EJDB whose built on top of Tokyo Cabinet. EJDB is promising. – Derek Apr 03 '13 at 20:20

1 Answers1

0

You have many alternatives, but I think that it will be difficult to find an database that meets your exact requirments

Some of the alternatives that comes to mind are HamsterDB, EJDB and FireBird. These can all be embedded into your application and provides C++ bindings.

eandersson
  • 25,781
  • 8
  • 89
  • 110
  • 1
    EJDB is the way to go, even if it is a young project. Its foundations are solid (Tokyo Cabinet based and mongodb philosophy). Moreover, its license, LGPL, perfectly fits my needs. Thanks @eandersson! – Derek Apr 04 '13 at 14:28
  • Glad to hear that you found your solution. :) – eandersson Apr 04 '13 at 15:08