您的位置:首页 > 数据库

NoSQL数据库学习笔记之 Why NoSQL

2013-10-10 16:30 288 查看
随着互联网技术的发展,大数据时代已经来临。大数据通常指PB级别以上的海量数据。大数据带来大机遇的同时也对数据的管理和应用提出了挑战。

大数据时代,传统关系型数据库的问题和挑战

大数据不仅数据量巨大,而且还具有数据类型多样、数据生成速度快等特点。总体而言,支持海量数据处理的系统应具有如下特性:

高可扩展性(满足数据量增长的需要);
高性能(满足数据读写的实时性和查询处理的高性能);
容错性(保证分布系统的可用性);
可伸缩性(按需分配资源);
尽可能低的运营成本。

传统关系型数据库由于其自身局限性(下文将介绍),在容错性,可扩展性,可伸缩性等方面难以满足海量数据处理系统的需求。大数据时代,传统关系型数据库面临的问题和挑战主要包括:

数据多样性:关系模型不容易组织和管理所有类型多样的数据;
高速并行处理:对传统关系型数据库而言,如何通过大量节点的并行操作实现海量数据的高速处理是一个巨大的挑战;
海量数据分析:在关系型数据库上进行数据的复杂分析可以使用统计分析和数据挖掘软件包(如SPSS、SAS、R等),但这些软件包处理的数据量受限于内存大小,并行化程度不够。从数据库提取数据注入到分析软件中进行分析将导致大量的数据移动,显然不适合海量数据处理。

CAP理论

大数据时代,并行处理是操作和分析海量数据的必然选择。这里的并行不仅是跨越多核的,更重要的是跨越节点的并行,通过大量节点的并行处理来提高性能。在大量节点构成的分布式系统中,节点的失败,网络的失败是很平常的,所以系统的分区容忍性变得尤为重要。

根据Brewer提出的CAP理论(后来由Gilber和Lynch证明),大型分布式系统中,一致性(Consistency)、系统可用性(Availability)和分区容忍性(Partition
tolerance)这三个目标最多只能兼顾两个。也就是说,如果追求高度的一致性和系统可用性,那么分区容忍性则必定受损。

关系型数据库一般通过ACID协议保证数据的一致性,并且通过分布式执行协议(如两阶段提交协议2PC) 保证事务的正确执行,追求系统的可用性,所以关系型数据库部署到大规模节点集群中必定会损失分区容忍性。在大规模分布式集群中,节点的失败稀松平常,有可能造成事务不断重启,永远无法结束的情况。

由以上分析可知,因为关系型数据库实施了强一致性,所以很难部署到大规模集群系统 (几千个节点规模) 。

关系型数据库的解决方法

针对以上问题和挑战,关系型数据库可以采用一些方法解决大数据处理问题:

分割(sharding):首先将数据划分到多个节点上,然后对应用程序进行修改,以便支持查询的路由选择,利用多个服务器分担工作负载来提高系统的性能;
非规范化(de-normalization):对关系型数据库的非规范化处理增加了数据的冗余,但可以更容易地对数据进行分割,减少节点间的数据交换,从而提高系统扩展性能;
部署分布式缓存:在RDBMS的前端部署分布式缓存技术(比如memcached),把最近存取的数据保存在若干服务器的内存中,方便后续的操作。

上述方法虽然可以一定程度上解决关系型数据库处理海量数据的问题,但仍无法完全应对大数据的重要挑战(数据规模巨大,数据类型多样等)。

NoSQL异军突起

关系型数据库自身的局限性使其很难部署到大规模分布式集群中,可扩展性成为关系型数据库进行海量数据处理的瓶颈。与此同时,noSQL技术顺应时代发展的需要,异军突起,蓬勃发展。noSQL的主要特点是采用不同于关系模型的数据模型,虽然NoSQL技术各具特点,但它们通常都遵从一些新的设计原则:

依赖大规模节点的分布式并行处理能力应对大数据的挑战,以CAP理论中的P(分区容忍性)为首要考虑因素进行系统设计,追求系统可扩展性;
放松ACID一致性约束,允许数据暂时出现不一致的情况,接受最终一致性;
备份分区数据,应对节点失败的状况。

基于上述设计理念,各种NoSQL技术和系统被研发出来,解决了类型多样的大数据管理和分析问题。

总结

大数据时代,关系型数据库遭遇瓶颈,NoSQL数据库异军突起,应对大数据的挑战。

下一篇文章将介绍不同类别的NoSQL数据库及它们各自的特点。

各种数据库产品(包括RDBMS和NoSQL)的CAP特性:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: