Skip to content

Commit 26ead30

Browse files
committed
feat: chapter 9
1 parent d3dc93a commit 26ead30

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

docs/grokking/chapter-9.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,17 @@
7070
如果你注意到,我们并没有在每个节点中存储最佳建议及其计数。存储这类信息非常困难,因为Trie是自上而下存储的,在父节点创建之前,子节点尚未生成,因此无法轻松存储它们的引用。为了解决这个问题,我们需要在构建Trie的过程中重新计算所有最佳词条及其计数。
7171

7272
具体而言,每个节点在构建时会计算自己的最佳建议并将其传递给父节点。父节点会合并所有子节点的结果,从而确定自己的最佳建议。
73+
74+
## 5. 规模估算
75+
76+
如果我们构建的服务规模与Google相当,每天可以预期有50亿次搜索,这大约相当于每秒60,000次查询。
77+
78+
由于50亿次查询中会有大量重复项,我们可以假设只有20%的查询是唯一的。如果我们只想索引最热门的50%搜索词条,可以排除很多低频搜索的查询。假设我们需要为1亿个唯一词条构建索引。
79+
80+
**存储估算:** 如果每个查询平均由3个单词组成,并且每个单词的平均长度为5个字符,则平均查询大小为15个字符。假设存储一个字符需要2字节,那么存储一个查询需要30字节。总存储需求为:
81+
82+
1亿个词条 × 30字节 = **3 GB**
83+
84+
考虑到数据量每天可能会增长,同时也会删除一些不再被搜索的词条。如果假设每天有2%的新增查询,并且我们维护过去一年的索引,预计的总存储需求为:
85+
86+
**3 GB + (0.02 × 3 GB × 365 天) = 25 GB**

0 commit comments

Comments
 (0)