最常见的两种数据库:关系型数据库vs非关系型数据库。
关系型数据库
1.概念
关系型数据库是采用了关系模型来组织数据,简单来说是利用二维表格来存储信息,如MySQL、SQL server、postgerSQL。
2.优点
- 便于理解,二维表格是大家在生活中很常见的类型;
- 使用方便,通用的sql语句;
- 便于维护,数据库的ACID属性大大降低了维护成本,更新的成本也更小。
3.ACID属性
- 原子性Atomicity:一个事务就是最小的单位,不可再分割。这个事务要么全部完成,要么不完成,不出现完成了一半的情况。如果事务出错,会回到事务开始前的状态,就像事务没开始一样。
- 一致性Consistency:事务开始前和结束后,数据库的完整性没有被破坏。
- 隔离性isolation:数据库允许多个事物同时对数据进行读写,隔离性可以保证事务是交叉互不干扰的,不会出现因为交叉执行导致数据不一致。包括读未提交、读提交、可重复读和串行化。(串行化指将对象存储到介质,如文件、内存缓冲区等中或是以二进制方式通过网络传输。之后可以通过反串行化从这些连续的字节(byte)数据重新构建一个与原始对象状态相同的对象,因此在特定情况下也可以说是得到一个副本,但并不是所有情况都这样。)
- 持续性duration:事务结束后,对数据的修改是永久的,不会因为系统的故障而发生丢失。
非关系型数据库
1.概念
非关系型数据库(Not Only SQL):通常把不是关系型数据库的数据库都称为非关系型数据库,分布式的、非关系式的,不包含ACID属性的。
2.常见类型
- 键值数据库:将数据库内的数据存储为键值对,键是唯一标识符,类似于哈希表。
- 图形数据库:将数据作为图的形式存储。实体是顶点,实体之间的关系则是边,类似于数据结构中的图。
- 内存数据库
- 文档数据库:数据通常是对象或者json文档。
3.特点
- 非关系型数据库大部分是开源的。
- 非关系型数据库不像关系型数据库那样要求高度的一致性,它允许数据在一段时间内不一致,只要最终状态下是一致的就行,所以适用于游戏等。