提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


数据库已经成为我们生活中不可或缺的基础软件系统了,也有越来越多的IT从业人员加入数据库研发、运维等行列,我们也经常听说各种类型的数据库,那么,对于数据库(确切地说是数据库管理系统)有哪些分类呢?


在这里插入图片描述

一、按数据的组织方式

在数据库领域,数据从组织的角度上,主要分为结构化数据和非结构化数据两类。
结构化数据是带有固定结构的数据,在组织形式上是整齐格式化的,同一数据对象的所有数据都具有完全相同的结构。比如人员信息数据,定义为“身份证号、姓名、籍贯、出生日期”这种结构后,所有人员的信息都会按照这个固定的格式来组织。结构化数据是数据库中最常见的数据,也是数据库最擅长处理的数据。
非结构化数据可以理解为结构化数据之外的一切数据,这类数据无法预先定义出固定格式,直接的表现就是字段可变,包括字段的多少和类型。比如在即时聊天工具中的数据,可能包含文字、图片、音频、视频。非结构化数据是生活中数量最庞大的数据,尤其是当前由机器生成的数据越来越多,非结构化数据在所有数据中的占比也越来越大。
根据处理的数据的组织方式,数据库可以分为结构化数据库和非结构化数据库。顾名思义,结构化数据库就是存储和处理结构化数据的数据库,而非结构化数据库就是存储和处理非结构化数据的数据库。结构化数据库中通常会使用关系模型表达不同的结构化数据及其之间的关系,因此结构化数据库也被称为关系型数据库,对应的,非结构化数据库就被称为非关系型数据库。

二、按存储介质

数据库存储和管理数据,就一定离不开存储介质。从存储介质角度,数据库通常会为磁盘数据库和内存数据库两种,其中内存数据库在学术界往往被称为主存数据库(Main Memory Database)。
磁盘数据库的数据都存储在磁盘上,具体在磁盘上的存储格式可以是文件系统、裸设备或云存储。磁盘数据库在数据的持久化保存上有明显优势。受限于硬件技术,磁盘数据库是当前的主流。
内存数据库的数据主要存储在内存中,因此有非常高的运算效率。内存数据库并非完全不使用磁盘,数据库的启动信息、初始数据等还是需要存储在磁盘上的,只是数据主要在内存中进行存储和运算。由于内存数据库的数据存储在内存中,数据库主机掉电后数据会丢失,因此在数据库服务关闭前通常都需要把内存中的数据转储到磁盘上,甚至在内存数据库的运行期间,一些数据也会持久化到磁盘存储。随着硬件技术的发展,现在已经出现了非易失性内存设备(Non-Volatile Memory,简称为 NVM),这样的设备为内存数据库的发展提供了助益。

三、按数据处理场景

在业务视角上,传统的数据处理主要分为两类,一类是面向交易、产生数据的场景,业界称为“在线事务处理”场景,简称 OLTP,一类是面向分析、对既有数据进行分析利用的场景,业界称为“在线分析处理”场景,简称OLAP。对应的,分别面向这两种数据处理场景的数据库就是OLTP数据库和OLAP数据库。
OLTP数据库强调数据的强一致性和并发处理性能,这类数据库有强大的事务处理能力,适合处理事务密集型的应用场景,通常以每秒完成的事务数(TPS)来衡量数据库能力。OLTP数据库通常是以单机形式存在的,但在生产环境中往往需要部署高可用集群以保证数据库系统的可用性。
OLAP数据库强调基于海量数据的分析汇总能力,适合处理数据密集型的应用场景,通常需要数据库具备对海量数据进行随机查询、关联查询和分组统计查询的能力。OLAP数据库可以部署为单机形式,但更多的是以MPP集群的形式部署的。
随着数据业务的发展,目前很多场景都需要同时兼顾OLTP能力和OLAP能力,因此在业界出现了HTAP数据库的说法,这类数据库通常是以“存算分离”的架构形式来同时满足OLTP和OLAP应用需要的。

四、按数据分布方式

数据如何被数据库系统存储和管理,是数据库设计的重要内容,也是数据为分类的一种方式。根据数据是如何被管理的,数据库可以分为集中式数据库和分布式数据库两类。
集中式数据库是数据被数据库实例集中管理的数据库类型,数据库实例可以看到和管理全部的数据。集中式数据库通常是以单机形式存在的,生产环境中往往部署为高可用集群。
分布式数据库的数据是由不同实例以分布式的形式对全量数据进行管理的数据库,每个实例仅管理全量数据中的一部分(通常称为分片)。分布式数据库通常是以分布式集群的形式存在的。

五、数据库集群

顺带介绍一下数据库集群。
数据库集群是由多个数据库实例组合在一起、以单一数据库形态对外提供数据服务的组合,在物理上通常由多个服务器组成,在逻辑上是一个数据库服务。集群中的单个数据库实例通常称为节点。
根据集群目标的不同,数据库集群通常分为高可用集群和MPP集群。
高可用集群是以高可用为目标而构建的集群,根据高可用的实现机制,这类集群又可以分为主备集群和共享存储集群。主备集群中的节点有主次之分,集群中必须有一个主节点且只能有一个主节点,但可以有一到多个备节点。共享存储集群的节点可以有主次之分,也可以完全对等,由集群的具体的实现技术决定。
MPP集群是为应对基于海量数据的存储和管理需要而构建的集群,这类集群中有多个计算节点,可能有一个或一组管理节点,也可能没有管理节点。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐