GEPS 032: Database Backend API

From Gramps
Jump to: navigation, search

This proposal defines a complete Database Backend API so that we can have drop-in replacement for BSDDB. This would allow the use of other databases, even relational/SQL backends, but used in a non-relational manner.

This is an idea refined from GEPS 010: Relational Backend. However, without the relational components.

The first step is to separate all of the gramps.gen.db code into reusable and extendable components. This has begun with the DictionaryDB, which is a in-memory replacement for the BSDDB. Still needs the indexes, and metadata support (gender names, bookmarks, etc). Also, the Dictionary transaction is non-existent.

Backends to consider:

  • MongoDB
  • CouchDB
  • Sqlite - probably the best for our uses
  • CSV - spreadsheet
  • SQLHeavy - probably not... sqlite is a thin, robust, backwards-compatible-guaranteed layer. SQLHeavy has too much that we do not need.
  • Libgda

Issues:

  1. Need to be able to represent transactions
  2. Need to be able to undo/redo

See Also