实际工程中的十亿条数据完全匹配查询
資深大佬 : beryl 1
也算是一道常见的算法题:有十亿条 URL,来了一个新的 URL 判断是否在里面,提供在线服务
但是想着优先使用 mysql 查询,其次 ES, 想布隆过滤器等不适合在工程应用,要保证准确
现有思路,将 url 进行 md5 存储,作为主键 key 分表放在数据库。
但是不清楚具体这种情况下效率会是怎么样
大佬有話說 (22)
也算是一道常见的算法题:有十亿条 URL,来了一个新的 URL 判断是否在里面,提供在线服务
但是想着优先使用 mysql 查询,其次 ES, 想布隆过滤器等不适合在工程应用,要保证准确
现有思路,将 url 进行 md5 存储,作为主键 key 分表放在数据库。
但是不清楚具体这种情况下效率会是怎么样
没有理解布隆的精髓啊
估计需要 3 台 128G 内存的物理机就足够了。
主这个需求,如果只是判断是否在里面,布隆过滤器就够了。十亿数据,根据最优概率公式算出来,错误率控制在万分之一左右,我记得也就一个多 GB 。
一份之前用过的 Python 代码贴出来以供参考:
https://gist.github.com/abersheeran/210f5c1a6f36721302f755e39a242e50