什么是 NoSQL?

NoSQL 的定义

“NoSQL”表示非关系类型数据库,这些数据库采用不同于关系表的格式存储数据。但是,NoSQL 数据库可以使用惯用语言 API、声明性结构化查询语言以及按示例查询语言进行查询,这也正是它们被称为“不仅仅是 SQL”数据库的原因所在。

NoSQL 数据库的作用是什么?

得益于其高可扩展性和高可用性,NoSQL 数据库广泛应用于实时 Web 应用和大数据。

NoSQL 数据库也是开发人员的首选方案,因为它们可快速适应不断变化的需求,自然也适合敏捷开发范式。NoSQL 数据库支持以更直观、更易于理解的方式来存储数据,或者更接近于应用使用数据的方式。使用 NoSQL 风格的 API 存储或检索时所需的转换更少。此外,NoSQL 数据库还可以充分利用云技术来实现零停机。

SQL 与 NoSQL 对比

SQL 数据库是关系型的,而 NoSQL 数据库是非关系型的。关系数据库管理系统 (RDBMS) 是结构化查询语言 (SQL) 的基础,可允许用户访问和操作高度结构化表中的数据。这是 MS SQL Server、IBM DB2、Oracle 和 MySQL 等数据库系统的基础模型。但是对于 NoSQL 数据库,数据访问语法可能因数据库而异。

关系数据库与 NoSQL 数据库对比

要掌握 NoSQL 数据库,了解 RDBMS 与非关系数据库类型之间的差异非常重要。

RDBMS 中的数据存储在称为表的数据库对象中。表是相关数据条目的集合,由列和行组成。这些数据库需要预先定义架构,即需要提前知道所有列及其相关联的数据类型,以便于应用将数据写入数据库。它们还存储通过键链接多个表的信息,从而创建跨多个表的关系。在简单的用例中,键用于检索特定行以便于进行检查或修改。

相反,在 NoSQL 数据库中,无需预先定义架构即可存储数据 — 这意味着您可以快速移动和迭代,从而动态定义数据模型。这适用于特定的业务需求,包括基于图形、面向列、面向文档以及作为键值存储。

关系数据库近期还是非常广泛使用的模型,它们仍然在许多企业得到了广泛采用。然而,面对当今多样化、高速和海量的数据,有时需要用一个高度不同的数据库来补充关系数据库。这促进了 NoSQL 数据库在某些领域的采用,该数据库也称为“非关系数据库”。由于支持快速横向扩展,因此非关系数据库可以处理高流量,这也使其具有很强的适应性。

何时选择 NoSQL 数据库?

对于需要快速创新的企业和组织而言,保持敏捷性并继续以任何规模运营至关重要。NoSQL 数据库提供灵活的架构,并且还支持各种数据模型,非常适用于构建需要大量数据、低延迟或快速响应的应用,例如在线游戏和电子商务 Web 应用。

何时不选择 NoSQL 数据库?

NoSQL 数据库通常依赖于非规范化数据,可支持使用较少表(或容器)的应用类型,并且其数据关系不是使用引用建模,而是作为嵌入式记录(或文档)。财务、会计和企业资源规划中的许多经典后台业务应用均依赖高度规范化的数据来防止数据异常和数据重复。这些应用类型通常不适用于 NoSQL 数据库。

NoSQL 数据库的另一个特点是查询复杂性。NoSQL 数据库在查询单个表时性能出众。然而,随着查询复杂性的增加,关系数据库则是更好的选择。NoSQL 数据库通常不会在 WHERE 子句中提供复杂的联接、子查询和查询嵌套。

但有时并不需要在关系数据库与非关系数据库之间做出选择。在许多情况下,公司会选择支持融合模型的数据库,以便于结合使用关系数据模型和非关系数据模型。这种混合方法在处理不同类型的数据时可提供更高的灵活性,同时还将确保读写一致性,而不会降低性能。

NoSQL 提供了哪些其他数据库不具备的功能?

NoSQL 数据库与其他类型数据库之间的一项主要差异就是 NoSQL 数据库通常使用非结构化存储。经过过去二十年的开发过程,NoSQL 数据库专为快速、简单查询、海量数据和频繁的应用更改而设计。此外,这些数据库还大幅简化了开发人员的编程工作。

NoSQL 数据库的另一项重要差异化优势是依赖于“分片”流程来进行横向扩展,这意味着可以添加更多机器来处理跨多个服务器的数据。而其他 SQL 数据库中的垂直扩展需要为现有机器增加更多处理能力和内存。随着对存储的需求日益增长,这种方式是不可持续的。

NoSQL 数据库的横向扩展能力意味着可以更加有效地处理海量数据,同时可支持数据增长。垂直扩展类似于为房屋添加新楼层,而横向扩展则是在原始房屋的隔壁建造另一所房屋。

NoSQL 数据库的优势

经过二十年的发展,数字交互和数据使用已经达到前所未有的水平,这要求企业采用更加现代化且流畅的方法来存储数据以及访问数据。随着全球范围内的用户要求实现不间断的内容和功能流,数据库也就需要具备快速适应的能力。有鉴于此,以下是开发人员选择 NoSQL/非关系数据库的一些关键原因:

  • 灵活性

    SQL 数据库将数据存储在更加严格的预定义结构中。NoSQL 则以更加自由的方式来存储数据,而无需严格的模式。这种设计可支持创新和快速应用开发。开发人员可以专注于创建系统来改善客户服务,无需担心模式。NoSQL 数据库可以轻松处理任何数据格式,例如单一数据存储中的结构化、半结构化和非结构化数据。
  • 可扩展性

    NoSQL 数据库可以通过商用硬件来实现横向扩展,而不需要通过添加更多服务器来进行扩展。这可以支持流量增长,从而满足零停机需求。通过横向扩展,NoSQL 数据库可以扩充容量和处理能力,因此成为支持不断变化的数据集的首选方案。
  • 高性能

    当数据量或流量增长时,NoSQL 数据库的横向扩展架构的优势尤为明显。如下图所示,该架构可实现快速、可预测的个位数毫秒级响应能力。NoSQL 数据库还可以摄取数据并快速可靠地交付数据,因此 NoSQL 数据库可支持应用每天收集 TB 级数据,同时实现高度交互的用户体验。如下图所示,每秒 300 次读取的传入速率(蓝线)的第 95 次延迟在 3-4 毫秒范围内,而每秒 150 次写入的传入速率(绿线)的第 95 次延迟在 4-5 毫秒范围内。

    nosql 数据库

  • 可用性

    NoSQL 数据库可自动跨多个服务器、数据中心或云资源复制数据。而这又可以大幅减少用户延迟,而不受其地理位置的限制。此特性还有助于减轻数据库管理的负担,从而腾出时间专注于其他优先事项。
  • 功能强大

    NoSQL 数据库专为具有超高数据存储需求的分布式数据存储而设计。这使得 NoSQL 成为大数据、实时 Web 应用、360 度客户视图、在线购物、在线游戏、物联网、社交网络和在线广告应用的理想方案。

NoSQL 数据库的类型

NoSQL 数据库可分为四种主要类型:

  • 键值

    这是极为灵活的 NoSQL 数据库类型,因为应用可以完全控制 value 字段中存储的内容,没有任何限制。
  • 文档

    也称为文档存储或面向文档的数据库,这些数据库用于存储、检索和管理半结构化数据。无需指定文档将包含哪些字段。
  • 图形

    此数据库将数据组织为节点和关系,这将显示节点之间的连接。这支持更加丰富和完整的数据表示。图形数据库应用于社交网络、预订系统和欺诈检测。
  • 宽列

    这些数据库以表、行和列的形式来存储和管理数据。它们广泛部署于需要用列格式来捕获无模式数据的应用中。

试用 Oracle NoSQL Database

Oracle NoSQL Database Cloud Service 支持开发人员轻松使用文档、列和键值数据库模型来构建应用,通过数据复制获得高可用性,实现可预测的个位数毫秒级响应能力。它提供 ACID 事务、无服务器扩展、全面的安全性以及按用量付费的低定价模式。

Oracle NoSQL Database Cloud Service 现已是 Oracle Cloud 免费套餐的一部分,其中包括免费限时促销试用,让您可以探索各种云技术服务以及一系列 Always Free 服务。

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国 。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。