4
  1. 特定のテーブルのレプリカを格納するノードを定義するために、Mnesia はどのような戦略を使用しますか?
  2. 各テーブルに特定の数のレプリカを使用するよう Mnesia に強制することはできますか? この数を動的に変更できますか?
  3. Mnesia 内部アルゴリズムの詳細な (概要だけでなく) 説明を含むソース (ソースコード以外) はありますか?
4

1 に答える 1

5
  1. マニュアル。何をどこにレプリケートするかを指定する責任があります。
  2. はい、上記のように手動で。これは動的に変更できます。
  3. 残念ながら (間違っているかもしれませんが)、ソース コード以外には何もありません。ドキュメントに関しては、Erlang ディストリビューション全体がソフトウェアの世界のリーダーとは言えません。

Mnesia は、特定のテーブルのレプリカの数を自動的に管理しません。テーブルのレプリカを格納する各ノードを指定する必要があります (したがって、それらの番号)。レプリカは次のようになります。

  • メモリに保存され、
  • ディスクに保存され、
  • メモリとディスクの両方に保存され、
  • そのノードには保存されません - この場合、テーブルにはアクセスできますが、データは他のノードからオンデマンドでフェッチされます。

システムの実行中にレプリケーション戦略を再構成することは可能ですが、動的に (たとえば、ノードダウン イベントに基づいて) 行うには、自分で解決策を考え出す必要があります。

Mnesia システム イベントは、ノードがダウンしたときの状況を検出するために使用できます。そのノードにどのテーブルが格納されているかがわかれば、まだオンラインであるノードに基づいてオンライン レプリカの数を確認し、必要に応じてレプリケーションを実行できます。

私は、この種のものをすでに管理しているアプリケーション/ライブラリを認識していません.1つを作成することは、(少なくとも私の観点からは)かなり高度な試みのようです。

ただし、Riakはノード間のデータ分散をユーザーから透過的に管理するデータベースであり、あなたが言及したオプションに関して構成可能です。それがあなたの進むべき道かもしれません。

于 2013-09-25T12:41:51.930 に答える