亲爱的学员:
你好,在回答学员问题的过程中,我发现大家对于第二章的事务处理, 特别是隔离级别,以及第三章的分片集群有相对较多的问题。在这里我给大家推荐一些补充的学习材料可以从另外一个角度来加深一些这些概念的理解。
MongoDB 事务的原子性
https://docs.mongodb.com/manual/core/write-operations-atomicity/
MongoDB 事务的隔离级别和一致性模型
https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/
如果英文不太感冒,在 MongoDB 中文网站上有不少内容,比如分片相关的:
http://www.mongoing.com/?s= 分片集群
课件和 Demo 地址
https://gitee.com/geektime-geekbang/geektime-mongodb-course
作者回复: ticket一般只是个标志,如果发现用光,是因为你的物理资源不够,主要是IOPS,少数时候CPU。这个时候不是调高tickt,而是优化硬件资源。
作者回复: oplog记录的是对数据库的逻辑操作, 在MongoDB里面用一个固定大小的普通集合来记录,和其他的数据一样,默认增删都是在内存里发生。 journal 和其他数据库类似,采用WriteAheadLog机制,用来提供对数据库写入操作的一致性和持久性保证。它记录的是要对数据物理区块修改的一些动作。 Journal 日志和Oplog理论上都可以用来恢复,但是journal比较底层,直接操作存储区,写入和恢复效率要比oplog 日志高,所以通常数据库都会采用专门的journal来做crash recovery.
作者回复: 你需要对这些数据做pre-aggregation,按照时间颗粒度,获得分钟级平均数,小时级平均数,把他们事先存到库里,给前段展现用。这样的话你就不需要返回大量的原始数据再在应用里做计算了。
作者回复: insert 特别是使用batch写的时候普通盘性能也可以挺快的。 你要测试随机读写,就可以看出区别了