4 ms·
Check out terminusdb. Has most/many of the same features and is open source.
by RealQwertie 3y ago
Check out terminusdb. Has most/many of the same features and is open source.
- eliomattia 3y agoReally interesting, also diff-based, and 3.5 years in development. On the homepage I read "An in-memory, distributed, and open-source document graph database". Do you know whether the whole database, including all documents, needs to be in memory, and what happens when the datasets exceed available memory space? Or is it perhaps in-memory per document, one-by-one? Do you have to create diffs manually with terminusdb (CLI example below from https://terminusdb.com/products/terminusdb/ https://terminusdb.com/products/terminusdb/), or can they be detected automatically from, e.g., SQL database tables or files in a folder, similarly to Git monitoring a working directory and committing changes based on its contents? # Add more philosophers to new branch echo '{ "name": "Plato" }' | terminusdb doc insert admin/philosophers/local/branch/changes echo '{ "name": "Aristotle" }' | terminusdb doc insert admin/philosophers/local/branch/changes # Look at the difference between branches terminusdb diff admin/philosophers --before-commit main --after-commit changes | jq # Apply the differences to main terminusdb apply admin/philosophers --before-commit main --after-commit changes
- ggleason 3y agoTerminusDB represents the data using succinct data structures which reduces the required memory substantially over many other representations. Each branch needs to be capable of being loaded into memory completely - but individual revisions are loaded separately. Diffs can be constructed between two objects, or you can get sets of diffs of objects between commits automatically. You can manually construct diffs and use them to patch branches. We don't have a conversion tool from SQL database tables, but it's something on my list.