1

既存の正規化された mssql データベースからの Solr 増分データ インポートに取り組んでいます。実装する必要がある戦略を決定できないか、同じことを行うための既存のツールがあるかどうかわからないため、一からやり直す必要はありません。

ドキュメントを Solr 3.6 にインポートして Solr データを作成する必要があります。このデータは、高度に正規化された方法で MSSQL に保存されます。単一のドキュメントのデータを取得するには、多くの結合が必要であり、パフォーマンスが低下します。私はappxを持っています。100 万件のドキュメントがデータベースに保存されています。そのため、Solr への完全なインポートは私にとって選択肢ではありません。

アプローチを決定する際に、考慮すべき 2 つの問題があります。

  • 増分データ インポート。これにより、データベースからデータを取得する際に SQL サーバーに大きな負荷がかからなくなります。
  • SQL Serverで変更されたデータをSolrデータに1日1回更新

Solr に増分データをインポートするための戦略とツールを決定する際に、あなたの助けを求めています。私は、次のオプションがあると思います:

  1. MSSQL からデータを取得して Solr に渡すアプリケーションをカスタム開発します。すべてのレコードが Solr に挿入され、保留中のレコードとして、データを追跡する必要があります。繰り返しになりますが、MSSQL の 2% のデータ レコードは毎日更新されるため、それ以降に変更されたデータを追跡し、ある時点でそれらを Solr に再度更新する必要があります。

  2. DIH など、Solr の既存のツールまたはユーティリティを使用して同じことを行います。これが増分データ取得の問題と、SQL サーバーで変更されたデータを追跡する方法の両方にどのように対処するのかわかりません。繰り返しになりますが、DIH が複雑な結合をどのように処理するかは、db からデータを取得するために必要です。

  3. または、DIH で Lusql のようなものを使用しますが、両方の問題にどのように対処するかはまだわかりません。Lusql は db で複雑な結合を行う機能を提供しますが、これが私の目的に合っていることを願っています。

Solr で DIH を使用して LuSQL を使用することに賛成ですが、それが目的に適合する場合は、どのデータが変更されたかを追跡する方法がわかりません。または、この部分では、変更が加えられたドキュメント ID を維持し、それを LuSQL に提供して SQL からデータを取得し、Solr にインポートすることで、手動で管理する必要があります。

このような状況に対処するために、これを超えた提案もお待ちしています。

4

2 に答える 2

2

私がこれを行う方法をあなたと共有します。

主に同じ要件があり、今週までデルタインポートでsolr dataimportを使用していました。新しいアイテムのステータスを定期的に 0 から 1 に更新し、solr データ インポートを呼び出してステータス 1 のすべてのドキュメントを取得するプログラムがあります。インポートが正常に終了した場合、ステータスを 2 に更新すると、このドキュメントが solr にあることがわかります。ドキュメントが変更された場合、ステータス 2 からステータス 0 に変更するだけで、インポート プロセスによってドキュメントが solr で更新されます。

このプロセスを使用すると、すべてがうまくいきます。データベースからすべてのデータを取得することなく、常にsolrで新しいドキュメントを取得します。

solrでのみ必要なため、日付をデータベースにアーカイブしておくことにしたため、要件が変更されました。そのため、データを逆シリアル化してから solr に送信するプログラムが必要です。

私のアプローチは、更新ハンドラーを介してすべての新しい/更新されたドキュメントを追加し、すべてのドキュメントを追加してコミットした後、コミットが成功した場合、データベースのステータスを更新することです。このアプローチではまだ経験がないので、うまくいくかどうかはわかりませんが、どうなるか見てみます.

過去にこれを行うためのより良い方法を調査しましたが、何も見つかりませんでした。より良い解決策を見つけたら、私と共有してください.

幸運を :)

于 2012-06-22T10:57:51.417 に答える
1

25以上のテーブルを持つ高度に正規化されたスキーマからインデックスを作成する必要があり、それらの半分にはそれぞれ500万を超えるレコードが含まれています。最大〜20M。

informaticaを使用して、これらのレコードをoracleからsolrにロードします。informaticaなどのETLツールは、リレーショナルデータベースの外部でクエリのテーブル/結果を結合する方法を提供します。サイドデータベースを整理するためのソーター変換があります。db外のレコードでグループ化するための集約変換。ルックアップ変換もあります。

基本的に、データは段階的に非正規化され、ロード/インデックス作成プロセスが分散されます。

もちろん、オープンソースのETLツールもあります。MicrosoftETLツールがあります。

solrへのインデックス作成は、更新ハンドラーを介して行われます。デルタインデックス作成は、変更データキャプチャ用の追加ロジックを備えた完全インデックス作成と非常によく似ています。ETLアクティビティがスケジュールされます。

于 2012-06-23T23:29:01.437 に答える