web-dev-qa-db-ja.com

Elasticsearch vs Cassandra vs ElasticSearch with Cassandra

私はNoSQLを学び、クライアントの要件の1つについてさまざまなオプションを検討しています。この質問をする前にさまざまなリソースを調べました(NoSQLの知識がほとんどない人)

  • データをより高速で保存し、データを読み取る必要があります。
  • 完全にフェイルセーフで、簡単に拡張できます。
  • Analyticsのデータを検索できます。

最終的には次の短いリストになりました:Cassandra and Elasticsearch

私が理解していることは、Cassandraは、私にとって完璧なNoSQLストレージソリューションであり、インデックスを使用してデータの書き込みと読み取りができることです。失敗するか、失敗する可能性があるのは、Analyticsです。将来、from_date to to_dateからデータを取得する場合、または分析用のデータを取得するための複数の方法を使用する場合、データモデルを適切に設計しないか、長期的な視野を維持しない場合世界。

Elastic Searchはインデックス作成に最適で(Luceneが支援)、ランダムなテキストを投げることでデータをランダムに検索できます。しかし、データfrom_date to to_dateを取得したい場合でも同じように機能しますか(そうかもしれません)。しかし、本当の疑問は、それが検索エンジンか、Cassandraのような完璧なNoSQLデータストレージかということです。はいの場合、なぜCassandraが必要なのですか?

これらの両方が異なる世界にある場合、それを説明してください!より効果的なソリューションを得るためにそれらをどのように組み合わせるのでしょうか?

104
Reddy

アプリケーションの1つは、CassandraとElasticSearchの両方に保存されているデータを使用します。可能な場合はいつでもCassandraを使用してこれらのレコードにアクセスし、特定のアプリケーション側の要求に準拠するように設計されたクエリテーブルにデータを複製します。クエリテーブルで許可されるよりも自由な検索の場合、ElasticSearchはその機能をうまく実行します。

(私たち自身も)同じ質問をしました...「ElastsicSearchからすべてを取得しないのはなぜですか?」

答えは、ElasticSearchは永続的なデータストアではなく、検索エンジンとして設計されていることです。 ElasticSearchは書き込みを失うことがあります。 ElasticSearchでスキーマを変更することは、すべてを吹き飛ばしてリロードすることなく行うのが困難です。そのために、ElasticSearchをCassandraクラスターと同期するように設計されたジョブを作成しました。 このトピックに関するQuoraの最近の議論 もあり、同様のポイントが得られました。

とはいえ、ElasticSearchは検索エンジンとしてgreat動作します。また、Cassandraは、スケーラブルで高性能なデータストアとしてgreat動作します。ただし、queryingデータは、データのsearchingとは異なります。どちらか一方が必要な場合があり、この2つの組み合わせはアプリケーションに適しています。それはあなたのためにうまくいくかもしれません(またはそうでないかもしれません)。

分析に関しては、Cassandra Sparkコネクタを使用して、より複雑なOLAPクエリを処理することに成功しました。お役に立てば幸いです。

136
Aaron

Cassandra + Luceneは素晴らしいオプションです。この問題には、たとえば次のようなさまざまな取り組みがあります。

31
Alvaro Agea

この問題に自分で取り組んだ後、信頼できる書き込み操作でデータスキーマを保持し、elasticsearchが提供するインデックス操作を利用したくないことを確認したい場合、casandraのようなNoSQLデータベースが良いことに気付きました。いくつかのインデックスデータを保持したい場合は、スキームを信頼し、書き込みよりもはるかに多くの読み取りのみを行う場合に、elasticsearchが適しています。

私の場合はデータ分析でした。そのため、後で次のステップを確認するためにデータを何度も走査したいので、多くのLaticesをエラスティック検索で保持しました。分析パイルラインのデータのスキーマを大幅に変更したい場合は、casandraを使用していました。

また、データを優れたグラフィックスで表示するために使用できるkibanaなどのツールを表すNiceも多数あります。たぶん私は怠け者ですが、彼らはとても格好良くて、助けてくれました。

7
M.Rez

CassandraとElasticSearchの組み合わせでデータを保存すると、ほとんどの機能が提供されます。これにより、キーと値のテーブルを検索したり、インデックス内のデータを検索したりできます。

この組み合わせにより、アプリケーションに最適な柔軟性が得られます。

3
user2089236

Elassandra はCassandra + Elastic searchの結合ソリューションであり、Elastic Searchを使用してデータにインデックスを付け、Cassandraをデータストアとして使用します。パフォーマンスについてですが、このように article 、そのパフォーマンスは良好です。
アプリケーションで検索機能が必要な場合は、Elassandraが最適なオープンソースオプションです。 DSE検索は利用できますが、高価です。

3
  • ElasticsearchはLuceneインデックスに基づいて構築されているため、elasticsearchにインデックスを保存する場合、データを取得するためにCassandra自体のインデックスと比較して最高のパフォーマンスを発揮します。
  • 要件がリアルタイム検索に関連していない場合、ElasticsearchをNoSQLデータベースとして使用することもできます。ElasticSearchは書き込みを失い、スキーマの変更は困難であると考えられますが、データ量が大きすぎない場合。 ElasticSQLをNoSQLデータベースとして使用することで、最高のインデックス付けを備えた検索エンジンとしてelasticsearchを簡単に実現できます。それを防ぐにはいくつかの方法があります。 elasticsearchでスキーマの変更に取り組みました。データ構造に一貫性がある場合、問題が発生します。
  • ElasticSearchまたはSOlrのサポーターであること。私は両方の検索エンジンに取り組んできましたが、正しく設定すれば両方の検索エンジンを流に使用できることを経験しました。
  • あなたがリアルタイムの結果をターゲットにしていて、あなたの応答のミリ秒の遅延を妥協することができないならば、私がそれについて考えることができるだけの短所。その後、cassandraやcouchbaseなどの他のNoSQLデータベースを利用することをお勧めします。
  • Solrを使用したCassandraは、elasticSearchを使用したCassandraよりも優れた動作をします。
0
vishal yadav

ElasticsearchとCassandraを使用するアプリケーションを開発しました。同様のデータがCassandraに保存され、Elasticsearchにインデックス付けされました。

アプリケーションのUIには、検索、集計、データエクスポートなどの機能がありました。バックエンドマイクロサービスは(Kafkaトピックに関する)膨大なデータを継続的に取得し、Cassandraに保存していました。データがCassandraに保存されると、サービスはデータがElasticsearchにインデックス付けされるようにします。

CassandraはElasticsearchの「真実の源」として行動していました。 ESインデックスの再インデックス付けが必要な場合、Cassandraをクエリし、データをESに再インデックス化しました。

このソリューションは非常に簡単で、検索と集計がはるかに高速だったため、非常に役立ちました。

0
Sumit A