mongo
1 · mongo#
适合文档模型、读写模式不完全固定、需要水平扩展的场景;核心看点是文档模型、副本集和分片。
1.1 · 分片
https://www.mongodb.com/docs/manual/sharding https://www.mongodb.com/zh-cn/docs/v6.0/sharding
组件:数据分片(通常每个分片本身是副本集)、mongos 查询路由、config server 元数据管理;
在集合级别(表)分片,把一个集合拆分到各个分片中。
集合有一个分片键,分片键由文档中的一个或多个字段组成;
基于分片键,划分处不重叠的范围(分配策略),每个范围与数据块chunk关联;
分片策略: 范围分片、散列分片、区域分片; 分片键用于路由查询; NOTE: 主分片,保存该数据库所有未分片合集;每个数据库都有自己的主分片;
chunk:超过阈值后会切分,后台负载均衡器负责迁移 chunk 以均衡各分片负载;
1.2 · mongo tips#
50 Tips and Tricks for MongoDB Developers
- 定义schema时需要注意的点
- 使用mongo
- 优化加速
- 数据安全(不牺牲太多性能):分片、日记
- 管理员:配置、运行
- tips 1
数据冗余是为了性能,数据引用是为了完整性。 决定因素:1. 读多写少->冗余,基本没有数据完整性问题;2.保障一致性->引用 3. 快速读->冗余