MongoDB 存储普通数据, MySQL 存储重要/敏感数据, 这样设计合理吗?

2023-07-14 21:55:54 +08:00
 hzzhzzdogee

二者存储的数据实际是同一业务的. MongoDB 会存储如用户信息这类数据, MySQL 会存储如金额,充值等数据.

我的问题:

  1. 这样设计是否合理?

  2. 这样跨库事务如何做合适呢?

小弟不才, 刚入业界不久, 还望不吝赐教.

3150 次点击
所在节点    程序员
34 条回复
yrj
2023-07-15 01:57:08 +08:00
过度优化是万恶之源,当然如果有足够的理由当我没说
pindleskin
2023-07-15 02:04:58 +08:00
其实没有特别多要求的话,postgress 可能是好的选择,少一个系统就不少麻烦,没有很多数据量的话,postgress 实际上都能存,当业务有这么多数据量的时候,你也已经不需要来这种地方问了。另外,mongo 按照我的理解是有些坑,schemaless 开始是没问题的,但上线了有业务量不定期可能就会因为各种原因(比如突然的数据增长,比如上线了某个功能去查询了一个有大量数据的表)导致查询没有索引的大表让数据库 100%cpu 后挂掉,这时候你不得不在压力下(因为系统重启后会继续挂掉不可用)看慢查询,然后建索引,这个过程可能需要一两个小时甚至半天,为什么不一开始就设计 schema 建好索引呢,所以我个人是认为能不用 mongo 就不用。
kkwa56188
2023-07-15 02:39:52 +08:00
确定是 不重要的 可以放 MongoDB, 典型的 例如 用户 对 一件商品的 评价/打分/赞.
其余的, 统统, 包括拿不准的, 一律放 关系数据库 MySQL.
dayeye2006199
2023-07-15 03:05:45 +08:00
什么魔鬼设计?
2023 年了,多看看新版本的 PG 和 mySQL ,需要 schemaless 用 json 字段就行。

话说大部分业务,需要 schemaless 的,可以再想想是自己管理混乱+需求不清,还是真的是个技术问题
kkocdko
2023-07-15 03:30:58 +08:00
尊重祝福,不作评价。
zhuangzhuang1988
2023-07-15 08:17:15 +08:00
折腾。
bthulu
2023-07-15 08:53:28 +08:00
@dayeye2006199 mysql 的 json 列, 貌似不支持纯数组
jenlors
2023-07-15 09:32:05 +08:00
增加了系统复杂性,如果没有非用不可的理由建议不要用
winglight2016
2023-07-15 10:20:57 +08:00
离谱的设计和离谱的设计理由。你不管选 mysql 或者 mongodb 都可以实现业务,但是两个一起用到底图个啥呢?考虑过关联查询怎么做了吗?事务处理支持两阶段提交吗?报表能不能跨库查询?

另外,mysql 单表记录数支持有上限,分库分表不支持外键。mongodb 我没有在生产中用过,但是优势在于 nosql ,而不是什么业务数据类型。
wxf666
2023-07-15 14:40:04 +08:00
@bthulu #27 实测 5.7 都支持呀。。
hzzhzzdogee
2023-07-15 19:42:05 +08:00
@pindleskin 感谢指导和建议
hzzhzzdogee
2023-07-15 19:43:30 +08:00
@winglight2016 好的, 感谢兄弟的建议和指导
totoro52
2023-07-16 10:38:38 +08:00
@bthulu 8.0 对 JSON 优化很好了,推出了一大堆的 JSON 的函数 可以对 JSON 直接操作了
slzcz
2023-07-16 14:16:53 +08:00
主要还是看团队技术选型吧,mongodb 在需求经常调整字段多变的情况下确实很爽。

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

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

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

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

© 2021 V2EX