インデックスを作成したデータベースには約 1,000 万件のレコードがあり、db ではなく solr からレコードを取得することで高いパフォーマンスの利点が見られたため、これを実行できたことをうれしく思います。このデータはレポートに使用されます。
現在、インデックスにフラット データを保持しています。例えば:
Itemid, Companyname, Username, Status
たとえば、アイテムのステータスが Received から Sold に変わるとすぐに、solr API を呼び出してレコードを更新します。すべてが非常にうまく機能しています。インデックスはリアルタイムで更新されており、レポートはうまく機能しています。
質問 1: 将来、ユーザーが会社名を会社 A から会社 B に変更したり、ユーザー名をマイクからジミーに変更したりした場合、これをどのように処理すればよいでしょうか?
私の考え
ユーザーと会社の更新イベントをリッスンし、name = old name の solr インデックスのみを更新します
名前の代わりに会社とユーザーの ID をインデックスに保持します。そして、solr からレコードをフェッチした後、db をもう一度ヒットして、更新された名前を取得します。これは、主要なフィールドがインデックスから取得され、そのようなフィールドのみが db テーブルから取得される混合アプローチになります。
質問 2: solr update を呼び出して、呼び出しごとにステータス遷移のインデックスを更新しています。これを行うためのより良い方法はありますか?将来のパフォーマンス ヒットに関して、またはステータス遷移の頻度が増加した場合に、何か欠けているものはありますか?
質問 3: たとえば、将来、まだインデックスが作成されていない列をレポートにもう 1 つ表示する必要があるとします。それを行うための標準的な許容可能な方法は何ですか?
これについて専門家のアドバイスをよろしくお願いします。