これらの基準に一致するデータベースを探しています。
このようなデータベースを操作するプロセスは次のとおりです。4〜6時間ごとに1億件のレコード(50GB)のデータを生成する分析クラスターを用意しています。データは「キー-配列[20]」です。このデータは、1秒あたり1〜10k要求の割合でフロントエンドシステムを介してユーザーに配信する必要があります。平均して、データの約15%のみが要求され、残りのデータは、次のデータセットが生成される4〜6時間で書き換えられます。
私が試したもの:
質問は次のとおりです。Redisのようなものはありますが、RAM size?
はい、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は自己メンテナンスであり、ユーザーのメンテナンスはほとんど必要ありません。
はい、SSDB( https://github.com/ideawu/ssdb )、Redisと非常によく似たAPIがあります: http://www.ideawu.com/ssdb/docs/ php /
SSDBはハッシュ、zsetをサポートしています。 leveldbをストレージエンジンとして使用し、ほとんどのデータはディスクに保存されます。RAMはキャッシュに使用されます。300GBデータのSSDBインスタンスでは、800MB RAMのみを使用します。
最近では、100 GBを超えるRAMを使用して単一のインスタンスをホストするサーバーを簡単に見つけることができます。または、データを分割し、RAMの少ない複数のサーバーを使用することもできます。 RAM)は実際には問題ではありません。
RAM sizeに制限されないRedisの最先端のクローンを試したい場合は、NDSがあります(Matt Palmer作):
NDSのストレージバックエンドは、削除されたキーに続くスペース再利用の問題のために、京都キャビネットからLMDB(非常に優れたパッケージであり、OpenLDAPにも機能します)に移動しました。
Redisと互換性のない他のソリューションもニーズに合う場合があります。たとえば、CouchbaseやAerospikeは、スループットを簡単にサポートできます。 CassandraとRiakは、十分なノードがあればおそらく機能するでしょう。