各类型数据库调研
一、数据库分类
数据库根据数据结构可分为关系型数据库、非关系型数据库。
非关系型数据库中根据应用场景又可分为键值数据库、列存储数据库、面向文档数据库、搜索引擎数据库、图数据库。
还有一种根据数据复杂性,按照数据复杂程度由低到高,将数据库分为:
键值数据库->列存储数据库->文档数据库->关系型数据库->图数据库
简单--------------------------------------------------------------->复杂
1.1、 关系型数据库
这种类型的数据库是最典型的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。通常该表第一行为字段名称,描述该字段的作用,下面是具体的数据。在定义该表时需要指定字段的名称及类型。
典型产品:MySQL、SqlServer、Oracle、PostgreSQL、SQLite等。
在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上。在大型系统中通常有多个表,且表之间有各种关系。实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。
关系型数据库的优点:
a、易于维护:都是使用表结构,格式一致;
b、使用方便:SQL语言通用,可用于复杂查询;
c、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
关系型数据库的缺点:
a、读写性能比较差,尤其是海量数据的高效率读写;
b、固定的表结构,灵活度稍欠;
c、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
常见的关系型数据库对比:
来源:https://blog.csdn.net/Post_Yuan/article/details/124380730
1.2、 非关系型数据库(NoSQL)
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等各种格式,以满足不同场景下的需求。
优点:
a、格式灵活:存储数据的格式可以是key-value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型(字符串、数值、布尔值等)。
b、速度快:NoSQL可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
c、高扩展性;
d、成本低:NoSQL数据库部署简单,基本都是开源软件。
缺点:
a、SQL语言缺失,学习和使用成本较高,需要学习并掌握特定的查询语言。
b、非关系型数据库不保证事务处理,因此无法保证数据的完整性。
c、数据结构相对复杂,复杂查询方面稍欠。
【注】:在数据库管理系统中,事务(Transaction)是指一组逻辑上相关的操作,这些操作要么全部执行成功,要么全部执行失败。事务是用户定义的、具有原子性、一致性、隔离性和持久性等特性的一组操作。
1.2.1 键值存储数据库
键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。
典型产品:Redis、Memcached等。
1.2.2 列存储数据库
列式存储是相对于传统关系型数据库的行式存储来说的。简单来说两者的区别就是对表中数据的存储形式的差异。MySQL都是一行一行数据存储的(行存储)。
对于行存储数据库,表中的数据是以行为单位逐行存储在磁盘上的;而对于列存储数据库,表中的数据则是以列为单位逐列存储在磁盘中。
列存储解决的主要问题是数据查询问题。通常的数据库查询大部分都是条件查询,通常是返回某些字段(列)的数据,比如一个班级内身高高于160的男生,即性别列筛选为男、身高列筛选为大于160,对于行存储数据,数据读取时通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。而列存储,每次读取的数据是集合的一段或者全部,不存在冗余性问题。这样,通过这种存储方式的调整,使得查询性能得到极大的提升。
1.2.3 面向文档数据库
此类数据库可存放并获取文档,可以是XML、JSON、BSON(爬虫网页数据)等格式,这些文档具备可述性,呈现分层的树状结构,可以包含映射表、集合和纯量值。数据库中的文档彼此相似,但不必完全相同。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。文档数据库可视为其值可查的键值数据库。
典型产品:MongDB、CouchDB等。
1.2.4 图形数据库
图数据库是以点、边为基础存储单元,以高效存储、查询图数据为设计原理的数据管理系统。在图数据库中,数据间的关系和数据本身同样重要,它们被作为数据的一部分存储起来。这样的架构使图数据库能够快速响应复杂关联查询,因为实体间的关系已经提前存储到了数据库中。图数据库可以直观地可视化关系,是存储、查询、分析高度互联数据的最优办法。
典型产品:Neo4J、华为图数据引擎、百度HugeGraph、蚂蚁集团TuGraph等。
与传统关系型数据库相比,图数据库的优势有:
a、 可以很自然的表达现实世界中的实体及其关联关系(对应图的顶点及边);
b、灵活的数据模型可以适应不断变化的业务需求;
c、灵活的图查询语言,轻松实现复杂关系网络的分析;
d、关系型数据库在遍历关系网络并抽取信息的能力非常弱,图数据库则为此而生;
e、关系型数据库在规模庞大时很难做多层关联关系分析(Join操作往往消耗过长时间而失败),图数据库则天然把关联数据连接在一起,无需耗时耗内存的Join操作,可以保持常数级时间复杂度。高性能、灵活、敏捷。
图数据库典型查询方式:
a、 多层关联:查询故宫附近10公里内的景点的相似景点有哪些?
b、 最短路径:已知要去故宫和颐和园玩,查询从故宫玩到颐和园的最短路线?
c、 连通子图:查询一个景点在K步以内相连接的所有邻接点(K=1,2,3…)。
d、协同推荐:根据景点标签,查询相似的标签的景点,再推荐给用户。
e、集中度测量:如PageRank、PersonalRank、特征向量集中度、亲密度等。