我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何正确选择NoSQL数据库

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

  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已与云计算架构进行了原生集成,可以运行在无服务器和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是一个多模型数据库,它能够将文档、语义图、地理空间和关系模型结合到单个可扩展的、可操作的数据库中。它为JSONXML、文本、RDF三元组、地理空间和二进制文件等提供了本地存储,并具有统一的搜索和查询界面。

由于该数据库的核心部分内置了搜索引擎,提供了一个从silos处加载数据,并搜索所有数据的单一平台,因此它不需要通过附加搜索引擎来进行全文搜索。此外,MarkLogic Server还提供了DLP等企业级的数据安全控件。

微软Azure Cosmos

Azure Cosmos DB作为微软Azure的数据库服务,支持多种NoSQL模型和多种数据格式,其中包括JSON和二进制数据等。微软表示,该数据库属于全托管模式,由微软Azure处理所有底层基础架构,以便开发人员更专注于自己的应用和数据。

Azure Cosmos DB不但提供了数据加密和数据访问控制等安全工具,而且具有自动和即时扩展能力,更为MongoDBCassandra和其他NoSQL引擎提供了开源的API

MongoDB

MongoDB Inc.维护、以Gnu Affero通用公共许可证和Apache许可证的组合形式发布的MongoDB,是一个免费的开源、跨平台、且面向文档的数据库。它使用带有模式的JSON类文档,并结合了从优化各类组织的数千次部署中,学到的最佳操作实践。

作为一款基于云端的产品,它可以分布式数据库集群的形式,处理数据库管理,设置、配置和修补软件、以及进行监控和备份。总体而言,MongoDB的主要特点和功能包括:全面管理备份、恢复时间点,提供实时性能面板、以及定制警报。

Redis

Redis Labs赞助的Redis Enterprise,是一种开源的键值NoSQL内存数据库。它支持宽松和严格的一致性、灵活的无模式模型、高可用性、以及易部署性。

Redis平台支持诸如列表、集合、位图和哈希值等各种键值数据结构,以及通过诸如搜索、图、JSONXML等插件模块支持的各种模型。Redis Enterprise包含了一个实时索引、查询和全文搜索引擎,既可以在企业内部使用,也能够作为云中的托管服务被使用。

译者介绍

陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。

原文How to choose the right NoSQL database,作者:Bob Violino

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何正确选择NoSQL数据库

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何正确选择NoSQL数据库

本文在提出5个关键问题的基础上,针对NoSQL数据的选择向您介绍了当前业界领先的几款开源和商业类型NoSQL数据库。
NoSQL数据库2024-11-30

如何选择正确的物联网数据库架构?

在设计IoT数据库时,企业可以有很多选择,但是技术人员必须通过评估不同的IoT数据库体系结构(例如static vs. streaming and SQL vs. NoSQL)来确定最合适的方案。

合理规划:如何为APP选择正确的数据库?

数据库有很多种,在设计应用程序时我们经常会用到,今天我们就一起来介绍数据库的选择方案帮你做出明智的选择。

SQL vs NoSQL:为满足您的业务需求选择正确的数据库模型

通过本文,我们将了解数据库如何扩展和不扩展。我们将研究传统SQL数据库存在的一些问题以及NoSQL数据库的引入如何解决这些问题。
数据库NoSQL2024-11-30

如何正确选择CMS

这篇文章主要讲解了“如何正确选择CMS”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何正确选择CMS”吧!一般情况下,初级程序猿无非是用企业站CMS居多,少数部分会接到一些简单的行业站。
2023-06-10

怎么选择适合的NoSQL数据库

选择适合的NoSQL数据库需要考虑以下几个因素:数据模型:根据应用程序的需求选择适合的数据模型,比如文档型、键值型、列族型或图形型。数据结构:根据数据的特性选择支持的数据结构,比如文档、键值、列族或图。数据量和性能:根据数据量和访问需求选择
怎么选择适合的NoSQL数据库
2024-05-07

如何正确选择服务器

本篇内容主要讲解“如何正确选择服务器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何正确选择服务器”吧!1、看价钱很多企业主在租用服务器的时候会以价钱为选择标准,这样极易陷入到两个误区中,一是
2023-06-10

如何为您的企业选择正确的数据布线

在为您的企业选择正确的数据布线时,需要考虑以下几点。在本文中,我们将讨论在做出决定时需要牢记的一些最重要的因素。
数据布线2024-12-01

SQL还是NoSQL:12种数据存储如何选择?

你如何选择一个数据库?也许,您评估用例是否需要一个关系数据库。根据答案,您可以选择您喜欢的SQL或NoSQL数据存储,并使其工作。这是一个谨慎的策略:已知的魔鬼比一个未知的天使更好。

mysql如何选择数据库

在 mysql 中选择数据库时,需考虑数据量、并发请求、查询复杂度、表结构、数据类型和性能要求。mysql 提供了 innodb、myisam、memory 和 mariadb 等数据库类型。选择数据库步骤包括:确定数据量和并发请求、分析查
mysql如何选择数据库
2024-06-14

如何正确选择高防服务器

选择高防服务器时,需要考虑以下几个因素:流量防护能力:高防服务器需要具备强大的流量防护能力,能够抵御各种大小的DDoS攻击。建议选择能够提供至少100Gbps以上的防护能力的高防服务器。价格和性能比:高防服务器的价格通常会比普通服务器更高,
如何正确选择高防服务器
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录