跳至主要内容

NoSQL 数据库:每位数据科学家都该了解的要点

了解 NoSQL 数据库的用途、数据科学家为何使用它们,以及可用的最佳 NoSQL 数据库列表。
Zoumana Keita
Zoumana Keita

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

NoSQL Header

我们将为数据科学家全面梳理 NoSQL 数据库的方方面面。

数据科学与 NoSQL 数据库

作为数据科学家,工作不止是构建机器学习模型,还需要能够处理、分析,并且更好地从不同格式的数据中传达您的结果。

多年来,传统的 SQL 数据库一直是唯一使用的数据库类型。然而,随着 1990 年代中期互联网的极度流行和数字化转型,一种新型数据走向前台:NoSQL 数据库。它们的出现是为了回应传统 SQL 数据库的弱点。

例如,数据科学家和机器学习工程师可以使用 NoSQL 数据库存储数据、模型元数据、特征以及操作参数。另一方面,数据工程师可以利用它们来存储和检索清洗后的数据。

在这篇概念性博客(无需编码)中,我们将先帮助您建立对 NoSQL 数据库的理解,然后探讨 NoSQL 的重要性。我们还将比较 SQL 与 NoSQL 数据库,并查看后者的用途和类别。最后,我们将审视数据科学家最常用的 NoSQL 数据库。

NoSQL 数据库是什么?

NoSQL 代表Not Only SQL(不止 SQL),意味着 NoSQL 数据库具有非关系型这一特性,因为它们可以以非结构化格式存储数据。下图突出展示了 NoSQL 数据库的五大关键特性。

NoSQL Databases Explained

NoSQL 数据库为何重要?

NoSQL 数据库在业界流行的原因包括以下优势:

  • 多模数据:与传统 SQL 数据库相比,NoSQL 数据库的灵活性更强,因为它们可以存储结构化数据(例如传感器采集的数据)、非结构化数据(图像、视频等)以及半结构化数据(XML、JSON 等)。
  • 易于扩展:由于其对等架构,扩展变得简单,这意味着可以向架构中添加多台机器。
  • 全球可用:由于数据库在全球范围内共享,可通过来自不同地理区域的不同机器同时访问同一数据。
  • 灵活性:NoSQL 数据库可以通过频繁更新和新功能,快速适应不断变化的需求。

NoSQL 数据库 vs. SQL 数据库

 

SQL 数据库

NoSQL 数据库

语言

SQL 数据库使用结构化查询语言执行操作,需要使用预定义的模式来更好地与数据交互。

相对地,NoSQL 数据库使用动态模式来查询数据。此外,某些 NoSQL 数据库在文档操作上使用类 SQL 语法。

数据模式

SQL 数据库具有预定义且固定的格式,无法为新数据进行更改。

NoSQL 数据库更加灵活。这种灵活性意味着可以在没有预定义结构的情况下创建记录,而且每条记录都可以有自己的结构。

可扩展性

SQL 数据库只能垂直扩展,即需要在单台机器上在一定程度上提升 CPU、内存、SSD 以满足需求。

NoSQL 数据库是水平扩展,即向现有基础设施中添加更多机器以满足存储需求。

大数据支持

垂直扩展使得 SQL 数据库难以存储超大规模数据(PB 级)。

水平扩展和动态数据模式使 NoSQL 适用于大数据。此外,NoSQL 数据库由顶级互联网公司(Amazon、Google、Yahoo 等)开发,以应对数据量快速增长的挑战。

性质

SQL 数据库遵循 ACID(原子性、一致性、隔离性、持久性)特性。

而 NoSQL 数据库遵循 CAP(一致性、可用性、分区容错性)特性。

何时应使用 NoSQL 数据库?

在这个快速发展且竞争激烈的环境中,各行业需要尽可能多地收集数据以实现其业务目标。收集数据是一回事,将其存储在合适的基础设施中又是另一挑战。困难在于数据可能具有多种类型,例如图像、视频、文本和声音。使用关系型数据库来存储这些不同类型的数据并不总是明智之举。然而,问题仍然是:

何时应使用 NoSQL 而不是 SQL?

当您处于以下场景时,应考虑使用 NoSQL:

  • 数据不断变化:当您不确定系统或应用未来会如何增长时,例如可能需要添加新的数据类型、新功能等。
  • 数据量巨大:当您的业务正在处理大量数据,且这些数据可能会随时间增长。
  • 无需强一致性:当数据一致性和 100% 完整性并非优先事项。例如,若您为企业开发社交平台,所有员工同时看到您的帖子可能并不是问题。
  • 可扩展性与成本:NoSQL 数据库提供更大的灵活性,并可在数据需求变化时控制成本。

四大主流 NoSQL 数据库类型

NoSQL 数据库分为四大类。每一类都有其特性,因此您应选择最适合您用例的那一种:下面我们重点列举主要的 NoSQL 数据库示例。本节旨在通过介绍其作用、部分优缺点以及使用场景来覆盖每一类数据库。

NoSQL Database Categories

1. 文档型数据库

此类数据库旨在存储和查询 JSON、XML、BSON 等文档。每个文档都是数据库中的一行或一条记录,以键值对形式存在。一个文档存储关于某个对象及其相关数据的信息。例如,下述数据库包含三条记录,每条记录都提供关于一名学生的信息。对于第一个文档,firstname 是键,Franck 是其值。

文档型数据库的优势

  • 无模式:在数据存储的格式和结构方面没有限制。这在数据库持续演进时尤为有利。
  • 易于更新:可以在不更改该文档其余现有字段的情况下添加或删除新的信息。
  • 性能提升:与某个文档相关的所有信息都可在该文档本身中找到。无需引用外部信息;而在关系型数据库中,用户可能需要查询其他表。

文档型数据库的局限

  • 一致性检查问题:因为文档之间不一定存在关系,且两个文档可能具有不同的字段。
  • 原子性问题:如果需要更改两个文档集合,就需要为每个文档分别运行查询。

何时使用文档型数据库

  • 当您的数据模式在未来会不断变化时,推荐使用。

文档型数据库的应用

  • 由于其灵活性,文档型数据库适用于在线用户画像,不同用户可以拥有不同类型的信息。在这种情况下,每位用户的画像仅使用其特定的属性进行存储。
  • 它们可用于内容管理,需要高效地存储来自多种来源的数据,然后据此创建并整合新的内容类型。

2. 键值型数据库

这是最简单的 NoSQL 数据库类型。每个条目都以键值对的形式存储在数据库中。我们可以将其看作只有两列的表。第一列包含唯一键,第二列是该键对应的值。值可以是不同的数据类型,如整数、字符串、浮点数,或更复杂的数据类型,如图像和文档。

下面的示例展示了一个键值型数据库,包含关于客户的信息,其中键是他们的电话号码,值是他们的月度购买额。

Key/Value Database NoSQL example

键值型数据库的优势

  • 简单:键值结构非常直接。由于没有数据类型限制,使用起来更为简单。
  • 速度快:简单的数据格式使读和写操作更快。

键值型数据库的局限

  • 无法对值这一列进行任何过滤,因为返回的值就是存储在该字段中的全部信息。
  • 仅针对单个键和值进行了优化。存储多个值需要解析器。
  • 值只能整体更新,这需要先获取完整数据,对其执行所需处理,最后再整体写回。这在处理耗时较长时可能造成性能问题。

何时使用键值型数据库

  • 适用于基于简单键查询的应用。
  • 用于需要临时存储简单对象的简单应用,例如缓存。
  • 当需要实时数据访问时也可使用。

应用

  • 更适合需要临时存储简单对象(如缓存)的简单应用。

3. 宽列型数据库

顾名思义,面向列的数据库用于将数据存储为列的集合,其中每一列被单独对待,其实现逻辑基于Google Big Table 论文。它们主要用于分析型负载,如商业智能、数据仓库管理和客户关系管理。

例如,我们可以在每一列上使用聚合函数 AVG 分别快速获得客户年龄和产品价格的平均值。

Wide Column Database NoSQL Example

4. 图/节点型数据库

图数据库用于通过边来存储、映射和检索节点之间的关系。节点表示一个数据元素,也称对象或实体。每个节点都有入边或出边。边表示两个节点之间的关系。这些边包含与其连接的节点相对应的一些属性。

“Zoumana 就读于 Texas Tech University。他喜欢在大学里的公园跑步。”

Graphic/Node Database NoSQL example

图/节点型数据库的优势

  • 结构敏捷且灵活。
  • 数据库中节点之间的关系是可读且显式的,因而易于理解。

图/节点型数据库的局限

  • 缺乏标准化的查询语言,因为各语言依赖于具体平台。
  • 上述原因导致遇到问题时在网上寻找支持变得困难。

何时使用图/节点型数据库

  • 当您需要在数据元素之间建立关系,并能快速检索这些关系时,可以使用。

应用

  • 可用于实时金融交易中的复杂欺诈检测。
  • 可用于社交媒体数据挖掘。例如,LinkedIn 使用图数据库来识别哪些用户彼此关注,以及这些用户之间与其专长(如 ML 工程师)的关系。
  • 网络映射非常适合用图来表示,因为这些网络用于映射硬件及其所支持服务之间的关系。

数据科学领域 7 大最佳 NoSQL 数据库

现在您已对 NoSQL 数据库有了更深入的了解,接下来看看在数据科学项目中颇受欢迎的 NoSQL 数据库列表。本文分析仅聚焦于开源 NoSQL 数据库。

Most Popular NoSQL Databases

1. MongoDB

MongoDB 是一种开源的文档型数据库,以 JSON 格式存储数据。它是最常用的数据库之一,专为高可用性和可扩展性而设计,提供自动分片和内置复制。我们的MongoDB 入门课程涵盖 MongoDB 与 Python 的使用,帮助您掌握用 MongoDB 操作和分析灵活结构数据的技能。Uber、LaunchDarkl、Delivery Hero 以及 4300 家公司在其技术栈中使用 MongoDB。

2. Cassandra

Cassandra 也是一款开源的宽列数据库。它可以将您的数据分布在多台机器上,并在您向基础设施中添加新机器时自动重新分区。Uber、Facebook、Netflix 以及其他 506 家公司在其技术栈中使用它。

3. Elasticsearch

与 MongoDB 类似,Elasticsearch 也是开源的文档型数据库。它是全球领先的搜索与分析工具,专注于可扩展性和速度。Uber、Shopify、Udemy 以及约 3760 家其他公司在其技术栈中使用它。

4. Neo4J

Neo4J 是开源的图型数据库。它主要用于处理具有关系的不断增长的数据。据称约有 220 家公司在其技术栈中使用它。

5. HBase

这是一种分布式、面向列的数据库。它还在 Apache Hadoop 之上提供与 Google BigTable 相同的能力。据报道,有 81 家公司在其技术栈中使用 HBase。

6. CouchDB

CouchDB 同样是一种开源的文档型数据库,以 JSON 格式收集和存储数据。约有84 家公司在其技术栈中使用它。

7. OrientDB

OrientDB 亦为开源数据库,是支持图、文档、键值和对象模型的多模型数据库。据称仅有 13 家公司在其技术栈中使用它。

结语

本文覆盖了 NoSQL 数据库的主要方面,以及它们如何在当今快速发展的环境中助益您的数据科学项目。您已掌握了为自己的用例选择并实现合适数据库所需的工具。如果您仍对是否使用它们犹豫不决,现在正是您与团队利用这些数据库力量的时刻。

欲了解更多,我们的NoSQL 概念课程将进一步强化您对上述四大类数据库的认识。

主题