数据库解析:一张图带你了解其含义及主要类型

发表时间: 2023-12-02 11:13

#编程真好玩,小白科普:一图搞懂 什么是数据库?主要有哪几种数据库类型?

(图转自bytebytego,翻译整理by dogstar)

✅ 第1种、关系型数据库

最为常见的莫过于关系型数据库,通过二维表格来存放数据。支持事务、关联查询等操作。典型代表的关系型数据库有:开源的MySQL、微软的SQLServer、甲骨文的Oracle。

另外,还有偏向数据分析的OLAP数据库,其特点是:数据量巨大、分布式存储、偏向数据计算、聚合和转换,俗称的数据仓库/大数据分析。主流开源OLAP数据库引擎有:Hive、Sparksql、Druid、Clickhouse、Greeplum等。发散一下:会用到MapReduce一种编程模型,用于大规模数据集(大于1TB)的并行运算),Map表示映射,Reduce表示归约,思想来源函数式编程语言。搭建好之后,不管背后存了多少TB/多少GB/甚至PB数据,只需要在应用层发起一条查询,就会有一堆服务器集群帮你计算(厉害吧 ^_^)。

✅ 第2种、键值数据库

特点:在一个无序的键值集合中通过 key-value 键-值对 存放你的数据。很明显,key是唯一的、不能重复的(但value可以重复),无序(即不支持key排序)。那有什么好处呢?好处就是搜索查找指定的key非常棒!常见的就有高效缓存 Redis、Memcache等,也俗称NoSQL。Redis支持的value数据类型更为丰富,有:字符串、list列表、哈希表、有序集合。Memcache数据类型则较为单一。

✅ 第3种、文档数据库

可以理解为把一大坨数据存到一个key,它将数据存储为一系列的文档,通常使用JSON、BSON或XML格式进行序列化。适用于:社交(找好友的好友的好友……更方便,六道空间)、游戏、物流。例如:MongoDB。

✅ 第4种、列式存储数据库

主要是以列相关存储架构进行数据存储的数据库,适合于批量数据处理和即时查询。相比行式数据库,可能可以更好解决“稀疏矩阵”的空间浪费,并且查询效率更高,特别适用 读多写少 的场景。典型的有PostgreSQL。


最后科普:

1)Database是指数据库、SQL是指结构化查询语言(Structured Query Langauge),通过SQL语句,你只需要告诉数据库你要什么数据,它就会你返回来,而不用关心具体的实现过程。例如查询全世界年龄最大的人是谁。

2)数据库表关系之间有:一对一(1:1)、一对多的关系(1:N),甚至多对多(N:M)。

3)怎么编程?采用 对象关系映射框架(英语:Object Relational Mapping,简称ORM)。为什么?因为主流的编程思想是OOP面向对象编程,每个类中有属性和行为;而关系数据库是二维表,不能直接映射,因此需要通过ORM方式进行匹配。所以有时你会听到:Has-One、IS-One、HAS-Many、BELONGS-TO这些关系的表述。