• 请不要在回答技术问题时复制粘贴 AI 生成的内容
oooolongtea
V2EX  ›  程序员

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

  •  1
     
  •   oooolongtea · Dec 5, 2020 · 4666 views
    This topic created in 1995 days ago, the information mentioned may be changed or developed.
    程序员小白一枚。最近在阅读数据库方面的书籍。
    NoSQL 特点就是不用给它的数据规定一个框架。
    那么 Mysql 既然已经支持了 JSON 的数据类型,我们能用 mysql 去顶替大部分 NoSQL 的应用场景吗?比如我们可以把一些不常被搜索到、但是又必须存储的冗余数据存储到 mysql 的 json 那一栏。
    18 replies    2020-12-06 15:59:55 +08:00
    yrj
        1
    yrj  
       Dec 5, 2020 via iPad
    如果数据增长不多,当然可以
    oooolongtea
        2
    oooolongtea  
    OP
       Dec 5, 2020
    @yrj 你的意思是我们实际操作里,用 nosql 的时候,一般都是因为数据在段时间内爆发式增长吗?
    dorothyREN
        3
    dorothyREN  
       Dec 5, 2020   ❤️ 1
    pg 支持 json 多少年了,也没多少人把它当 noSQL 用啊
    aijam
        4
    aijam  
       Dec 5, 2020   ❤️ 1
    按这道理,你也可以文件系统直接存 JSON 文件,也能顶替大部分 NoSQL 场景。
    oooolongtea
        5
    oooolongtea  
    OP
       Dec 5, 2020
    @dorothyREN @aijam 我这不是向各位请教实际的情况嘛,因为我接触这些数据库的机会不多。
    opengps
        6
    opengps  
       Dec 5, 2020
    可以顶替,但是未必会被选用
    lizheming
        7
    lizheming  
       Dec 5, 2020 via iPhone
    索引查询需求不强的情况下是 OK 的
    wudaye
        8
    wudaye  
       Dec 5, 2020 via Android
    我的使用体验是可用但是难用
    cmdOptionKana
        9
    cmdOptionKana  
       Dec 5, 2020
    NoSQL 的应用场景本来就小,多数情况下经典 sql 就够用了。

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

    因为你搞错了为什么要用 nosql
    xuanbg
        14
    xuanbg  
       Dec 5, 2020
    NoSQL 当然是在应该用的时候用。MongoDB 我们用来存快照数据,其他的使用场景也基本就没了。。
    crclz
        15
    crclz  
       Dec 5, 2020
    你可以比较一下 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  
       Dec 5, 2020
    虽然楼上说的全错 但是 pg 支持 json 跟 拿 pg 当 nosql 还是两回事

    简单比较其实可以参考 lsm 与 B tree 的差别
    rekulas
        17
    rekulas  
       Dec 6, 2020
    想多了,mysql 的 json 支持基本等同鸡肋,噱头而已
    aguesuka
        18
    aguesuka  
       Dec 6, 2020 via Android
    支持有程度的区别。
    mongo 有 unwined map reduce 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2714 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 15:27 · PVG 23:27 · LAX 08:27 · JFK 11:27
    ♥ Do have faith in what you're doing.