Я пишу битторрент-трекер на erlang. Учитывая характер сервиса, мне не нужна абсолютная согласованность (т. е. клиент может быть вполне доволен немного устаревшим списком пиров или статусом торрента).
До сих пор моя стратегия заключалась в создании таблиц mnesia в ОЗУ с включенным disk_copies, чтобы mnesia автоматически выгружала память на диск, когда размер журнала превышает определенный размер.
В случае сбоя сервера часть информации будет потеряна. Не так уж и важно.
Другой подход состоял бы в том, чтобы создать экземпляр двух таблиц (только один ОЗУ и только один диск) и копировать процесс из ОЗУ на диск каждую минуту или около того. Это более наивно, но позволит выгрузить только подмножество того, что находится в памяти, уменьшив общие накладные расходы на диск и, возможно, вообще избегая использования журнала (на самом деле я не уверен в этом последнем утверждении).
Я уверен, что есть много других способов сделать это. Что у тебя?
-тео