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

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

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

因为你搞错了为什么要用 nosql
xuanbg
2020-12-05 15:13:04 +08:00
NoSQL 当然是在应该用的时候用。MongoDB 我们用来存快照数据,其他的使用场景也基本就没了。。
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
2020-12-05 19:10:24 +08:00
虽然楼上说的全错 但是 pg 支持 json 跟 拿 pg 当 nosql 还是两回事

简单比较其实可以参考 lsm 与 B tree 的差别
rekulas
2020-12-06 11:45:31 +08:00
想多了,mysql 的 json 支持基本等同鸡肋,噱头而已
aguesuka
2020-12-06 15:59:55 +08:00
支持有程度的区别。
mongo 有 unwined map reduce 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/732391

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX