hyhcoder
V2EX  ›  数据库

json 数据的存储, 是放在 redis 还是数据库

  •  
  •   hyhcoder · Feb 27, 2018 · 3721 views
    This topic created in 3000 days ago, the information mentioned may be changed or developed.

    现在有一批用户设计的数据, 最后前端会用 json 的数据封装, 之前的设计都是直接把这个寸数据库, 导致现在那张表越来越大, text 类型过多会导致臃肿, 那这些数据是要怎么设计处理比较合理呢? 放 redis? 如果数据量一大好像也吃内存什么吧; 还是转对象单独存一张表, 但问题现在的设计数据有好多种类型, 并不一致;

    大家有遇到这种的经验吗? 或者让你设计会怎么设计

    32 replies    2018-02-28 15:10:02 +08:00
    hyhcoder
        1
    hyhcoder  
    OP
       Feb 27, 2018
    其实就是数据库大文本, 过多会拖慢数据库, 这样要怎么处理, 放 redis 吗, 还是怎么弄
    cstj0505
        2
    cstj0505  
       Feb 27, 2018   ❤️ 1
    放数据库的话可以考虑 postgresql,支持 json 类型,json 索引,函数。

    不过还是建议你们在设计端考虑考虑吧,用 json 存储对象优点偷懒
    jjianwen68
        3
    jjianwen68  
       Feb 27, 2018   ❤️ 1
    mysql5.7 原生支持 json,是不是底层对这种情况做了优化?
    lizhenda
        4
    lizhenda  
       Feb 27, 2018   ❤️ 1
    mongodb 冗余大数据你值得拥有
    est
        5
    est  
       Feb 27, 2018   ❤️ 2
    能问这种问题的,一般 mongodb 能管饱。

    如果 mongodb 不管饱,那么你对你的问题就问得更加有针对性了。
    Immortal
        6
    Immortal  
       Feb 27, 2018   ❤️ 1
    mongodb
    solee
        7
    solee  
       Feb 27, 2018   ❤️ 1
    不是 mongodb 么
    lcj2class
        8
    lcj2class  
       Feb 27, 2018   ❤️ 1
    「用户设计的数据」不需要查找、过滤嘛?如果不需要,感觉可以纵向拆表,把常用的数据与这些数据分开
    maemual
        9
    maemual  
       Feb 27, 2018   ❤️ 1
    这个 json 需要查询么?怎么听起来这个 json 只是当成 text 使用呢?
    hyhcoder
        10
    hyhcoder  
    OP
       Feb 27, 2018
    @lcj2class 基本不需要查询, 可以说直接取出前端用即可
    hyhcoder
        11
    hyhcoder  
    OP
       Feb 27, 2018
    @maemual 现在的确就是当成一个 text 来用, 但表空间增长得恐怖, 现在一个表 250G 了, 但这些数据其实不是查询相关, 感觉不应该直接放数据库的样子
    hyhcoder
        12
    hyhcoder  
    OP
       Feb 27, 2018
    @lcj2class 其实就还是存数据库, 就单表单字段关联这样吧
    ray1888
        13
    ray1888  
       Feb 27, 2018   ❤️ 1
    是经常需要读的数据吗?还是需要修改的数据?
    swulling
        14
    swulling  
       Feb 27, 2018 via iPad   ❤️ 1
    @hyhcoder 如果是 11 楼的需求,mongodb 很符合。

    redis 显然不符合。。250G
    hyhcoder
        15
    hyhcoder  
    OP
       Feb 27, 2018
    @ray1888 会经常读, 也会修改更新
    ray1888
        16
    ray1888  
       Feb 27, 2018 via Android
    250g 的话,感觉 mongo 可能会坑,感觉可以试试 tidb(他们好像挺标榜性能的,看他们的宣传)或者 hbase 感觉也可以
    th00000
        17
    th00000  
       Feb 27, 2018
    最近接触了 dynamodb 对 json 的支持比较好 , 不负责任的回答
    wweir
        18
    wweir  
       Feb 27, 2018 via Android
    表过大影响速度了吗?
    没影响的话,直接对表分区好了
    CoderGeek
        19
    CoderGeek  
       Feb 27, 2018 via iPhone
    数据量太大了 redis 不太合适 小的直接存 json str 到可以
    CoderGeek
        20
    CoderGeek  
       Feb 27, 2018 via iPhone
    或者 mysql5.7 可以存 json 支持查询
    qiayue
        21
    qiayue  
    PRO
       Feb 27, 2018
    最简单改动最小的就是还用 MySQL,增加一个 json 表(可以单表也可以拆分),这个表存 json 字符串,然后原先的表只存这个表的 ID。用的时候再去 json 表取,再配合一定的缓存( Memcached 或者 Redis ),速度飞快。
    prolic
        22
    prolic  
       Feb 27, 2018 via Android
    看起来像类似用户词典之类的东西,还是存成静态文件,拿 key 取比较合适
    pathbox
        23
    pathbox  
       Feb 27, 2018 via iPhone
    pg 欢迎你,MySQL 其实也没问题
    wizardforcel
        24
    wizardforcel  
       Feb 27, 2018
    mongodb

    无论是 redis 还是关系型数据库,都需要整个拿出来再解码才能查询里面的一个属性,开销太大,mongo 就不用。
    puritania
        25
    puritania  
       Feb 27, 2018
    将大字段从表中拆出去,单独建库,做好分表策略使得单表数据量足以满足查询速度,可以考虑用 redis 缓存数据,每个 key 设置较短的超时时间,每次 get key 时重置超时时间,让热数据一直在 cache 中,冷数据及时过期。
    xpresslink
        26
    xpresslink  
       Feb 27, 2018
    建议用 postgres 9.5+版,已对 json 和 jsonb 支持相对比较完善了,至少没有其它数据库比得上。存取速度和 mongodb 不相上下,所以直接用 pg 吧。250G 对于 pg 来说只是毛毛雨。
    beginor
        27
    beginor  
       Feb 27, 2018 via Android
    用 pg 吧,妥妥的
    0915240
        28
    0915240  
       Feb 28, 2018
    是单表 250G ???
    killpanda
        29
    killpanda  
       Feb 28, 2018 via iPhone
    感觉这种场景可能是设计问题
    Zzde
        30
    Zzde  
       Feb 28, 2018 via iPhone
    前段提交的数据不需要过滤拆分吗?需要时候在重新组合返回不行吗?
    changrui0608
        31
    changrui0608  
       Feb 28, 2018
    NoSQL 用 MongoDB,RDMS 用 PostgreSQL,这俩对 JSON 的直接支持已经有较久的历史了,速度都很快,最近 MySQL 不太了解
    印象里 redis 这种大多是拿来存逻辑上可以非持久化的数据的,比如配置、session、数据库查询结果缓存之类的
    iceiceice
        32
    iceiceice  
       Feb 28, 2018
    我猜你需要 mongodb 真的适合你
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3080 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 144ms · UTC 13:45 · PVG 21:45 · LAX 06:45 · JFK 09:45
    ♥ Do have faith in what you're doing.