Google Trends(またはTwitterなどの大規模なトレンド機能)の背後にあるシステム設計を理解しようとしています。Googleトレンドのシステム設計?
課題:
傾向を計算するために大量のデータを処理する必要があります。
フィルタリングのサポート - などの時間、地域、カテゴリー別
アーカイブ/オフライン処理のために保存する方法が必要です。フィルタリングのサポートには、多次元ストレージが必要になることがあります。
これは私の仮定があるものです(私はMapReduceの/ NoSQLの技術のゼロpractial経験を持っている)
ユーザーからの各検索項目は保存され、最終的に処理される属性セットを維持します。
としてだけでなく、タイムスタンプによって検索のリストを維持し、検索の範囲、カテゴリなど
例:
Kurt-> (Time stamp, Region of search origin, category ,etc.)
Cobain-> (Time stamp, Region of search origin, category ,etc.)
質問:Kurt Cobain
用語の検索
検索用語の頻度を効率的にどのように計算するのですか?
つまり、大きなデータセットがある場合、上位10個の頻繁なアイテムはどのようにして分散スケール可能な方法で見つけられますか?
特定の民間企業が、それは一般に公開そうではなく、どのようなシステムの有効性を評価するためには、設計者の裁量でどのように正確に
また、時間の減衰係数を考慮する必要があります –
私は、トレンドの発見を加速するように構造化された特殊なデータ構造を使用して、データがオンラインの何百万人ものユーザーのすべてのオープン機能 –
明らかに、他の誰かが賞金を申し出た質問を閉じるために投票することはできませんが、私にはこのトピックは話題外/広すぎると思われます。このトピックに関する多くの技術と研究分野があり、答えは、教科書や専用ウェブサイトなどのより適切なリソースにリンクする以外に、それらをカプセル化することができます。ヘルプセンターのガイドラインの1つを言い換えると、「答えを見つけることに基づいてキャリアやビジネスプラン全体を想像できれば、問題はおそらく広すぎるでしょう」 – IMSoP