目前我在写一个 CMS ,用 mongodb ,但网上有人说 mongodb 丢数据的问题
https://mp.weixin.qq.com/s/I3ug7Qv9jz3-uD3x_N1jKw
这个文章把 mongod 狠狠批评了一番
所以想请教大家一个问题:mongodb 要到多大数量级才会考虑这些性能啊、丢数据啊之类的问题
我觉得我一个 cms ,个人写博客, 充其量也就 1000 篇文章,
就算做成电商,一个独立站估计也就 10 万商品
所以这个数据量似乎比较小
需要担心这些问题吗?谢谢
谢谢
1
ZGame 106 天前
不需要吧... 你看文章里都说了 mongodb 的分析引擎是 pg 。。。
|
2
sagaxu 106 天前
数据量都没过千万,MySQL 的 JSON 类型又不是不能用,MongoDB 导出表的索引还得自己写代码实现
|
3
wupher 106 天前
之前负责的项目,最高数据量达 7 亿,使用 MongoDB Sharding ,没有出现丢数据的问题。
我们用的也是 4.2 系列的版本。当时还没有 5 版本。 不过,后续数据进一步攀升,我们也按领导要求迁移到了 Cassandra 。 |
4
egen 106 天前 1
这个 非法加冯 是 pg 的狂热爱好者,个人或者小公司不用担心 mongodb 的性能问题
|
5
wqhui 106 天前
没丢过,只是因为非结构化导致新旧数据维护麻烦,对 mongo 来说同 collection 也不保证结构一样,如果没有强制每次结构变更及时维护旧数据,等某天取数使用的时候会出来一堆各个版本的结构,最典型的是字段 A 远古版本是 int ,最新版是 varchar ,取数出来处理就出错了,一般只适合用于纯查询、存储
|
6
demon1991yl 106 天前
这个作者典型的眼红了吧,用了这么久 mongodb ,没出现过这种问题,而且你这个量级,定期做备份,没啥问题的
|
7
ForrestWang 106 天前
如果会有丢数据问题怎么可能这么多人用,最早之前我们车联网的上报数据都存在 mongodb ,没出现过这个问题-_-
|
8
sunny352787 106 天前
丢数据这么严重的指控,mongodb 可以告他诽谤了
|
9
chendy 106 天前
MongoDB 丢数据的问题,少说十年前就无了啊…
|
10
HaroldFinchNYC OP |
11
ellermister 106 天前 via Android
@wqhui 性能先不担心。
我很好奇 mongo 怎么解决新老数据字段意义不一样,新老版本字段数不一样的问题? 这个到底适合什么样的业务? 我有用过几次 mongo ,因为动不动炸了,重启还原数据报错很难解决,没深入就放弃了。 即使类似我长期用的 es 也要在业务更新时使用索引迁移,字段重新设定约束来适配新的业务。 那 mongo 没有 es 分词特性,又没有关系数据库的约束严谨,他适用于什么场景呢? |
12
flmn 106 天前
首选 MySQL 和 PostgreSQL ,只有他们搞不定了(好像并没有)再考虑 MongoDB 。
|
13
XiLingHost 106 天前 3
没听说过正常运行有这种问题啊,mongo 最大的问题是在异常断电后数据很容易炸,有时候文件系统都没事它就炸了,经常备份和做 replicaset 都可以解决这个问题
|
14
crysislinux 106 天前
@ellermister 关系型数据库怎么解决字段变化 mongodb 就怎么解决呗。简单来说就是加新的字段,然后跑个任务把老字段的内容同步到新字段。无非就是 mongodb 没有强制性。
|
15
XiLingHost 106 天前
@ellermister mongodb 也有 schema validation 支持,不过只能验证新插入的文档,你可以把旧文档都读出来 migration 成新的格式再 update 回去
|
16
catinsides 106 天前
我用了七八年 MongoDB ,你可以说他内存占用高,慢,丢数据我倒是头一次听说。
|
17
chesha1 106 天前
真的会丢数据吗? nosql 数据库只是不保证 100%的一致性,但是丢数据这个也太离谱了吧
|
18
clf 106 天前
目前还没丢过。
|
19
PTLin 106 天前 2
毕竟那个文章作者冯若航就是靠 PostgreSQL 赚钱的,可以看看他之前的文章,他说出什么话我都感觉不奇怪。
|
20
snipking 106 天前
TB 级数据多节点 sharding ,运行了大概 8 年了,从没出现过丢数据或者损坏的问题,性能线性,吞吐量也不错,只要用对了场景没毛病
|
21
litengyu86 106 天前
这个级别的数据量,很多数据库都没有压力。
|
22
Fooooo0 106 天前 1
目前的 mongodb 不存在丢失数据的问题,放心用。
但是数据备份始终都是要的。 |
23
mightybruce 106 天前 1
我早就屏蔽这个冯若航和他写的一堆玩意,你不要听风就是雨。
|
24
HaroldFinchNYC OP @Fooooo0 感谢大佬
|
25
HaroldFinchNYC OP @litengyu86 谢谢大佬
|
26
HaroldFinchNYC OP @mightybruce 谢谢大佬
|
27
wqhui 106 天前
@ellermister 靠自己每次改了表结构之后所有旧数据重刷为新数据版本,然而因为非数据库强制,全靠开发团队管理或者自觉,这本身就是靠不住的。所以我觉得更多的使用场景是如日志、blog 这类,新旧数据是无关联的,每条数据仅代表本身当时的情况,有这字段就支持检索筛选展示,相对 es 来讲可以支持简单事务,相对传统关系型来讲可以数据分片,数据量可以更大、对嵌套数据存储检索也方便,算是折中方案
|
28
momo2789 106 天前
哈哈哈,丢数据太离谱了,从 Mongo3.5 开始用到现在都没发声过丢数据的问题。
|
29
AlanBrian 106 天前
存储 4500 亿条数据,没发现有丢数据的情况。
|
30
wusheng0 106 天前
这人似乎是有利益关联吧,有 PG 相关的商业运作
|
31
DonaldVVV 106 天前
mongodb 他们这家公司上市了的;如果真有这样的问题,早就把它空归零了;实际上人家 4 年翻了 30 倍
|
32
hunter104 106 天前
丢数据没碰到,但碰到过机房停电 WiredTiger.wt 文件被清空,数据还在但数据库都没了,一切的打捞工具都无济于事,当时感觉天都塌了
|
33
IDAEngine 106 天前
丢数据头一次听到,还有这个事情,你可以说他慢,卡顿,占用高,在不确定硬件问题说丢数据也太冤了
|
34
hzzhzzdogee 106 天前
@hunter104 这个事后续怎么处理的呢
|
35
foolishcrab 106 天前
真丢数据你直接去买 mongo atlas 然后告他都能赚大钱,还在这写垃圾小作文
|
36
iseki 106 天前
他的文章你看个热闹就行,他卖 PG 套件的,当然得说 PG 好。印象里 MongoDB 早期版本确实有一些丢数据的 bug ,但现在都早就修好了。不过你这个量级其实用什么数据库都无所谓的。
|
38
CaptainD 106 天前
我们存了几 TB 数据,目前没发现丢数据问题,但 schema 很乱是真的烦,需要小心维护
|
39
Mithril 106 天前
数据倒是不会丢,但是会炸。。。
MongoDB 即使在正确关闭的情况下,也会有很小的概率下次启动读不出来文件直接崩溃给你看。当然你要是真的不重启那也没啥问题,做好备份就是了。 这玩意最主要的问题是,你真的需要“无模式”的数据库吗?特别是你用 ORM 了,真的你会新老版本的代码连接到同一个数据库里去?很多时候你代码做了变更,还是要放 migration 上去修改已有数据,那还不如直接用关系型。 甚至你要的那一点附加的无模式功能,大部分现代的关系型数据库也都支持了。 |
40
gen900 105 天前
生产用过,replic 集群(都没上 shared )一天 2GB 数据,每天集中时段密集写入。未见任何瓶颈(定期检查慢查询并优化)。顺便说一句 mongo 的聚合查询非常方便。
|
41
hunter104 103 天前
@hzzhzzdogee 自己写了一个工具,解析二进制数据导入到新库,还好没启用加密,要不然就真要祭天了
|
42
hunter104 103 天前
@EminemW 问题都在一个机房,甚至可能都在同一台物理机上,我也不明白为啥我会碰到这个文件被直接清空的逆天情况,大部分情况下这个文件最多损坏用修复工具就能修复。
|
43
HaroldFinchNYC OP @gen900 是的,聚合查询绝对牛逼
|