私は、データを書き込み、高いパフォーマンスで読み取ることができるデータを格納するデータベース/メカニズムを探しています。
このストレージは、複数のシステム間で重要な情報のようにロギングを保存するために使用されます。 Since it's critical data which will be logged, read performance should be pretty fast as these data will be used to show history. Since we never do update on them/delete on them/or do any kinda joins, I am looking for right solution.
おそらく、データを長期間アーカイブする可能性がありますが、それでも問題ありません。
私はさまざまなソースを調べてさまざまなNoSqlデータベースを理解しようとしましたが、専門家の意見は常に優れています:)
Must Have:
1. Fast Read without fail
2. Fast Write without fail
3. Random access Performance
4. Replication kinda feature, one goes down, immediately another should be up and working
5. Concurrent write/read data
Good to Have:
1. Search content like analysing the data for auditing with/without Indexes
Don't required:
1. Transactions are not required at all
2. Update never happens
3. Delete never happens
4. Joins are not required
参照: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
開示 :2013年5月以降、Kevin PorterはAerospike、Inc.のシニアソフトウェアエンジニアです。( ref )
必ず考慮してください Aerospike ; Aerospikeはアドテックスペースで支配的です 高スループット 読み取りと書き込みが必要です。 Aerospikeは、「Cassandraのスケーラビリティを備えたRedisの速度」を持っていると頻繁に宣伝されています。検索/クエリについては、Aerospikeの セカンダリインデックス のドキュメントを参照してください。
詳細については、以下の説明/記事を参照してください。
最後に EC2命令で100万TPS を使用して、自分のパフォーマンスを確認します。
Cassandraスポンサーになります。
免責事項:Cassandraは私がそれほど深くも知らないので他の人より優れています)とは言いません/ redis/whateverと私はこの種のものに来てほしくない。
Cassandraを提案する理由は、あなたのニーズが何と完全に一致するためですCassandra =提供し、「不要なリスト」は、Cassandra(インスタンスの結合))でサポートされていないか、アンチパターン(削除および一部の状況では更新)と見なされる機能のセットです)。
「必須」リストから、ポイントごとに
Fast Read before fail:サポートされています。各読み取り操作の整合性レベルを選択して、最も新しい情報を取得することがどれほど重要であり、速度がどれほど重要であるかを決定できます。
Fast Write without fail:ポイント1と同じ
ランダムアクセスパフォーマンス:Cassandra世界に来たときランダムアクセスのパフォーマンスを得るには多くのパラメーターを考慮する必要がありますが、私の頭に浮かぶ最も重要なことは、データモデルです-水平方向にスケーリングするデータモデルを作成する場合( ここをご覧ください )、そして必要なものが得られるホットスポットを避けます。DBを適切にモデル化する場合、データは次のように構造化されるため、各操作に対してO(1)が必要です質問される
レプリケーション:このCassandraはあなたよりも優れています1つのノードがダウンしても、クラスターは何も変化せず、すべて(*)が完全に機能し続けます。Cassandraは、単一障害点を発見しません。古いCassandraバージョンアップタイムが3年以上あります
同時書き込み/読み取りデータ:Cassandra lwwポリシーを使用(last-write-wins)は、同じキーでの同時書き込みを処理します。システムは複数の読み取り/書き込みをサポートし、新しいプロトコルでは非同期操作もサポートします。
他にも多くの興味深い機能がありますCassandra提供:線形水平スケーリングは私がさらに感謝するものですが、すべてのデータが更新された瞬間を知ることができるという事実もあります( lwwのタイムスタンプ)、カウンター機能など。
(*)-整合性レベルAllを使用しない場合、imhoはこのようなシステムでは絶対に使用しないでください。
Aerospikeを使用してディスクとインメモリ(DRAM、SSM、およびディスクストレージ)をスパンする方法に関するリンクがいくつかあります。
http://www.aerospike.com/hybrid-memory/
http://www.aerospike.com/docs/architecture/storage.html
特定のDBを特定のユースケースに一致させることに関しては、誰もが正しいと思います。たとえば、AerospikeはKey-Valueデータに最適です。他のオプションの方が良いかもしれません。
類推として、私は何十年も前に、私の姉妹がかつて私のコンピューターを借りて彼女の用語用紙をMicrosoft Excelで書いた方法をいつも覚えています。行ごとにスプレッドシートの別の行でした。一見醜く見えましたが、ええと、大丈夫です。彼女はその仕事を成し遂げた。彼女は物事を編集するのがいかに難しいかを呪い、誓った。冗談じゃない!
適切なタスクに適切なNoSQLデータベースを選択すると、仕事が楽になります。または、手元のタスクに間違った基本的なツールを決定した場合に、青い線がひどくなる可能性があります。
もちろん、すべてのベンダーが自社の製品を守ろうとしています。コミュニティが質問に答えるのが最善だと思います。同様の質問に答える別のスタックオーバーフロースレッドを次に示します。
Aerospikeで作業した人はいますか?MongoDBと比較してどうですか?
btw:解決しようとしている問題の種類について、具体的な洞察はありますか?