
I'll do some research to evaluate my options. So far I have:
Homegrown implementation on top of some DB (Riak/Postgres/Mongo...)
https://github.com/agentm/project-m36
https://hackage.haskell.org/package/filestore
Thanks for the answers!
On Fri, Dec 23, 2016 at 8:07 PM, Ertugrul Söylemez
* Another option is to run an insertion-only relational model on really any database system you want like PostgreSQL. There is nothing about preserving history that needs special handling to be efficient.
I assume that some sort of structural sharing is needed once the collections grow above a certain size. Also some support for caching would be nice.
Yeah, sharing could improve disk usage and cache utilisation. I'm not aware of any DBMS-side sharing features in systems I have used (PostgreSQL and SQLite mainly). The usual way to get sharing in relational systems is to normalise the schema. That also allows you to use domain-specific knowledge to get even better sharing.
Caching is of course supported, at least by PostgreSQL. It aims to keep as much of the database in memory as possible (or as you tell it to).