I’m a big proponent of having models (domain models) residing in memory. Of course, in the appropriate context. There are many problems that could have a better solution if we forgot the “use the database, Luke” approach. One notable solution/project is Redis, that using a single thread implements a complete and powerful key-value store in memory, with options for persistence and clustering (redis cluster still under development).
I’m playing implementing personal projects using an in-memory model. There are:
Memolap: Multidimensional OLAP-like model, in C#. Web sample in progress.
SimplePermissions: Subjects, Roles, Permissions, Contexts, all in memory.
AjKeyvs: Redis-like in-memory key-value store, in C#. I should add the client protocol. I should review the internal algorithms, but all was coded using TDD, ready for refactors.
SimpleTags: having items with arbitrary data, tagged with strings or key-value objects.
Maybe I could add SimpleRules: rule engine where the facts reside in-memory (many rule engines use directly the memory to represent the world state).
To be started:
Most of these projects could be extended to have pluggable persistence. But now I’m interested in having something that works to play with. I’m having fun implementing internal algorithms, trees, search, inverted indexes, etc. And practicing TDD every day.