为什么我们从 MongoDB 迁移到 PostgreSQL
已发表: 2023-02-02出于多种原因,我们从 MongoDB 迁移到 PostgreSQL。 首先,我们发现 MongoDB 的可扩展性不如我们希望的那样。 其次,我们发现 MongoDB 提供的数据模型并没有我们需要的那么灵活。 最后,我们发现MongoDB 查询语言并没有我们需要的那么强大。
我们为我们的服务提供 99.99% 的可用性和无停机更新而感到非常自豪。 在开始这段旅程时,我选择了 JavaScript 作为我们的默认编程语言。 尽管我们有能力快速添加新功能,但我们开始遇到间歇性停机。 Knockout Punch 随后发布。 由于 40 多个开发人员创建的微服务、模式和微服务的数量,我们的代码库开始显得格格不入。 压垮骆驼的最后一根稻草是通过引入关键字段引入的,该关键字段必须存在于我们最重要的集合中的每个文档中。 除了集合中的数百万文档之外,数据库性能也因此下降到无法接受的水平。
PostgreSQL 是一种关系数据库管理系统 (RDBMS),其 SQL 数据库类似于 Oracle 和 MySQL。 PostgreSQL 可以免费使用。 MongoDB 不包含任何 SQL 或模式,它是一个 JSON 数据库。 例如,MongoDB 有免费版本和付费版本供托管和企业使用。
在需要高级别安全性且事务处理扩展性良好的场景中,Postgre 是首选。 MongoDB 是一种运行在 MongoDB 上的非结构化数据存储。 NoSQL 数据库还处于起步阶段,不适合对安全性要求高的应用程序。
为什么我们从 Nosql Mongodb 迁移到 Postgressql?

我们可能会从 NoSQL MongoDB 数据库迁移到 PostgreSQL 数据库的原因有很多。 其中一些原因可能包括 MongoDB 的性能问题、使用 MongoDB 的困难,或者对 PostgreSQL 的偏好超过 MongoDB。 在我们的案例中,由于性能问题,我们决定迁移到 PostgreSQL。 我们发现随着数据的增长,我们的 MongoDB 数据库变得越来越慢且难以使用。 PostgreSQL 似乎是一个自然的选择,因为它是一个快速而强大的关系数据库。
迁移到开源数据库的组织需要很好地理解开源数据库的优点和缺点。 尽管 MongoDB 和 Postgres 处理数据的方式不同,但它们有许多相似之处。 下表显示了 Postgres 和 MongoDB 的高级比较。 本来就可以扩展 MongoDB,但需要对 PostgreSQL 进行扩展才能做到这一点。 基于角色的访问控制在 MongoDB 和 Postgres 以及流行的身份验证机制(如 LDAP 和 Kerberos)中可用。 如果您已经有一个不会有太大变化的现有数据模型,您应该使用 PostgreSQL。 如果 MongoDB 需要内置的可扩展性,原生分片是一个可行的选择。
关系数据库已经存在了很长一段时间,被认为是市场上最可靠的数据库之一。 它们不像 NoSQL 数据库那样容易使用,并且必须在更长的时间内教授它们。 由于使用简单、高效,MongoDB 是需要存储大量数据的企业的绝佳选择。
为什么 Postgresql 优于 Mongodb?

PostgreSQL 通常被认为比 MongoDB 更好的原因有很多。 首先,PostgreSQL 是一个关系数据库,这意味着它使用表和行来存储数据。 这使得查询数据和跟踪数据关系变得更加容易。 另一方面,MongoDB 是一种非关系型数据库,使用类似 JSON 的文档来存储数据。 这会使数据关系更难跟踪。 另一个很大的区别是 PostgreSQL 是 ACID 兼容的,而 MongoDB 不是。 这意味着 PostgreSQL 事务保证是原子的、一致的、隔离的和持久的。 另一方面,MongoDB 只提供文档级别的原子事务。 此外,PostgreSQL 支持使用最广泛的数据库查询语言 SQL。 另一方面,MongoDB 使用自己的查询语言,称为 MongoDB 查询语言 (MQL)。 MQL 不像 SQL 那样被广泛使用或理解,这会使新开发人员更难使用。 总的来说,PostgreSQL 是一个比 MongoDB 更健壮、更强大的数据库系统。 与 MongoDB 相比,它更易于使用,使用更广泛,并提供更多功能和保证。

带有 JSON 框架的 Postgres 旨在更全面地满足用户需求,使其能够更有效地处理大多数 NoSQL 工作负载。 eBay、Amazon、Twitter 和 Facebook 等大容量网站必须具有足够的可扩展性和可用性才能正常运行。 数据库 PostgreSQL 将数据存储在行而不是列中,而数据库 MongoDB 将数据存储为文档。 PostgreSQL 9.3 平台包括各种有用的功能,使其成为一个强大的 NoSQL 数据库,能够处理 JSON 格式的事务数据并存储字段数据约束。 例如,假设我们总是有一个不包含空格的名称、一个空的描述或一个负薪水。 JSON 是一个很好的类型,它也包含在 Postgres 中。 通过定义的运算符,您可以轻松访问 JSON 中的字段和值。
除了 id 字段之外,我还必须验证字段。 Postgres 通过查找数据库中的类型定义来检查这一点。 最后,还需要进行一项验证。 为了不同,id 和 name 字段必须不同。 两个索引足以执行此任务。
MongoDB 相对于其他数据仓库和分析数据库的优势之一是它的易用性。 MongoDB 没有用于存储数据的模式,这对于需要大量开发时间和精力来维护的具有复杂模式的数据仓库和数据分析工作负载是有利的。 NoSQL 文档格式 MongoDB 的类似 JSON 的文档格式支持存储各种数据,使其适用于必须易于解释和处理的数据。 MongoDB 的无模式设计允许对存储在数据库中的数据进行简单的更改,从而更容易在需要时获取所需的信息。 数据库可扩展性:MongoDB 可用于存储需要许多用户进行大量处理的数据。 PostgreSQL 的 JSON 操作比 MongoDB 的更常见。 在 JSON 操作方面,PostgreSQL 在各种基准测试中都优于 MongoDB。 但是,有一些基准显示了这两个数据库的优势。 与 MongoDB 相比,PostgreSQL 更适合处理复杂的 JSON 数据,因为它可以。 另一方面,PostgreSQL 卓越的索引和查询功能使其能够从 JSON 文档中快速查找和检索数据。 MongoDB 具有适应性和敏捷性的优势。 MongoDB 的无模式设计使得修改存储在数据库中的数据变得简单,这对于需要经常更新的数据或需要快速轻松地进行更改的情况非常有用。 虽然 PostgreSQL 在 JSON 操作方面优于 MongoDB,但它在某些情况下也很有用。 对于不需要与 JSON 数据相同级别的效率和可扩展性的数据,MongoDB 是绝佳选择。
什么时候应该使用 Mongodb 和 Postgres?

这个问题没有明确的答案,因为它取决于许多因素。 不过,一般来说,MongoDB 更适合处理非结构化数据,而 Postgres 更适合处理结构化数据。 如果不确定要处理的数据类型,通常最好选择 MongoDB。
理解为什么数据库是必要的有助于选择数据库结构。 数据库的会话持久性功能允许用户登录并长时间保持登录状态。 您使用的数据类型将帮助您确定哪个数据库最能满足您的数据和客户需求。 在上面的零售店示例中,计算机化数据库可能会提高生产率并减少手动工作量。 具有全面库存管理系统的数据库将大大加速该公司的技术进步。 通过以系统的方式组织信息,您可以就哪个数据库最有利于您的数据和客户需求做出最佳决定。
PostgreSQL 已经开发多年,并经过了广泛的测试。 它具有多种功能,可用于各种应用程序。 根据 PostgreSQL,许多应用程序不需要任何事务,并且该数据库具有许多功能,使其成为更健壮和可靠的数据库。
为什么 Postgresql 比 Mongodb 好?
PostgreSQL 由许多系统、体系结构和语法组成。 文档数据库分为三种类型:MongoDB是文档数据库,PostgreSQL是单体数据库管理系统,Postgres是SQL数据库管理系统; MongoDB 和 PostgreSQL 都使用 BSON,而 PostgreSQL 使用 SQL。
Mongodb 比 Postgres 慢吗?
如下图所示,在各种测试场景中,PostgreSQL 的执行速度比 MongoDB 快 4 到 15 倍。 在所有基准测试类型中,有证据表明,随着数据集的增长超过可用内存容量,与 MongoDB 相比的性能优势扩大了。