我想弄清楚谷歌趨勢背後的系統設計(或任何其他如Twitter這樣的大規模趨勢功能)。Google趨勢的系統設計?
挑戰:
需要處理大量的數據來計算趨勢。
過濾的支持 - 按時間,區域,類別等
需要一種方法來存儲存檔/離線處理。篩選支持可能需要多維存儲。
這是我的假設是什麼(我的MapReduce/NoSQL的技術零practial經驗)
從用戶的每次搜索項目將保持設置將被保存並最終處理的屬性。
除了按時間戳,搜索的區域,類別等,保持搜索的列表
例子:
搜索Kurt Cobain
項:
Kurt-> (Time stamp, Region of search origin, category ,etc.)
Cobain-> (Time stamp, Region of search origin, category ,etc.)
問題:
他們如何有效地計算搜索詞的頻率?
換句話說,給定一個大的數據集,他們如何找到分佈式規模化方式的前10個頻繁項目?
還需要考慮時間衰減因子 –
我認爲使用以加速查找趨勢的方式構建的特殊數據結構,數據的排列方式可以爲數百萬在線用戶在線預處理所有打開的功能 –
顯然我不能投票結束別人提供的賞金問題,但對我來說,這個問題似乎偏離主題/太廣泛:有許多技術和與此主題相關的研究領域,並且沒有辦法一個答案可以封裝他們,而不是通過鏈接到一些更合適的資源,如教科書或專用網站。爲了解釋幫助中心的指導原則之一:「如果您可以想象基於找到答案的整個職業生涯或商業計劃,那麼問題可能過於寬泛」。 – IMSoP