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

类似知乎和公众号这种富文本数据一般怎么存储?

  •  
  •   luliqu2005 · 2020-06-06 12:01:37 +08:00 · 7229 次点击
    这是一个创建于 1628 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果都保存数据库,肯定影响查询效率,并且搜索也有问题。 我现在 java 技术栈 遇到的问题如下: 1.富文本的存储方案是 mysql,文本,es 或者其他的? 2.公众号或者问答的历史纪录数据怎么设计 3.如果做成 mysql 保存怎么优化搜索

    我现在的技术方案是放到 es 里面。不知道各位大神有什么最佳实践

    第 1 条附言  ·  2020-06-07 00:37:14 +08:00
    我是想做一个面向 C 端的自媒体文章发布系统。所以才有这个问题
    20 条回复    2020-06-06 23:58:23 +08:00
    luliqu2005
        1
    luliqu2005  
    OP
       2020-06-06 12:03:46 +08:00
    或者有什么开源库分享一下
    iConnect
        2
    iConnect  
       2020-06-06 13:03:17 +08:00 via Android
    存 nosql 或者 cassandra 都可以
    sivacohan
        3
    sivacohan  
       2020-06-06 13:17:45 +08:00 via iPhone
    Postgres + fdw + elasticsearch
    mornlight
        4
    mornlight  
       2020-06-06 13:31:02 +08:00
    常见的就数据库存一份,搜索用额外的 ES 。
    任何正经点的关键词搜索肯定是没法用 MySQL 做的。
    alalida
        5
    alalida  
       2020-06-06 14:51:19 +08:00 via Android
    没理解你的意思,在我看来富文本也是文本,只是多了一些渲染用的修饰符,直接按文本存储应该就可以吧。如果要全文查找,就上 es 。
    catror
        6
    catror  
       2020-06-06 14:59:18 +08:00 via Android
    数据可以冗余,存在多个地方
    falcon05
        7
    falcon05  
       2020-06-06 15:01:29 +08:00 via iPhone
    不存数据库存哪里?
    mostkia
        8
    mostkia  
       2020-06-06 15:48:54 +08:00
    我是直接 page 文件存储,uid=文件名,索引时直接让后台读取文件内容倒内存吐出到前台。性能没怎么测试,感觉文章内容多的话,这样存储比较合适?而且能够方便的备份内容。
    mostkia
        9
    mostkia  
       2020-06-06 15:50:02 +08:00   ❤️ 1
    当然索引还是需要创建存储在数据库的,只是内容以文件形式存放在文件系统里。
    ipwx
        10
    ipwx  
       2020-06-06 15:52:03 +08:00
    存一份富文本,一份全文搜索引擎的倒排索引。关键词,全文搜索。
    luliqu2005
        11
    luliqu2005  
    OP
       2020-06-06 16:03:54 +08:00
    @mostkia 这种对磁盘 io 要求很高吧。直接读取文件
    luliqu2005
        12
    luliqu2005  
    OP
       2020-06-06 16:05:14 +08:00
    @iConnect
    @sivacohan
    你们说的这种方案又在用吗?没实践过不敢贸然用。现在能想到的就是 db 一份,es 一份。搜素走 es
    ipwx
        13
    ipwx  
       2020-06-06 16:08:33 +08:00
    @luliqu2005 有啥不敢用的,你这是一种正确思路啊。ES 主要就不是数据库,而是全文搜索引擎,有倒排索引的。建议搜索一下全文搜索的基本原理,可不是拿着数据库记录一条条读出来然后 LIKE 匹配那么简单。
    namelosw
        14
    namelosw  
       2020-06-06 17:52:59 +08:00
    S3 或者等价的东西 + ES
    mostkia
        15
    mostkia  
       2020-06-06 20:08:07 +08:00
    还好吧,如果都是文档之类的那一般都是小文件,那比较考验随机独写吧,理论上可能对机械盘不太友好,可以使用固态来优化。当然以上都是基于经验的推理,只能作为以后优化的参考,目前我的站点还没有产生瓶颈的用户数量,优化不存在的[狗头]
    mostkia
        16
    mostkia  
       2020-06-06 20:08:34 +08:00
    srlp
        17
    srlp  
       2020-06-06 22:26:46 +08:00 via iPhone
    存储 mysql,搜索 es
    wangyzj
        18
    wangyzj  
       2020-06-06 22:41:50 +08:00
    mysql + es 呗
    luliqu2005
        19
    luliqu2005  
    OP
       2020-06-06 23:57:01 +08:00 via iPhone
    多谢各位大佬,我先按照 es+mysql 组合吧
    luliqu2005
        20
    luliqu2005  
    OP
       2020-06-06 23:58:23 +08:00 via iPhone
    多谢各位大佬,我先用 es+mysql 的组合吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:38 · PVG 22:38 · LAX 06:38 · JFK 09:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.