project-m36 icon indicating copy to clipboard operation
project-m36 copied to clipboard

Consider perdure as a persistent model

Open 3noch opened this issue 9 years ago • 3 comments

This is just to bring it to your attention in case you hadn't seen it:

https://github.com/Cognimeta/perdure

3noch avatar Aug 30 '16 23:08 3noch

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?

agentm avatar Sep 07 '16 23:09 agentm

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.

3noch avatar Sep 08 '16 01:09 3noch

Feel free to close whenever you wish.

3noch avatar Sep 08 '16 01:09 3noch