关系型数据库和非关系型数据库(NOSQL)
关系型数据库和非关系型数据库(NOSQL)
简介
关系型数据库,可以用 SQL 语句查询,数据表比较复杂。
NOSQL(Not Only SQL)允许部分数据使用SQL系统存储,而其他数据允许使用NOSQL系统存储。其数据存储可以不需要固定的表格模式以及中介数据(metadata),也经常会避免使用SQL的JOIN操作,通常以键值对或者文档的形式存储,数据之间不具有耦合性,一般有水平可扩展性的特征。
分类
NOSQL: MongoDB, CouchDB, RethinkDB, DynameDB
SQL: MySQL, Oracle, PostgrSQL, MariaDB, MS SQL
关系型数据库
关系型数据库遵循 ACID 规则:
A(Atomicity) 原子性:transaction 里的操作要么不执行,要么全部执行完。
C(Consistency) 一致性:数据库中的数据要遵循一致性约束,transaction 的运行不会改变一致性约束,比如不能改变表格列的名称、数据类型等。
I(Isolation)独立性:transaction 之间不会相互影响,只有一个 transaction 执行完毕,才会最终产生影响。
D(Durability) 持久性:一旦 transaction 提交之后,所做的修改会永久存储在数据库里,即使宕机也不会有影响。
非关系型数据库
CAP 理论:一个分布式系统不能够同时满足一致性(Consistency),可用性(Availability)和分区容错性(Partition tolerance),最多只能同时较好的满足两个。
BASE(Basic Available, Soft-state, Eventually Consistent):是 NOSQL 数据库通常对可用性和一致性的弱要求原则:
- Basic Available:基本可用。
- Soft-state:软状态/柔性事务,'soft sate' 可以理解为无连接的,'hard state'理解为面向连接的。
- Eventually Consistent:最终一致性(也是 ACID 的最终目的)