您当前的位置:首页 > 电脑百科 > 数据库 > 百科

如何正确选择NoSQL数据库

时间:2024-03-28 15:48:34  来源:51CTO  作者:

译者 | 陈峻

审校 | 重楼

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数据模型有四种主要模型,分别是键值、文档、列存储和图。每一模型都适合不同的用例。我们可以将它们的优势总结如下:

  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环境中。毕竟,那些既希望为自己的应用提供良好的性能和可扩展性,又希望通过自动化去简化基础架构管理的用户,都会选择无服务器模式。

领先的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



Tags:NoSQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28  Search: NoSQL  点击:(13)  评论:(0)  加入收藏
NoSQL数据库:Redis高级实用技巧
配置Redis可通过命令行的方式进行数据库配置,也可以通过配置文件的方式进行数据库配置。由于数据库的配置选项较多,使用命令行的方式并不简便,因此数据库开发和管理人员大多采...【详细内容】
2023-11-30  Search: NoSQL  点击:(161)  评论:(0)  加入收藏
由NoSQL数据建模错误导致的性能问题
译者 | 陈峻审校 | 重楼您也许没有注意到,数据建模错误往往是导致系统性能出现问题的根本原因之一。人们往往简单地认为,只需根据应用的访问模式,对NoSQL数据建模即可。然而,事...【详细内容】
2023-11-09  Search: NoSQL  点击:(164)  评论:(0)  加入收藏
SQL还是NoSQL?架构师必备选型技能
做一个新业务,我该选择SQL还是NoSQL?很多时候我们都会有这样的疑问。如果这时候直接去看MySQL、Mongo、HBase、Redis等数据库的用法、特点、区别,其实有点太着急了。这时候,最...【详细内容】
2023-09-27  Search: NoSQL  点击:(316)  评论:(0)  加入收藏
SQL vs NoSQL:为满足您的业务需求选择正确的数据库模型
通过本文,我们将了解数据库如何扩展和不扩展。我们将研究传统SQL数据库存在的一些问题以及NoSQL数据库的引入如何解决这些问题。关于基本SQL的快速回顾SQL(Structured Query L...【详细内容】
2023-09-11  Search: NoSQL  点击:(246)  评论:(0)  加入收藏
MongoDB NoSQL之美:为什么选择非关系型数据库?
非关系型数据库(NoSQL)在过去几年中变得越来越受欢迎。传统的关系型数据库(RDBMS)在许多应用场景下存在一些限制,而非关系型数据库提供了一种新的数据存储和查询方式,具有许多优点...【详细内容】
2023-09-05  Search: NoSQL  点击:(266)  评论:(0)  加入收藏
SQL与NoSQL数据库选型及实际业务场景探讨
在企业系统架构设计中,选择合适的数据库类型是一项关键决策。本文将对比SQL和NoSQL数据库的特点,分析它们在数据模型、可扩展性、一致性与事务、查询复杂性与频率,以及性能与延...【详细内容】
2023-07-23  Search: NoSQL  点击:(230)  评论:(0)  加入收藏
NoSQL数据库有多少种类型?
键值对存储数据库是NoSQL数据库中的一种类型,也是最简单的NoSQL数据库。键对值对存储数据库中的数据是以键值对的形式来存储的。1.键值对存储数据库键值对存储数据库是NoSQL...【详细内容】
2023-03-06  Search: NoSQL  点击:(169)  评论:(0)  加入收藏
mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?
一、NoSQL的简介NoSQL比关系型数据库性能高数倍。NoSQL凭借 “易扩展、大数据、高可用、高性能、灵活性”特点强势引领全场。CP型分布式数据库,能够保证数据的强一致性和分区...【详细内容】
2021-02-25  Search: NoSQL  点击:(888)  评论:(0)  加入收藏
在物联网应用使用关系数据库还是NoSQL?
物联网数据很复杂,需要多个用户访问,所以不要犯创建数据孤岛的错误。几乎在每个行业,都有一个由物联网数据驱动的数字化转型正在进行中。重要的是要认识到物联网不是关于事物...【详细内容】
2020-11-27  Search: NoSQL  点击:(350)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(4)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(3)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(13)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(12)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(6)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(13)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(5)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(4)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(24)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(19)  评论:(0)  加入收藏
站内最新
站内热门
站内头条