V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
joker2026
V2EX  ›  程序员

上亿数据,如何完成快速检索

  •  
  •   joker2026 · 2023-10-04 17:16:56 +08:00 · 3370 次点击
    这是一个创建于 417 天前的主题,其中的信息可能已经有所发展或是发生改变。

    针对上亿数据,根据其中一个字段或两字字段进行搜索模糊查询,一般使用什么中间件或者搜索方法? 不拘泥于言,不拘泥于框架,请大神各抒己见。当然 php 、java 这种常见的语言,参考意义比较大,谢谢

    17 条回复    2023-10-05 17:26:46 +08:00
    locoz
        1
    locoz  
       2023-10-04 17:19:24 +08:00 via Android   ❤️ 3
    elastic search
    netnr
        2
    netnr  
       2023-10-04 18:05:16 +08:00 via Android
    如果搜索结果是返回少量数据, ClickHouse 秒出
    insmoin
        3
    insmoin  
       2023-10-04 18:27:02 +08:00
    全文搜索引擎
    redtech
        4
    redtech  
       2023-10-04 18:37:53 +08:00 via iPhone
    也可以用 meilisearch
    dusu
        5
    dusu  
       2023-10-04 19:06:29 +08:00 via iPhone
    manticoresearch
    Rocketer
        6
    Rocketer  
       2023-10-04 20:45:13 +08:00 via iPhone
    @netnr 秒也太慢了🤣

    超过 100 毫秒用户体验就算差了
    GeorgeWai
        7
    GeorgeWai  
       2023-10-04 21:00:02 +08:00 via iPhone
    es ,ch 都可以,关键还是在于硬件😄
    missuo
        8
    missuo  
       2023-10-04 21:04:30 +08:00 via iPhone
    clickhouse yyds
    zhuzhibin
        9
    zhuzhibin  
       2023-10-04 21:25:24 +08:00 via iPhone
    插个话 es 的全模糊 wildcard 有啥替代方案 性能太差了 上次有过一次把单节点 CPU 干满了 大量查询导致 search 线程池也阻塞满了
    matrix1010
        10
    matrix1010  
       2023-10-04 21:45:26 +08:00
    @zhuzhibin N-gram 空间换时间,一般来说 2gram 或 3gram 效果都很不错, 你也可以两个加一起。比如 google code search 就是 trigram: https://github.com/google/zoekt
    Sakura0Tears
        11
    Sakura0Tears  
       2023-10-04 21:48:03 +08:00
    只会 Excel 难蚌
    matrix1010
        12
    matrix1010  
       2023-10-04 21:50:27 +08:00
    owen800q
        13
    owen800q  
       2023-10-05 00:44:25 +08:00 via iPhone
    Serverless 版本的 mongodb, 别说一亿,100 亿都没问题
    bjzhush
        14
    bjzhush  
       2023-10-05 11:40:28 +08:00
    你缺了很多条件,比如配备的硬件,QPS ,响应时间要求
    我说个我做过的单机版的,10 年前了,拿 sphinx 搞的,大概 3-5 亿条记录,印象中响应是 500 毫秒内
    dlmy
        15
    dlmy  
       2023-10-05 11:46:36 +08:00
    我司国庆之前用 32G 内存的服务器,压测了单机版的 ClickHouse ,数据可以参考一下:

    扫描行数:530,000,000
    耗时(秒):0.942
    查询列数:2
    结果行数:46
    zhuzhibin
        16
    zhuzhibin  
       2023-10-05 15:11:15 +08:00 via iPhone
    matrix1010
        17
    matrix1010  
       2023-10-05 17:26:46 +08:00
    @zhuzhibin 看了一眼 es 的文档,wildcard 类型已经是通过 trigram 来优化了。如果用 wildcard 类型 cpu 还高可能就要考虑一下别的方法 https://www.elastic.co/cn/blog/find-strings-within-strings-faster-with-the-new-elasticsearch-wildcard-field
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3771 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:06 · PVG 13:06 · LAX 21:06 · JFK 00:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.