AerospikeとCassandra=は、それぞれのベンチマークで他より優れていると言います。
参照: http://Java.dzone.com/articles/benchmarking-cassandra-right およびその他いくつか。
誰かが両方を使用していますか?
Aerospikeは主張されているほど優れていますか?
最後にCassandraをAerospikeに置き換えることを推奨しますか?
CassandraとAerospikeのどちらを選択するかは、実際にユースケースに依存します。同じプロジェクトの生産システムとして個人的に使用しました。私にとってはAerospikeが明確な勝者でした。ケースは、書き込みボリュームの約10倍の読み取りで、数十億のエントリに対して非常に同時、低レイテンシ、トランザクションの小さな更新を行うことです。これは、Aerospikeが得意とするものです。これらの理由から、Aerospikeは私たちにとって明確な選択でした。
一方、Cassandraは大量の書き込みボリュームに適し、より大きなレコードを処理できます。すべてがページベースであるため、SSD以外で十分に動作しますが、Aerospikeレコードがキャッシュに収まらない限り、できます。また、Cassandra=はAerospikeよりも運用の観点から維持するのがはるかに困難です。私たちにとって、それは運用上の悪夢であり、Netflix Cassandra=クラスターを管理するためだけに、運用エンジニアの大規模なチームを採用する必要があります。また、システムはこれまでに成熟したかもしれませんが、使用中(1.0バージョン前後)内部dbアクションの実行を停止し、通常は毎回修正するためにそれらのノードからデータを消去する必要がある奇妙な時折アサートエラーと例外。
ここでのもう1つの要因は、コストです。これは、アプリケーションに応じて決定に影響する場合としない場合があります。キースペースが大きいほど、Aerospikeクラスターはハードウェアの観点からより高価になります。メモリ内またはssdネームスペースに関係なく、すべてのキーをメモリに保存する必要があります。数十億のキー範囲に入ると、クラスター内でテラバイトのRAMが必要になり、レプリケーションファクター2でそれをサポートします。Cassandraは明らかに、キーと値が両方ともディスクに保存します。
2番目の2つの質問に答えるために、はい、それは主張どおりです。約5Bのキーを保存し、ピーク負荷で〜1M TPSを実行し、汗をかくことなくそれを実行します(ただし、これを行うにはクラスターあたり約20ノードが必要です)各120GB ram)。そして、Cassandra=をAerospikeに置き換えることをお勧めします。私たちにとって、それは明確な勝利であり、正しい決定でした。アプリケーションがAerospikeの設計に適合し、費用対効果が高い場合あなたのユースケースについてですが、どちらがより適しているかが明確でない場合は、両方を試して、それらがどのように機能するかを確認してください。
編集:
現在選択する理由の1つは、AerospikeよりもCassandraがアプリケーションに特定の整合性保証が必要な場合です。たとえば、カウンターなどのアプリケーションでは、AerospikeはCassandraは、競合のない複製データ型(CRDT)を使用することにより、これらの機能を実現します。良好なネットワーク上および一般的な多くのユースケースでは、これは問題ではありませんが、前述のとおりAerospikeの性能に勝るものはありません。それが一般的に選ばれる理由です。
編集2:
Aerospike v4では、一貫したモードのバージョンが導入されました(Jepsenによる検証: https://jepsen.io/analyses/aerospike-3-99-0- )。さらに、Aerospikeは強力な一貫性を介して実装していますが、CassandraはCRDTを使用することで最終的な一貫性のみを保持しているため、古いデータを読み取ることも可能です。強く一貫性のあるモードを使用する場合、ユースケースに苦しみませんでした。
低レイテンシーでメンテナンスの手間をかけずに安定した予測可能なパフォーマンスが必要な場合は、Aerospikeをお勧めします。ゲームをプレイしたい、カサンドラに行きます。私はCassandraを4年以上前に後悔することなく会社に持ち込みましたが、今日は上記の理由から、Aerospikeを選択します。ロシアの戦車-理由がある。
両方のプラットフォームの制限を知る必要があります。両方で遊んで、賢明に選んでください。
どちらの製品も、使用しているユースケースに依存しますが、Aerospikeは、SSDを使用してコスト効率の良い方法で、Cassandra維持します。
また、Aerospikeの多数のキーでのメモリ使用量に関しては、たとえば、100億のレコードがある場合、名前空間内の異なるセット/ビンにレコードをバケツできます。ルックアップ値として機能するキーへのハッシュ値を持ちます。そのため、名前空間に20億のレコードを含めることができ、これによりメモリ内のキーの数が削減されます。
多くの人がAerospikeを純粋なインメモリデータベースとして展開していますが、ハイブリッドメモリ構成もサポートしており、データベースをRAM、SSD /フラッシュ、スピニングディスクに分散しています。問題に対処するためのいくつかの短いおよびより長い回答のリンクを以下に示します。確かに人々は両方の世界で最高のものを望んでいます。より永続的なデータをより安価なディスクに保存し、より高速で一時的なデータをGBあたりより高価なRAMまたはSSDに保存します。
http://www.aerospike.com/hybrid-memory/
http://www.aerospike.com/docs/architecture/storage.html
そのような展開に関して、私は人々の経験に関するフィードバックを聞きたいと思っています。