NoSQL入门和概述
- 1. Why NoSQL?
- 2. What is NoSQL?
- 3. NoSQL与RDBMS的区别
- 3.1 RDBMS:
- 3.2 NoSQL:
1. Why NoSQL?
随着中国互联网的飞速发展,互联网用户的井喷式增长及其日益增长的需求,传统的关系型数据库,无论在性能上还是扩展性都已遇到了瓶颈.
2. What is NoSQL?
NoSQL(Not Only SQL), 不仅仅是数据的意思, 泛指非关系型数据库.
特点:
- 低耦合,数据存储不需要固定的格式.
- 易于扩展.
- 大数据量性能高
试想一下, 关联复杂的传统的关系型数据库中, 要频繁的扩展简直是噩梦.
3. NoSQL与RDBMS的区别
3.1 RDBMS:
- 结构化数据
- 数据和关系存储在单独的表中
- ACID
事务的原子性:(Atomicity)
事务的一致性:(Consistentcy)
事务的独立性:(Isolation)
事务的持久性:(Durablity) - 表之间关系复杂, 扩展难度大, 甚至牵一发而动全身.
3.2 NoSQL:
- 非结构化数据
- 最终一致性(CAP+BASE),而非ACID
- 易于扩展
CAP+BASE
C: Consistentcy 强一致性
A: Availability 可用性
P: Partition Tolerance 分区容错性
CAP的3进2:
在分布式系统中,P是一定需要的,因此我们只能在A和C之间选择一个.
CA: 传统的关系型数据库 Oracle
AP: 大多数网站架构的选择
CP: Redis,MongoDB
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE其实是下面三个术语的缩写:
基本可用(Basically Available)
软状态(Soft state)
最终一致(Eventually consistent)
它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。
缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,
我们必须采用另外一种方式来完成,这里BASE就是解决这个问题的办法。
分布式、和集群的感念
分布式:
不同的多台服务器上面部署 不同
的服务模块(工程),他们之间通过RPC/RMI通信和调用,对外提供服务和组内协作。
集群:
不同的多台服务器上面部署 相同
的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。