После вашего комментария к bmargulies я должен предупредить вас, что я сам пытался сделать то, что вы описываете, и обнаружил, что пишу базу данных ACID. Напомним, что вы попросили:
- Статистическое кеширование
- постоянство данных
- обмен данными между процессами
Это роль системы баз данных. Гораздо лучше использовать один, написанный другими. IMO ваш выбор sqlite и Беркли-дБ. . Sqlite не предназначен для параллельного доступа, с другой стороны, berkeley-db очень масштабируем , однако в качестве модели данных он использует словарь строк и строк.
BDB может иметь базы данных полностью в памяти или обычным способом, который сериализуется на диск и кэшируется в памяти. Вы также можете настроить семантику ACID в соответствии с вашими конкретными потребностями - то есть вы можете отключить долговременные записи, и это даст вам мгновенные характеристики записи, в то же время пожертвовав стойкими данными.
Существует множество более сложных решений, но они предназначены для решения реальных проблем, т. Е. Вам необходимо создать кластер.