GrapheekDB is a lightweight graph database with support for multiple back-end storage managers. It only represents directed graphs and it is persistent if you choose a Key/Value store backend.[03]
- Source Code
- https://bitbucket.org/nidusfr/grapheekdb[01]
- Developer
- Country of Origin
- FR
- Start Year
- 2014
- End Year
- 2015
- Project Type
- Open Source
- Written in
- Python
- Supported Languages
- Python
- Embeds / Uses
- Kyoto Cabinet, LMDB
- Compatible With
- Kyoto Cabinet, LMDB
- License
- GPL v3
GrapheekDB is a lightweight graph database with support for multiple back-end storage managers. It only represents directed graphs and it is persistent if you choose a Key/Value store backend.[03]
History[04]
GrapheekDB was developed in 2014 by Raphaël Braud, a freelance developer from France. It was built for a recommendation system to extract the contents of documents (often spanning several million pages), tokenizing their contents, and giving recommendations of similar documents based on a user's query. A graph database was chosen over a relational database to avoid multiple joins on tables of several million rows and to improve performance. It was built with a specific purpose of recommending documents and interfacing with a python-like API (close to Django and Germlin).
Compression[02]
The Naive Page Rank compression algorithm is listed as one of the todo items in the source-code but is not yet supported.
Data Model[02][06][07]
Data Model is a graph. The DBMS also uses many Key/Value Store (KVS) backends such as Kyoto Cabinet and Symas LMDB. DBMS is both Object Persistent and Process Persistent. There are no strict assertions on data modelling.
Indexes[08]
DBMS supports nodes and edge indices. The current version only supports "exact match indices" and performs a Depth-First-Search (DFS) in order to match indices. Storing the indices leads to a storage overhead and slows down writes in the DBMS.
Isolation Levels[04]
The DBMS was built with serializable execution in mind. This was done to avoid loading the entire data in memory every time the intended recommendation algorithm was run and produce the desired list of documents based on the user query.
Joins[03][09]
A graph database does not need join operations as they are expensive. The DBMS is also schemaless.
Storage Model
GrapheekDB is a multi model document store. The nodes and edges can have related data, but this is not enforced.
Citations
9 sources- nidusfr / grapheekdb — Bitbucket bitbucket.org
- https://bitbucket.org/nidusfr/grapheekdb/src/default/docs/index.rst bitbucket.org
- https://bitbucket.org/nidusfr/grapheekdb/src/default/docs/graph_database.rst bitbucket.org
- http://www.nidus.fr/blog/grapheekdb-base-graphe-python nidus.fr
- https://bitbucket.org/nidusfr/grapheekdb/src/default/docs/features.rst bitbucket.org
- LMDB | symas symas.com
- http://fallabs.com/kyotocabinet fallabs.com
- https://bitbucket.org/nidusfr/grapheekdb/src/001a7252bdfba8e45fa313a4d0bb57d8d1fab335/docs/tutorial4.rst bitbucket.org
- Graph database - Wikipedia wikipedia.org