跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 实际工程中的十亿条数据完全匹配查询
未分類
5 2 月 2021

实际工程中的十亿条数据完全匹配查询

实际工程中的十亿条数据完全匹配查询

資深大佬 : beryl 1

也算是一道常见的算法题:有十亿条 URL,来了一个新的 URL 判断是否在里面,提供在线服务

但是想着优先使用 mysql 查询,其次 ES, 想布隆过滤器等不适合在工程应用,要保证准确

现有思路,将 url 进行 md5 存储,作为主键 key 分表放在数据库。

但是不清楚具体这种情况下效率会是怎么样

大佬有話說 (22)

  • 資深大佬 : liprais

    为啥 bloom 过滤器不行?

  • 資深大佬 : Jooooooooo

    “布隆过滤器等不适合在工程应用” “要保证准确”

    没有理解布隆的精髓啊

  • 資深大佬 : rahuahua

    @Jooooooooo 主这种情况确实不适合 bloom 呀

  • 資深大佬 : lanmoyingsheng

    布隆过滤可以保证不存在。
    感觉先布隆过滤,如果不存在直接返回;如果存在 再查 ES 或 mysql ;

  • 資深大佬 : liuxu

    用 crc64 可以小一点,md5 得 32 位 char 做索引,然后 hash 拆库

  • 資深大佬 : dongtingyue

    es 为啥不能保证准确?

  • 資深大佬 : sampeng

    请问…用数据库,es 实现了。还考个什么算法?

  • 資深大佬 : herozzm

    @dongtingyue #6 es 更新不能及时体现,只能说接近即时

  • 資深大佬 : liuzhaowei55

    热数据放缓存,key hash 后分表,数据库如果用 mongo 单表 2 亿数据,加个索引就行了基本不需要特殊优化。

  • 資深大佬 : swulling

    不需要数据库,使用 Hash 表就可以了,先做 Hash,然后进行取模 Mod N,分布到 N 个 Hash 表里。

    估计需要 3 台 128G 内存的物理机就足够了。

  • 資深大佬 : tisswb

    url 的话 那就先格式化,然后 md5,然后 redis

  • 資深大佬 : fengpan567

    ES 为啥不能保证准确性?更新延迟?

  • 資深大佬 : love

    md5 太大了,64 位 hash 算法如 xxhash 足够,hash 加个索引 where hash = ? and url = ?就行了

  • 資深大佬 : THESDZ

    拆分 模拟树结构就好了

  • 資深大佬 : aeli

    10 亿 url,做成短链?

  • 資深大佬 : lambdaq

    先申请 10 万台服务器,每个服务器存 1 万条数据。这样是不是就简单了。2333

  • 資深大佬 : chenqh

    感觉可以 md5 hash,要是觉得长, 可以只存前 16 位呀

  • 資深大佬 : wangdashuai

    可以构造前缀树,这样可以压缩数据大小.

  • 資深大佬 : abersheeran

    @wangdashuai 压缩前缀树面对十亿这个量级还是不够用的。我之前试过。

    主这个需求,如果只是判断是否在里面,布隆过滤器就够了。十亿数据,根据最优概率公式算出来,错误率控制在万分之一左右,我记得也就一个多 GB 。

    一份之前用过的 Python 代码贴出来以供参考:

    https://gist.github.com/abersheeran/210f5c1a6f36721302f755e39a242e50

  • 資深大佬 : abersheeran

    @abersheeran 如果要精准判断,这里就需要上一个 kv 索引了。这个参考一下 HBase 之类的数据库做法就行,也没啥别的好办法。

  • 資深大佬 : Lemeng

    10 亿条,竟然 url

  • 資深大佬 : luozic

    Cuckoo Filter 了解一下

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具