jepsen icon indicating copy to clipboard operation
jepsen copied to clipboard

Turning the store directory into a Datalog database?

Open stevana opened this issue 5 years ago • 2 comments

I often wish I could query the results from test runs, which made me think about the possibility of turning the store directory into a database instead.

I'm thinking something similar to how they do it in simulant but using one of the free Datalogs, e.g. Datahike or Crux, instead of Datomic.

Of course, this could all be optionally hidden behind a flag and the old behaviour retained as the default. Or even a completely separate program which could import/export store directories.

Thoughts?

stevana avatar Apr 30 '20 08:04 stevana

There's some basic functionality for this in the web interface already, and I don't have a problem adding some basic caching/querying stuff to jepsen.store--jepsen.web is already doing some hijinks to memoize and index this stuff. I do think we should retain Jepsen's focus on filesystem directory output, because lots of people use Jepsen in conjunction with other, non-Clojure tooling, use it remotely, copy directories around piecewise, etc., but I think some kind of basic queryability (especially supporting the web interface and/or REPL) that derives from the store/ directory would be neat.

Jepsen's already a pretty big project, so if this involves pulling in massive dependencies, I'd say we release it as a companion library, but... go wild, explore, let's see what happens. :)

aphyr avatar Apr 30 '20 15:04 aphyr

Also keep in mind that, like, materializing test results and histories in memory (or even on disk) can be shockingly expensive--this is one of those rare places where rolling your own hybrid disk storage instead of just using a database actually makes a lot of sense. One of my problems with the current Fressian storage is that it takes forever to load large tests; I might write a custom FS wrapper for that at some point.

aphyr avatar Apr 30 '20 15:04 aphyr