数据库分类及主流数据库对比


数据库使用系列专栏:数据库使用系列文章


目录

1 数据库分类

1.1 关系型数据库

1.2 非关系型数据库

2 数据库对比


1 数据库分类

数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值(Key-Value)数据库、列存储数据库、面向文档数据库、搜索引擎数据库等。

1.1 关系型数据库

这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式), 如图2是一个二维表的实例。通常该表第一行为字段名称,描述该字段的作用,下面是具体的数据。在定义该表时需要指定字段的名称及类型。

数据库分类及主流数据库对比_第1张图片 图一 数据库表实例

在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上。在大型系统中通常有多个表,且表之间有各种关系。实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。

典型产品:MySQL、SqlServer、Oracle、PostgreSQL、SQLite等。

1.2 非关系型数据库

键值存储数据库

键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。

数据库分类及主流数据库对比_第2张图片 图2 键值存储数据示意图

如图2是某公有云的键值存储示意图,其中键包含分区键和排序键,而值包含更多的实际信息。比如实际使用是可以以学号为键,姓名、性别、年龄和班级等信息为值进行存储。实际存储形式很灵活,是业务需求自行定义即可。

典型产品:Redis、Memcached等。

列存储数据库

列式存储(column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是对表中数据的存储形式的差异。

数据库分类及主流数据库对比_第3张图片 图3 列存储数据

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

列存储解决的主要问题是数据查询问题。我们知道,平时的查询大部分都是条件查询,通常是返回某些字段(列)的数据。对于行存储数据,数据读取时通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。而列存储,每次读取的数据是集合的一段或者全部,不存在冗余性问题。这样,通过这种存储方式的调整,使得查询性能得到极大的提升。

典型产品:HBase等。

面向文档数据库

此类数据库可存放并获取文档,可以是XML、JSON、BSON等格式,这些文档具备可述性(self-describing),呈现分层的树状结构(hierarchical tree data structure),可以包含映射表、集合和纯量值。数据库中的文档彼此相似,但不必完全相同。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。文档数据库可视为其值可查的键值数据库。

典型产品:MongDB、CouchDB等。

图形数据库

图形数据库顾名思义,就是一种存储图形关系的数据库。图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如图4这种人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。

数据库分类及主流数据库对比_第4张图片 图4 图形数据库示例

典型产品:Neo4J、InfoGr id等。

搜索引擎存储

搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。

典型产品:Solr、Elasticsearch等。

2 数据库对比

几种主流关系型数据库对比:

数据库 优势 缺点
MySQL 1)MySQL性能卓越,服务稳定,很少出现异常宕机。
2)MySQL开放源代码且无版权制约,自主性及使用成本低,版本更新较快。
3)MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
4)MySQL支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持。
数据量大时处理性能不及Oracle
SqlServer 1)真正的客户机/服务器体系结构
2)图形化的用户界面,使系统管理和数据库管理更加直观、简单
3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地
4)与WinNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等,SQL Server也可以很好地与Microsoft  BackOffice产品集成。
5)提供数据仓库功能,这个功能只在Oracle和其他昂贵的DBMS中才有。
只能在Windows系统下运行
Oracle

1)Oracle 能在所有主流平台上运行 

2)Oracle 性能高,保持开放平台下TPC-D和TPC-C世界记录   

3)获得最高认证级别的ISO标准认证

价格昂贵
PostgreSQL 1)PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步。
2)PG 性能高速度快。任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降。
3)PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型。
4)PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统
5)PG对数据量大的文本以及SQL处理较快
 
SQLite

1)零配置,SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复 

2SQLite是被设计成轻量级,自包含的,不依赖服务进程                  

3)采用无数据类型,所以可以保存任何类型的数据,SQLite采用的是动态数据类型,会根据存入值自动判断                                                       

4)可移植,可运行在不同操作系统上

数据量不宜过大,sql语句执行相比其他数据库效率较低

几种主流非关系型数据库对比:

数据库 优势 缺点
Redis 1)支持内存缓存,这个功能相当于Memcached
2)支持持久化存储,这个功能相当于MemcacheDb,ttserver
3)数据类型更丰富。比其他key-value库功能更强
4)支持主从集群,分布式
5)支持队列等特殊功能
 
Memcached 开源的、高性能的、具有分布式内存对象的纯缓存系统 不支持持久化
HBase

1)适合存储半结构化或非结构化数据

2)高可用和海量数据以及很大的瞬间写入量

3)记录很稀疏,RDBMS的行有多少列是固定的,为null的列浪费了存储空间。HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。

1)不适合于大范围扫描查询
2)不直接支持 SQL 的语句查询
MongoDB

1)弱一致性(最终一致),更能保证用户的访问速度

2)查询与索引方式灵活,是最像SQL的Nosql

3)内置GridFS,支持大容量的存储

4)内置Sharding,支持复制集、主备、互为主备、自动分片等特性

5)第三方支持丰富 6)性能优越

1)单机可靠性比较差 2)磁盘空间占用比较大

3)大数据量持续插入,写入性能有较大波动

架构设计有一句流行语:不以业务模型为基础的架构设计都是耍流氓。同样数据库选型也应该根据自己业务需求选择最适合自己的数据库

你可能感兴趣的:(数据库,数据库分类)