私はerlangでビットトレントトラッカーを書いています。サービスの性質上、 私は絶対的な一貫性は必要ありません(つまり、クライアントは若干古くなったピアやトレントのステータスを完全に満足させることができます)。最終的に一貫性のあるmnesiaデータベースとerlang。誰でもベストプラクティス?
私の戦略は、これまで自動的にmnesiaを持っているログのサイズが特定のサイズを超えた場合、ディスクにメモリをダンプするので、有効にdisc_copiesとRAMにmnesiaテーブルを作成することでした。
サーバーがクラッシュした場合、一部の情報が失われます。大したことではありません。
異なるアプローチがインスタンスへの2つのテーブル(1つのつのみラム及び一つのディスク)であるとRAMからディスクに毎分程度の処理コピーを有することになります。これはより単純ではありませんが、メモリ内の部分集合だけをダンプすることができ、全体的なディスクオーバーヘッドを減らし、おそらくログの使用を避けることができます。
私はこれを行うには、他の多くの方法があることを確認しています。君は?ここで
-teo
現在発表と急流のデータはもちろん、非常に高速である、メモリ専用mnesiaテーブル(私はまだ無効にコピーされたディスクを保つ)に格納されています。ディスクへの永続化は、たとえシステム障害(ビットトレント暗黙の回復力を考慮してさえも)に対してもサービスをより弾力性にさせ、時間の経過とともにトレント関連の情報を最小限に抑える(完了したダウンロード数)。 (http://mcaprari.github.com/peasy-torrent-tracker/) –