erlang で bittorrent トラッカーを作成しています。サービスの性質上、絶対的な一貫性は必要ありません (つまり、ピアのリストや torrent のステータスが少し古くても、クライアントは完全に満足することができます)。
これまでの私の戦略は、disk_copies を有効にして RAM に mnesia テーブルを作成し、ログ サイズが特定のサイズを超えたときに mnesia が自動的にメモリをディスクにダンプするようにすることでした。
サーバーがクラッシュすると、一部の情報が失われます。大したことではありません。
別のアプローチとして、2 つのテーブル (1 つの RAM のみと 1 つのディスクのみ) をインスタンス化し、RAM からディスクへのプロセス コピーを約 1 分ごとに行うこともできます。これはより素朴ですが、メモリ内のサブセットのみをダンプできるため、ディスク全体のオーバーヘッドが削減され、ログの使用を完全に回避できる可能性があります (この最後のステートメントについては実際にはわかりません)。
これを行うには他にも多くの方法があると確信しています。君は?
-テオ