I'm wrapping up a major refactoring of a system which completely removes an un-needed database (legacy from a previous design) and moves state entirely in memory; which makes the entire system so much prettier! However, the largest resistance to moving away from the database for storing temporary/changing state was that they found it useful for debugging the system; the sql calls to query the all the tables essentially allowed them to view the entire state of the system quickly and easily. With the database gone I want to give them a similar method to view the in-memory state, much as they did with the database.

I can allow a user to send a command which writes my in-memory state, completely, to a human readable file for parsing. However; while the file wouldn't be *too* large (it all fits in memory easily), it would be large enough that without abilities to do joins and selects on the data contained it would be nearly impossible for someone to parse what's happening. I need a way to allow for doing these sort of joins/selects easily; preferable with minimal efforts.

A fancy method to allow me to do this while the data is in-memory would be awsome, but I don't nessesarily need that. If there exists some sort of open-source file that could, say, read in searlized objects and still allow some kind of select or parsing on them that woudl be great. Even an open source program which reads in data that is storeded as CSV (or xml or whatever) and does the same would work as well.

Can anyone suggest an API or program which would make this doable with minimal effort?