大数据知识讲堂┊NoSQL系统

Posted 鄂托克前旗大数据中心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据知识讲堂┊NoSQL系统相关的知识,希望对你有一定的参考价值。

进入信息化发展的新阶段,大数据对经济发展、社会秩序、国家治理、人民生活都产生了重大影响,领导干部只有不断增强大数据思维和能力,才能更好地运用互联网技术和信息化手段开展工作。鄂托克前旗大数据中心特开设“大数据知识课堂”栏目,让广大读者系统了解大数据知识,树立大数据思维,用大数据推动自身工作。本期为您解读NoSQL系统

随着互联网web2.0技术的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的社交网络服务(SNS)类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,主要包括以下几点需求:

1

对数据库高并发读写的需求

web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘I/O就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求。

2

对海量数据的高效率存储和访问的需求

对于大型的SNS网站,每天用户产生海量的用户动态以国外的 Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL査询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动輒数以亿计的账号,关系数据库也很难应付。

3

对数据库库的高可扩展性和高可用性的需求

在基于web的架构当中,数据库是最难进行横向扩展的。当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像 web server和 app Server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?

在上面提到的的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如:数据库事务一致性很多web实时系统并不要求严格的数据库事务,对读致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。

数据库的貨实时性和读实时性对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性。复杂的SQL查询,特别是多表关联查询任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

因此,关系数据库在越来越多的应用场景下显得不那么合适了,为了解决这类问题,非关系型数据库应运而生。NOSQL是非关系型数据存储的广义定义。它它打破了长久以来关系型数据库与ACID( Atomicity原子性Consistency一致性、 Isolation隔离性、 Durability持久性)理论大一统的局面。 NOSQL数据存储不需要固定的表结构通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。

NOSQL在存储数据模型上,放弃了关系型模型,遵循模式自由( Schema-free)原则,目前存在的 NOSQL数据模型大致分为为四类:Key- Value(键值对)、 olumnOriented(列列式)、 Document- Oriented(文档档型)Graph- Oriented(图型)。在复杂度上Key- Value<Column< Document< Graph,而伸缩度上则正好相反而这四种数据模型基本上满足90%的应用场景。至于采用何种数据模型,要根据应用场景的不同特点选择。

NOSQL数据库往往不支持SQL,因此必须根据自身的特性自定义操作模型。比如对于Key- Value的数据模型,支持get/put/ delete等简单操作,而对于复杂的列式、 Document、 Graph等还支持其他的复杂操作。比如Big Table(非关系型的数据库)型的系统通常支持对单独某一行的数据进行遍历,允许对单列的数据进行按特定条件地筛选。 MONGODB(基于分布式文件存储的数据库)

可以在任意数据行上建立索引,可以使用 javascript语法设定复杂的査询条件。 COUCHDB(开源的面向文档的数据库管理系统)允许创建同一份数据的多个视图,通过运行Mapreduce(一种编程模型)任务来实现一些更为复杂的查询或者更新操作。很多 NOSQL系统都支持与 Hadoop或者其它一些 Mapreduce框架结合来进行一些大规模数据分析工作。


责任编辑/排版:李彦欢    审核:张红艳

——END——

往期精彩






鄂托克前旗大数据中心

以上是关于大数据知识讲堂┊NoSQL系统的主要内容,如果未能解决你的问题,请参考以下文章

小知识8种Nosql数据库系统对比

大数据挑战与NoSQL数据库技术pdf

如何快速掌握大数据知识,按照学习路线来

大数据知识点里面的 HBase 是啥意思?

大数据学习路线是啥?

MongoDB基本知识(补充)