48

Leveldbは、Google の新しい興味深い永続キー値ストアのようです。Leveldb は Redis、Riak、または Tokyo Tyrant とどう違うのですか? 特定のユースケースでは、一方が他方よりも優れていますか?

4

3 に答える 3

48

前の回答の両方で、この(重要な)区別が見られないため、これを追加するだけです...

  • Redis: データベース サーバーです。カスタムバイナリプロトコルを介して(通常はクライアントライブラリを介して)通信します。
  • LevelDB: キー値ストアを実装するライブラリです。C++ API を直接呼び出すことで通信します。

SQLite に精通しており、クライアント アプリケーション用の組み込み DB としての人気が高まっていること (Android と iOS の両方に搭載されていると思います) に精通している場合は、LevelDB のようなものがどこに適合するかがわかります。

複雑な PIM アプリを作成していると想像してください。おそらく、オフィス内の個々のコンピューターにインストールすることを意図したエンタープライズ アドレス帳マネージャーが考えられます。アプリ内で自分で記述/解析したすべてのデータを XML または JSON に格納するのは望ましくありません。可能であれば、DB に格納して、アクセス パターンをより簡単にします。

しかし、Redis のローカル コピーを出荷してインストールする必要もありません。ランダムなポートで実行されているため、接続することができません...アプリから直接ネイティブに呼び出すことができる DB が必要です。 「有線」通信について心配しています...クライアントのみのアプリでは必要のないネットワーク関連のものを一切使用せずに、DBの生の内臓が必要です。

これが LevelDB の場所です。

それは別の仕事のための別のツールです。

于 2011-11-07T14:52:47.980 に答える
31

彼が指摘する leveldb と Redis の違いは明確ですが、私は colum の基準には少し同意できません。

同時実行が必要ですか? 私はRedisで行きます。これを言うのは、Redis にはそれを処理するためのコードが既に書かれているからです。適切に作成された Other People's Code を使用して同時実行性を処理できるときはいつでも、はるかに優れています。単にマルチスレッド アプリを意味するのではなく、同じシステム上にあるかどうかにかかわらず、複数のプロセスの概念をこれに含めます。それでも、マルチスレッド アプリでロックを記述してデバッグする必要がないことは、私の目には大きな利点です。

アプリ内で完全に自己完結型にしたいですか? ライブラリであるため、leveldb を使用します。ak/v 以外の機能が必要ですか? Redis を使用します。

私は leveldb または Redis の側面についてのみコメントしています。Riak や TT については、彼らのより良いスーツについてコメントできるほど流暢ではないと考えているからです。

要するに、探しているのがシングル スレッド アプリの永続的なキー値ストアだけである場合、leveldb はリストから選択するオプションです (別の例としては、東京のキャビネット、古き良き BerkleyDB、さらには sqlite などがあります)。しかし、それ以上が必要な場合は、他のいずれかを選択してください。

[編集: 説明を更新しました。同時性]

于 2011-05-24T06:24:50.357 に答える
15

違い:

  • Redis はサーバーですが、Leveldb は「高速で永続的なキー値ストアを実装するライブラリ」です。したがって、Redis では、サーバーをポーリングする必要があります。Leveldb では、データベースはディスクに保存されるため、メモリに保存される Redis よりもはるかに遅くなります。
  • Leveldb はキー/ストアのみを提供します。Redisにもこれがありますが、さらに多くの機能と特徴があります

類似点:

  • どちらにも Key/Store メソッドがあります

どちらかを選択する理由

C/C++ アプリケーションを作成している場合は、mysql ほどリソースを消費しないデータベースが必要なだけであれば、leveldb を使用することをお勧めします。Leveldb はコード レベルのアクセスを提供しますが、redis ではサーバーと通信する必要があるインターフェイスが必要です。他のアプリでは、Redis が最適です。複数のアプリケーションがアクセスできる実際のサーバーを取得するだけでなく、ディスクへの書き込み、セット、リスト、ハッシュなどの他の機能も取得できます。

于 2011-05-23T22:28:32.623 に答える