一、理解NOSQL
<wbr><wbr><wbr><wbr>关系数据库借助SQL,以其广泛的商业用途和使用的便利性,三十年来打造了一种“one size fit all”的模式。但是,随着大规模非结构化应用在互联网领域的出现,尤其是web2.0的异军突起,传统的关系数据库为了保证“通用性”的设计而带来的功能复杂、性能开销大、价格昂贵的问题,急切呼唤出现一种替代方案:对于专门的应用,设计一种专门的数据库,从而做针对性的优化,提升性能和使用灵活度,以及更好的支持集群化运行来处理海量数据。这种趋势总结为:“Not
Only SQL”,即不仅仅是使用SQL进行数据查询和管理的关系型数据库了,对于特殊的应用需要设计更合适的替代方案。而具有代表意义的就是Key-value数据库(google的bigtable),图数据库,面向列的数据库(amazon的dynamo)等。</wbr></wbr></wbr></wbr>
二、NOSQL驱动力
<wbr><wbr>使用NOSQL的理由如下:</wbr></wbr>
<wbr><wbr><wbr>1、避免不需要的复杂性</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>多种功能和ACID强事物一致性是很多应用不需要的。</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>2、更高的吞吐量</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>比关系DBMS的写入、处理和读取能力更强。比如,google的bigtable借助MapReduce每天可以处理20Tb的数据量。</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>3、在商用硬件上的水平扩展能力</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>传统DBMS较之NOSQL的局限性:</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>a、处理数据量不足(如facebook每天50GB的邮箱搜索,ebay每天2TB的交易数据);</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>b、对单个服务器要求较高;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>c、严格的模式(schema)设计。</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>相反,NOSQL可以在普通商业硬件上自由扩展。</wbr></wbr>
<wbr>4、避免繁重的对象-关系映射</wbr>
<wbr><wbr><wbr><wbr>NOSQL支持简单的数据结构,可以和大多数面向对象的语言很好的结合进行过程化编程,不要在和SQL的关系表进行映射管理。</wbr></wbr></wbr></wbr>
<wbr>5、NOSQL实现了大表的自动分割(sharding)功能,更好的支持分布式处理。</wbr>
<wbr>6、在性能和可靠性之间的折中</wbr>
<wbr><wbr><wbr><wbr>并不是所有数据都需要做持久化处理,比如会话数据,就是当会话结束后就可以自动删除。</wbr></wbr></wbr></wbr>
<wbr>7、云计算的需求(从中心模式转到分布模式)</wbr>
三、NOSQL发展论述
<wbr><wbr><wbr>关系性DBMS退出历史舞台的基因:</wbr></wbr></wbr>
<wbr><wbr><wbr>1、产生于70年的SYSTEM R,如今硬件性能、编程模式都发生了变化;</wbr></wbr></wbr>
<wbr><wbr><wbr>2、从应对传统的商业数据扩展到了多种数据领域,包括文本、视频、流数据等;</wbr></wbr></wbr>
<wbr><wbr><wbr>3、即使是商业数据领域:其单击基因也导致了并行性能的低下。</wbr></wbr></wbr>
<wbr><wbr>当前数据库设计系统的设计问题:</wbr></wbr>
<wbr><wbr><wbr>1、主存可以处理Tb级数据(最大的商业OLAP数据量也就是几Tb,并且数据量增长缓慢);</wbr></wbr></wbr>
<wbr><wbr><wbr>2、多线程和资源限制:主存数据库IO开销很小,事务可以很快执行完,因此,没有必要花费精力去设计精细的多线程代码。同时,单线程带来高可靠性,以及更高的性能。但是,对于大的事物需要进行事物分割。</wbr></wbr></wbr>
<wbr><wbr><wbr>3、无共享结构(见另一片NOSQL设计十大原则)的译文,不许要共享主存和磁盘空间,而是网络相连的自治主机,类似于网格计算。</wbr></wbr></wbr>
<wbr><wbr><wbr>4、高可靠性、高容灾能力</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>传统的log容灾处理,转换为多机备份。而事物的原子性可以通过内存中结构来实现。</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>5、自诊断、自优化</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>在人力资源昂贵的今天,降低对熟练DBA的要求,让系统自己良好的运行。</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>具体实现问题见Stonebraker【1】等的(google 中搜索该文章即可)论文。</wbr></wbr></wbr>
<wbr>总结:“we are heading toward a world with at least<wbr>5 (and probably more) specialized engines and the death of the “one size fits all” legacy systems”</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>我们需要开启一个新的世界,由五种(或者更多)的专用数据库引擎替代当前的“一刀切“的系统。</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>可以预测的专业领域是:</wbr></wbr>
<wbr><wbr><wbr><wbr>1、数据仓库; <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>2、流数据处理;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>3、文本处理;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>4、面向科学计算的数据库;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>5、半结构化数据。</wbr></wbr></wbr></wbr>
四、主要驱动者
<wbr><wbr><wbr>1、web大型公司(google,amazon,facebook等)</wbr></wbr></wbr>
<wbr><wbr><wbr>2、云计算公司</wbr></wbr></wbr>
<wbr><wbr><wbr>3、具有特定应用需求的公司</wbr></wbr></wbr>
五、批评
<wbr><wbr><wbr>1、开源项目居多,故障支持很难做;</wbr></wbr></wbr>
<wbr><wbr><wbr>2、没有新意,老技术;</wbr></wbr></wbr>
【1】Stonebraker, Michael ; Bear, Chuck ; Çetintemel, Uğur ; Cherniack, Mitch ; Ge,
<wbr>Tingjian ; Hachem, Nabil ; Harizopoulos, Stavros ; Lifter, John ; Rogers, Jennie ;</wbr>
Zdonik, Stan: One Size Fits All? – Part 2: Benchmarking Results. In: Proc. CIDR, 2007,
<wbr>p. 173–184</wbr>
分享到:
相关推荐
A.4实验四:NoSQL和关系数据库的操作比较 本实验对应第6章的内容。 A.4.1实验目的 (1)理解4种数据库(MySQL、HBase,Redis和 MongoDB)的概念及不同点。(2)熟练使用4种数据库操作常用的 Shell命令。 (3)熟悉4种...
基于关系型数据库与NoSQL的海量数据处理,韩特,熊翱,大数据量的读写处理问题是大型数据库应用系统中的关键问题。面对数据类型繁多、数据量巨大的医疗器械数据,传统的关系型数据库具
NoSQL简介 NoSQL兴起的原因 NoSQL与关系数据库的比较 NoSQL的四大类型 NoSQL的三大基石 从NoSQL到NewSQL数据库
NoSQL数据库学习教程.pdf
二.NoSQL数据库的产生 关系数据库面临挑战 关系数据库面对超大规模和高并发的SNS类型的web2.0纯动态网站显得力不从心,暴露了很多难以克服的问题 A 大数据发展 大规模数据集合,多重数据带来了许多挑战,尤其是...
NoSQL的出现是为了弥补SQL数据库因为事务等机制带来的对海量数据、高并发请求的处理的性能上的欠缺。 NoSQL不是为了替代SQL而出现的,它是一种替补方案,而不是解决方案的首选。 绝大多数的NoSQL产品都是基于大...
《Oracle NoSQL数据库:实时大数据管理》讲述如何全面运用Oracle NoSQL数据库这个经济实惠的解决方案来存储、检索和更新海量的非结构化数据。本书在紧贴实用的示例的引导下,介绍Oracle NoSQL数据库的安装、配置、...
NOsql基础描述 详细讲解了nosql基础原理,
nosql数据库的发展和应用研究
通过HBase的应用实践,介绍其体系架构,以及传统关系型数据库和NOSQL数据库在应用设计方面需要考虑的问题。以实际应用案例为参考,关系型数据库和NOSQL在同类业务场景下的设计方案对比。
空间数据库技术应用:关系数据库的设计.pptx
应用篇对国内外几家知名公司在利用NoSQL数据库处理海量数据方面的实践做了阐述。 《大数据挑战与NoSQL数据库技术》对大数据时代面临的挑战,以及NoSQL数据库的基本知识做了清晰的阐述,有助于读者整理思路,了解...
数据存储实验4-NoSQL和关系数据库的操作比较.doc(实验报告)
NoSQL数据库技术实战 数据库书籍!
分布式数据库课件
MongoDb是非关系型数据库的一种,它是一种基于分布式的文档型数据库。
#资源达人分享计划#
这个是我写的NOsql数据库的论文也是期末作业,有需要的可以下载下来用
非关系数据库介绍,对于不了解非关系数据库NoSql的新手来说可以值得一看
《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 ...