30

複数のプロセスをサポートする Node.js 用の最速の非メモリ キー値ストアは何ですか?

単純なキーと値の文字列/文字列のペア (ドキュメントや JSON ではなく、文字列のみ) を保存する必要があります。
以下にいくつかの例を示します (何百万もの例があります)。

  • 12345678 – abcdefghijklmnopabcdefghijklmnop
  • 86358098 – ahijklmnopbcdefgahijklmnopbcdefg
  • abcdefghijklmnopabcdefghijklmnop - 12345678
  • ahijklmnopbcdefgahijklmnopbcdefg - 86358098

私が試してみました:

  • Redis : 非常に高速で、必要なことはすべて実行しますが、RAM の消費量が多すぎます。
  • LevelDB : 高速で、RAM に重すぎませんが、単一プロセスのみです。

LevelDB の回避策は multilevel で HTTP を介して単一の LevelDB プロセスを公開します。
しかし、もちろんそれには代償が伴います。私は何か速いものが必要です。

次のキー値ストアはありますか。

  • Node.js をサポートしているか、それに対するバインディングがあります。
  • 文字列/文字列のペアを格納します。
  • 複数のプロセスをサポートします。
  • 完全にメモリに存在するわけではありません。
  • 速いですか?

読むことだけが気になります。高速なマルチプロセス読み取りは必要ですが、書き込みは必要ありません。
LevelDB の現在の速度には満足していますが、単一プロセスであるという事実には満足していません。


追加の詳細:

  • 私が話しているのは、8 から 500 文字のキーと値を持つ、約 5000 万のキーと値のペアです。
  • コードは通常の Linux サーバーで実行されます。
  • メモリ使用量は数ギガバイトに制限する必要があります (4GB で問題ありませんが、8GB も許容されます)。
  • 読むことは、書くことよりもはるかに多く起こります。実際、私は書かなくてもできました。
  • 速度は何よりも重要です (メモリとマルチプロセスの制約が考慮される場合)。
4

5 に答える 5

27

LMDB (これは OpenLDAP の最も効率的なエンジンであり、他の多くのオープンソース プロジェクトで使用されています)を確認することをお勧めします。

LMDB は組み込みのキー/値ストアであり、Berkeley-DB または LevelDB のような API を使用して、すべてをメモリに格納する必要はなく、複数のプロセスからのアクセスをサポートできます。Node.js バインディングがあります。

于 2014-01-18T19:20:24.507 に答える
2

マスター/スレーブ レプリケーションで MySQL (または MariaDB) を使用してみませんか。あなたの要件に基づいて。MySql のマスター/スレーブ アーキテクチャはあなたにぴったりです。

基本的に、NoSQL は多くのサーバーを必要とします。たとえば、MongoDB の最小設定には 3 つのサーバーが必要ですが、HBase には 4 つのサーバーが必要です。

この観点から、より読みやすくする必要がある場合は、mysql アーキテクチャに新しいスレーブ サーバーを追加します。

mysql の読み取りパフォーマンスは 2k tps であると想定しています。次に、mysql の読み取りパフォーマンスの 4 つのノードは 8k tps です。

テスト結果とサービスの使用状況 (読み取り/書き込み比率) によって異なります。

以下のリンクを確認してください。つまり、「Marco Cecconi - The Architecture of StackOverflow」です。 http://www.youtube.com/watch?v=t6kM2EM6so4

于 2014-01-20T05:26:51.920 に答える