web-dev-qa-db-ja.com

Redis DBのようなものがありますが、RAM size?

これらの基準に一致するデータベースを探しています。

  • 永続的でない場合があります。
  • DBのほとんどすべてのキーを3〜6時間に1回更新する必要があります(合計サイズが100Gbの1億以上のキー)
  • キー(または主キー)でデータをすばやく選択する機能
  • これはDBMSである必要があります(したがって、LevelDBは適合しません)
  • データが書き込まれるとき、DBクラスターはクエリを処理できる必要があります(ただし、単一ノードはブロックできます)
  • メモリ内ではありません-データセットはRAM制限を超えます
  • 水平スケーリングと複製
  • すべてのデータの完全な書き換えをサポートします(MongoDBはデータの削除後にスペースをクリアしません)
  • C#およびJavaサポート

このようなデータベースを操作するプロセスは次のとおりです。4〜6時間ごとに1億件のレコード(50GB)のデータを生成する分析クラスターを用意しています。データは「キー-配列[20]」です。このデータは、1秒あたり1〜10k要求の割合でフロントエンドシステムを介してユーザーに配信する必要があります。平均して、データの約15%のみが要求され、残りのデータは、次のデータセットが生成される4〜6時間で書き換えられます。

私が試したもの:

  1. MongoDB。データストレージのオーバーヘッド、高いデフラグコスト。
  2. Redis。完璧に見えますが、RAMで制限されており、データはそれを超えています。

質問は次のとおりです。Redisのようなものはありますが、RAM size?

40
Andrey

はい、Redisプロトコルとの互換性を維持しながら、RAMサイズで制限されないRedisの2つの代替があります:

Ardb(C++)、レプリケーション(Master-Slave/Master-Master): https://github.com/yinqiwen/ardb

Redis-protocol互換の永続ストレージサーバーは、ストレージエンジンとしてLevelDB/KyotoCabinet/LMDBをサポートします。

Edis(Erlang): http://inaka.github.io/edis/

Edisは、Erlangで書かれた、Redisのプロトコル互換サーバー代替です。 Edisの目標は、データセットをメモリ内に保持するよりも永続性が重要な場合に、Redisのドロップイン置換になることです。 Edis(現在)は、Googleのleveldbをバックエンドとして使用しています。

完全を期すために、別のデータ構造データベースがあります:

Hyperdex(文字列、整数、フロート、リスト、セット、マップ): http://hyperdex.org/doc/latest/DataTypes/#chap:data-types

HyperDexは次のとおりです。

  • 高速:HyperDexは、他のキーと値のストアよりも待ち時間が短く、スループットが高く、変動が少ない。
  • スケーラブル:HyperDexは、システムにマシンが追加されるたびにスケーリングします。
  • 一貫性:HyperDexは、キーベースの操作の線形化を保証します。したがって、読み取りは常にシステムに挿入された最新の値を返します。 「最終的に」だけでなく、すぐに、そして常に。
  • フォールトトレラント:HyperDexは複数のマシンでデータを自動的に複製するため、アプリケーションで決定された制限までの同時障害によってデータが失われることはありません。検索可能:
  • HyperDexは、セカンダリデータ属性の効率的な検索を可能にします。
  • 使いやすい:HyperDexは、さまざまなスクリプトおよびネイティブ言語用のAPIを提供します。
  • 自己メンテナンス:HyperDexは自己メンテナンスであり、ユーザーのメンテナンスはほとんど必要ありません。
25
FGRibreau

はい、SSDB( https://github.com/ideawu/ssdb )、Redisと非常によく似たAPIがあります: http://www.ideawu.com/ssdb/docs/ php /

SSDBはハッシュ、zsetをサポートしています。 leveldbをストレージエンジンとして使用し、ほとんどのデータはディスクに保存されます。RAMはキャッシュに使用されます。300GBデータのSSDBインスタンスでは、800MB RAMのみを使用します。

21
ideawu

最近では、100 GBを超えるRAMを使用して単一のインスタンスをホストするサーバーを簡単に見つけることができます。または、データを分割し、RAMの少ない複数のサーバーを使用することもできます。 RAM)は実際には問題ではありません。

RAM sizeに制限されないRedisの最先​​端のクローンを試したい場合は、NDSがあります(Matt Palmer作):

NDSのストレージバックエンドは、削除されたキーに続くスペース再利用の問題のために、京都キャビネットからLMDB(非常に優れたパッケージであり、OpenLDAPにも機能します)に移動しました。

Redisと互換性のない他のソリューションもニーズに合う場合があります。たとえば、CouchbaseやAerospikeは、スループットを簡単にサポートできます。 CassandraとRiakは、十分なノードがあればおそらく機能するでしょう。

4
Didier Spezia