V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Yunhao
V2EX  ›  数据库

关系型数据库存放 json 格式数据

  •  
  •   Yunhao · 2016-06-10 16:17:30 +08:00 · 2436 次点击
    这是一个创建于 3089 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在学习 mysql 这种关系型数据库的过程中有一个问题:当我们要存放的数据结构不确定,自然也无法确定数据库中表的结构时,可以将数据以 json 的方式存入,但是想请教大家的是,这种方式是否不被推荐,有什么弊端?在实际应用中是否可被使用?

    28 条回复    2016-06-11 22:06:21 +08:00
    mofeiwo
        1
    mofeiwo  
       2016-06-10 16:22:03 +08:00
    具体场景具体分析的。
    如果 json 的数据要被搜索的话,会很麻烦的
    ichou
        2
    ichou  
       2016-06-10 16:23:25 +08:00 via iPhone
    不做查询条件没关系的

    5.7 已经开始支持 json 类型了
    shuax
        3
    shuax  
       2016-06-10 16:24:02 +08:00
    还不如直接 mongodb
    lyragosa
        4
    lyragosa  
       2016-06-10 16:25:50 +08:00
    不作为搜索条件无所谓,就是一个大 text 字段而已
    Yunhao
        5
    Yunhao  
    OP
       2016-06-10 16:26:21 +08:00
    @mofeiwo 如果仅仅是为了存储某些信息,一旦插入,就不再做搜索和修改操作,是有使用价值的吧
    Yunhao
        6
    Yunhao  
    OP
       2016-06-10 16:28:20 +08:00
    @shuax 嗯,我也寻找到了这个解决方式。只是好奇如果限制在关系型数据库里面,大家都是怎样解决这个问题的
    Yunhao
        7
    Yunhao  
    OP
       2016-06-10 16:32:13 +08:00
    @ichou 啊哈,我发现我装的竟然还是 5.5.49 ,速去换来研究研究
    hxsf
        8
    hxsf  
       2016-06-10 16:32:54 +08:00
    序列化啊,不一定要 json
    clino
        9
    clino  
       2016-06-10 16:33:14 +08:00 via Android
    我经常这么干 当然就是只放不检索的数据
    yhxx
        10
    yhxx  
       2016-06-10 16:33:16 +08:00
    最近刚做了一个
    直接存成了 text ,取的时候再 parse
    也不知道这么做好不好
    同求解惑
    misaka19000
        11
    misaka19000  
       2016-06-10 16:46:09 +08:00 via Android
    感觉应该可以
    guoer
        12
    guoer  
       2016-06-10 17:06:43 +08:00 via iPhone   ❤️ 1
    注意有并发更新导致赃数据的坑
    Sunyanzi
        13
    Sunyanzi  
       2016-06-10 17:20:23 +08:00   ❤️ 1
    如果只是存储而不用于查询的话其实无所谓怎么存 ... JSON 或者序列化甚至直接空格分隔都可以 ...

    但如果涉及查询就比较麻烦了 ... 头两年我还在用笨办法 ... 或者建个几十列的大表或者外挂 MongoDB ...

    现在就简单很多了 ... 因为 MySQL 5.7 之后有了原生的 JSON 支持 ... 直接就可以一站式解决 ...

    我个人超喜欢这功能 ... 除了语法诡异点之外没别的缺点 ... 配合 JSON 那一系列函数和虚拟列简直所向无敌 ...
    loading
        14
    loading  
       2016-06-10 17:23:42 +08:00 via Android
    我有一个应用就是存 json ,不过不是大东西。

    数据量大就不方便了,特别是检索里面的内容…
    tabris17
        15
    tabris17  
       2016-06-10 17:31:02 +08:00 via iPhone
    如果你的 json 字段是整存整取的话无所谓,否则不推荐
    argsno
        16
    argsno  
       2016-06-10 17:32:10 +08:00
    看需求, MySQL 里面存 json 数据一般就当做序列化处理
    aggron
        17
    aggron  
       2016-06-10 18:11:27 +08:00 via iPhone   ❤️ 1
    Postgres 也有 jsonb 类型,可以被索引
    stevegy
        18
    stevegy  
       2016-06-10 20:38:07 +08:00
    附议楼上的,你需要的是 postgres
    murmur
        19
    murmur  
       2016-06-10 20:45:27 +08:00
    如果不需要检索的数据用 json 存也未必不可
    WangYanjie
        20
    WangYanjie  
       2016-06-10 23:35:48 +08:00
    mysql 5.7 支持 json 字段了,并且可以按字段检索,效率不了解,实际中应该还没有使用的,我估计
    hxtheone
        21
    hxtheone  
       2016-06-11 05:09:54 +08:00
    在公司里 mysql 只是用 text 存 json, 没有检索, 个人项目直接上 mongodb 了
    guyskk
        22
    guyskk  
       2016-06-11 08:18:01 +08:00 via Android
    并发更新怎么解决?
    halfcoder
        23
    halfcoder  
       2016-06-11 10:12:07 +08:00
    你需要最新的 X-plugin 和 X-API
    odirus
        24
    odirus  
       2016-06-11 10:18:11 +08:00
    mongodb + 1
    lygmqkl
        25
    lygmqkl  
       2016-06-11 11:24:47 +08:00 via iPhone
    拆开 mongodb
    novaeye
        26
    novaeye  
       2016-06-11 12:12:14 +08:00
    pg 不是已经原生支持 json 类型了么~~~
    0915240
        27
    0915240  
       2016-06-11 13:00:59 +08:00
    mysql5.7 JSON 类型支持虚拟列的建立,对于一些扁平化的 JSON 数据可以建立虚拟列然后在上面创建对应的二级索引,应付一些简单的查询还是可以的。
    dawncold
        28
    dawncold  
       2016-06-11 22:06:21 +08:00
    能用关系型的尽量用关系,确实有些字段可以做成 jsonb 的,再说下去就是艺术圈里面的事儿了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.