数据库有哪些类型?如何根据应用场景选择?终于有人讲明白了

引言

如今,数据作为生产要素重要性已不言而喻,数据能力成为企业必不可少的核心能力之作为企业数字化转型重要的一环,我们依然迫切需要数据库来帮助存储和操作这些数据,充分有效地管理和利用各类数据资产。数据存储和操作是以业务连续性为目标,包括存储数据的设计、实现和支持活动,以及在整个数据生命周期中,从计划到销毁的各种操作活动。

在互联网时代背景下,传统单一的数据库的时代已经过去,对于数据库的新需求在不断出现,随着这些新的需求越来越广泛地被提出,越来越多的企业意识到,采用传统的数据库应对不同需求这种一刀切的方式已经不再奏效。

本文首先阐述了数据库和数据库管理系统的概念,并对目前常见的几种数据库进行了介绍,分析了专用数据库相比于传统数据库的优势所在,然后重点对满足不同应用场景的8种专用数据库进行了详细说明,最后分享了传统数据库向专用数据库迁移的案例,旨在帮助读者在设计应用时选择正确的数据库。

什么是数据库?

1.1

数据库概念

维基百科上对数据库的定义:以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。一个数据库由多个表空间构成。

百度百科上对数据库的定义:是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据库(Database,英文简称 DB)是一个以某种有组织的方式存储的数据集合。可以理解为是一个存放计算机数据的仓库,这个仓库按照一定的数据结构(即数据的组织形式或数据之间的联系)来对数据进行组织和存储,我们可以通过数据库提供的多种方法来管理其中的数据。

1.2

数据库管理系统

数据库管理系统(Database ManagementSystem,英文简称DBMS)是为管理数据库而设计的电脑软件系统,是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务。数据库管理系统是数据系统的核心,主要功能有:数据模式定义、数据存取的物理构建、数据操纵、数据的完整性、安全性定义和检查、数据库的并发控制与故障恢复、数据的服务。我们常见的数据管理系统如:Oracle、SQL Server、MySQL、Accees、Sybase、DB2等。

1.3

数据库和数据库管理系统的关系

数据库和数据库管理系统在IT软件中扮演着不可或缺的角色。比如某公司建设了员工管理系统,员工的信息都会存放在数据库中。当登录员工管理系统查询某员工的工资信息时,部署在服务器上的程序会连接数据库管理系统进行查询,并从数据库中取出该员工的工资数据,最后显示到前端系统页面上。

查询数据的过程

数据库种类及应用场景介绍

一般来说,数据库按照组织式分为两大类:关系型数据库和非关系型数据库。

1.关系型数据库是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。

2.非关系型数据库又称NoSQL,由于数据类型多种多样,关系型数据库并不适用于所有的数据,因此针对不同的数据类型,出现了不同的 NoSQL,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统数据库的有效补充。

关系型SQL与非关系型NoSQL对比表

注:关系型数据库的ACID:

A (Atomicity) 原子性:就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转5元至B账户,分为两个步骤:从A账户取5元;存入5元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了5元。

C (Consistency) 一致性:一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

I (Isolation) 独立性:是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。例如:现有有个交易是从A账户转5元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的5元的。

D (Durability) 持久性:指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

CAP理论的C就是一致性(Consistency),A就是可用性(availability),可以理解为是否可获取数据,以及获取数据的速度;P就是分区容忍度(partion tolerance),指的是系统中的数据分布性的大小对系统的正确性,性能的影响(一定程度上就是可扩展性)。

2.1

关系数据库

关系数据库是使用最广泛的数据库,采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。主要结构为:库+表+表之间的关系+字段。

关系数据库表示例表

关系数据库把复杂的数据结构归结为简单的二元关系(二维表),如上图所示是一个二维表的示例,通常该表第一行为字段名称,描述该字段的作用,下面是具体的数据。在定义该表时需要指定字段的名称及类型。目前主流的关系型数据库有OracleL、SQL Server、DB2、MySQL、PostgreSQL等。

2.2

非关系数据库

常见的非关系型数据库有键值数据库、列存储数据库、文档数据库、图数据库、时序数据库、搜索引擎数据库等,这些常见数据库的主要特点及应用场景如下表所示。

几种常见非关系数据库的主要特点及应用场景

2.2.1 键值数据库

键值数据库可以被看作一个非常大的哈希表,该表在唯一的键下存储了一些值。存储的值可以通过键或者部分键高效地检索到。键值数据库使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键值数据库中的键可以包含多个元素,甚至可以排序以提高查询效率。一些键值数据库允许使用键的前缀进行查找,从而可以使用复合键。 

例如,我们将客户ABC的订单存储在键/值数据库中,可以使用客户ID作为键的前缀,结合订单号组成键“ABC-001”来存储订单。可以使用整个键来检索特定的订单,也可以使用“ABC”前缀检索客户ABC的所有订单。

2.2.2 列存储数据库

列存储数据库又被称为面向可扩展性的分布式数据库,它反转了传统的行存储数据库,将数据存储存在列族中,一个列族存储经常被一起查询的相关数据。如下表所示为人员信息表:

对于行存储数据库,表中的数据是以行为单位逐行存储在磁盘上的;而对于列存储数据库,表中的数据则是以列为单位逐列存储在磁盘中。下图是传统行数据库和列数据库表中数据在磁盘上的存储形式的差异对比。

列存储解决的主要问题是数据查询问题,这部分数据库通常用来应对分布式存储的海量数据,典型的产品应用如Hbase。

2.2.3 文档数据库

文档数据库是一种非关系数据库,将半结构化数据存储为文档,其中文档包括 XML、YAML、JSON、BSON、office 文档等不同格式。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。

简而言之,就是将数据保存到以上类似格式的文档中,数据库中的每个记录都是以文档形式存在的,相互之间不再存在关联关系。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。

2.2.4 图数据库

图数据库顾名思义,就是一种存储图形关系的数据库,而图模型是图数据库中的重要概念。图模型由两个要素组成:节点和边,每个节点代表一个实体(人、地点、事物等),每条边代表两个节点之间的连接,这种通用结构可以对各种场景进行建模,如社交网络以及由关系定义的任何其他事物。

如下所示的图模型中包含 3个节点:中国、北京、长城。其两条边分别是:长城是北京的著名景点、北京属于中国。

从上面的图模型可以看出,图数据库的目标就是基于图模型以一种直观的方式模拟这些关系,可以很好地分析实体之间的关系。

2.2.5 时序数据库

在介绍时序数据库前先了解下时序数据,时序数据是按照时间顺序记录系统、设备状态变化的数据,普遍存在于IT基础设施、运维监控系统和物联网中。在有时间的坐标中将这些数据点连成线,往前看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往后看可以建立数学模型、做统计分析,预测事物发展趋势。

时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。相比于传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史数据。同时时序数据的查询也总是会带上时间作为过滤条件。

下面对时序数据库的数学模型做下简单介绍:

  • metric:度量的数据集,类似于关系型数据库中的table

  • point:一个数据点,类似于关系型数据库中的row

  • timestamp:时间戳,表征采集到数据的时间点

  • tag:维度列,代表数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化,供查询使用

  • field:指标列,代表数据的测量值,随时间平滑波动,不需要查询

时序数据库基本概念图

如上表中,度量为Wind,每一个数据点都具有一个timestamp,其中有两个field:风向、速度,两个tag:设备编号、城市。根据表中第一行和第三行的数据可知,存放的都是sensor号码为95D8-791的设备,属性城市是北京。随着时间的变化,风向和风速都发生了变化,风向从24.2变成25.6,风速从3.6变成了3.3。

2.2.6 搜索引擎数据库

搜索引擎数据库通常用于搜索保存在其他存储和服务中的数据。搜索引擎数据库可以对大量的数据建立索引,并提供近实时的索引查询。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。

搜索引擎数据库除了搜索像网页这样的非结构化的数据,许多应用程序还使用它为其他数据库中的数据提供结构化和即时搜索功能。有一些数据库也能提供全文索引功能,但是搜索数据库还具备通过词干和泛化将单词缩减为词根的功能。

三 为什么越来越多的企业选择专用数据库?

“原来数据库分发方式是怎么样的?一家企业要买数据库,比如Oracle,首先要买一年或者两年的授权,第二要买跑数据库的硬件,第三还得买数据库相关的服务,包括固件更新、维护升级等等。传统的数据库购买流程是一个非常沉重的过程,投入会非常大”,相信很多IT从业人员对这句话深有感触。传统商用数据库是集中式架构,在扩展性和灵活上先天不足,比如传统的商业数据库可能仅仅软件安装就需要一整天的时间,需要配置各种补丁等,需要有专业的DBA(数据库管理员)来完成这样的服务,如果需要扩展通常只能是纵向扩展,为此需要购买昂贵的设备,投资不菲。

传统数据库架构面向早期业务模型,包括传统数据库的售卖方式、使用方式、服务方式,在数字化的背景和海量数据存储的诉求下,已经不能满足大多数企业的诉求。从技术角度来看,云计算已经发展到非常成熟的阶段,并且被广泛认可,云计算由量变到质变的过程,给数据库带来了颠覆,核心是云计算彻底改变了数据库的分发方式。

专用数据库相比于传统数据库在成本、安全性、操作及效率4个方面具有更适应现代IT技术快速发展的优势:

传统数据库VS专用数据库

可以看到,在实际业务运营过程中有各种不同的数据管理需求的时候,就需要迁移到专用的数据库来。自我管理的这些数据库和分析服务,因为耗时、管理起来复杂性很高,尤其是硬件、软件的安装,同时数据库的性能、可用性又遇到很多的挑战,又不像在云上那么容易的进行扩展。那么迁移到专用数据库有什么好处呢?下图为在AWS上的全托管服务和自己管理的区别。

自我管理与AWS完全托管的区别

全托管的服务之下,对于用户来说,只需要去关注几个事情:应用层的架构设计、采用什么样的数据库、解决什么样的场景问题、查询构造、怎么去优化SQL查询语句或是NoSQL的查询方式。剩下的与数据库本身相关的工作,比如故障的转移、备份和恢复、隔离和安全、行业合规、补丁修复、监控、维护等,都可以交给AWS来做。这样一来,用户可以更加专注于业务本身的创新,而不是把时间浪费在数据库这种非常耗时、耗精力的基本维护上。

猜你喜欢

转载自blog.csdn.net/hanxiaolaa/article/details/110385265