NoSQL(Not Only SQL)
NoSQL非关系型数据库,用于超大规模数据存储。
1、代表着不仅仅是SQL
2、 没有声明型查询语言
3、没有预定义模式
4、键-值对存储,列存储,文档存储,图形数据库
5、最终一致性,而非ACID属性
6、非结构化和不可预知的数据
7、CAP定理
8、高性能,高可用性和可伸缩性
优点:高可扩展性;分布式计算;低成本;架构的灵活性,半结构化数据;没有复杂的关系
缺点:没有标准化;有限的查询功能;最终一致是不直观的程序
NoSQL数据库分类
列存储:Hbase、Cassandra、Hypertable
文档存储:MongoDB、CouchDB
key-value存储:Tokyo Cabinet/Tyrant 、Berkeley DB 、MemcacheDB、 Redis
图形存储:Neo4J、FlockDB
对象存储:db4o、Versant
xml数据库:Berkeley DB XML 、 BaseX
RDBMS
RDBMS关系型数据库
1、高度组织化结构化数据
2、结构化查询语句(SQL)
3、数据和关系都存储在单独的表中
4、数据操纵语言,数据定义语言
5、严格的一致性
6、基础事务
ACID (Atomicity+Consistency+Isolation+Durability)
1、A(Atomicity)原子性
事务里所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,要么一个操作失败,整个事务就失败
2、C(Consistency)一致性
数据要一直处于一致状态,事务的运行不会改变数据库原本的一致性约束
3、i(Isolation)独立性
事务之间不会互相影响
4、D(Durability)持久性
一旦事务提交后,他所做的修改将会永久保存 在数据库上
CAP定理(CAP theorem)
CAP定理,也称为布鲁尔定理,指出对于一个分布式计算系统来说,不可能同时满足以下三点:
1、一致性(Consistency)(所有节点在同一时间具有相同的数据)
2、可用性(Availability)(保证每个请求不管成功或者失败都有响应)
3、分隔容忍(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运行)
核心:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个
根据CAP原理分类NoSQL数据库
1、CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不强大
2、CP-满足一致性,分区容忍性的系统,通常性能不是特别高
3、AP-满足可用性,分区容忍性的系统,通常可能对一致性要求低一些
BASE
BASE(Basically Available,Soft-state,Eventually Consistent),是NoSQL数据库通常对可用性及一致性的弱要求原则
Basically Available - 基本可用
Soft-state - 软状态/柔性事务。“Soft-state”无连接,"Hard-state" 面向连接
Eventually Consistency - 最终一致性
分布式系统
分布式系统:由多台计算机和通信的软件组件通过计算机网络连接(本地网络和广域网)组成。分布式系统具有高度的内聚性和透明性
分布式计算
优点:
1、可靠性(容错):一台服务器的系统崩溃并不影响到其余的服务器
2、可扩展性:可以根据需求增加更多的机器
3、资源共享
4、灵活性:易于安装,实施,调试
5、更快的速度
6、开放系统
7、更高的性能
缺点:
1、故障排除:故障排除及问题诊断
2、软件:更少的软件支持是分布式计算系统的主要缺点
3、网络:网络基础设施的问题,如:传输问题,高负载,信息丢失等
4、安全性