問題タブ [mnesia]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
462 参照

database-design - キー値データベースでネストされたアイテムを効率的にクエリするスキーマをどのように設計しますか?

私はErlangでMnesiaを使用していますが、この質問はcouchdbなどのキー値データベースに適用されます.

私は RDBMS の思考プロセスから抜け出そうとしていますが、この種のスキーマを効率的に実装する方法について頭を悩ますことはできません。

User レコードがあり、彼には多数の SubItemA レコードがあり、これには多数の SubItem B レコードがあるとします。

サブアイテム B に対してクエリを実行する必要があります。このようにネストされている場合に実行するのは効率的ですか? より速くなるように正規化する必要がありますか?

データの重複を使用して、データがネストされ、分離されていると聞いたことがありますが、これはばかげているのでしょうか、それとも場合によっては実際に役立つのでしょうか?

0 投票する
3 に答える
3944 参照

erlang - ネットワーク パーティションからのオンライン記憶喪失回復

関連するノードを再起動せずに、mnesia クラスター内のネットワーク パーティションから回復することは可能ですか? もしそうなら、どのようにそれについて行くのですか?

私は特に知りたいと思っています:

  • 標準の OTP mnesia (v4.4.7) でこれを行う方法
  • これを実現するためにカスタム コードを作成する必要がある場合 (例: mnesia running_paritioned_network イベントにサブスクライブする、新しいマスターを決定する、非マスターからマスターにレコードをマージする、新しいマスターからテーブルを強制的にロードする、実行中のパーティション化されたネットワーク イベントをクリアする -サンプルコードは大歓迎です)。
  • または、その mnesia は断固としてオンライン回復をサポートしておらず、非マスター パーティションの一部であるノードを再起動する必要があります。

一般的な分散システム理論へのポインタには感謝していますが、この質問では、erlang/OTP 記憶喪失症のみに関心があります。

0 投票する
1 に答える
1834 参照

erlang - mnesia delete_object 例外?

ここで何が問題なのかわかりませんが、構文を誤解しているだけかもしれません。「ryan」という名前の「user」mnesia テーブルから「user」レコードを削除しようとしています (それらの倍数があります)。これが私がすることです:

これが私のレコード定義です:

そして、ここに私が得ている例外があります:

それは完璧な一致のようです。この問題の原因は何ですか?

0 投票する
4 に答える
1251 参照

database-design - Mnesia の安全で連続したスケーラブルなカウンター

Erlang/OTP でアプリケーションを作成しており、バージョン記録システムでシーケンシャル カウンターを使用したいと考えています。

私は最初にそれらを実装しました

かし、それを使用した経験により、次の厳しい要件が解消されました。

カウンターには次のプロパティが必要です。

  • 厳密にシーケンシャルであること - 1 の後に 2 が続き、3 が続くなど、シーケンスはシステムの分散セットで共有されます。いくつかの通信があり、再同期する必要があります

  • 分散データベースで安全

れらの要件のいずれも満たしていません。

シーケンシャル データベース カウンターを実装するにはどうすればよいですか?

0 投票する
2 に答える
1954 参照

erlang - 記憶喪失クラスターでは、どのノードが照会されますか?

ノード A と B でレプリケートされた mnesia テーブルがあるとします。テーブルのコピーを含まないノード C では、私は を実行しmnesia:change_config(extra_db_nodes, [NodeA, NodeB])、次にノード CI でmnesia:dirty_read(user, bob)ノード C はどのノードのテーブルのコピーを選択するかを実行します。でクエリを実行しますか?

0 投票する
1 に答える
262 参照

database - 主キーがすでにmnesiaに存在するレコードの追加を防ぐための最良の方法は何ですか?

単純なレコード定義があるとします。

これらのレコードの1つをmnesiaデータベースに追加する単純な関数が必要です。しかし、同じ主キーを持つエントリがすでに存在する場合は、失敗させたいと思います。

(次の例では、私がすでに定義していると仮定します

)。

以下は動作しますが、一種の醜いものとして私を襲います...

これも機能しますが、醜いです:

上記とは異なり、上記はスローします

これはスローしますが

だから:この種のエラーを示すためのいくつかの規則はありますか?または、mnesiaにこのエラーをスローさせる組み込みの方法はありますか?

0 投票する
1 に答える
9791 参照

erlang - ノードを mnesia クラスターに追加する方法は?

私はアーランと記憶喪失の初心者です..

スキーマが既にある mnesia データベースに新しい disk_only_copies ノードを追加するにはどうすればよいですか?

ありがとう

0 投票する
4 に答える
3890 参照

erlang - 余分なノードを削除する方法

Mnesia の「extra_db_nodes」を介してデータをレプリケートしている erlang ノードのグループがあります...ハードウェアとソフトウェアをアップグレードする必要があるため、ノードからノードへ移動するときにいくつかのノードを切り離す必要があります。

ノードを削除し、挿入されたデータを保持するにはどうすればよいですか?

[更新] ノードの削除は、ノードの追加と同じくらい重要です。時間の経過とともにクラスターが成長するにつれて、クラスターも縮小する必要があります。そうでない場合、Mnesia は存在しないノードにデータを送信しようとしてビジー状態になり、キューをいっぱいにしてネットワークをビジー状態に保ちます。

[最終更新] erlang/mnesia のソース コードを調べた結果、ノードの関連付けを完全に解除することはできないと判断できました。del_table_copy はテーブル間のリンクを削除しますが、不完全です。私はこの質問を閉じますが、適切な説明はどれもありません。

0 投票する
0 に答える
180 参照

erlang - データ/ノード パーティション エラーの検出

最後にデータ/パーティション ノード エラーを見たのは、Cookie などを介して同じ CPU 上のノードに接続された erlang シェルを起動したためでした。起動直後、シェルはパーティション エラーを画面に表示しました。これはめちゃめちゃ面倒……。

  1. この例外をトラップするにはどうすればよいですか?
  2. プログラムで例外を修復するにはどうすればよいですか? (別の質問で尋ねた)
  3. この例外を防ぐにはどうすればよいですか?

[更新] Yaws アプリケーションを実行している 2 つのボックスがあります。データベースは、Mnesia の extra_db_node 機能を介して複製されます。サーバーの実行後しばらくして、ボックスの 1 つにログインし、3 つのノードが通信できるように、別の sname と同じ Cookie を使用して「erl」を起動します。シェルが安定し、シェル プロンプトが表示された直後に...ネットワーク パーティション エラーがあることを示す複雑なタプルが画面に表示されます。このメッセージは、yaws アプリケーションによってトラップされる可能性のある例外ではなく、コンソール ダンプのように見えますが、yaws アプリケーションでエラーを検出して修正アクションを実行してもらいたいです。

0 投票する
2 に答える
1546 参照

database-design - Mnesiaのsetとordered_setの違い?

set 型のテーブルと、ordered_set 型のテーブルの違いは何ですか? 読み取り/書き込みパフォーマンスの違い、順序付けの基準、分散ノード間の影響などに興味があります。