作者回复: MongoDB复制集在从节点故障时候是不会影响到可用性。 在主节点故障,进行选举的时候需要数秒到十几秒,这期间会影响写入。一年有365天x86640秒 ~= 3000多万秒。假设你每个月发生一次主节点故障或者其他问题导致选举,每次影响15秒,那么可用率就是:就是(3000w-12x15) / 3000w ~= 99.9994%
作者回复: 在多中心部署的时候要考虑网络延迟,所以一般多活中心只是建议能够接受一定数据延迟的情况下才建议。 分片有3个触发条件:数据量,并发量,以及热数据大小(内存需求)。理论上,任意一个都会触发分片需求。如果只看数据量,单分片一般可以到1-2TB。
作者回复: 恩恩MySQL是支持,虽然真正线上使用的不算多。 另外大部分关系型数据库还是不支持。 机械硬盘在服务器市场还是占据大多数,特别是数据中心。可能还需要相当一段时间才会慢慢淘汰。
作者回复: GridFS 了解一下。
作者回复: 按照我个人经验是有明显的优势的。有好几家大厂的兄弟,包括百度,网易,字节都有分享类似的经验。 稍微网络搜一下,都有十倍或者更多的数字。原因: 1)MongoDB默认的事务级别比MySQL低 2)MongoDB支持的batch 写入模式可以大幅度提升写入速度 3)MongoDB默认写到内存就返回,不等落盘
作者回复: BSON 是一个物理层的概念:在存储到硬盘,和传输到网络上的时候所用。通常仅仅存储引擎或者mongodb驱动的开发者才需要关注。大部分MongoDB使用者还是基于JSON。
作者回复: 实际情况是,很多同学在学校里学习的只是SQL。很多开发团队,特别是有项目压力的,没有时间让团队来学习,就会选择大家比较熟悉的方式。 如果有额外的时间的话,我的几个创业公司的朋友都说,想从MySQL 切换到MongoDB。
作者回复: mongodump / mongorestore的方式可以跨版本,但是跨这么多也要试试才行。
作者回复: 如果你大部分的操作是基于脚本和关卡直接操作,那如果用组合的方法不一定是最优的。虽然,MongoDB对嵌套数组的操作支持还是很给力,你可以直接取出关卡或脚本,通过使用projection 过滤字段及不匹配的数组元素。对内嵌数组操作也是可以用到索引的,所以效率也不会太糟糕。
作者回复: wiredtiger可以充分利用多核做并行处理。