如何正确选择NoSQL数据库
译者 | 陈峻
审校 | 重楼
Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达到863亿美元,而且其复合年增长率为28%。其中,推动全球NoSQL市场增长的主要因素包括:更具可扩展性和灵活性的企业级数据库、对大数据分析的爆炸性需求,以及云计算平台与技术的普及。
说到底,NoSQL数据库是为了弥补在使用结构化查询语言(SQL)进行数据库查询时的各种局限性而产生的。此类数据库存储和管理数据的方式,可以实现传统关系型数据库管理系统(Relational Database Management System,RDBMS)所不具备的高效与灵活性。
那么,如果您的企业正在考虑是否迁移到NoSQL的话,面对业界二十多种开源和商业类型的NoSQL数据库,该如何选择最适合本企业数据存储需求的一种呢?下面,我将为您提供五个问题,作为选择的参考依据。
NoSQL是正确的选择吗?
在开始选择之前,重要的是要确定NoSQL是否能满足您的实际需求。国际数据公司(IDC)研究副总裁Carl Olofson曾说,“后台事务处理、频繁的交互式应用数据管理、以及流式数据捕获”都是选择NoSQL的充分理由。同时,您需要扪心自问,为什么现有的RDBMS无法满足自己的用例。毕竟许多企业已广泛地安装了关系型SQL数据库,并拥有熟练的技术人员进行管理。当然,NoSQL的核心优势在于其分散、可扩展和容错的设计。而且,大多数NoSQL都是轻量级的,它们在CPU和支持方面所需的开销比RDBMS要少。
此外,替代RDBMS的另一种方法是混合持久性(Polyglot Persistence),即:在单个系统中采用多种数据存储技术,以满足不同的存储需求。据此,开发人员可以为每一种用例选择合适的数据技术,而不是将所有数据都强行塞进一种关系型模式中。
需要哪种NoSQL数据模型?
目前,NoSQL数据模型有四种主要模型,分别是键值、文档、列存储和图。每一模型都适合不同的用例。我们可以将它们的优势总结如下:
- 键值数据库旨在满足零售和移动等应用的高可用性、以及低延迟要求。
- 文档数据库适合事件记录、在线购物、内容管理和深入分析处理。
- 列存储数据库适用于事件记录、内容管理、计数和/或分类分析,并且可以设置自动失效那些过期的数据。
- 图数据库非常适合数据元素的相互连接、以及关系数量不确定的应用,包括:社交网络、推荐引擎、物流和路由、位置感知系统、公交链接、以及网络拓扑等。
可见,文档类型是最流行的,包括了以最佳方式存储JSON文档的能力;图数据库侧重于相互关联的数据;而键值类型侧重于对简单键值对的检索,其应用范围并不广泛。此外,一些多模型(Multi-model)数据库还能提供多种类型的灵活性。
是否有延迟要求?
通常,我们对于数据库的延迟要求可以毫秒、亚秒、秒、分钟来界定。
- 如果您对延迟的要求极低,例如对于流式数据捕获、或实时数据共享的应用而言,如果处理的是一些简单的列表或矩阵,就应该考虑键值存储。
- 如果数据的形式极易改变,并且包含了自定义的字段,那么JSON文档数据库更为合适。毕竟与之对应的应用往往是高交互式、且会随着用户需求的变化而不断更改。
- 如果对延迟的要求不高,而且必须支持物料清单(bill-of-materials)结构、或相互关联的复杂数据组,那么可以考虑图形DBMS。
可扩展性和数据一致性重要吗?
NoSQL数据库可以将数据分解成不同的片段(segment)或碎片(shard),这对运行上TB级的大型部署而言非常实用。分片是NoSQL扩展数据库的基本功能,它能够协助实现在横向扩展的集群中,自动缩放节点,从而使得应用更加动态灵活。
在数据一致性方面,关系型数据库的重点是使用ACID合规性,来确保每笔交易的一致。而NoSQL则不然,它通过快速扩展和提供高性能,来实现数据的最终一致性(Eventual Consistency)。
如何部署?
有些NoSQL数据库可以在企业内部运行,有些只能在云端运行,还有些可以在混合云的环境中运行。其中,值得一提的是,部分NoSQL已与云计算架构进行了原生集成,可以运行在无服务器和Kubernetes环境中。毕竟,那些既希望为自己的应用提供良好的性能和可扩展性,又希望通过自动化去简化基础架构管理的用户,都会选择无服务器模式。
领先的NoSQL数据库
如果您已根据上述五个问题决定选用NoSQL数据库的话,那么下面我们来介绍一下目前市场上领先的各种NoSQL数据库。
Aerospike
Aerospike是一种开源的分布式、实时、高性能NoSQL数据库,专为零容忍停机和高读写吞吐量的应用而设计。作为一种多模型NoSQL和图数据库,Aerospike支持不同模型的数据同步,对扩展并不设限,以便企业能够实时处理数十亿笔交易。根据其产品文档,Aerospike采用了大规模并行和统一的存储模型,以确保尽可能小得占用服务器空间。
同时,该数据库可以在边缘处获取流式数据,并与记录系统、第三方来源、数据仓库或数据湖中的原有数据相结合,以用于后续的操作、交易或负载分析。Aerospike既可以在企业内部运行,也可以作为云管理服务运行。
AWS DynamoDB
Amazon DynamoDB是一种无服务器、NoSQL、且全托管的数据库服务,可以在任何规模下提供毫秒级的响应时间。该数据库的最大卖点之一是它使得企业只有在开发和运行应用时,才需要为使用付费。
作为一项云原生的数据服务,DynamoDB通过静态加密来保护敏感数据。同时,它允许用户通过自创数据库表,来存储和检索任意数量的数据,并为任意级别的请求流量提供服务。据AWS称,用户具有自由扩缩数据表的吞吐能力,而不会出现停机或性能下降。当然,开发人员和管理员也可以使用AWS管理控制台,来监控资源利用率和性能指标。
此外,DynamoDB还提供了按需备份的能力。它允许用户创建数据表的完整备份,以便长期保留和遵从本地法规的需求。
Couchbase
由Couchbase公司发布的Couchbase Server,是一个支持多模型JSON文档数据库平台。作为一个内置了缓存的开源NoSQL键值和文档数据库,它适用于需要提供性能、多模型、可扩容、以及自动化数据库的企业。
通常,企业可以利用该平台来支持社交和移动应用、内容与元数据存储、以及电商交易等应用。它为各种文档、数据模型、索引、全文搜索、以及用于实时分析的MapReduce提供了全面的支持。
DataStax
DataStax Astra DB是一种基于Apache Cassandra的全托管云原生数据库即服务。据称,它可以实现动态扩展,并通过一系列API和编程语言选项,来加速开发人员构建实时应用,并对扩展不设限。
同时,开发人员也可以利用Astra DB的内置安全机制(如专用链接、IP访问控制、单点登录、应用令牌和数据加密),来实时确保数据安全。当然,基于微服务和API优先原则构建的Astra DB无服务器架构,还可按需进行自动扩展。
谷歌BigTable
谷歌声称Bigtable是一种企业级NoSQL数据库服务,具有低至个位数的毫秒级延迟、无限制的扩展能力、以及99.999%的可用性。而且,它支持多租户、混合操作和实时负载分析。
同时,谷歌表示,作为一种键值和宽列(wide-column)存储,Bigtable是快速访问结构化、半结构化、以及非结构化数据的理想选择。针对延迟敏感的个性化负载,Bigtable可以自动扩展其资源,以适应服务器的流量,并按需处理相关分片、复制和查询处理。
MarkLogic
MarkLogic Server是一个多模型数据库,它能够将文档、语义图、地理空间和关系模型结合到单个可扩展的、可操作的数据库中。它为JSON、XML、文本、RDF三元组、地理空间和二进制文件等提供了本地存储,并具有统一的搜索和查询界面。
由于该数据库的核心部分内置了搜索引擎,提供了一个从silos处加载数据,并搜索所有数据的单一平台,因此它不需要通过附加搜索引擎来进行全文搜索。此外,MarkLogic Server还提供了DLP等企业级的数据安全控件。
微软Azure Cosmos
Azure Cosmos DB作为微软Azure的数据库服务,支持多种NoSQL模型和多种数据格式,其中包括JSON和二进制数据等。微软表示,该数据库属于全托管模式,由微软Azure处理所有底层基础架构,以便开发人员更专注于自己的应用和数据。
Azure Cosmos DB不但提供了数据加密和数据访问控制等安全工具,而且具有自动和即时扩展能力,更为MongoDB、Cassandra和其他NoSQL引擎提供了开源的API。
MongoDB
由MongoDB Inc.维护、以Gnu Affero通用公共许可证和Apache许可证的组合形式发布的MongoDB,是一个免费的开源、跨平台、且面向文档的数据库。它使用带有模式的JSON类文档,并结合了从优化各类组织的数千次部署中,学到的最佳操作实践。
作为一款基于云端的产品,它可以分布式数据库集群的形式,处理数据库管理,设置、配置和修补软件、以及进行监控和备份。总体而言,MongoDB的主要特点和功能包括:全面管理备份、恢复时间点,提供实时性能面板、以及定制警报。
Redis
由Redis Labs赞助的Redis Enterprise,是一种开源的键值NoSQL内存数据库。它支持宽松和严格的一致性、灵活的无模式模型、高可用性、以及易部署性。
Redis平台支持诸如列表、集合、位图和哈希值等各种键值数据结构,以及通过诸如搜索、图、JSON和XML等插件模块支持的各种模型。Redis Enterprise包含了一个实时索引、查询和全文搜索引擎,既可以在企业内部使用,也能够作为云中的托管服务被使用。
译者介绍
陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。
原文标题:How to choose the right NoSQL database,作者:Bob Violino