分析一下QPS辩撑,日活躍度。
比較粗暴的方式:
我們會實時有一個log,來記錄所有單詞的出現(xiàn)頻率燕刻。然后用SQL抓取 TOP 多少的詞with a prefix
問題是Like 這種比較慢饿凛,是一種range query: >=...<=....
比較好的方法是用Trie.
如何做sharding? 所有數(shù)據(jù)存在一個機器上太多了狞玛。我們可以分幾個機器。并且使用consistent hashing的方法涧窒。這樣機器增多心肪,還是會map到原本的key。比如"a" prefix全部去service 3, 'ad' prefix全部去service 1...
Reduce Log File辙培。 每一個單詞我們count++ 只有當(dāng)random number chosen from 1--1000 且 為1的時候豁跑, 1/1000.對于那么沒幾次的數(shù)據(jù)就不存了化戳。
基本對應(yīng)Leetcode search autocomplete這道題本橙。
solution: https://leetcode.com/problems/design-search-autocomplete-system/solution/#approach-3-using-trieaccepted
暴力HashMap法:
Trie ?beat 90%