Actually, last night I was doing quite a bit of thinking (and reading) about this problem and using a database seemed to be one of two solutions.
A multi-value database like UniData would be awesome (it would handle lists very easily), but I don't know of any open-source versions.