- 特定のテーブルのレプリカを格納するノードを定義するために、Mnesia はどのような戦略を使用しますか?
- 各テーブルに特定の数のレプリカを使用するよう Mnesia に強制することはできますか? この数を動的に変更できますか?
- Mnesia 内部アルゴリズムの詳細な (概要だけでなく) 説明を含むソース (ソースコード以外) はありますか?
質問する
1488 次
1 に答える
5
- マニュアル。何をどこにレプリケートするかを指定する責任があります。
- はい、上記のように手動で。これは動的に変更できます。
- 残念ながら (間違っているかもしれませんが)、ソース コード以外には何もありません。ドキュメントに関しては、Erlang ディストリビューション全体がソフトウェアの世界のリーダーとは言えません。
Mnesia は、特定のテーブルのレプリカの数を自動的に管理しません。テーブルのレプリカを格納する各ノードを指定する必要があります (したがって、それらの番号)。レプリカは次のようになります。
- メモリに保存され、
- ディスクに保存され、
- メモリとディスクの両方に保存され、
- そのノードには保存されません - この場合、テーブルにはアクセスできますが、データは他のノードからオンデマンドでフェッチされます。
システムの実行中にレプリケーション戦略を再構成することは可能ですが、動的に (たとえば、ノードダウン イベントに基づいて) 行うには、自分で解決策を考え出す必要があります。
Mnesia システム イベントは、ノードがダウンしたときの状況を検出するために使用できます。そのノードにどのテーブルが格納されているかがわかれば、まだオンラインであるノードに基づいてオンライン レプリカの数を確認し、必要に応じてレプリケーションを実行できます。
私は、この種のものをすでに管理しているアプリケーション/ライブラリを認識していません.1つを作成することは、(少なくとも私の観点からは)かなり高度な試みのようです。
ただし、Riakはノード間のデータ分散をユーザーから透過的に管理するデータベースであり、あなたが言及したオプションに関して構成可能です。それがあなたの進むべき道かもしれません。
于 2013-09-25T12:41:51.930 に答える