如何正确选择NoSQL数据库

译者 | 陈峻
审校 | 重楼
Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升 。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达到863亿美元,而且其复合年增长率为28% 。其中,推动全球NoSQL市场增长的主要因素包括:更具可扩展性和灵活性的企业级数据库、对大数据分析的爆炸性需求,以及云计算平台与技术的普及 。

如何正确选择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数据模型有四种主要模型 , 分别是键值、文档、列存储和图 。每一模型都适合不同的用例 。我们可以将它们的优势总结如下:
  1. 键值数据库旨在满足零售和移动等应用的高可用性、以及低延迟要求 。
  2. 文档数据库适合事件记录、在线购物、内容管理和深入分析处理 。
  3. 列存储数据库适用于事件记录、内容管理、计数和/或分类分析,并且可以设置自动失效那些过期的数据 。
  4. 图数据库非常适合数据元素的相互连接、以及关系数量不确定的应用,包括:社交网络、推荐引擎、物流和路由、位置感知系统、公交链接、以及网络拓扑等 。
可见,文档类型是最流行的 , 包括了以最佳方式存储JSON文档的能力;图数据库侧重于相互关联的数据;而键值类型侧重于对简单键值对的检索,其应用范围并不广泛 。此外,一些多模型(Multi-model)数据库还能提供多种类型的灵活性 。
是否有延迟要求?通常,我们对于数据库的延迟要求可以毫秒、亚秒、秒、分钟来界定 。
  1. 如果您对延迟的要求极低,例如对于流式数据捕获、或实时数据共享的应用而言,如果处理的是一些简单的列表或矩阵,就应该考虑键值存储 。
  2. 如果数据的形式极易改变 , 并且包含了自定义的字段,那么JSON文档数据库更为合适 。毕竟与之对应的应用往往是高交互式、且会随着用户需求的变化而不断更改 。
  3. 如果对延迟的要求不高,而且必须支持物料清单(bill-of-materials)结构、或相互关联的复杂数据组,那么可以考虑图形DBMS 。
可扩展性和数据一致性重要吗?NoSQL数据库可以将数据分解成不同的片段(segment)或碎片(shard),这对运行上TB级的大型部署而言非常实用 。分片是NoSQL扩展数据库的基本功能 , 它能够协助实现在横向扩展的集群中,自动缩放节点,从而使得应用更加动态灵活 。
在数据一致性方面,关系型数据库的重点是使用ACID合规性,来确保每笔交易的一致 。而NoSQL则不然,它通过快速扩展和提供高性能 , 来实现数据的最终一致性(Eventual Consistency) 。
如何部署?有些NoSQL数据库可以在企业内部运行,有些只能在云端运行,还有些可以在混合云的环境中运行 。其中,值得一提的是 , 部分NoSQL已与云计算架构进行了原生集成,可以运行在无服务器和Kube.NETes环境中 。毕竟,那些既希望为自己的应用提供良好的性能和可扩展性,又希望通过自动化去简化基础架构管理的用户 , 都会选择无服务器模式 。


推荐阅读