Continuing on where Spindle leaves off, I created a system which again reflects how I believe storage should work. After endless problems with RDBMS and the object-relational mismatch, I decided to hell with that, and built a transparent persistence layer which can use a file or Sqlite backend (no reason why others could not be used too). The idea is that any class created from the basic PersistenceClass metaclass can be attached to storage. Changes are automatically written out. Even more interestingly objects which are referred to, but which do not exist in memory, are automatically loaded as well. You can even destroy them at will and, when required, they'll happily be loaded back in. There is also a simple query language for getting objects from their class.
It's not perfect, and a lot could be done with it still, but I like the idea. For many things full blown direct RDBMS access is just not necessary, and can cause major headaches. I also think that a lot could be done to optimise the Storm system so that performance differences wouldn't be huge, for many cases. Spindle (the web framework) does not require Storm in any way, and you can use any storage backend you want with it. I did, however, create them simultaneously so perhaps they subconsciously share some fabric.