NOSQL学习(1)
NOSQL概述
关系数据库兴起的原因:
1.关系型数据库无法满足Web2.0的需求
2.数据库的局限性:
2.1Hadoop的HDFS和MapReduce基本上是针对数据分析的和各种批处理。
2.2mongoDB和redis都是针对在线业务的
这些都是抛弃了关系模型
3.Web2.0关系型数据库有许多特性没有发挥出来
例如它具有非常完善的事务机制,以及非常高效的查询机制,但这两个主要特性在Web2.0都成为了鸡肋。
原因:
1.web2.0通常是不要求严格的数据库事务
2. web2.0不需要严格的读写实时性
3.web2.0不包含复杂的SQL查询
NIOSQL与关系型数据库的比较
数据库原理:
1.关系数据库 (具有完备的关系代数理论作为基础)
2.NOSQL数据库 (NOSQL数据库缺乏理论基础)
数据规模:
1.关系数据库(很难实现横向扩展,纵向扩展(加CPU内存等)也非常有限)
2.NOSQL数据库 (具有非常好的水平扩展性)
数据库模式:
1.关系数据库 (要定义严格的数据库模式,而且要严格遵守事先定义的数据模式)
2.NOSQL数据库 (数据模型非常灵活)
查询效率:
1.关系数据库 (适当数据量级查询效率高数据量级增大查询效率下降)
2.NOSQL数据库 (未构建面向复杂查询的索引,查询性能差)
事务一致性:
1.关系数据库 ( 遵循ACID事务模型可以保证事务的一致性)
2.NOSQL数据库 ( 未构建面向复杂查询的索引,查询性能差)
数据完整性:
1.关系数据库 (具有保证完整性的完备机制)
2.NOSQL数据库 (不能实现完整性约束)
可扩展性:
1.关系数据库 (扩展性一般是比较差的)
2.NOSQL数据库 (水平扩展性非常好)
可用性:
1.关系数据库 (随着规模增大,为了保证严格的一致性,可用性方面就被削弱)
2.NOSQL数据库 (具有非常好的可用性,就能在短时间内迅速返回所需要的结果)
标准化:
1.关系数据库 (关系数据库遵循SQL标准,标准化较为完善)
2.NOSQL数据库 (NoSQL数据库未形成通用的行业标准)
技术支持:
1.关系数据库 (关系数据库很多都是商业数据库,可获得非常强大的技术和后续服务支持)
2.NOSQL数据库 (NOSQL数据库很多都是开源产品处于整个发展的初级阶段)
可维护:
1.关系数据库 (关系数据库需要管理员维护)
2.NOSQL数据库 (没有成熟的基础和实践操作范围维护比较复杂)
关系数据库
优势
- 具有非常完备的关系代数理论作为基础
- 有严格的标准
- 支持事务一致性
- 可以借助索引机制实现,有非常高效的查询
劣势 - 可扩展性非常差
- 不具备水平可扩展性,无法较好的支持海量的数据存储
- 数据型定义严格,无法满足新型Web2.0应用需求
NOSQL数据库
优势
- 支持超大规模的数据存储
- 数据原型非常灵活
劣势 - 缺乏底层基础理论做支撑
- 很多NOSQL数据库都不支持事务的强一致性
应用场景: 1.关系数据库 电信银行的关键业务系统
2.NOSQL数据库 互联网企业以及一些传统企业的非关键业务
NOSQL数据库的四大类型
1.键值数据库
Redis(强化版的Memcached)
- 支持持久化
- 数据恢复
- 更多数据类型
(尤其是网页的缓冲层)
2.列族数据库
NOSQL的三大理论知识
CAP理论:C一致性、A可用性、P分区容忍性
一致性:指任何一个读操作总能读到之前完成的写操作的结果
可用性:指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应
分区容忍性:指当出现网络分区的情况时(即系统中的一-部分节点无法和其他节点进行通信)分离的系统也能够正常运行
但是一个分布式系统不可能同时满足- -致性、可用性和分区容忍性这三个需求,最多只能同时满足其中两个。
面对CAP问题的选择:
1.AP可即时获得数据,但数据可能存在不一致
2.CP使用网络分区,等数据-致后再去取数据,短时间内无法取到数据,失去可用性
3.CA把所有 与事务相关内容放在同一台机器上,避免网络分区问题
NEWSQL数据库
了解MongoDB
MongoDB是一款开源、 跨平台、分布式,具有大数据处理能力的文档存储数据库。
MongoDB是由C++语言编写的,是一一个基于分布式文件存储的开源数据库系统。
一个记录是指一个文档
一个文档可以包含多个键值对
键值类型:数组、字符等
集合(文档组)就相当于是关系型数据库里面的表
文档就相当于是关系型数据库里面的行
下载学习版Mongodb
http://www.mongodb.org/downloads