One option for persistent maps in Clojure, which still uses a relationship database, is to store map data in an opaque blob. If you need the ability to search for records, you can store indexes in separate tables. For example, you can read how FriendFeed stores non-standard data on top of MySQL - http://bret.appspot.com/entry/how-friendfeed-uses-mysql
Another option is to use the Entity-Attribute-Value (EAV) attribute model to store data in the database. You can learn more about EAV on Wikipedia (I would post a link, but I am a new user and can only post one link).
Another option is to use BerkeleyDB for Java, a native Java solution that provides ACID and write-level locks. (The same problem with link placement).
Cosmin stejerean
source share