問題タブ [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.
erlang - Mnesia のレコードのマージ
コール キュー内のエージェントの現在のステータスを収集するソフトウェア用のコードをリファクタリングしようとしています。現在、リッスンする 6 つほどのイベントのそれぞれについて、エージェントが存在するかどうかを Mnesia テーブルにチェックインし、イベントに応じて行の値を変更するか、エージェントが存在しない場合は新しいものとして追加します。現在、私は各イベントでこの Mnesia トランザクションを持っています。もちろん、エージェントの存在などをチェックするための一連のコードが繰り返されています。
これを変更して、これを処理するイベントから呼び出すchange_agent/2のような関数が 1 つあるようにしようとしています。
もちろん、私の問題はレコードです....それらを動的に作成したり、2つをマージしたりする方法が見つかりません。できれば、次のように呼び出すことができる関数があるでしょう。
erlang - Mnesia テーブルの複製/共有
N erlang ノードがあり、同じアプリケーションを実行しているとします。記憶喪失テーブル T1 をすべての N ノードと共有したいのですが、問題はありません。ただし、別の mnesia テーブル T2 をノードのペアと共有したいと考えています。つまり、T2 の内容は同一であり、共有ペアのみに複製されます。つまり、T2 テーブルに N/2 の異なるコンテンツが必要です。これは、ノードの個別のペアごとにT2の名前を変更するのではなく、mnesiaで可能ですか?
erlang - Mnesiaの書き込みが失敗する
。という名前のレコードを定義しましたlog
。名前を付けてmnesiaテーブルを作成したいと思いますlog_table
。テーブルにレコードを書き込もうとすると、bad_type
次のようなエラーが発生します。
私は何が欠けていますか?
erlang - Erlang、Mnesia、Yaws を使用して強力な Web 検索エンジンを開発することは可能ですか?
Erlang、Mnesia、Yaws を使用した Web 検索エンジンの開発を考えています。これらのソフトウェアを使用して、強力で最速の Web 検索エンジンを作成することは可能ですか? これを達成するには何が必要で、何から始めればよいですか?
erlang - データがメモリに収まらない場合の Erlang アプリケーションに適したデータ ストレージ バックエンド
Erlang アプリケーションのデータ ストレージを整理する方法について、考えられるオプションを調査しています。使用するデータは基本的に、短い文字列 ID でインデックス付けされたバイナリ BLOB の膨大なコレクションです。各ブロブは 10 Kb 未満ですが、多数あります。合計で最大200 Gbのサイズになると予想されるため、明らかにメモリに収まりません。このデータに対する一般的な操作は、ID による BLOB の読み取り、ID による BLOB の更新、または新しい BLOB の追加です。1 日の特定の期間ごとに、ID のサブセットのみが使用されるため、データ ストレージ アクセスのパフォーマンスはメモリ内キャッシュの恩恵を受ける可能性があります。パフォーマンスについて言えば、非常に重要です。目標は、コモディティ ハードウェア (EC2 VM など) で 1 秒あたり約 500 回の読み取りと 500 回の更新を行うことです。
ここで何を使うべきか提案はありますか? 私が理解しているように、detsは2Gに限定されているため(または4Gでしたか?)、問題外です。記憶喪失もおそらく問題外です。私の印象では、主にデータがメモリに収まる場合を想定して設計されています。このタスクに EDTK の Berkeley DB ドライバーを試してみることを検討しています。上記のシナリオで機能しますか?同様の条件で本番環境で使用した経験のある人はいますか?
database - Mnesia との関係の整合性を維持する
私は最近Erlangに飛び込んでいます.Mnesiaを使用してデータベースの作業を行うことにしました.Mnesiaはあらゆる種類のErlangデータ構造を問題なく格納でき、簡単にスケーリングでき、リスト内包表記で使用できるなど.
標準の SQL データベースの場合、ほとんどの行は主キー (通常は自動インクリメント整数) で識別できます。デフォルトでは、Mnesia は行の最初のフィールドをキーと見なします。また、私の知る限り、自動インクリメント整数キーを持つ方法もありません。
テーブルを表すこれらの架空のレコードがあるとします。
エントリのタイトルのように、リソースを識別するために、ユーザー名を使用するだけで十分な場合もありますが、完全性を維持するにはどうすればよいでしょうか?
ユーザーが名前を変更したり、編集後にエントリのタイトルが変更されたりするとします。データが正しく関連付けられていることを確認するにはどうすればよいですか? ユーザー名が変更されたときにそれを使用してすべてのテーブルを更新することは、どのように配置されていてもひどい考えのように思えます。
Mnesia である種の主キーシステムを実装する最良の方法は何でしょうか?
また、最初のフィールドが通常キーである場合、「user_entry」のような中間テーブルはどのようになりますか? そうでなければ、Mnesia で多対多の関係を表現するより良い方法は何でしょうか?
erlang - mnesiaの起動時間を短縮する方法
mnesia/dets を使用した Erlang は、クラッシュ後の起動時間が遅いことで有名です。基本的に、古いファイルシステムの fsck と同じ問題です。
しかし、通常のシャットダウン後の起動時間も遅くなります。頑丈なマシンで 250 MB のディスク上のデータの場合、約 8 分です。
「q()」と入力する以外に、シャットダウン時に何か特別なことをしなければならないのでしょうか? 起動時間を短縮する方法はありますか?
erlang - Mnesia データベースのストレージ容量は?
一部の場所では2GB期間と記載されています。一部の場所では、ノードの数に依存すると述べています。
erlang - mnesia データベースを実行しているノードの名前を変更する方法
machine1 に Mnesia データベース / スキーマを作成しました。ノードには mypl@machine1 という名前が付けられました。次に、machine1 が故障したため、すべてのファイルを machine2 に移動しました。コードが「mypl@machine1」という名前で実行されている限り、すべて正常に実行されます。現在 machine2 で実行されているため、これは明らかに混乱を招きます。
ノード名「mypl@machine2」で Erlang を起動すると、Mnesia データベースが空に見えます。
Mnesia データベースのノードの名前を machine1 から machine2 に変更するにはどうすればよいですか?