为什么从 MongoDB 转向 Couchbase ?

2021-11-23 14:48:05 浏览数 (1)

作者 | Timothy Rottach

译者 | Luga Lee

策划 | Luga Lee

代码语言:javascript复制
或许,在后续的 NoSQL 时代,Couchbase 可能将会成为新的“黑马”

     毫无疑问,MongoDB 是当前较为流行的可用于构建应用程序的一种 NoSQL 数据库。但就像许多以电子表格开始的“初学者”进行数据分析项目一样,当需要深入时,也需要进行升级。当公司的应用程序从“个人作坊”推广至企业规模运行时,他们经常会发现 MongoDB 已开始无法满足他们的业务诉求。

     当我们与企业客户讨论为什么要从 MongoDB 迁移至 Couchbase 时,以下为他们进行切换的三个最常见的原因。

     1、性能和可扩展性

     Couchbase 的主要优势之一是在规模上具有优异的吞吐量和低延迟。这是由内存优先的体系结构驱动的。

     Couchbase 的所有键值数据检索和处理操作都发生在内存中,从而产生亚毫秒的性能。另外,集群中的所有节点都是活动的——没有一个单一的主节点阻塞点会转移到“辅助节点”并降低速度。所有节点都直接执行查询和写入。

     此外,Couchbase 的写入处理与读取和查询活动是分开的,这意味着写入不会干扰读取和查询操作。最后,Couchbase 提供了强大的索引选项来加快查询速度,随着 7.0 即将发布,在某些特定的场景下,其性能也可将提高 10-100 倍。

     再者,Couchbase 利用多种技术协同工作,确保您的数据和数据库即使在极端条件下也“始终开启”,从而提供高可用性和可靠性。其中许多功能,如连续复制、自动故障切换、快速重新平衡、跨群集的跨数据中心复制(XDCR)和自动分片,默认情况下在后台实现,或者在不关闭系统的情况下可管理。

     而 MongoDB 的体系结构专注于单节点设置,许多重要功能(如通过 $lookup 函数连接或分组)在多节点和多切分配置上表现不佳。当您发现这些问题时,纠正它们可能为时已晚。例如:

     Couchbase 只需一次添加一个必要的节点,即可轻松扩展,而 MongoDB 需要一次添加至少三个新节点,以便向集群引入一个新的分片,此种情况下会提高总体拥有成本(TCO)。同时 Couchbase 会自动创建分片并重新平衡对所有可用节点的分发。

     Couchbase 自动故障切换功能强大且快速,基于多个活跃信号。另一方面,MongoDB 的故障切换技术速度较慢,而且受到限制,因为它只基于副本集节点之间的心跳。

     不要只相信我们的话 !

     我最近采访了 Microlise,一位 Couchbase 客户,他授权 195 个国家的车队和物流运营商管理和优化其运营和交付。他们每天处理约 100 万个事件!

     和其他最先探索 NoSQL 技术的人一样,这个团队从 MongoDB 开始开发他们的微服务应用程序。随着这些应用程序的需求和任务关键性的增长,开发团队便开始转向 Couchbase。

我们的许多微服务最初是在 MongoDB 之上开发的,但随着内存问题和数据库崩溃的增加,我们无法满足我们的服务级别。我们的 DBA、技术支持和开发团队不高兴。我们对数百万条记录的内部基准测试表明,Couchbase 在满足这些 SLA 方面击败了 MongoDB。” –Wayne Chandler,Microlise 的数据架构师

      在本白皮书《Couchbase vs.MongoDB》中了解更多有关 Couchbase 大规模性能和高可用性的信息™ 用于扩展和高可用性。

     2、N1QL,Couchbase 查询语言

     许多企业从 MongoDB 切换到 Couchbase 的第二个原因便是 N1QL,Couchbase 查询语言。

     N1QL(发音为“nickel”)感觉很熟悉,因为它是 SQL,但经过扩展以支持 JSON 文档语法。SQL 是非常强大且众所周知的,因此 Couchbase 团队基于 ANSI SQL92 标准的 N1QL 来支持开发人员已经熟悉的 SQL 语法。当然,了解 SQL 的不仅仅是开发人员,还有您的整个团队:DBA、分析师、架构师、BI团队和其他人。这两种查询语言非常相似,我们有时将 N1QL 称为 “SQL ”。

      仅仅在下图中将 MongoDB 查询语言与 Couchbase N1QL 并排进行比较,其两者之间的差异是显而易见的。

     与我交谈的团队也喜欢 N1QL 查询语言:

“Couchbase 的查询语言 [N1QL] 和备份管理对我们的团队来说非常简单。我们所有的关键微服务应用程序都已从 MongoDB 转移到 Couchbase。从长远来看,我们计划在Couchbase 上实现标准化。” –Wayne Chandler,Microlise 的数据架构师

     以下是用户说他们在使用 MongoDB 查询语言时面临的一些挑战:

     专有:MongoDB 的查询语言脱离了强大而熟悉的 SQL 数据库语言,迫使用户学习和掌握一种全新的语言。

     复杂:虽然 MongoDB 的过程方法对于目标查询(即定位具有特定过滤条件的文档)非常有效,但对于需要文档联接和聚合的查询来说,它变得复杂。对于某些开发人员来说,这可能没什么问题,但管理或访问您的数据的人员群体要大得多,这使得这成为公司范围内的问题。此外,MongoDB 对跨分片集合连接文档的支持非常有限,因为 $lookup 函数不支持该功能。

     应用程序密集型:应用程序需要通过在客户端执行复杂的数据处理来弥补数据库的不足,这会增加复杂性,一旦部署,通常会导致性能低下。

     如果你有兴趣学习更多关于 N1QL 和 Couchbase 的知识,我鼓励你用这个免费的在线 N1QL 教程自己尝试一下。或者,在此第三方评估中将 N1QL 与 MongoDB 的查询语言进行比较。

     3、提供灵活开发和数据访问的集成服务

     Couchbase 客户喜欢的另一个关键因素是平台提供的多个内置服务,无需使用其他数据库即可访问和管理数据。对于开发人员来说,这意味着学习、编码、集成和维护的时间更少。对于 DevOps 团队,其结果是需要许可、部署和支持的工具更少。

     Couchbase 数据平台通过一个统一的数据模型和一个单一的编程接口提供多种集成方式来存储、查询和操作数据,包括:

     Couchbase 的通用模型(一种具有关系数据库模式完整性选项的文档数据库)涵盖了一系列解决当今现代应用程序所需的性能、事务性和数据可用性问题的用例。

     内存中密钥值管理缓存提供毫秒级性能,而不需要单独的缓存产品。

     N1QL 查询语言意味着开发人员、DBA、分析师和其他具备 SQL 知识的人可以通过 “SQL ” 快速提升。

     即使是新手用户也可以使用具有地理空间功能的全文搜索来查询数据库。

     Eventing 随 Couchbase 开箱即用,无需外部供应商集成。

     实时数据分析可以在大规模并行过程中执行,而不会影响其他服务,也不会对另一个数据库进行 ETL。

     与大多数移动数据库不同,我们提供了服务器和设备之间的双向同步,采用点对点同步的离线优先策略。

     结论

     如果您已经准备好超越“通用”数据库并构建健壮的企业应用程序,那么您就可以自己尝试 Couchbase 了。

0 人点赞