一、RDBMS VS NOSQL
RDBMS
- 高度组织化结构化数据
- 结构化查询语句(SQL)
- 数据和关系都存储哎单独的表中
- 数据操纵语言,数据定义语言
- 严格的一致性
- 事务
NOSQL
- 代表著不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- K-V存储,列存储,文档存储,图形存储
- 最终一致性,而非ACID
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用,可伸缩性
二、3V+3高
大数据时代的3V
- 海量(Volume)
- 多样(Variety)
- 实时(Velocity)
互联网需求的3高
- 高并发
- 高扩展
- 高性能
三、NOSQL的四大分类
KV键值
- Redis,Memcache,Tair
文档型数据库(BSON格式多)
- MongoDB,CouchDB
列存储数据库
- Cassandra,HBase
图关系数据库(它不是存放图形的,放的是关系。如:朋友圈社交网络,广告推荐等。专注于构建关系图谱)
- Neo4J,InfoGrid
四、CAP
传统的ACID
- A(Atomicity)原子性
- C(Consistency)一致性
- I(Isolation)隔离性
- D(Durability)持久性
NOSQL数据库中CAP原理CAP+BASE
1)CAP(nosql三个有且只能满足两个)
- C:Consistency(强一致性)
- A:Availability(可用性)
- P:Partition tolerance(分区容错性)
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性三个需求
因此,CAP原理将NOSQL数据库分成了满足以下原则的三大类:
1、CA 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
如:传统RDBMS数据库
2、CP 满足一致性、分区容错性的系统,通常性能不是特别高。
如:Redis、MongoDB、HBase
3、AP 满足可用性、分区容错性的系统,通常可能对一致性要求低一些。
如:CouchDB、Cassandra、DynamoDB
(所以只能在一致性和可用性之间进行权衡,没有NOSQL系统能同时满足这三点)
2)BASE
为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案
BASE由三个术语缩写:
1)基本可用(Basically Available)
2)软状态(Soft state)
3)最终一直(Eventually Consistent)
其思想为:通过系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观。为什么呢?原由就是在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另一种方式来完成,而BASE就是解决这类问题的办法。
五、分布式&集群简介
分布式(Distributed System)
由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。
分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多在于高层软件(特别是操作系统),而不是硬件。
分布式系统可以应用在不同的平台上如:PC,工作站,局域网、广域网等。
分布式:不同的多台服务器上面部署不同的服务模块,他们之间通过RPC/RMI之间通信和调用,对外提供服务和组内协作。
集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。