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数据库 (没有成熟的基础和实践操作范围维护比较复杂)

关系数据库
优势

  1. 具有非常完备的关系代数理论作为基础
  2. 有严格的标准
  3. 支持事务一致性
  4. 可以借助索引机制实现,有非常高效的查询
    劣势
  5. 可扩展性非常差
  6. 不具备水平可扩展性,无法较好的支持海量的数据存储
  7. 数据型定义严格,无法满足新型Web2.0应用需求

NOSQL数据库
优势

  1. 支持超大规模的数据存储
  2. 数据原型非常灵活
    劣势
  3. 缺乏底层基础理论做支撑
  4. 很多NOSQL数据库都不支持事务的强一致性

应用场景: 1.关系数据库 电信银行的关键业务系统
2.NOSQL数据库 互联网企业以及一些传统企业的非关键业务

NOSQL数据库的四大类型

NOSQL学习(1)

1.键值数据库

NOSQL学习(1)
Redis(强化版的Memcached)

  1. 支持持久化
  2. 数据恢复
  3. 更多数据类型
    (尤其是网页的缓冲层)

2.列族数据库
NOSQL学习(1)

NOSQL的三大理论知识
CAP理论:C一致性、A可用性、P分区容忍性

一致性:指任何一个读操作总能读到之前完成的写操作的结果

可用性:指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应

分区容忍性:指当出现网络分区的情况时(即系统中的一-部分节点无法和其他节点进行通信)分离的系统也能够正常运行

但是一个分布式系统不可能同时满足- -致性、可用性和分区容忍性这三个需求,最多只能同时满足其中两个。

面对CAP问题的选择
1.AP可即时获得数据,但数据可能存在不一致
2.CP使用网络分区,等数据-致后再去取数据,短时间内无法取到数据,失去可用性
3.CA把所有 与事务相关内容放在同一台机器上,避免网络分区问题
NOSQL学习(1)

NEWSQL数据库

NOSQL学习(1)

了解MongoDB
MongoDB是一款开源、 跨平台、分布式,具有大数据处理能力的文档存储数据库。

MongoDB是由C++语言编写的,是一一个基于分布式文件存储的开源数据库系统。
一个记录是指一个文档
一个文档可以包含多个键值对
键值类型:数组、字符等
集合(文档组)就相当于是关系型数据库里面的表
文档就相当于是关系型数据库里面的行

NOSQL学习(1)
下载学习版Mongodb
http://www.mongodb.org/downloads