自全球推出以来,NoSQL数据库的受欢迎程度飙升。寻求取代关系数据库僵化架构的开发人员可以考虑NoSQL的适应性和可伸缩性。
许多软件开发公司使用NoSQL数据库来跟踪信息,如操作参数、功能集和模型元数据。但是,它们对于数据工程师归档和恢复数据非常有用。
在讨论NoSQL的含义之前,先讨论一下NoSQL的类型、特点、优缺点,这样你就可以根据你的项目目标和要求进行适当的划分了。
1.什么是NoSQL数据库?
NoSQL数据库系统将数据存储为JSON文件,而不是行和列。为了澄清,NoSQL代表“不仅仅是SQL”,它指的是任何“非关系数据库”。这意味着NoSQL数据库可以在不使用SQL的情况下保存和访问数据,或者您可以将JSON的灵活性与SQL的功能结合起来。因此,NoSQL数据库的设计具有适应性和可访问性,能够快速响应现代企业的数据管理需求。传统的关系数据库使用SQL语法来存储、管理和检索数据,而NoSQL数据库系统通过使用广泛的数据库技术,可以同样有效地访问结构化、半结构化和非结构化数据。
2. NoSQL 数据库的类型
以下是四种最常见的 NoSQL 数据库类型的描述:
文档数据库
键值存储
面向列的数据库
图数据库
2.1 文档数据库
文档数据库以文档格式保存信息,例如 JSON、BSON 或 XML(不是 Word 文档或 Google Docs)。 在文档数据库中,文件可以堆叠。 某些项目可以被索引以促进更快的查询。
文档可以以更接近软件中使用的数据项的方式保存和访问,需要更少的解释来利用应用程序中的信息。 通常,必须在跨应用程序和存储传输时构建和拆除 SQL 数据。
文档数据库是工程师的首选,因为它们的文档格式可以根据需要重新设计以适应程序,并且它们的数据结构可以根据随时间演变的先决条件进行调整。 这种灵活性加速了软件开发过程,因为数据被有效地视为代码并在开发人员的命令下。 要修改 SQL 数据库的结构,数据库管理员可能需要进行干预。
使用最广泛的文档数据库通常采用横向扩展设计,这为实现数据容量和流量方面的灵活性提供了清晰的途径。
行业特定用例包括电子商务系统、在线交易和移动应用程序开发。
1. 文档数据库的主要特点:
配置灵活性:数据库的文档遵循可适应的结构,这实质上意味着数据库中的文档可能具有不同的模式。
最大限度地减少开发和维护所需的时间:创建文档后,只需很少的工作即可使其保持最新状态。
没有外键:因为论文没有以任何方式相互绑定,所以它们可以独立存在。 因此,在文档数据库中不需要外键。
免费提供的格式:文档是用 XML、JSON 和其他形式创建的。
2.文档数据库的优势
开放和可扩展的数据模型,没有任何“外键”
3.文档数据库的缺点
将搜索限制在主键和索引上是一个缺点,您需要使用 MapReduce 进行复杂查询。
例子:
[
{
"year" : 2021,
"title" : "Eternals",
"info" : {
"director" : "Chloé Zhao",
"IMDB" : 6.3,
"genres" : ["Science Fiction", "Action"]
}
},
{
"year": 2022,
"title": "Doctor Strange in the Multiverse of Madness",
"info": {
"director" : "Sam Raimi",
"IMDB" : 7.0,
"genres" : ["Science Fiction", "Action", "Superhero"]
}
}
]
2.2 键值存储
键值存储数据库是 NoSQL 数据库的最基本形式。 属性名称(或“键”)及其关联值(或“值”)用于表示数据库中的每条信息。 在键值存储数据库中,每个元素都存储为键值对。 例如,键或属性名称如“city”,数据或值如“Bangalore”。 电子商务购物车、用户信息和选择是可能应用的一些示例。
1. Key-Value Store 的主要特点
易于扩展
机动性
快速度
2. Key-Value Store 的优势
价值可以用多种格式表示,例如 JSON、XML 和灵活的模式,底层数据模型简单、可扩展且易于理解。
由于其易用性,它可以快速处理数据,并且在底层信息没有紧密联系时效果最佳。
3. Key-Value Store 的缺点
没有联系; 您必须生成自己的外键。
缺乏扫描能力; 除了 CRUD 之外,什么都不好; 不适合复杂数据(创建、读取、更新、删除)
例子:
2.3 面向列的数据库
与关系数据库不同,列存储的结构是一系列列,而不是行。 这使您可以对列的子集执行分析,而不必担心其余数据会占用存储空间。 由于可以更有效地压缩相同类型的列,因此读取速度得到提高。 列的值可以很容易地在列式数据库中聚合。 分析是面向列的数据库的常见应用。
尽管列式数据库擅长分析,但由于更新所有列需要大量写入磁盘,因此无法保持一致是一个主要缺点。 由于行数据被顺序复制到磁盘,关系数据库不受此问题的影响。 面向列的数据库广泛用于管理数据仓库、CRM、商业智能数据等。一些面向列的数据库示例是 Hbase、Cassandra 和 Hypertable。
1. 面向列的数据库的主要特点
可扩展性
屈曲
接受最轻微的提示
2. 面向列的数据库的优点
可扩展性
自然索引
支持半结构化数据
访问时间
3. 面向列的数据库的缺点
不能与关系数据一起使用
例子:
假设,一个数据库有一个这样的表:
行号 |
学生姓名 |
数学成绩 |
科学成绩 |
001 |
约翰 |
98 |
85 |
002 |
史密斯 |
85 |
99 |
003 |
亚当 |
75 |
85 |
2.4 图数据库
图数据库旨在突出数据点之间的联系。 一个单独的“节点”代表每条信息。 链接或关系是总体中多个元素之间的相互联系。 连接直接记录为图数据库中的一流项目。 数据连接通过关系数据库中的数据本身来表达,因此连接是假定的而不是明确写入的。
由于在 SQL 中连接许多表效率低下,图数据库更适合存储和检索数据项之间的关系。
在实践中,只有少数企业级系统可以仅使用图形查询来很好地运行。 因此,图形数据库通常与其他更传统类型的 NoSQL 数据库共存。 网络犯罪、社交媒体和知识图谱是它的一些应用。
尽管它们共享一个名称,但 NoSQL 数据库在其底层数据结构和潜在用途方面彼此截然不同。
一、图数据库的主要特点
图数据库的主要特征之一是可以直接看到各种信息如何通过它们之间的超文本连接相互连接。
查询的输出是当前的、最新的信息。
任何事情发生的速度与数据库各个部分之间互连的复杂性成正比。
2. 图数据库的优势
超级有效
本地索引连接数据
酸支持
瞬时输出
灵活的架构
三、图数据库的缺点
横向扩展具有挑战性,但纵向扩展是可能的
例子:
员工表:
雇员编号 |
员工姓名 |
年龄 |
联系电话 |
001 |
约翰 |
25 |
9475858574 |
002 |
史密斯 |
26 |
7485961231 |
003 |
亚当 |
24 |
7412589634 |
004 |
约翰逊 |
22 |
9874563521 |
员工关系表:
雇员编号 |
连接ID |
001 |
002 |
001 |
003 |
001 |
004 |
002 |
001 |
002 |
003 |
003 |
001 |
003 |
002 |
003 |
004 |
004 |
001 |
004 |
003 |
3. 何时使用哪种类型的 NoSQL 数据库?
如果您需要在单个数据库中存储和表示多种数据类型(包括结构化、半结构化和非结构化数据),您应该研究 NoSQL 数据库。 此外,NoSQL 数据库的适应性更强,因为我们保存在其中的数据不需要预先建立的结构,就像 SQL 数据库的情况一样。 为给定的应用程序选择正确的 NoSQL 数据库可能具有挑战性,因为每种数据库都有其独特的特征。 因此,在选择数据库之前了解典型应用程序非常重要。
如果您需要任何帮助,请与我们的技术团队联系。