▽2
●
lang_and_engine ベストアンサー |
>似たような製品を探す労力を省く
イメージとしては,Amazonの「この商品を買った人はこんな商品も買っています」の欄でしょうか。
これは,リアルタイムで0から算出するような処理ではないですね・・・。
バッチ処理で,前もって付加しておくべき情報です。
マスタデータ内のそれぞれの商品情報に対して,
自分と似ているような「類似商品情報」を
マスタデータ内の他のデータから探し,
これらの商品同士が類似している,という関係を別テーブル等にまえもって記録しておきます。
類似の関係の導出方法は,商品の名前の前方一致であったり,
ユーザの購買履歴から,同じような年齢層のユーザがさいきん買っているものを
トレンド分析します。
レコメンドできる類似商品は定期的に更新されてゆきます。
これらは,マスタデータ(や購買ログ)など,
主に過去に確定済みの情報だけにもとづいて算出する性質の情報なので,
リアルタイムでは処理しません。
しかもマスタデータの分量が膨大ですから,なおさらリアルタイム向きではありません。
1日おき,数時間おき,1時間おきなどの周期で
裏でバッチ処置で集計し,類似商品の紐付けや
レコメンドの指標を更新しておきます。
そうすれば,ユーザがある商品の情報を調べたときには,
あらかじめバッチ処理によって算出済みの類似商品情報を
一瞬で提供できます。
SQLのパフォーマンスを向上させる,という方針ではなく
前処理としてインデクシングをしておく(検索しやすいようにデータ同士の紐付けを事前に済ませておく),また
時間がかかる処理であることを前提に定期的なバッチ処理に回す
という方針でご検討ください。