9

Oracle DB から Elastic Search クラスターに大きなデータをインデックス化するためのオプションは何ですか? 要件は、一度に 3 億のレコードを複数のインデックスにインデックス付けすることと、毎日約 100 万の変更がある増分更新を行うことです。

Elasticsearch river/feederの JDBC プラグインを試してみましたが、どちらも内部で実行されているか、ローカルでエラスティック検索インスタンスを実行する必要があるようです。エラスティック サーチ インデクサーをスタンドアロン ジョブ (おそらく Java ベース) として実行するためのより良いオプションがあれば教えてください。どんな提案も非常に役に立ちます。ありがとう。

4

2 に答える 2

10

ES をレポート データベースとして使用し、新しいレコードが SQL に書き込まれると、次のアクションを実行してそれらを ES に取り込みます。

  1. 主キーをキューに書き込みます (rabbitMQ を使用)
  2. Rabbit は (時間があれば) 主キーを取得し、リレーション DB にクエリを実行して必要な情報を取得し、データを ES に書き込みます。

このプロセスは、新しいデータと古いデータの両方を処理するため、うまく機能します。古いデータの場合は、簡単なスクリプトを記述して 3 億個の主キーを rabbit に書き込むだけで完了です!

于 2014-12-16T22:52:56.120 に答える
5

多くの統合オプションがあります。いくつかのアイデアを提供するためにいくつかを挙げましたが、ソリューションは実際には特定のリソースと要件によって異なります。

  1. Oracle Golden Gateは、Oracle DB トランザクション ログを確認し、リアルタイムで ES にフィードします。
  2. たとえば、Oracle Data Integratorなどの ETL は、スケジュールに従って実行し、DB からデータを取得して変換し、ES に送信できます。
  3. ストアド プロシージャを使用してデータ更新を ES に書き込むことができるように、Oracle DB にトリガーを作成します。または、トリガーを使用して、一部の外部プロセス (Java アプリケーションなど) が監視し、Oracle DB からデータを抽出するために使用する「変更」テーブルにフラグを書き込みます。
  4. Oracle DB に書き込み、ES にもフィードするアプリケーションを取得します。理想的には、アプリケーションと Oracle DB は疎結合である必要があります。ES と Oracle の両方にメッセージを送信できる統合プラットフォームはありますか?
于 2014-12-15T15:47:41.707 に答える