易闻seo搜索引擎优化实验室(MongoDB的最佳替代方案——RickNegrin)

优采云 发布时间: 2022-03-04 12:13

  易闻seo搜索引擎优化实验室(MongoDB的最佳替代方案——RickNegrin)

  JAM Stack、PostgreSQL 和亚马逊的 DynamoDB 都是 MongoDB 的竞争替代品

  

  照片由 Marlene Prusik 在 Unsplash 上拍摄

  NoSQL 是用于描述与 SQL 关系模型不对应的任何类型的数据库的名称。

  NoSQL 数据库起源于 2009 年,当时 MySpace 和其他 网站 继续扩展:

  NoSQL 的出现是因为当时的数据库无法处理所需的规模。

  — Rick Negrin 在 memSQL 博客上

  MongoDB 是最著名的 NoSQL 数据库。JavaScript 开发人员经常使用它,尤其是那些使用 MERN Stack 或 MEAN Stack(将 Mongo 与 Express、Angular 或 React 和 Node 一起使用)的开发人员。

  为什么人们放弃 MongoDB

  一般来说,NoSQL 与以前可能导致记录丢失和性能下降的数据库架构有很大不同:

  NoSQL 放弃了数据库的一些核心特性,这些特性使它们具有高性能且易于使用。

  — Rick Negrin 在 memSQL 博客上

  作为回应,许多开发人员正在考虑从 MongoDB 和 NoSQL 转向其他替代方案,例如 JAM Stack、PostgreSQL 或 DynamoDB。

  知名用户离开 MongoDB

  在线出版商和英国报纸《卫报》在 2018 年 11 月的 文章 中收到了超过 100,000 条关于放弃 MongoDB 的评论:

  再见 Mongo,你好 Postgres | 数字博客

  在 The Guardian,大部分内容(包括 文章、实时博客、画廊和视频内容)都在 Postgres 上运行。

  在其中,进行转换的开发人员表示,他们的团队在使用 Mongo 的数据库管理软件 OpsManager 时遇到了问题,并且在两次中断期间,Mongo 的支持代理并没有太大帮助。

  我深入探讨了为什么这个出版商选择“更好的编程”来从 MongoDB 迁移到 PostgreSQL:

  为什么用户从 MongoDB 切换到 PostgreSQL

  他们为什么切换,他们如何迁移以及为什么他们今天不这样做

  MongoDB 的三种替代方案

  虽然许多人继续使用 Mongo,但软件开发人员和数据库工程师可以使用许多替代方案,例如:

  这三个选项是目前 MongoDB 的最佳替代方案。我们将在下一节详细介绍每个选项的优缺点。

  MongoDB 替代方案 1:JAM 堆栈

  JAM Stack 是 JavaScript、API 和 Pre-rendered Tag 的缩写,是一种完全避免使用数据库的无服务器架构。

  JAM Stack 甚至可以替换文档数据库,只要可以将数据移动到用 Markdown 编写的海量 JSON 文件中。

  使用 JAM Stack 时,通常使用像 Gatsby 这样的工具来编译(或构建)整个应用程序。

  不幸的是,这意味着任何更改都需要重新构建站点。

  另一方面,如果通过 API 访问动态内容,则可以实时更改,例如通过 Disqus 处理的评论。

  JAM 堆栈的优点

  闪电般快速的内容交付是 JAM Stack 的最大优势,因为它没有服务器,整个应用程序在客户端运行。

  此外,具有最大的 SEO - 因为应用程序是预编译的,所以它被用作静态页面,而不是按需生成。

  JAM Stack 的另一个优势是托管成本最低。例如,静态页面基本上可以免费托管在 AWS 上。

  JAM 堆栈的缺点

  每一次改变都必须重建。这意味着需要重新编译应用程序,然后才能在线获得更改。

  而且,网站 越大,构建时间越长。每次。

  因此,对于需要频繁发布、大量数据或实时编辑数据记录的应用,JAM Stack 一般被认为不适合。

  MongoDB 备选方案 2:PostgreSQL

  SQL 的拥护者认识到 SQL 架构的持续流行以及 SQL 数据库执行操作分析的卓越能力:

  传统数据库已经走过了漫长的道路。它们可以满足现代应用程序的可扩展性、可靠性和可用性要求,并且可以处理几乎任何工作负载。

  — Rick Negrin 在 memSQL 博客上

  换句话说,如果 SQL 数据库可以扩展,那么它比 NoSQL 更可取。

  PostgreSQL(也称为 Postgres)是一种流行的免费 SQL 数据库,在其 网站 上将自己描述为“世界上最先进的开源数据库”。

  PostgreSQL 的优点

  PostgreSQL 是一个强大的软件,已经持续开发了 30 多年。很多人使用它,它有一个充满活力的社区。

  它独立于平台。对于使用 AWS 的用户,可以使用 Amazon Relational Database Service (RDS) 上的 Amazon Aurora 进行托管。

  此外,PostgreSQL 正在迅速增长。它优于 MySQL,后者已经比 MongoDB 快得多。

  PostgreSQL的缺点

  使用 SQL 本质上会增加任何项目的复杂性。这是团队每天都在使用的一种全新的编程语言。

  从 NoSQL 迁移到 SQL 可能很困难。从根本上说,它们是一种不同类型的数据库结构。NoSQL 是具有键值对的文档存储,而 SQL 由表和行组成。

  一种选择是在其迁移中使用 PostgreSQL 的 JSONb 列类型。但是,使用 JSON Blob 有点麻烦,比如将 NoSQL 数据库转换为 SQL 格式。

  MongoDB 替代方案 3:DynamoDB

  DynamoDB 是 Amazon Web Services (AWS) 的 NoSQL 产品。MongoDB 和 DynamoDB 都使用任意模式存储类似 JSON 的数据。

  DynamoDB 最近添加了一个名为“静态加密”的功能,它现在与 MongoDB 具有很强的竞争力,同时仍然是一个 NoSQL 数据库。

  这意味着从 MongoDB 迁移到 DynamoDB 非常容易。

  DynamoDB 的优势

  DynamoDB 是 AWS 上的旗舰 NoSQL 数据库,因此其固有优势在于 AWS 平台的成本、速度和可靠性。

  作为 AWS 产品,它可以轻松与 AWS Lambda 和 API Gateway 集成。

  对于目前使用 Mongo 的任何人来说,DynamoDB 的最大优势是用户可以直接从 MongoDB 实时迁移到 DynamoDB。

  最好的部分是无需管理基础设施 - 亚马逊会处理它。

  DynamoDB 的缺点

  如果我认为 NoSQL 太容易丢失记录,DynamoDB 对我来说不是一个好的选择。

  DynamoDB 可能会遇到可伸缩性问题,例如与所谓的“热键”相关的问题,这些记录的评估频率比其他记录高得多。

  此外,与 MongoDB 相比,DynamoDB 支持的数据类型不太复杂,并且是 AWS 专有产品。

  综上所述

  JAM Stack(无服务器架构)是一个不错的选择,尤其是对于大多数静态站点而言,并且是一项值得关注的出色技术。

  PostgreSQL 拥有一个庞大的社区,并在一个可靠、功能丰富的开源包中提供了 SQL 的所有功能,并具有出色的性能。

  DynamoDB 是 MongoDB 的直接替代品,无需维护任何基础架构即可为您提供规模、安全性和速度。

  我的想法

  “容器赢得了这场战斗,但将输给无服务器架构。”

  — HackerNoon 引用 Simon Wardley

  JAM Stack 是当今最酷的技术之一。它快速、可访问且对 SEO 友好,而且可以免费在 AWS 上托管静态文件。

  但是,对于能够具有构建步骤并重新编译所有更改的应用程序,JAM Stack 是唯一正确的选择。

  如果你问我,我会争辩说,即使是非常大的 网站s 也可以在 JAM Stack 上构建,并按计划进行编译(例如每小时)。JAM Stack 是 rad。

  对新闻网站可能不行,但是很多动态的网站不需要更频繁的更新,静态的网站肯定不用。

  SQL 与 NoSQL

  如果需要编译步骤是项目的重中之重,那么它取决于 SQL 与 NoSQL:PostgreSQL 或 DynamoDB。

  PostgreSQL 不必托管在 Amazon 上,尽管它可以托管在 Amazon RDS 上。DynamoDB 由 Amazon 开发,是 Amazon 专有的。

  SQL 数据库本质上更强大,但也更复杂。他们的优势在于业务分析和搜索。

  NoSQL 数据库更容易设置并且足以满足许多项目。这就是卫报认为 DynamoDB 撰写 230 万篇 文章 文章的原因。

  最后,他们选择了 PostgreSQL,因为 DynamoDB 在 2017 年没有提供静态加密,但如果他们今天考虑从 MongoDB 迁移,他们可能会做出不同的决定。

  (本文翻译自 Dr. Derek Austin 的文章《2019 年 MongoDB 的三大替代方案》)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线