私は、ユーザーがさまざまな種類のグループ化、フィルタリング、さまざまなフィールドのドリルダウンを実行できる汎用ダッシュボードを作成する必要があるプロジェクトに取り組んでいます。このために、データのスライスとダイスを許可する検索ストアを探しています。
データのソースは複数あり、検索ストアに保存されます。中間コンポーネントによって実行できるソースデータに対して事前計算が必要な場合があります。
ESをプライマリデータストアとしても確実に使用できるかどうかを理解するために、いくつかのブログを調べました。それは主に私たちが探しているユースケースに依存します。私たちが持っているユースケースに関する情報の一部:
一部のブログでは、プライマリデータストアとして使用するのに十分な信頼性があると述べています-
また、一部のブログでは、ESにはほとんど制限がないと述べています-
PostgreSQL、DynamoDB、RDSなどのプライマリストレージを持たずに、Elastic Searchをデータの唯一の真実として使用した人はいますか? ESには、データ損失に問題がある可能性があるスプリットブレインやインデックス破損などの特定の問題があることを調べました。だから、私は誰かがESを使用していて、データに問題があるかどうかを知りたいと思っています
ありがとう。
簡単な答え:ユースケースによって異なりますが、おそらくプライマリストアとして使用したくないでしょう
より長い回答:復元力とデータ損失に関連して発生する可能性のある問題をすべて理解する必要があります。 Elasticには、いくつかの これらの問題に関する優れたドキュメント があり、これをプライマリデータストアとして使用する前に本当に理解する必要があります。さらに、 トピックに関するAphyrの投稿 は優れたリソースです。
あなたが取っているリスクを理解し、それらのリスクが許容可能であると信じている場合(例えば、小さなデータの損失はアプリケーションにとって問題ではないため)、先に進んで試してみてください。
一般に、冗長データストレージソリューションを設計することをお勧めします。たとえば、最初にすべてをフラットデータとしてs3のような静的ストレージにプッシュし、そこからESプルおよびインデックスデータを取得する、高速で信頼性の高いアプローチです。何らかのORMを活用する柔軟性が必要な場合は、間にRDSまたはRedshiftレイヤーを配置できます。これにより、ESでデータを常に再構築できます。
冗長性と柔軟性/パフォーマンスのバランスをどのように設定するかは、ニーズと要件によって異なります。大量のデータが含まれる場合、生データを静的に保存し、ESによってその一部にインデックスを付けることができます。
Amazon Lambda は素晴らしい機能を提供します:
多くの開発者は、Amazon DynamoDBを使用してオブジェクトメタデータを保存およびインデックス付けし、高速検索を可能にしながら、オブジェクトをAmazon S3に保存します。 AWS Lambdaは、オブジェクトがAmazon S3から追加または更新されるたびにAmazon DynamoDBのインデックスを自動的に更新する関数を実行することにより、すべての同期を簡単に維持します。