目录
一、关系型数据库
1.1 什么是关系型数据库?
关系型数据库一般是处理一些结构化的数据,即把复杂的数据结构归结为简单的二元关系列表形式。以二维表的形式对数据的存储,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。关系型数据库是依据关系型模型来创建的数据库,通过关系型数据可以很好地存储一些关系型数据,如一对一、一对多、多对多等关系模型。关系模型包括数据结构、操作指令集、完整性约束等。在实际应用中,常见到的关系型数据库有MySQL数据库、Oracle数据库、MariaDB 数据库、SQL Server 数据库等。
1.2 关系型数据库的优点
- 易于维护:在存储数据时采用二维表形式存储,格式统一,方便管理和维护;
- 可通过SQL结构化查询语句来存储、管理数据,可用于复杂查询;
- 支持SQL,可用于单表或多表之间非常复杂的数据查询;
- 在保持数据安全性和一致性方面很强,其遵循ACID理论。
1.3 关系型数据库的缺点
- 对于大数据的存取,其读写性能较差;
- 因其固定的表结构,故灵活度稍差;
- 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
二、非关系型数据库
2.1 什么是非关系型数据库?
非关系型数据库又被称为NoSQL(Not Only SQL ), 不需要事先定义结构,也就是不需要建表建库等,每条记录可以又不同的类型和约束条件。它是作为传统数据库的一个有效补充,它打破了长久以来关系型数据库与ACID理论大一统的局面。在特定的场景下可以发挥难以想象的高效率和高性能。特别是对于规模日益扩大的海量数据。
2.2 非关系型数据库种类
(1)键值(Key-Value)存储数据库
- 键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。这个表中有一个特定的键和一个指针指向特定的数据。Key-Value模型对于IT系统来说的优势在于简单、易部署、高并发。
- 典型产品:Memcached、Redis、MemcachedB、Berke ley DB
(2)列存储(Column-Oriented)数据库
- 列存储数据库将数据存储存在列族(Column Family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果有一个 Person 类,通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。这部分数据库通常用来应对分布式存储的海量数据。键仍然存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的。
- 典型产品:Cassandra,HBase
(3)面向文档(Document-Oriented)的数据库
- 面向文档数据库会将数据以文档的形式存储,数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON等多种形式存储。
- 典型产品:MongDB、CouchDB
(4)图形(Graph)数据库
- 图形数据库允许我们将数据以图的方式存储。图形结构的数据库同其他行列以及刚性结构的 SQL 数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
- 典型产品:Neo4J、InfoGr id
2.3 非关系型数据库的优点
- 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等
等,使用灵活,应用场景广泛; - 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
- 高扩展性;
- 成本低:nosql数据库部署简单,基本都是开源软件。
2.4 非关系型数据库的缺点
- 不提供sql支持,学习和使用成本较高;
- 无事务处理;
- 数据结构相对复杂,复杂查询方面稍欠。