Hey Gavin, Yep, that's me!
You say a set of mutable objects, is this something like in-memory > collections? > I'm experimenting with an obscure but fascinating (to me) framework called Permazen: https://github.com/permazen/permazen It's an alternative take on Java persistence - sort of like an ORM but where the backing is a KV store rather than an RDBMS. There's no query language, you just use NavigableSet and a variety of utilities. It's remarkably mature e.g. it has full support for indexing, transactions, validation, a variety of KVStore backends, and there's even a full blown Raft implementation. Plus although it's not mentioned in the repo, it's actually used in production. There's a white paper in the repo, a presentation, JavaDocs and the wiki explains the API. I've been waiting for a chance to use it for real for some years now. Well, now I have a chance. The big weakness (IMHO) of Permazen is that whilst it does provide a CLI for invoking code using Java syntax, and you can do queries and mutations that way, Java syntax is a bit verbose for that and anyway existing tools all speak SQL. I'd like to experiment with implementing my app server persistence with Permazen, and keep SQL off to the side for interactive query/hotpatching + maybe dashboarding. Calcite seems ideally suited for this. Permazen gives you a bunch of objects and collections that can be accessed inside transactions. Collection operations and bean property read/writes are converted to KV read/writes behind the scenes. Sure enough, queries work quite well and it didn't take much code to get there. But updates, well ... maybe that's where my cunning plan comes unglued. I don't want to spend a huge amount of time on this. What I'm really looking for is someone who's done this before so I can fumble my way through a cargo-cult operation. It doesn't have to be robust or perfect, because it's an experiment to see if this way of writing apps feels good. Hopefully that provides enough background info. thanks, -mike
