好奇:像 CMD5 这样的网站的,数据是怎么存储的?如何快速索引

4 天前
 cat
这两天在做一个文件唯一性的工具,需要存文件的哈希值,就突然想到 CMD5 ,号称创建了 90 万亿条数据
我们简单的设想为就是 “哈希值-明文” 这样的数据结构,是如何做到快速查找的呢
488 次点击
所在节点    问与答
7 条回复
yuzo555
4 天前
hash 简直是最理想的分区、分表存储的数据类型了
长度固定,概率均匀...
cat
4 天前
@yuzo555 可是这么大的数据量,分表不会分出太多太多太多表吗 😂
rrfeng
4 天前
太多表有啥问题呢,又不用全查,按前缀分想分几级分几级
InternetExplorer
4 天前
直接用文件系统存,每级目录放 1000 个文件夹,只要 5 级目录,最终的目录里放对应的数据文件
play78
4 天前
哈希值是 16 进制的。 概率还是均匀的。
常见的用字典树就可以了。代码逻辑还非常简单。
时间复杂度是 O(16xN), 查找非常快。而且还不用全部加载到内存,理论上可以直接索引。
唯一占用的就是磁盘存储。
cat
4 天前
@InternetExplorer @play78 我以为当磁盘文件达到一定数量级之后,也会拖慢速度,尤其是当有多个查询同时发生时,看来是我多虑了
play78
4 天前
@cat #6 文件系统确实有 inode 限制,一方面是数据只会新增,一方面数据量非常大。
所以,要么是合并小文件,文件超出大小后就切分子目录。
但是这个网站如果数据量真的非常大,我觉得应该是自己实现一个文件系统,裸系统,只处理文件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1092447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX