For all your immutable object storage needs!
The premise is that you write pure functional code, using an approach of keeping everything in memory via one or a couple of application state objects. These are stored regularly as tranches by Curium, which yields a simple, storable tranche id that allows easy retrieval of the application state when the application restarts.
Curium understands that your immutable objects will use sharing of state between old and new objects, and uses this to distribute the stored state of an object across many tranches. So your storage will indeed scale.
The best thing is that you don’t need a schema, macros, a special IDL compiler, aspects, a byte code rewriter or some pesky trait that all your objects need to inherit from to make this work - just give your Scala application state objects to Curium and you’ll get back tranche ids to store via your own preferred simple storage mechanism, perhaps in a database, perhaps as an output bookmark in whatever message bus technology you use.
Yes, that includes third party Scala and Java code too.
When your application restarts, it uses the appropriate tranche id(s) to retrieve the relevant application state, and off it goes.
Oh, and it all fits in memory because the application state loads lazily, even though it is immutable.
It’s robust, but the API is experimental - hence the low version number. Feedback, issues, bug reports and tested pull requests are welcome.
Happy storing and retrieval!