文档数据库指南
文档数据库指南:优势和用例
在开发者可用的众多数据库选项中,文档数据库使开发者可以更轻松地存储和查询数据,因为它使用了与应用程序代码中相同的文档模型格式。它采用最先进的设计方法来创建更敏捷的数据存储和检索方式。它是早期计算中使用的传统关系数据库 (RDB) 设计的改进,早于“大数据革命”的真正冲击。
在本文中,您将了解文档数据库、它们的工作原理、一些常见的用例以及您可以在自己的项目中使用的流行文档数据库。
什么是文档数据库?
文档数据库或面向文档的数据库是一种新型的 noSQL 数据库结构。与其他类型的 noSQL 数据库设计一样,文档数据库代表了数据库技术中面向对象工程类型的使用,或者一些类似的创新,改进了数据的使用方式。数据通常以 JavaScript 对象表示法或“JSON”格式存储。
专家们将这种 JSON 格式描述为一种“可读的”方式来存储键值对并创建 noSQL 设计,从而带来特定的数据存储和检索优势。
与关系数据库相比,像文档数据库这样的 noSQL 数据库在企业和管理数据治理策略中具有广泛的用例。虽然方法略有不同,但文档数据库旨在实现使用与开发者在应用程序代码中使用的相同数据模型的目的。
何时使用文档数据库 - 用例
许多企业使用文档数据库来将结构化或半结构化数据保存在易于检索的环境中。正如我们稍后将讨论的那样,他们也可以使用这些格式来更轻松地将原始数据输入到更结构化的格式中。使用 noSQL 设计的查询允许用户根据文档数据库存储设置的敏捷性获得特定的结果。
例如,公司可以使用文档数据库来存储客户标识符和其他客户数据。他们可以检索该客户数据以进行预测分析,作为销售渠道运营的一部分,或者用于独立的客户关系管理软件系统或其他商业目的。在任何情况下,文档数据库都是此类和其他类型商业智能信息的中心持有者。
文档数据库也可用于库存管理。键值对和数据结构将链接到仓库中的实物产品,公司将检索此信息以移动产品或以其他方式处理库存。如果文档数据库是开源的,则它们可以用于 边缘计算工作负载,例如从 物联网设备收集传感器数据,然后将数据从 边缘发送回云端实例进行分析。
作为第三个例子,文档数据库可以用于产品开发,其中键值对和数据存储系统识别产品特性和属性,帮助团队将产品推向市场。
由于其灵活的数据模型,文档数据库还可以扩展不同类型的索引,以支持诸如全文搜索之类的功能,这些功能通常由专用的 搜索引擎数据库完成。
NoSQL 文档数据库的优势
专家们已经确定了使用新的文档数据库或 noSQL 设计的各种好处。首先,这些数据库通常提供更快的开发周期。文档数据库或 noSQL 数据库的另一个好处是更好的查询。如上所述,这些系统以各种方式提高了数据检索的效率。
文档数据库还可以容纳丰富的数据结构。为了理解这一点,了解 JSON 格式及其包含的内容很有帮助。
除此之外,NoSQL 文档数据库在查询方面的其他主要优势之一是,其中一些 noSQL 类型的设计可以水平扩展。
一般来说,“水平扩展”是指创建更多独立的模块来处理复杂数据任务的各个部分。例如,硬件中的水平扩展意味着添加更多机器,而垂直扩展只是意味着为一台机器添加更多功率。在数据库管理中,水平扩展涉及将数据集拆分为多个表、对象或模块,以便可以更好或更有效地完成查询。在分片方面,数据库性能存在各种权衡,这在 CAP 定理中进行了描述。
noSQL 数据库的另一个好处是更易于访问的开发。理解这一点的直观方法是,开发者对对他们透明且他们理解的技术感到最舒适。由于许多开发者都接受过新的 NoSQL 数据库设计的培训,因此他们习惯于通过这些结构进行工作。
JSON 格式和数据类型
Javascript 对象表示法或 JSON 格式经常在语义网或新的映射技术中被讨论。像 IETF 或 W3C 这样致力于创新网络的组织经常谈论 JSON 如何帮助促进“读-写-功能”网络,该网络的功能不仅仅是被动地包含数据。
但是 JSON 在数据库领域也很有用,这从它在文档数据库设计中的使用就可以证明。
JSON 系统有几个主要的数据类型
- 数字
- 字符串
- 布尔值
- 数组
- 对象
- 空值(指针)
对象数据类型由名称-值对组成,这些名称-值对显示数字或虚拟对象的特征和属性。在编程中,数据对象允许某些类型的编码结果,这些结果与操作所讨论的对象有关,而不是像早期的编程语言(如 BASIC 和 FORTRAN)那样通过线性代码库工作。
因此,考虑到这一点,JSON 将深刻的面向对象编程理念带入了数据库设计。
例如,JSON 格式可能包括字符串的名称-值对,其中包含客户的名字和姓氏和/或中间名首字母。它可能包括布尔属性,以显示客户是否购买了给定的产品。它可能有一个数组,用于描述某些客户记录的顺序数据或使用这些数据类型记录企业相关信息的其他设置。
在所有这些方面,NoSQL 文档数据库超越了传统的关系数据库设计。在典型的关系数据库中,数据根据其在静态表中的位置存储。然而,NoSQL 数据库是不同的,数据根据其在面向对象模型中的位置保存。静态数据库表的行和列中的所有小标签或数据片段都在对象标识符中,并在上面提到的 JSON 格式中。
文档数据库数据模型
本质上,在创建面向文档的数据库时,工程师编写一个 JSON 格式的脚本,描述对象以及如何存储和处理对象。换句话说,数据库对象的模式将包含看起来像代码或脚本的行,标识符以 JSON 格式编写;例如,“name”或布尔值“T”,而不是将数据输入到看起来像 Microsoft Excel 电子表格的表中。
然后就有一个问题,即如何利用 NoSQL 文档数据库来发挥公司的优势。当数据输入到 noSQL 环境中(在适当的用例中)时,工程师可以使用复杂的查询来提取数据以进行商业智能。
作为良好用例的示例,数据库管理员可以构建查询,以提取有关所有超过一定年龄的客户或所有特定性别或位置区域的客户的信息。或者在库存管理中,他们可以调出所有靠近给定位置的产品,或所有未过时或未停产的产品。
开发者构建查询的方式决定了搜索结果。数据库的构建方式决定了检索数据的难易程度,以及系统在压力或需求下扩展的程度。
为什么使用 NoSQL 文档数据库?
如上文用例中所述,公司经常使用文档数据库是因为其数据处理能力的敏捷性。然而,使用文档数据库或其他 noSQL 设计还有另一个主要好处。这与原始或非结构化数据的使用有关。许多公司在原始或非结构化数据以及将其引导到数据库设计中方面面临挑战。例如,假设一家公司收到想要挖掘数据信件,并且这些信件以数字格式存储。信件本身没有内置那些静态关系数据库表。相反,它们有一个叙述,其中标识符隐藏在文本中。因此,为了获得重要的数据并使用它,公司必须有一种一致的、通用的方法来从信件中挖掘数据,并将其放入可以查询的上下文中。通常,您无法从信件格式中查询出内容。
随着时间的推移,获取原始的、非结构化数据并为其添加结构的能力成为数据库工程师工作的重要组成部分。因此,当专家说 noSQL 设计“促进了丰富的数据结构”时,他们部分指的是它将数据置于一种情况或环境中,人们可以在其中进行更丰富的查询。另一方面,您可以将其描述为一个系统,其中 JSON 格式只是使数据比原本更结构化。
JSON 格式或类似对象格式的新文档数据库设计有助于促进原始信息的挖掘、聚合以及根据业务原则进行通用管理。考虑这个问题的另一种方法是,以新的 JSON 格式拥有数据库可能会使公司随着时间的推移更容易升级。
使用数据系统时,最大的挑战之一是手动数据输入或其他手动数据工作的繁琐工作。如果数据位于静态传统数据库表中,则只有某些用例可以工作,并且只有某些方式可以检索该数据。将数据从旧系统迁移到新系统可能需要大量劳动密集型的手动数据输入工作。
相比之下,当数据采用新的 noSQL 格式时,将有不同的方法来检索或迁移数据,而无需手动数据输入。
文档数据库示例
AWS DynamoDB
Amazon DocumentDB 是 Amazon Web 服务提供的 数据库即服务 (DBaaS),它支持文档数据结构,使您可以在应用程序中存储和查询丰富的文档。Amazon DocumentDB 与 MongoDB 版本 3.6 和版本 4.0 具有一定的兼容性。
MongoDB
MongoDB 是一种面向文档的 NoSQL 数据库,用于大容量数据存储。MongoDB 使用集合和文档,这与使用表和行的传统关系数据库不同。文档由键值对组成,键值对是 MongoDB 中的基本数据单元,而集合包含文档集和函数,相当于关系数据库表。
Couchbase
Couchbase Server 是一个开源的、分布式多模型 NoSQL 面向文档的数据库软件包,针对交互式应用程序进行了优化。这些应用程序可以通过创建、存储、检索、聚合、操作和呈现数据来为许多并发用户提供服务。
常见问题解答
noSQL 数据库还有哪些其他示例?
除了文档数据库之外,noSQL 数据库设计的一些其他示例包括列式数据库和键值数据库设置。
JSON 用于什么?
虽然 JSON 用于数据库,但它也用于创建新的语义网和其他类型的映射系统。
公司为什么要使用文档数据库?
更好的查询和更高效的存储是使用文档数据库设计的一些好处,它具有良好的企业用例。公司也可以使用它们来符合数据存储和数据治理方面的现代最佳实践。
文档数据库是关系数据库的一种类型吗?
通常,文档数据库不是关系数据库,而是一种新型的 noSQL 数据库设计。关系数据库是指其中数据根据其在具有行和列的结构化表中的位置保存的数据库。另一方面,文档数据库采用 JSON 或对象格式和数据方法模型。
文档数据库和数据仓库之间有什么区别?
文档数据库通过使用开发者在应用程序代码中使用的相同文档模型格式来促进存储和查询数据。数据仓库是一种支持商业智能的数据管理系统,可帮助您对业务做出更明智的决策。