为什么 PostgreSQL 能代替 MongoDB?
在进行技术选型时,需要考虑众多因素,如功能、性能、可靠性、成本效益、社区支持和团队技术能力等,然而,影响最终决定的关键因素的往往是团队 Leader 的技术品味,这也能解释为什么阿里偏爱 Java,而字节跳动更倾向 Go、Rust 等新兴语言。技术本身无好坏之分,根据实际业务问题选择适当的技术方案是关键。 本文旨在为读者提供一种新的选择,而非论证 PostgreSQL 比 MongoDB 更优秀。 MongoDB 因其灵活的 “Schema-less”(无模式)特性而著名。“Schema-less” 意味着 MongoDB 不要求严格定义数据的结构和字段(使用 BSON 格式存储数据),允许在同一集合中存储具有不同结构的文档,这为开发人员提供了更大的灵活性,能够轻松地适应数据模型的变化和演进。 PostgreSQL 提供的 JSONB 类型可用于存储和处理 JSON 数据,包括嵌套的对象、数组和基本数据类型。因此,PostgreSQL 具备 MongoDB 存储 document 的能力。 PostgreSQL 对 JSON 的支持 我们来了解一下 PostgreSQL 支持 JSON 特性的时间线(统计到版本 14): - PG 9.2 Introduction of JSON (JSON text; no indexes) -- 2012/9/10 - PG 9.4 Introduction of JSONB (binary format; indexes) -- 2014/12/18 - PG 9.5 jsonb_set(), jsonb_object(), jsonb_build_object(), jsonb_build_array, jsonb_agg, || operator etc....