数据库比较
MongoDB:文档,而非教义
MongoDB 普及了水平扩展的文档存储,此后的故事包括模式设计规则、比大多数 SQL HA 设置更简单的副本集模型以及明显推动自托管向前发展的许可 (SSPL)。它在特定的数据形状上获胜,我们的 nosql-vs-sql 和 postgresql-vs-mongodb 比较涵盖了参数;这是关于发动机本身值得基座的专门作品。
要点
- BSON 文档故意提供模式灵活性,这意味着模式设计规则从迁移文件转向应用程序默认值:用于读取多个模式的嵌入式文档与用于一对多关系的引用仍然是决定性能的决定因素。
- 聚合管道是分析工作的所在地:专门构建的阶段(匹配、分组、查找、展开)取代了临时映射缩减;对于大多数运营分析来说,聚合加索引胜过将数据运送到仓库。
- 副本集可以廉价地处理常见的 HA:一个主节点加上具有自动故障转移和读取首选项的辅助节点;分片是一种真正的分布式数据功能,适用于写入规模的工作负载,但具有属于设计审查而不是改造的操作权重(块平衡、分片键)。
- TTL 索引和时间序列集合本身涵盖了“日志和指标”用例:无需 cron 删除文档的上限保留,以及用于高频指标摄取的专用时间序列存储。
- 操作差异:不存在接近维护真空的等价性,但刷新率和延迟可选性的整合(通过验证器进行模式验证,自 4.x 以来的交易)很重要;驱动程序、索引、内存压力显示为查询计划(解释)而不是慢查询日志。
- 许可诚实足迹:社区版是 SSPL 许可的,一些托管供应商平台不包括在内; Atlas 是供应商支持的路径,并且自托管在 SSPL 可接受的容器化部署中仍然很常见。
一线手记
给我们的客户带来最多启发的 MongoDB 中断模式始终是相同的:在原型发展到生产过程中决定的分片键,然后重新分片成为一个项目。分片键是架构决策,而不是 Mongo 考古学。
常见问题
MongoDB 是关系数据库的良好替代品吗?
对于正确嵌套的 blob 操作数据,有时;对于大量连接的关系设计,不行:引用完整性是您的应用程序的工作。我们的 nosql-vs-sql 文章涵盖了诚实决策规则。
如何处理架构更改文档之间的迁移?
通过自己添加模式版本控制规则:验证器和版本字段以及目标迁移脚本;没有 ALTER TABLE 可以依靠。
SaaS 提供商的许可证 (SSPL) 怎么样?
您可以自行托管并将其作为应用程序存储提供云服务,但作为服务提供它则是另一回事;在向客户承诺 Atlas 替代托管之前检查商业条款。
为什么片键如此重要?
因为路由、平衡和查询亲和力来自于分片选择之后:稍后对实时系统进行重新分片是一个真正的操作操作。
Kinetikatech 如何在数据库比较方面为您提供帮助
说实话,很多团队都是自己先试过才来找我们:用于托管工作负载的数据库引擎选择,在正确性保证、操作权重和实际成本方面进行比较:嵌入式引擎与服务器、MySQL 与 PostgreSQL、SQL 与文档存储,以及不断出现的遗留案例研究。我们的服务器管理和网站速度优化服务就是为了让您不必在数据库比较上交学费:部署、值守与凌晨 3 点的突发状况,都由我们负责。