NoSQL 数据库

入门概述

什么是 NoSQL 数据库?

NoSQL 数据库也称作“非关系型”、“NoSQL DB”或“非 SQL”,这是为了强调它们可采用不同于具有行和表的关系型 (SQL) 数据库的方式处理大量快速变化的非结构化数据这一事实。

自 20 世纪 60 年代以来,NoSQL 技术就以各种名称出现在人们的视野中;随着数据环境的变化,这些技术人气激增,而开发人员则需要适应这些变化,以便处理从云、移动设备、社交媒体和大数据产生的海量数据。

从病毒式传播的名人推文到电子病历中的抢救信息,新的数据和数据类型正在飞速增长。NoSQL 数据库经历了巨大的发展,可以帮助开发人员快速创建数据库系统来存储新信息,并使其易于搜索、整合和分析。

NoSQL 数据库 (NoSQL DB) 的优点

NoSQL 数据库可帮助 IT 专业人员和开发人员应对数据类型和模型种类不断扩充所带来的新挑战,并帮助他们高度有效地处理不可预知的数据(查询速度通常极快)。它们还为现有 NoSQL 工作负载提供了将数据库平稳迁移到云端的功能。

敏捷开发

由于能够应对计划外的情况,NoSQL DB 可满足高频率软件发布周期的需求,适合更快、更灵活的应用开发。

灵活处理数据

NoSQL 为开发人员带来了更多的自由,使他们能够更快速、更灵活地更改架构和查询,从而适应数据需求。以聚合形式存储的信息能够更加便捷地实现快速迭代改进,且前期无需进行架构设计。

操作任何规模的数据

NoSQL DB 可以提供极具吸引力的操作优势并减少成本,因为它们可以横向扩展,在无需升级的情况下添加费用较低的服务器。它们可通过扩展来处理更多数据,也可以在支持高度分布式部署的服务器群集中运行单个大型数据库。

NoSQL 数据库的数据模型类型

大多数高性能非关系数据库(有时称为“不仅仅是 SQL”)也可以处理高度结构化的数据,它们不仅仅限于关系型 (SQL) 数据库等固定数据模型。

4 种最常见的 NoSQL 数据库类型是:

键-值

键值存储使用哈希表对键和值进行配对。键已知而其关联值未知时,键值类型最佳。

文档

文档型数据库通过将整个文档整理为称作集合的组来扩展键值数据库的概念。它们支持嵌套的键值对,并且允许查询文档中的任何属性。

列式

分栏式、宽列或列系列数据库可有效存储数据并在稀疏数据行间进行查询,在查询数据库中的特定列时也十分有用。

图形

图形数据库使用基于节点和边缘的模型来表示互连数据(例如社交网络中人员之间的关系),能够简化复杂关系的存储和导航。

如何在关系型 (SQL) 数据库与非关系型 (NoSQL) 数据库之间作出选择

不可用 非关系型 (NoSQL) 关系型 (SQL)
最适用于:
  • 处理大量、不相关、不确定或快速变化的数据。
  • 与架构无关的数据或由应用决定的架构。
  • 性能和可用性比强一致性更重要的应用。
  • 可为全球用户提供服务的始终可用的应用。
  • 处理具有可提前识别的逻辑和离散要求的关系型数据。
  • 必须在应用与数据库之间保留并保持同步的架构。
  • 为关系型结构构建的旧版系统。
  • 需要复杂查询或多行事务的应用。
方案:
  • 移动应用。
  • 实时分析。
  • 内容管理。
  • 个性化。
  • IoT 应用。
  • 数据库迁移。
  • 会计、财务和银行系统。
  • 库存管理系统。
  • 事务管理系统。
缩放:
  • 通过跨服务器分片横向扩展数据。
  • 通过增加服务器负载纵向扩展数据。
数据模型:
  • 数据库类型:键值、文档、分栏式和图形数据库。
  • 根据数据库类型存储数据。
  • 数据库类型:由行组成的表,分组为关系。
  • 使用结构化查询语言 (SQL)。
  • 在表中以行的形式存储数据;相关数据单独存储,并通过联接实现复杂查询。
不可用 详细了解非关系型数据模型 详细了解关系型数据模型

如何评估 NoSQL DB?

选择数据模型

许多 NoSQL 数据库都面向聚合(作为一个单元进行交互的数据集合)。这使得它们更适合面向对象的新式编程语言。在选择 NoSQL DB 时,建议你从选择数据模型开始,然后再评估支持它的 NoSQL 数据库以及每个数据库支持的编程语言和 SDK。

了解有关编程模型和 API 的详细信息

权衡一致性的利弊

大多数 NoSQL DB 都提供一致性范围,一端是强一致性,一端是最终一致性。强一致性可让你获得最新数据,但可能需要等待;而最终一致性能够快速获得响应,但数据可能是过时的,你可以在这之间进行选择。还有许多 NoSQL 数据库支持其他通常处于中间级别的一致性级别。根据需要选择可在一致性方面提供最大灵活性和控制权的 NoSQL DB。

详细了解一致性、可用性和分区容差

考虑云和数据库迁移

由于 NoSQL DB 具有分布式特性和横向扩展能力,因此它是云计算的理想之选,不过你也可以找到许多专为运行本地或混合方案而打造的 NoSQL 数据库系统。

在评估云选项时,请考虑以下事项:

  • 受支持的数据模型。 云提供商是否支持你可能想要使用的所有数据模型?
  • 部署和操作。 部署数据库以及将其复制到其他区域(如果需要)的难易程度如何?
  • 地理位置。 云提供商的数据中心位于何处?能否将数据存储在想要存储的位置?你将如何遵守全球数据隐私法规,例如欧盟的 GDPR?
  • 复制的难易程度。 将数据库复制到其他地理区域的过程是怎样的?
  • 可伸缩性。 NoSQL 数据库资源能否确保足够的性能并通过扩展来支持增长?能否纵向扩展、缩减或横向扩展?
  • 高可用性。 出现意外故障时会发生什么情况?该服务是否提供内置的高可用性和灾难恢复?
  • 服务级别。 提供了什么级别的可用性或延迟保证?
  • 生态系统。 数据库是否与云平台的其他部分紧密集成,是否可以快速拼结来组成新的解决方案?

NoSQL 数据库系统的使用方式

对于希望构建移动、Web、物联网 (IoT) 和游戏应用的公司来说,其数据库需要灵活性、可缩放性、高性能和功能实用性,此时基于 NoSQL 使用数据模型便是改善用户体验的理想之选,无论是游戏、电子商务、大数据分析,还是实时网络应用等均适用。

全球分布应用

通过高可用性和灾难恢复改善应用性能,赢得遍布全球各地的更多用户。

提供实时客户体验

使用 NoSQL DB 提供个性化的实时建议和更卓越的用户体验。

适应各种 IoT 工作负载

即时和灵活缩放,可处理持续的写入密集型数据引入,同时针对 IoT 应用改进了查询性能。

增强电子商务应用

NoSQL 具有灵活的架构和分层数据,非常适合存储属性不同的各种产品的目录数据。

使用新内容吸引玩家

通过游戏内的统计信息、社交媒体集成和排行榜等内容提供个性化体验。低延迟和灵活的可伸缩性能够支持游戏发布和比赛期间的流量高峰。

构建无服务器应用

利用即时可用性、自动编制索引、稳定的引入速率和查询性能,可无缝缩放数据引入、吞吐量和数据量。

从大数据中获得更深入的见解

在快速变化的大量数据中实现规模化机器学习,并通过分析获得更多见解。

将现有 NoSQL 工作负载迁移到云

通过迁移到云,可缩短管理本地数据库的时间,同时仍可使用现有工具、驱动程序、库和 SDK。

NoSQL 和数据库云迁移入门

了解如何开发能够以更加敏捷、灵活和可扩展的方式管理数据库系统和各种数据类型,并可将现有工作负载迁移到云的应用。获取面向开发人员的 Azure Cosmos DB 技术概述,并详细了解可大规模扩展的全球分布式多模型数据库服务中针对 NoSQL 的本机支持。

详细了解用于 NoSQL 数据的 Azure Cosmos DB

了解更多