I've always wanted "no-DB" to the level of it being part of the platform/language.
I've always thought that software-transactional memory and persistent distributed heaps would get us there. Unfortunately the nearest things have been Redis and Terracotta plugged into Clojure. It should be:
Insert? new an object.
Delete? dispose an object.
Look up? Hash table.
There have been things that are a lot nearer than that. ObjectStore and GemStone, for example. And of course there were transparently persistent platforms like KeyKOS.
There are some neat little libraries that help with this in Clojure. The basic idea is that when you introduce changes through transactions, the actual transaction (code) is appended to disk (which is very fast), and this becomes your "database" file. So, what is persisted is just a list of state changes that are "replayed" to restore state.
The individual transactions could also easily be distributed to multiple nodes via a message queue.
I've always thought that software-transactional memory and persistent distributed heaps would get us there. Unfortunately the nearest things have been Redis and Terracotta plugged into Clojure. It should be:
Insert? new an object. Delete? dispose an object. Look up? Hash table.
Solved problems that just require persistence.