一说到数据库,大多数人可能像我一样,首先想到的就是 MySQL、Oracle 这样的关系型数据库。因为我们平时接触的最多,而且大学课程中有关于数据库的,也是以关系型数据库为主的。
其实,除了关系型数据库外,还有其他类型的用作数据存储的结构,也可以叫做数据库。有些我们平时也经常用到,有的呢,需要做到具体的业务才会接触。
接下来,我们就总结一下到底有哪些数据库类型。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140109_1.png)
关系型数据库
像MySQL、PostgreSQL、Oracle 都是关系型数据库,在关系型数据库中,表和表之间是存在关系的。例如用户表和订单表这两张表,订单表中一般会有一个用户ID的字段,用来表示这个订单是哪个用户产生的。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140117_2.png)
在关系型数据库中,一个表中,包含多个列(字段),每一个列都有指定的字段类型。每一条记录就是一行。
关系型数据库通常遵循ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),以确保数据在各种情况下都能够保持正确状态。
在关系型数据库中,我们才会用到 SQL 语句,使用各种各样的关键字、规则等,用来实现各种各样的业务操作。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140123_3.png)
Key-Value 型数据库
Key-Value 型的数据库中我们最熟悉的就是 Redis了。这是一种 NoSQL,这种类型的数据库结构比较简单,就是一个键对应一个值,当然,值的类型可能有很多。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140130_4.png)
由于结构简单,所以这种类型的存储可以有很高的读取写入速度,所以对读写性能要求比较高的环境可以用 key-value型的数据库。
通过 Redis 的使用场景,我们也能知道,这种数据库多用来做内存型数据库,处理高并发场景,例如应用缓存。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140137_5.png)
文档型数据库
同样是一种 NoSQL,这里所说的文档指的是结构化的数据,例如 JSON或 XML,最熟悉的就是 MongoDB了,它以 JSON 作为存储数据的格式。
我们平时在开发接口的时候,传给前端的都是 JSON 数据。使用文档型数据库,你就可以把传给前端的JSON内容直接存到数据库中,这样的一条记录叫做一个 Document。
例如一个商品详情页,商品的属性有很多,关联的内容也有很多,我们可以把这些内容直接存储成一个 Document。
不同的商品种类有不同的属性,例如电脑和书的属性大相径庭,对应的它们的属性字段也就不一样,不光是属性的值不一样,连属性的个数都不一样,对于这种结构多样性的数据,用文档型数据库就最合适了。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140144_6.png)
纵列数据库
大多数数据库都是按行存储的,一行包括多个字段。而纵列数据库呢,是按列存储的。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140151_7.png)
这样一来,每一列都是一个独立的数据结构。带来的好处就是,我们可以选择性的获取某一列或某几列数据,查询读取的速度是非常快的。
纵列数据库适用于需要对一组列进行聚合、筛选和计算的分析查询,应用于大数据量的场景。
所以,纵列数据库常见于一些大型的数据仓库,平时如果业务不涉及的话, 我们很难接触到。
图数据库
图数据库以图(Graph)的形式来表示数据,并且强调数据之间的关系和连接。图数据库适用于需要处理复杂的关系和连接的应用场景,例如社交网络分析、推荐系统、知识图谱、地理信息系统等。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140157_8.png)
图数据库允许在节点、边和属性之间建立复杂的关系,这使得它们能够有效地处理大量的关联数据。
图数据库这种特殊的结构非常适合复杂关系的查询,例如查找两个节点之间的最短路径、查找共同的邻居等。结合到社交网络中来看,可以查询两个人的共同好友、共同关注等等。
比较流行的图数据库有 Neo4j 、Amazon Neptune等。
时间序列数据库
时间序列数据库是一种专门用于存储、管理和分析时间相关数据的数据库类型。它们专注于处理时间序列数据,这是一系列按时间顺序排列的数据点或事件,通常在相等的时间间隔内采集。时间序列数据库适用于各种应用场景,如监测、传感器数据、金融数据、日志记录、网络流量分析等。
时间序列数据库以时间作为主要的索引方式,而且写入性能极高。就拿传感器和日志来说,这些都是高频操作,一个流量高的系统,每天产生的日志量是非常大的,所以必须要快,不快就麻烦了。
我们的系统中通常都会有日志监控平台,比如 Grafana ,有各种指标图表,以及方便的检索方式, Grafana 是一个可视化的平台,需要接入数据源,而数据源一般就是时间序列数据库,例如 InfluxDB。
![](https://images.cnblogs.com/cnblogs_com/lzhdim/2339189/o_230826140204_9.png)
标签:关系,存储,数据库,类型,数据,属性 From: https://www.cnblogs.com/lzhdim/p/17659565.html