一.什么是NoSQL
1.NoSQL: not only SQL ,非关系型数据库
2.NoSQL是一个通用术语
- 指不遵循传统RDBMS模型的数据库
- 数据是非关系的,且不适用SQL作为只要查询语言
- 解决数据库的可伸缩性和可用性问题
- 不针对原子性或一致性问题
二.为什么使用NoSQL
互联网的发展,传统关系型数据库存在瓶颈
三.NoSQL和关系型数据库的对比
主要有以下一些区别
四.NoSQL的特点
- 最终一致性
- 应用程序增加了维护一致性和处理事务等职责
- 冗余数据存储
- NoSQL !=大数据
- NoSQL产品是为了帮助解决大数据的存储问题
- 大数据不仅仅包含数据存储问题
Hadoop
Kafka
Spark等
五.NoSQL三大基石:CAP,BASE,最终一致性
1.CAP理论
- 数据库最多支持3个中的2个
Consistency(一致性)
Availability(可用性)
Partition Tolerance(分区容错性)
- NoSQL不保证 “ACID”
- 提供"最终一致性"
2.BASE
- Basically Availble(基本可用)
保证核心可用
- Soft-state (软状态)
状态可以有一段时间不同步
- Eventual Consistency(最终一致性)
系统经过一段时间后,数据最终能后达到一致的状态
- 核心思想是基石无法做到强一致性,但应用可以选择适合的方式达到最终一致性
3.最终一致性
- 最终结果保持一致,而不是时时一致
- 如账户余额,库存量等数据需强一致性
- 如catalog等信息不需要强一致性
Causal consistency (因果一致性)
Read-your-writes consistency
Session consistency
六.索引和查询
- Indexing(索引)
大多数NoSQL是按key进行索引
大部分NoSQL允许二级索引
Hbase使用HDFS,append-only
批处理写入logged
重新创建并排序文件
- Query(查询)
没有专门的查询语言,永昌使用脚本语言查询
有些开始支持SQL查询
有些可以使用MapReduce代码查询
- MapReduce
不是hadoop的MapReduce.概念相关
可进行数据的处理查询
- Sharding
一种分区模式
可以复制分片
有利于灾难恢复
七.NoSQL分类
主要分为以下四类
- 键值存储数据库(Key-Value)
- 列存储数据库
- 文档存储数据库
- 图数据库