数据库比较
PostgreSQL 与 MongoDB:结构化遇见灵活
PostgreSQL 和 MongoDB 回答有关形状的相反问题:PostgreSQL 要求您首先命名结构,并奖励您每行的关系完整性、联接和事务保证; MongoDB 承认每条记录的形状可能不同的文档,并为您提供架构灵活性和本机聚合管道。现代的转变是 PostgreSQL 通过 JSONB 增强了自己的文档能力,它涵盖了人们曾经选择 MongoDB 的有效负载的令人惊讶的份额。 MongoDB 的诚实胜利仍然是作为原生一流属性的水平分片、针对嵌套有效负载的开发人员优先的人体工程学以及针对内容形状未知数据的模式灵活摄取。可悲的模式是,为了灵活性而选择 MongoDB 的车队,然后发现每个“灵活”行无论如何都需要一个架构,而是编码在应用程序代码中。
要点
- 形状是论点:PostgreSQL 信任类型化结构; MongoDB 接受字段可能逐行不同的文档。首先诚实地命名您的有效负载漂移。
- JSONB 悄然削弱了 MongoDB 的旗舰用途:模式灵活的有效负载,索引位于 PostgreSQL 本身内部,而围绕它们的关系保证完好无损。
- 事务:PostgreSQL的跨表ACID记录是默认的; MongoDB 从 4.0 开始就支持多文档事务,并附加了更多操作注意事项。
- 水平扩展:MongoDB 分片是原生的、承载的特性; PostgreSQL 扩展意味着扩展 (Citus)、只读副本或托管分区规则。
- 聚合管道与 SQL:MongoDB 将聚合推入一种流畅的构建器语言中,数据团队要么喜欢这种语言,要么在下个季度用 SQL 重新创建这种语言。
- 形状未知的内容和摄取管道依赖 MongoDB;具有十年完整性的稳定关系域依赖于 PostgreSQL。
- “灵活模式”税是真实的:最终每个集合都带有隐式结构,编码在应用程序代码中;相反,PostgreSQL 使该契约在模式中可见。
- 雇用和托管:PostgreSQL DBA 有效地与托管队列相交; MongoDB 的许可和内存要求使得经典的共享托管环境不太适合。
一线手记
MongoDB 试点赢得了三个月的快速迭代,但在“灵活”集合开始需要模式(以无人能读的应用程序代码进行编码)时失去了第四个月。 JSONB 在 Postgres 中完成了这项工作,合同在模式中可见。
常见问题
PostgreSQL 能取代 MongoDB 吗?
通常是的:带有索引的 JSONB 涵盖了大部分文档式工作负载,在 MongoDB 放弃的关系保证中幸存下来。
MongoDB什么时候才能真正获胜?
重分片写入规模是一流的设计决策,具有未知演变的摄取管道,以及其工作模型可以轻松地存在于文档中的团队。
对于网络应用程序来说,哪一个更容易?
具有 ORM 的 PostgreSQL,通常:模式充当共享文档,关系完整性仍然可以防止每个人都担心的混乱。
MongoDB 交易是真实的吗?
自 4.0 起它们就存在,但有操作注意事项和性能成本;诚实地比较 ACID 习惯的团队通常会重视这些警告。
Kinetikatech 如何在数据库比较方面为您提供帮助
情况就是这样:用于托管工作负载的数据库引擎选择,在正确性保证、操作权重和实际成本方面进行比较:嵌入式引擎与服务器、MySQL 与 PostgreSQL、SQL 与文档存储,以及不断出现的遗留案例研究。交给我们的服务器管理和网站速度优化服务即可全程覆盖:规范评估、干净实施、全天候监控。