4

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 ドライバーを試してみることを検討しています。上記のシナリオで機能しますか?同様の条件で本番環境で使用した経験のある人はいますか?

4

5 に答える 5

5

tcerlは、同じサイズ制限に直面することから抜け出しました。私は最近Erlangを使用していませんが、あなたが探しているもののように聞こえます.

于 2008-11-25T17:22:00.340 に答える
1

filename を文字列 ID として扱い、ファイルの内容をバイナリ BLOB として扱い、ファイル システムを使用できない理由はありますか? パフォーマンス要件に合ったもの (ファイルシステム) を選択でき、OS によって提供される基本的に無料のキャッシングを取得する必要があります。

于 2008-11-25T20:31:49.647 に答える
1

CouchDB が何をしているかを見たことがありますか? ドロップイン製品として求めているものではないかもしれませんが、そこにはデータを保存するための多くの erlang コードがあります。REST API の代わりにネイティブの erlang インターフェイスを提供するという話もあります。

于 2008-11-25T16:58:57.453 に答える
0

Apache CouchDB をお勧めします。

これは Erlang に最適であり、その響きから (ID ベースの BLOB について言及し、リレーショナル要件については何も言及していません)、ドキュメント指向のデータベースを探しています。

インターフェイスは REST であるため、キャッシュが必要な場合は、非常に簡単にコモディティ HTTP キャッシュをその前に追加できます。

CouchDB のドキュメントは非常に高品質です。

Map-Reduceも組み込まれています:)

于 2009-01-07T16:42:55.923 に答える
0

Mnesia はディスクにデータを問題なく保存できます。また、Berkeley DB にほぼ類似した dets (ディスク ベースの用語ストレージ) もあります。標準ライブラリにあります: http://www.erlang.org/doc/apps/stdlib/index.html

于 2008-11-17T18:34:57.060 に答える