关于mongodb
官方文档地址, 国内一般大部分中小企业的应用场景其实用 mysql 就可以满足了,而一般我们在哪些场景下会用到mongodb呢
- 新增数据很大,但变更很少的场景
- 不要求事务的场景
- 数据的schema变更较为频繁(关系型数据库变更schema的成本较大)
与关系型数据库的观念映射
熟悉mysql的用户会更容易理解这个对比
- mongodb与 mysql 都有database 这个层级的概念
- mongo 中的 collection 可以理解为 mysql 中的 table
- mongo 中的 document 可以理解为 mysql 中的行
- document中的field 可以理解为 mysql 中的列
- 索引的意义对于 mysql 与 mongodb 来说是一样的,虽然他们的底层实现不一样
- 游标的概念
mongodb中查询语言层面支持MR,这个还是挺离谱的,虽然TIDB中的计算下推,其实也是一种MR。但有时候还是觉得,类似于这种操作,不应该暴露更多细节给上游
关于mongodb的高可用方案
本身提供了副本集的解决方案,也是正常的三副本。其实有点类似于redis的哨兵
但是这个方案也还是有问题,无法支持数据的横向扩展 横向扩展可以参考mongodb中的这个方案,每个分片本身再是副本集的方案
其实还有一个问题,是否支持在线扩容,如何进行在线扩容。其实最合理的方式肯定还是事先做好容量预估,动态扩容还是容易有复杂的情况发生
关于数据备份
参考这个文档,是可以用拷贝文件的方式