NoSQL数据库简介

Not Only SQL

5.1 NoSQL数据库具有以下几个特点:
(1)灵活的可扩展性(扩容方便,关系数据库扩容涉及复杂数据重新划分)
(2)灵活的数据模型(关系数据库表结构固定,不能动态扩展。Hbase中可动态扩展列族和列)
(3)与云计算紧密融合

(4)列数据库(如Hbase)读效率高,适合分析型应用场景

5.2  NoSQL兴起的原因

1、关系数据库已经无法满足Web2.0(用户产生多数据类型海量数据)的需求。主要表现在以下几个方面:
(1)无法满足海量数据的管理需求(访问数据库延时太大)
(2)无法满足数据高并发的需求(高并发时访问数据库效率低)
(3)无法满足高可扩展性和高可用性的需求

2、“One size fits all”模式很难适用于截然不同的业务场景
关系模型作为统一的数据模型既被用于数据分析,也被用于在线业务。但这两者一个强调高吞吐,一个强调低延时,已经演化出完全不同的架构。用同一套模型来抽象显然是不合适的
Hadoop就是针对离线数据分析(吞吐率要求高,实时性要求低)
MongoDB、Redis等是针对在线业务(吞吐率要求低,实时性要求高),两者都抛弃了关系模型

3、关系数据库的关键特性包括完善的事务机制(一次事务中多个数据修改操作同时生效或不生效)和高效的查询机制。这两个关键特性(完善事务机制和高效查询机制),到了Web2.0时代却成了鸡肋,主要表现在以下几个方面:
(1)Web2.0网站系统为了提高性能通常不要求严格的数据库事务(允许操作失败,如发布微博失败)
(2)Web2.0并不要求严格的读写实时性
(3)Web2.0通常不包含大量复杂的SQL查询(去数据结构化,存储空间(数据冗余)换取更好的查询性能

5.3  NoSQL与关系数据库的比较

(1)关系数据库
优势:支持事务一致性,索引机制可以实现高效的查询
劣势:可扩展性较差(扩展需要重新划分表),无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用

(2)NoSQL数据库
优势:具有强大的横向扩展能力(扩容),可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用
劣势:复杂查询性能不高,不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等

 

应用场景的差别

关系数据库和NoSQL数据库各有优缺点,彼此无法取代
关系数据库应用场景:电信、银行等领域的关键业务系统,需要保证强事务一致性
NoSQL数据库应用场景:互联网企业、传统企业的非关键业务(比如数据分析)

采用混合架构
案例:亚马逊公司就使用不同类型的数据库来支撑它的电子商务应用
对于“购物篮”这种临时性数据,采用键值存储会更加高效
当前的产品和订单信息则适合存放在关系数据库中
大量的历史订单信息则适合保存在类似MongoDB的文档数据库中

posted on 2017-06-12 23:05  ostin  阅读(409)  评论(0)    收藏  举报