兴起的原因:RDBMS无法满足web2.0的需求 、数据模型的局限性、Web2.0 RDBMS 许多特性没有发挥
RDBMS:无法满足海量数据、无法满足高并发、无法满足高可扩展和高可用性
进化路程:单节点---主从服务完成读写分离----分库----分表 复杂性、延迟性、扩容问题
NOSQL:hadoop MongoDB redis casendra
web 2.0 :
不要求严格数据库事务
不需要严格的读写实时性
不包含复杂的SQL查询(连接操作较少)
对比:
可用性较好、一致性一般
标准化不如RDBMS、标准完善
技术支持、维护 RDBMS占有
支持超大规模
数据模型灵活
缺乏底层基础理论
关键业务使用较少
5.3 NoSQL数据库
键值数据库
Redis
列族数据库
Hbase
Cassandra
文档数据库
MongoDB
图数据库
Neo4j
三大基石
5.4.1
CAP理论
一致性,可用性,分区容忍性
三者不可兼得
5.4.2
Base和最终一致性
基本可用,软状态(时间不同步具有一定的滞后性),最终一致性(因果一致性,单调写一致性,读己之所写,会话一致性)
数据冗余数N
写数据需要的节点数W
读数据需要的节点数R
强一致性 W+R>N
弱一致性W+R<=N
5.5 NewSql数据库
水平可扩展性 强一致性 事务一致性 支持SQL查询 支持海量数据查询
处于NoSQL和RDBMS之间
5.6 MongDB
C++语言编写,基于分布式文件存储,水平扩展性好,为WEB应用提供高性能数据存储解决方案
特点 支持索引 表达式丰富,
基本概念:
数据库
集合
文档(行记录)
域
索引
表联合
主键
设计优点
并发性好