NoSQL数据库的四大分类
- KV键值
- 文档型数据库(bson格式比较多)
- 列存储数据库
- 图关系数据库
四者对比
分布式数据库CAP原理
传统的ACID分别是什么
- A(Atomicity)原子性:事务里的所有操作要么全部做完,要么全不做。
- C(Consistency)一致性:数据库要一直处于一致性状态,事务的运行不会改变数据库原本的一致性约束。
- I(Isolation)独立性:并发的事务之间不会互相影响。
- D(Durability)持久性:一旦事务提交后,它所做的修改就永久的保存在数据库上,即使出现宕机也不会丢失。
CAP
- C(Consistency)强一致性:
- A(Availability)可用性:
- P(Partition tolerance)分区容错性:
CAP的3进2
CAP理论就是说在分布式存储系统中,最多实现上面的两点。
由于当前的网络硬件会出现延迟丢包等问题,所以分区容错性必须实现。
经典CAP图
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性这三个需求。
最多只能同时较好的满足两个
分成满足CA、CP、AP原则的三大类:
- CA:单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
- CP:满足一致性,分区容错性的系统,通常性能不是特别高。
- AP:满足可用性,分区容错性的系统,通常可能对一致性的要求低一些。
一致性与可用性的决择
对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地
- 数据库事务一致性需求,很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低, 有些场合对写一致性要求并不高。允许实现最终一致性。
- 数据库的写实时性和读实时性需求,对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说发一条消息之 后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。
- 对复杂的SQL查询,特别是多表关联查询的需求,任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。
BASE
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE其实是下面三个术语的缩写:
- 基本可用(Basically Available)
- 软状态(Soft state)
- 最终一致(Eventually consistent)
它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成,这里BASE就是解决这个问题的办法
分布式+集群简介
分布式系统(distributed system)
由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在在不同的平台上如:pc、工作站、局域网和广域网上等。
简单来讲:
- 分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。
- 集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。