参考行程
写在前面
如果和我有一样有以下相同出游前提
- 想站在玻璃制作的观景台上感受下直面万丈深渊的刺激
- 想爬山
- 人在北京
- 想利用周末出游
那么这个行程可能有一定的参考价值
没有什么远大理想,只是永远都不会满足而已
mongodb所有的针对单个文档的操作都具有原子性,但是当一个操作涉及多个文档更新的时候,是非原子性的。但在生产环境中,是存在多文档更新的需求的,一般情况下,包含以下两个方面:
为了解决多文档更新事务性问题,可以使用两段提交的方式处理。两段提交可以保证数据是一致的,而且可以保证遇到错误之后可以恢复,但是在执行期间,文档本身处于待定状态
注意:因为mongodb只有单文档操作具有事务性,两段提交只能提供类似原子操作的语义,而不是提供完善的事务机制
Capped collection
(固定大小表)是一种大小为可设定的固定值的集合。支持高性能写入操作和高性能以插入顺序读操作。Capped collection
原理类似循环缓冲区,当达到最大限制时,会覆盖最老的数据用以写入新的数据。
下面列举两个常见场景
在大磁盘容量的系统中,在没有索引的前提下,以接近写日志文件的速度存储日志到Capped collection
中。而且自带先进先出的磁盘空间使用策略
缓存属于读取压力大,写入压力小的操作,如果不使用Capped collection
,你就会面临两种选择