私はNoSQLを学び、クライアントの要件の1つについてさまざまなオプションを検討しています。この質問をする前にさまざまなリソースを調べました(NoSQLの知識がほとんどない人)
最終的には次の短いリストになりました:Cassandra and Elasticsearch
私が理解していることは、Cassandraは、私にとって完璧なNoSQLストレージソリューションであり、インデックスを使用してデータの書き込みと読み取りができることです。失敗するか、失敗する可能性があるのは、Analyticsです。将来、from_date to to_date
からデータを取得する場合、または分析用のデータを取得するための複数の方法を使用する場合、データモデルを適切に設計しないか、長期的な視野を維持しない場合世界。
Elastic Search
はインデックス作成に最適で(Luceneが支援)、ランダムなテキストを投げることでデータをランダムに検索できます。しかし、データfrom_date to to_date
を取得したい場合でも同じように機能しますか(そうかもしれません)。しかし、本当の疑問は、それが検索エンジンか、Cassandraのような完璧なNoSQLデータストレージかということです。はいの場合、なぜCassandraが必要なのですか?
これらの両方が異なる世界にある場合、それを説明してください!より効果的なソリューションを得るためにそれらをどのように組み合わせるのでしょうか?
アプリケーションの1つは、CassandraとElasticSearchの両方に保存されているデータを使用します。可能な場合はいつでもCassandraを使用してこれらのレコードにアクセスし、特定のアプリケーション側の要求に準拠するように設計されたクエリテーブルにデータを複製します。クエリテーブルで許可されるよりも自由な検索の場合、ElasticSearchはその機能をうまく実行します。
(私たち自身も)同じ質問をしました...「ElastsicSearchからすべてを取得しないのはなぜですか?」
答えは、ElasticSearchは永続的なデータストアではなく、検索エンジンとして設計されていることです。 ElasticSearchは書き込みを失うことがあります。 ElasticSearchでスキーマを変更することは、すべてを吹き飛ばしてリロードすることなく行うのが困難です。そのために、ElasticSearchをCassandraクラスターと同期するように設計されたジョブを作成しました。 このトピックに関するQuoraの最近の議論 もあり、同様のポイントが得られました。
とはいえ、ElasticSearchは検索エンジンとしてgreat動作します。また、Cassandraは、スケーラブルで高性能なデータストアとしてgreat動作します。ただし、queryingデータは、データのsearchingとは異なります。どちらか一方が必要な場合があり、この2つの組み合わせはアプリケーションに適しています。それはあなたのためにうまくいくかもしれません(またはそうでないかもしれません)。
分析に関しては、Cassandra Sparkコネクタを使用して、より複雑なOLAPクエリを処理することに成功しました。お役に立てば幸いです。
Cassandra + Luceneは素晴らしいオプションです。この問題には、たとえば次のようなさまざまな取り組みがあります。
この問題に自分で取り組んだ後、信頼できる書き込み操作でデータスキーマを保持し、elasticsearchが提供するインデックス操作を利用したくないことを確認したい場合、casandraのようなNoSQLデータベースが良いことに気付きました。いくつかのインデックスデータを保持したい場合は、スキームを信頼し、書き込みよりもはるかに多くの読み取りのみを行う場合に、elasticsearchが適しています。
私の場合はデータ分析でした。そのため、後で次のステップを確認するためにデータを何度も走査したいので、多くのLaticesをエラスティック検索で保持しました。分析パイルラインのデータのスキーマを大幅に変更したい場合は、casandraを使用していました。
また、データを優れたグラフィックスで表示するために使用できるkibanaなどのツールを表すNiceも多数あります。たぶん私は怠け者ですが、彼らはとても格好良くて、助けてくれました。
CassandraとElasticSearchの組み合わせでデータを保存すると、ほとんどの機能が提供されます。これにより、キーと値のテーブルを検索したり、インデックス内のデータを検索したりできます。
この組み合わせにより、アプリケーションに最適な柔軟性が得られます。
Elassandra はCassandra + Elastic searchの結合ソリューションであり、Elastic Searchを使用してデータにインデックスを付け、Cassandraをデータストアとして使用します。パフォーマンスについてですが、このように article 、そのパフォーマンスは良好です。
アプリケーションで検索機能が必要な場合は、Elassandraが最適なオープンソースオプションです。 DSE検索は利用できますが、高価です。
ElasticsearchとCassandraを使用するアプリケーションを開発しました。同様のデータがCassandraに保存され、Elasticsearchにインデックス付けされました。
アプリケーションのUIには、検索、集計、データエクスポートなどの機能がありました。バックエンドマイクロサービスは(Kafkaトピックに関する)膨大なデータを継続的に取得し、Cassandraに保存していました。データがCassandraに保存されると、サービスはデータがElasticsearchにインデックス付けされるようにします。
CassandraはElasticsearchの「真実の源」として行動していました。 ESインデックスの再インデックス付けが必要な場合、Cassandraをクエリし、データをESに再インデックス化しました。
このソリューションは非常に簡単で、検索と集計がはるかに高速だったため、非常に役立ちました。