介绍
文档数据库有哪些?凭借独特的功能,NoSQL 数据库克服了关系数据库模型中的限制。NoSQL 是NoSQL 数据库的四个主要子集的总称:
- 键值数据库
- 列数据库
- 图数据库
- 文档数据库
文档数据库有什么优缺点?哪个更好?在本文中,我们将解释什么是文档数据库,描述其优点和缺点,并提供示例。
文档数据库定义
什么是文档数据库?文档数据库是一种 NoSQL 数据库,它将数据存储为 JSON 文档,而不是列和行。JSON 是一种用于存储和查询数据的本地语言。这些文档可以组合成集合以形成数据库系统。
每个文档由许多键值对组成。下面是一个包含 4 个键值对的文档示例:
{
"ID" : "001",
"Book" : "Java: The Complete Reference",
"Genre" : "Reference work",
"Author" : "Herbert Schildt",
}
使用 JSON 使应用程序开发人员能够以与组织应用程序代码相同的文档模型格式存储和查询数据。对象模型可以转换为其他格式,例如 JSON、BSON 和 XML。
关系与文档数据库
关系数据库管理系统 (RDBMS) 依赖于结构化查询语言 (SQL)。NoSQL 没有。
RDBMS 专注于创建文件之间的关系以存储和读取数据。文档数据库专注于数据本身,关系用嵌套数据表示。
文档数据库有什么优缺点?关系型数据库和文档型数据库的主要比较:
关系型数据库管理系统 | 文献资料库系统 |
---|---|
围绕关系的概念构建。 | 专注于数据而不是关系。 |
将数据组织成元组(或行)。 | 文档具有没有理论定义的属性,而不是行。 |
通过约束和外键(例如,子表通过其 ID 引用主表)定义数据(形成关系)。 | 没有用于定义模式的 DDL 语言。 |
使用 DDL(数据定义语言)来创建关系。 | 通过嵌套数据而不是外键表示的关系(任何文档都可能包含嵌套在其中的其他文档,从而导致两个文档实体之间存在 N:1 或 1:N 关系)。 |
提供极高的一致性,这对于某些用例(例如日常银行业务)至关重要。 | 在一段不一致的时期内提供最终的一致性。 |
文档数据库的特点
什么是文档数据库?文档数据库提供快速查询、非常适合处理大数据的结构、灵活的索引和简化的数据库维护方法。它对 Web 应用程序非常有效,并已被 Amazon 等大型 IT 公司完全集成。
尽管 SQL 数据库具有很强的稳定性和垂直能力,但它们与超大数据库的竞争很困难。需要立即访问数据的用例(例如医疗保健应用程序)更适合文档数据库。文档数据库使使用用于编码应用程序的相同文档模型查询数据变得容易。
文档数据库用例
一般用例 | |
---|---|
用户资料 | 提取实时大数据 |
图书数据库 | 不同结构的数据 |
内容管理 | 目录 |
患者资料 |
我们将在以下部分中更详细地介绍上述一些用例。
图书数据库
双方关系和NoSQL文件系统用于成书数据库,尽管以不同的方式。
关系方法将通过带有ID的表(作者表和书籍表)表示书籍和作者之间的关系。它通过禁止空值强制每个作者在 Books 表中至少有一个条目。
相比之下,文档模型可以让你嵌套. 它通过确保每个作者文档都有一个名为Books的属性,在该属性中包含一组相关的书籍文档,从而更自然、更简单地显示关系。搜索作者时,会显示整个图书集。
内容管理
开发人员使用文档数据库来创建视频流平台、博客和类似服务。每个文件都存储为单个文档,并且随着服务的发展,数据库更易于维护。重大数据修改(例如数据模型更改)不需要停机时间,因为不需要架构更新。
目录
什么是文档数据库?在存储和读取目录文件方面,文档数据库比关系数据库高效得多。目录可能存储了数千个属性,文档数据库提供了快速的阅读时间。在文档数据库中,与单个产品相关的属性存储在单个文档中。修改一个产品的属性不会影响其他文档。
文档数据库的优缺点
以下是 文档数据库的一些主要 优点 和 缺点:
文档数据库优势 | 文档数据库的缺点 |
---|---|
无模式 | 一致性检查限制 |
更快的创建和维护 | 原子性弱点 |
没有外键 | 安全 |
开放格式 | |
内置版本控制 |
文档数据库有什么优缺点?优缺点将在以下各节中进一步说明。
好处
- 无模式. 数据存储的格式和结构没有限制。这有利于保留大量和不同结构状态的现有数据,尤其是在不断变化的系统中。
- 更快的创造和汽车e.创建文档后只需最少的维护,这就像添加一次复杂对象一样简单。
- 没有外键。由于没有这种动态关系,文档可以相互独立。
- 打开格式。一个干净的构建过程,使用 XML、JSON 和其他派生词来描述文档。
- 内置版本控制。随着文档大小的增加,它们的复杂性也会增加。版本控制减少了冲突。
缺点
- 一致性检查限制。在上面的图书数据库用例示例中,可以从不存在的作者那里搜索图书。你可以搜索图书收藏并查找与作者收藏无关的文档。
每个列表也可能复制每本书的作者信息。这些不一致在某些情况下并不重要,但在 RDB 一致性审计的上层标准中,它们严重阻碍了数据库性能。 - 原子性弱点。关系系统还允许你从一处修改数据,而无需JOIN。所有新的读取查询都将继承通过单个命令(例如更新或删除行)对数据所做的更改。
对于文档数据库,涉及两个集合的更改将要求你运行两个单独的查询(每个集合)。这打破了原子性要求。 - 安全。如今,近一半的 Web 应用程序会主动泄漏敏感数据。因此,NoSQL 数据库的所有者需要特别注意Web 应用程序漏洞。
注意:在我们的文章ACID vs. Base 中阅读有关数据原子性和一致性的更多信息。
文档数据库有哪些?最佳文档数据库合集
Amazon DocumentDB
特征:
- MongoDB 兼容
- 完全托管
- 低延迟查询的高性能
- 强大的合规性和安全性
- 高可用性
用于:
- Amazon 的整个开发团队使用 Amazon DocumentDB 来提高敏捷性和生产力。他们需要嵌套索引、聚合和即席查询,以及完全托管的过程。
- BBC使用它来查询和存储来自多个数据流的数据并编译为单个客户提要。他们迁移到 Amazon DocumentDB 是为了获得具有高可用性、持久性和默认备份的完全托管服务的优势。
- Rappi改用 Amazon DocumentDB 以减少编码时间,改用Dow Jones以简化操作,改用三星以更灵活地更好地处理大型日志。
MongoDB
特征:
- 即席查询
- 用于查询的优化索引
- 分片
- 负载均衡
用于:
- 由于更快地构建新功能、更简单的合并以及更好地处理日益多样化的数据类型,《福布斯》将构建时间缩短了 58%,订阅量增加了 28%。
- Toyota发现通过使用自然的 JSON 文档,开发人员可以更轻松地进行高速工作。更多的时间花在构建业务价值上,而不是数据建模上。
Cosmos DB
特征:
- 任何规模的快速读取
- 99,999% 可用性
- 完全托管
- NoSQL/本机核心 API
- 无服务器、经济高效/即时扩展
用于:
- 可口可乐在几分钟内获得洞察力,促进全球扩展。在迁移到 Cosmos DB 之前,花了几个小时。
- ASOS需要一个能够灵活无缝扩展的分布式数据库,以处理超过 1 亿的全球零售客户。
ArangoDB
特征:
- 模式验证
- 多样化的索引
- 快速分布式集群
- 高效 v 大型数据集
- 支持多种NoSQL 数据模型
- 将模型合并为单个查询
用于:
- 牛津大学通过开发基于网络的心肺疾病评估测试,减少了住院人数并改善了测试结果。
- FlightStats将碎片化的飞行数据(航班状态、天气、机场延误和参考数据)转化为一种标准,从而实现准确、预测和分析的结果。
Couchbase服务器
文档数据库有哪些:Couchbase,特征如此啊:
- 管理全球部署的能力
- 极高的敏捷性和灵活性
- 大规模快速
- 轻松的云集成
用于:
- BT使用 Couchbase 灵活的数据模型来加速其以高性能交付内容的能力,同时轻松应对需求高峰。
- eBay从 Oracle 迁移而来,以获得更具成本效益、功能更适用的解决方案(其键值存储/文档系统)。应用程序性能和可用性得到提高,而开发人员可以使用他们的 SQL 专业知识通过更灵活的架构来加速他们的CI/CD 管道。
CouchDB
文档数据库有什么优缺点?特征:
- 基于浏览器的图形用户界面
- 提供最简单的复制
- 用户认证
- 酸特性
用于:
- 社交平台Meebo将 CouchDB 用于基于 Web 的界面及其应用程序。
- BBC使用 CouchDB 作为其动态内容平台。
文档数据库哪个更好:如何选择?
你的应用程序的关键需求决定了如何构建数据。几个关键问题:
- 你会做更多的阅读或写作吗?如果你写得更多,关系系统会更好,因为它们避免了更新过程中的重复。
- 同步有多重要?由于它们的 ACID 框架,关系系统在这方面做得更好。
- 你的数据库架构在未来需要进行多少转换?如果你大规模处理各种数据并且需要最少的维护,则文档数据库是一个不错的选择。
严格来说,无论是文档还是 SQL 都不比另一个好。正确的选择取决于你的用例。在做出决定时,请考虑最常执行的操作类型。
注意:在我们的文章什么是数据库?
结论
什么是文档数据库?在本文中,我们解释了文档数据库的特性、用例、优点和缺点。本文还提供了最佳文档数据库的列表,以及福布斯 500 强公司如何使用它们来提高其业务和开发流程的效率。