project-m36
project-m36 copied to clipboard
Consider perdure as a persistent model
This is just to bring it to your attention in case you hadn't seen it:
https://github.com/Cognimeta/perdure
Thanks for linking to this! I had not seen this before.
I took a look at this and I suspect this library doesn't fit the Project:M36 model. I am willing to be convinced otherwise, but here are my thoughts:
- perdure is a data graph database, similar in this sense to acid-state, whereas Project:M36 is relational (lacking the direct links between data)
- perdure maintains a singular graph state, whereas Project:M36 retains database history
- perdure's use case is for a master structure to be repeatedly updated and persisted to disk, whereas Project:M36 has as many "master" structures as there are transactions in flight
- perdure is immature with poor documentation
- Project:M36 relies on the write-once-read-many (WORM) approach to file storage, mimicking Haskell immutable data structures and thus, doesn't need to rewrite any files. The WORM approach drastically simplifies replication and IO concurrency. Perdure persists to a single file.
In Haskell application territory, Perdure is a competitor to Project:M36.
That said, it would likely be worthwhile to investigate some of the claimed features for applicability to Project:M36, specifically:
- claimed performance features such as pure, but deferred, data loading with a backing cache
- endian-agnostic, x-bit-agnostic disk representation
- strong data validation with built-in hashing
- local replication
Comments?
I actually don't know much about this topic but thought it would be good to do some "cross pollination". Your observations make a lot of sense.
Feel free to close whenever you wish.