NoSql 简介
1. 概述
- NoSQL(Not Only SQL),"不仅仅是SQL", 泛指非关系型的数据库;
- 特点:
- 易扩展;
- 在大数据量下,NoSQL 数据库具有非常高的读写性能;
- 多样灵活的数据模型;
- RDBMS(关系型数据库)和NoSQL 比较
- RDBMS
- 高度组织化结构化数据;
- 结构化查询语言(SQL);
- 数据和关系都存储在单独的表中;
- 数据操作语言,数据定义语言;
- 严格的一致性;
- 基础事务;
- NoSQL
- 没有声明性查询语言;
- 没有预定义的模式;
- 键值对存储,列存储,文档存储,图形数据库;
- 最终一致型,而非ACID属性;
- 非结构化和不可预知的数据;
- CAP 定理;
- 高性能,高可用性和可伸缩性;
- RDBMS
- 3V + 3高
- 大数据时代的3V
- 海量(Volume)
- 多样(Variety)
- 实时(Velocity)
- 互联网需求的3高
- 高并发
- 高可扩
- 高性能
- 大数据时代的3V
2. NoSQL 的数据模型
2.1 Bson
- Bson 是一种类json的二进制形式的存储格式,即Binary JSON;
- 支持内嵌的文档对象和数组对象;
2.2 聚合模型
- KV 键值
- Bson
- 列族
- 图形
2.3 NoSQL 数据库的四大分类
- KV键值: Redis等;
- 文档型数据库(bson格式比较多): MongoDB,基于分布式文件存储的数据库;
- 列存储数据库: HBase,分布式文件系统;
- 图关系数据库: 存放社交网络,推荐系统等,专注于构建关系图谱;
3. 在分布数据库中CAP原理
3.1 CAP
- C:Consistency(强一致性)
- A:Availability(可用性)
- P:Partition tolerance(分区容错性)
3.2 CAP 原理
- CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时
较好的满足两个; - 分区容错性是必须要实现的;
- 根据CAP原理,将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类:
- CA,单点集群,满足一致性,可用性的系统,通常在扩展性上不太强大;(传统Oracle数据库)
- CP,满足一致性,分区容错性的系统,通常性能不是特别高;(Redis,Mongodb)
- AP,满足可用性,分区容错性的系统,通常可能对一致性要求低一些;(大多数网站架构的选择)
4. BASE
- BASE 就是为了解决关系数据库强一致性引起的问题而引起的可用性降低,而提出的解决方案;
- BASE
- 基本可用(Basically Available)
- 软状态(Soft state)
- 最终一致(Eventually consistent)
5. 分布式和集群
- 分布式:不同的多台服务器上面部署不同的服务模块(工程),它们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作;
- 集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问;
参考资料