
Andrew Cowie
Yeah, if external inspection were necessary that'd definitely be a good reason to go that way for sure. The report from Ozgur that just serializing out a Map structure was workable is encouraging, though. I'll start with that.
Pardon the digression, but I'd just like to appreciate this way of thinking. There's a rant by Bob Martin [1] that concludes:
"We are heading into an interesting time. A time when the prohibition against different data storage mechanisms has been lifted, and we are free to experiment with many novel new approaches. But as we play with our CouchDBs and our Mongos and BigTables, remember this: The database is just a detail that you don’t need to figure out right away."
A project I'm working on uses a persistent append-only list, which is currently implemented like this, almost verbatim: async . forever $ atomically (readTChan queue) >>= writeFile path . Aeson.encode Files are trivial to back up and generally easy to work with. Since it's just JSON, I can grep and mess with it easily with command-line tools. And since the writing is done in a separate thread reading from a queue, I don't need to worry about locking. I think this will be alright for a good while, and when the project outgrows it, I'll just migrate to some other solution. Probably acid-state, because the version migration stuff seems really useful. [1]: Bob Martin's rant "No DB", http://blog.8thlight.com/uncle-bob/2012/05/15/NODB.html -- Mikael Brockman