各种数据库分类以及主流数据库特征对比

3,975 阅读8分钟

1、数据库分类

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

2、关系型数据库

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上。在大型系统中通常有多个表,且表之间有各种关系。实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。典型产品:MySQL、SqlServer、Oracle、PostgreSQL、SQLite等。

3、非关系型数据库

3.1 键值存储数据库:

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

典型产品:Redis、Memcached等。

3.2 列存储数据库:

列式存储(column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是对表中数据的存储形式的差异。列存储解决的主要问题是数据查询问题。我们知道,平时的查询大部分都是条件查询,通常是返回某些字段(列)的数据。对于行存储数据,数据读取时通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。而列存储,每次读取的数据是集合的一段或者全部,不存在冗余性问题,使得查询性能得到极大的提升。

典型产品:HBase等。

3.3 面向文档数据库:

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

典型产品:MongDB、CouchDB等。

3.4 图形数据库

图形数据库顾名思义,就是一种存储图形关系的数据库。图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。

典型产品:Neo4J、InfoGrid等。

3.5 搜索引擎存储

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

典型产品:Elasticsearch等。

4、 数据库对比

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

(1)MySQL

优势:
1)MySQL性能卓越,服务稳定,很少出现异常宕机。
2)MySQL开放源代码且无版权制约,自主性及使用成本低,版本更新较快。
3)MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
4)MySQL支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持。
缺点:
1)数据量大时处理性能不及Oracle

(2) SqlServer

优点:
1)真正的客户机/服务器体系结构
2)图形化的用户界面,使系统管理和数据库管理更加直观、简单
3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地
4)与WinNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等,SQL Server也可以很好地与Microsoft BackOffice产品集成。
5)提供数据仓库功能,这个功能只在Oracle和其他昂贵的DBMS中才有。
缺点:
1)只能在Windows系统下运行

(3) Oracle

优点:
1)Oracle 能在所有主流平台上运行
2)Oracle 性能高,保持开放平台下TPC-D和TPC-C世界记录\
3)获得最高认证级别的ISO标准认证
缺点:
1)价格昂贵

(4)PostgreSQL

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

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

(1)Redis

优点:
1)支持内存缓存,这个功能相当于Memcached
2)支持持久化存储,这个功能相当于MemcacheDb,ttserver
3)数据类型更丰富。比其他key-value库功能更强
4)支持主从集群,分布式
5)支持队列等特殊功能

(2)Memcached

优点:
1)开源的、高性能的、具有分布式内存对象的纯缓存系统
缺点:
1)不支持持久化

(3)HBase

优点:
1)适合存储半结构化或非结构化数据
2)高可用和海量数据以及很大的瞬间写入量
3)记录很稀疏,RDBMS的行有多少列是固定的,为null的列浪费了存储空间。HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。
缺点:
1)不适合于大范围扫描查询
2)不直接支持 SQL 的语句查询

(4)MongoDB

优点: 1)弱一致性(最终一致),更能保证用户的访问速度
2)查询与索引方式灵活,是最像SQL的Nosql
3)内置GridFS,支持大容量的存储
4)内置Sharding,支持复制集、主备、互为主备、自动分片等特性
5)第三方支持丰富
6)性能优越
缺点:
1)单机可靠性比较差
2)磁盘空间占用比较大
3)大数据量持续插入,写入性能有较大波动

(5) Elasticsearch

优点:
1)Elasticsearch 兼容在每个平台上运行,因为它是用 Java 开发的。
2)它是一个实时搜索引擎,这意味着只有一秒钟之前添加的文档可以在这个引擎中搜索。
3)Elasticsearch 提供了网关的概念,可以轻松创建完整备份。
4)它是面向分布式文档的,易于在大型组织中扩展。开发人员可以通过扩展它轻松地将其集成到任何大型组织中。
5)与 Apache Solr 相比,在 Elasticsearch 中可以轻松处理多租户。
6)它的文档有多种语言版本。因此,来自不同地区的人们可以在他们的语言中使用它。
7)Elasticsearch 是一个开源的。因此,下载它无需支付任何许可费用。
8)它支持所有文档类型,只有那些不支持文本渲染的除外。\

缺点:
1)有时,在 Elasticsearch 中会出现脑裂问题。 2) 与 Apache Solr 不同,Elasticsearch 不支持处理请求和响应数据的多语言。 3)与 MongoDB、Hadoop 等其他选项相比,Elasticsearch 不是一个很好的数据存储。它在小型用例中表现良好,但在每天传输 TB 数据的情况下,它要么阻塞,要么丢失数据。 4)它是一个灵活而强大的数据存储搜索引擎,但学习起来有点困难。尤其是在企业搜索使用方面,它并不像开箱即用的搜索那么简单。

作为弹性搜索ES的特点

Elasticsearch 具有多种功能,使其灵活而强大。下面给出了 Elasticsearch 功能的列表以及详细说明。

  1. 可扩展:它可以跨多个节点进行扩展。所以最终,您可以从单个节点或两个或三个节点开始。如果工作负载增长,在这种情况下,您可以跨多个节点进行扩展。因此,可以在需要时将更多实例添加到集群中。它是水平可扩展的。

  2. 性能:与其他搜索引擎相比,它的速度非常快。它非常快速地对数据执行操作。

  3. 多语种:Elasticsearch 是一种多语言,意味着它有多种语言版本。因此,不同地区的人们可以在他们的语言中使用它。

  4. 面向文档:Elasticsearch 是面向文档的,它不使用模式和表来存储数据。它以文档形式存储所有数据。因此,无论创建什么文档,数据都以 JSON 格式呈现,这是一种被广泛接受的 Web 格式。因此,您可以集成多个解决方案,因为它以 JSON 格式为您提供输出。

  5. 自动完成和即时搜索:它支持自动完成和即时搜索。因此,无论何时您开始输入查询,它都会自动支持自动完成。它会自动提供完成查询的建议。

  6. 少架构:它是无模式的,因为它遵循面向文档的方法而不是模式和表。因此,数据存储在 Elasticsearch 的文档中。