V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
oooolongtea
V2EX  ›  程序员

既然 mysql 已经支持存储 json 数据类型,这是不是意味着它可以顶替大部分 NoSQL 的数据库应用场景?

  •  1
     
  •   oooolongtea · 2020-12-05 12:07:09 +08:00 · 4185 次点击
    这是一个创建于 1484 天前的主题,其中的信息可能已经有所发展或是发生改变。
    程序员小白一枚。最近在阅读数据库方面的书籍。
    NoSQL 特点就是不用给它的数据规定一个框架。
    那么 Mysql 既然已经支持了 JSON 的数据类型,我们能用 mysql 去顶替大部分 NoSQL 的应用场景吗?比如我们可以把一些不常被搜索到、但是又必须存储的冗余数据存储到 mysql 的 json 那一栏。
    18 条回复    2020-12-06 15:59:55 +08:00
    yrj
        1
    yrj  
       2020-12-05 12:11:27 +08:00 via iPad
    如果数据增长不多,当然可以
    oooolongtea
        2
    oooolongtea  
    OP
       2020-12-05 12:12:14 +08:00
    @yrj 你的意思是我们实际操作里,用 nosql 的时候,一般都是因为数据在段时间内爆发式增长吗?
    dorothyREN
        3
    dorothyREN  
       2020-12-05 12:28:07 +08:00   ❤️ 1
    pg 支持 json 多少年了,也没多少人把它当 noSQL 用啊
    aijam
        4
    aijam  
       2020-12-05 12:34:18 +08:00   ❤️ 1
    按这道理,你也可以文件系统直接存 JSON 文件,也能顶替大部分 NoSQL 场景。
    oooolongtea
        5
    oooolongtea  
    OP
       2020-12-05 12:41:43 +08:00
    @dorothyREN @aijam 我这不是向各位请教实际的情况嘛,因为我接触这些数据库的机会不多。
    opengps
        6
    opengps  
       2020-12-05 12:52:39 +08:00
    可以顶替,但是未必会被选用
    lizheming
        7
    lizheming  
       2020-12-05 13:25:44 +08:00 via iPhone
    索引查询需求不强的情况下是 OK 的
    wudaye
        8
    wudaye  
       2020-12-05 13:27:06 +08:00 via Android
    我的使用体验是可用但是难用
    cmdOptionKana
        9
    cmdOptionKana  
       2020-12-05 13:38:09 +08:00
    NoSQL 的应用场景本来就小,多数情况下经典 sql 就够用了。

    NoSQL 我也不太很了解,好像火过一阵子又沉寂了,我也很好奇,现在大厂对 NoSQL 是什么态度。
    sean10
        10
    sean10  
       2020-12-05 13:44:19 +08:00 via Android
    @cmdOptionKana 现在是 newsql 了吧
    dorothyREN
        11
    dorothyREN  
       2020-12-05 13:57:59 +08:00
    @lizheming #7 pg 的 json 是支持索引的
    love
        12
    love  
       2020-12-05 14:03:33 +08:00
    nosql 应用场景非常少,所以当然是可以代替的
    Jooooooooo
        13
    Jooooooooo  
       2020-12-05 15:03:42 +08:00
    当然

    因为你搞错了为什么要用 nosql
    xuanbg
        14
    xuanbg  
       2020-12-05 15:13:04 +08:00
    NoSQL 当然是在应该用的时候用。MongoDB 我们用来存快照数据,其他的使用场景也基本就没了。。
    crclz
        15
    crclz  
       2020-12-05 16:16:16 +08:00
    你可以比较一下 MongoDB 和 PostgreSQL 的 jsonb 的区别:

    1. pg jsonb 查询语言支持不友好(例如,C# Linq List.Contains 支持不了,又不报错)。spring data 那边怎么样不了解。
    2. pg jsonb 没有 map reduce,所以 jsonb 你想要 group by,就别想了,老老实实用关系模型吧。
    3. mongo 自带原生集群和分片支持
    4. 索引支持:(这点我没有经过考证,属于半瞎扯的)我个人感觉 Mongo 天生要应对复杂的文档结构,所以可能会把情况考虑的比较全

    综上,专业的东西给专业的做。

    当然,这几点也有解决方案:
    1 -- jsonb 查询语言支持不友好:写原生的字符串查询语句。thoughtworks 有一个开源的教程项目就是这样做的(用的是 mysql json )
    2 -- pg jsonb 没有 map reduce:因为 map reduce 一般是用来搞统计、查询的,所以可以利用 CQRS 的思想,把那一部分需要 map reduce 才能做统计的聚合的查询模型采用关系模型。
    4 -- 索引支持:如果查询需求复杂,就把那一部分复杂的采用 CQRS 。
    undeflife
        16
    undeflife  
       2020-12-05 19:10:24 +08:00
    虽然楼上说的全错 但是 pg 支持 json 跟 拿 pg 当 nosql 还是两回事

    简单比较其实可以参考 lsm 与 B tree 的差别
    rekulas
        17
    rekulas  
       2020-12-06 11:45:31 +08:00
    想多了,mysql 的 json 支持基本等同鸡肋,噱头而已
    aguesuka
        18
    aguesuka  
       2020-12-06 15:59:55 +08:00 via Android
    支持有程度的区别。
    mongo 有 unwined map reduce 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2809 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:43 · PVG 16:43 · LAX 00:43 · JFK 03:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.