关系数据库模型已经流行了几十年了,但是一种新类型的数据库——被称为NoSQL,正在引起企业的注意。下面是关于它的优势和劣势的一个概述。二十多年以来,对数据库管理来说,关系数据库(RDBMS)模型一直是一个占统治地位的数据库模型。

AD:51CTO学院:IT精品课程在线看!

关系数据库模型已经流行了几十年了,但是一种新类型的数据库——被称为NoSQL,正在引起企业的注意。下面是关于它的优势和劣势的一个概述。二十多年以来,对数据库管理来说,关系数据库(RDBMS)模型一直是一个占统治地位的数据库模型。但是,今天,非关系数据库,“云”数据库,或“NoSQL”数据库作为关系数据库以外的一些选择,正在引起大家的广泛关注。在这篇文章里,我们将主要关注那些非关系的NoSQL数据库的十大利弊:包括五大优势和五大挑战。

NoSQL的五大优势

1,灵活的可扩展性

多年以来,数据库管理员们都是通过“纵向扩展”的方式(当数据库的负载增加的时候,购买更大型的服务器来承载增加的负载)来进行扩展的,而不是通过“横向扩展”的方式(当数据库负载增加的时候,在多台主机上分配增加的负载)来进行扩展。但是,随着交易率和可用性需求的增加,数据库也正在迁移到云端或虚拟化环境中,“横向扩展”在commodity hardware方面的经济优势变得更加明显了,对各大企业来说,这种“诱惑”是无法抗拒的。

在commodity clusters上,要对RDBMS做“横向扩展”,并不是很容易,但是各种新类型的NoSQL数据库主要是为了进行透明的扩展,来利用新节点而设计的,而且,它们通常都是为了低成本的commodity hardware而设计的。

2,大数据

在过去的十年里,正如交易率发生了翻天覆地的增长一样,需要存储的数据量也发生了急剧地膨胀。O’Reilly把这种现象称为:“数据的工业革命”。为了满足数据量增长的需要,RDBMS的容量也在日益增加,但是,对一些企业来说,随着交易率的增加,单一数据库需要管理的数据约束的数量也变得越来越让人无法忍受了。现在,大量的“大数据”可以通过NoSQL系统(例如:Hadoop)来处理,它们能够处理的数据量远远超出了最大型的RDBMS所能处理的极限。

3,“永别了”!DBA们!(再见?)

在过去的几年里,虽然一些RDBMS供应商们声称在可管理性方面做出了很多的改进,但是高端的RDBMS系统维护起来仍然十分昂贵,而且还需要训练有素的DBA们的协助。DBA们需要亲自参与高端的RDBMS系统的设计,安装和调优。

NoSQL数据库从一开始就是为了降低管理方面的要求而设计的:从理论上来说,自动修复,数据分配和简单的数据模型的确可以让管理和调优方面的要求降低很多。但是,DBA的死期将至的谣言未免有些过于夸张了。总是需要有人对关键性的数据库的性能和可用性负责的。

4,经济

NoSQL数据库通常使用廉价的commodity servers集群来管理膨胀的数据和事务数量,而RDBMS通常需要依靠昂贵的专有服务器和存储系统来做到这一点。使用NoSQL,每GB的成本或每秒处理的事务的成本都比使用RDBMS的成本少很多倍,这可以让你花费更低的成本存储和处理更多的数据。

5,灵活的数据模型

对于大型的生产性的RDBMS来说,变更管理是一件很令人头痛的事情。即使只对一个RDBMS的数据模型做了很小的改动,也必须要十分小心地管理,也许还需要停机或降低服务水平。NoSQL数据库在数据模型约束方面是更加宽松的,甚至可以说并不存在数据模型约束。NoSQL的主键值数据库和文档数据库可以让应用程序在一个数据元素里存储任何结构的数据。即使是规定更加严格的基于“大表”的NoSQL数据库(例如:Cassandra, HBase)通常也允许创建新列,这并不会造成什么麻烦。

应用程序变更和数据库模式的变更并不需要作为一个复杂的变更单元来管理。从理论上来说,这可以让应用程序迭代的更快,但是,很明显,如果应用程序无法维护数据的完整性,那么这会带来一些不良的副作用。

NoSQL的五大挑战

NoSQL的种种承诺引发了一场热潮,但是在它们得到主流的企业的青睐以前,它们还有许多困难需要克服。下面是NoSQL需要面对的一些挑战。

1,成熟度

RDBMS系统已经发展很长时间了。NoSQL的拥护者们认为,RDBMS系统那超长的发展的年限恰恰表示它们已经过时了,但是对于大多数的CIO们来说,RDBMS的成熟度更加令它们放心。大多数情况下,RDBMS系统更加稳定,而且功能也更加丰富。相比之下,大多数的NoSQL数据库都是pre-production版本,许多关键性的功能还有待实现。

对于大多数开发者来说,处于技术的最前沿的确是很令人兴奋的,但是企业应该怀着极端谨慎的态度来处理此事。

2,支持

企业都希望能得到这样的保证:如果一个关键性的系统出现问题了,他们可以获得及时有效的支持。所有的RDBMS供应商都在竭尽全力地提供高水平的企业支持。

相反,大多数的NoSQL系统都是开源项目,虽然对于每个NoSQL数据库来说,通常也会有一个或多个公司对它们提供支持,但是那些公司通常是小型的创业公司,在支持的范围,支持的资源,或可信度方面,它们和Oracle, Microsoft或IBM是无法相提并论的。

3,分析和商业智能化

NoSQL数据库现在已经可以满足现代的Web2.0应用程序的高度的可扩展性的要求了。这直接导致的结果是,它们的大多数功能都是面向这些应用程序而设计的。但是,在一个应用程序中,具有商业价值的数据早就已经超出了一个标准的Web应用程序需要的“插入-读取-更新-删除”的范畴了。在公司的数据库中进行商业信息的挖掘可以提高企业的效率和竞争力,而且对于所有的中到大型的公司来说,商业智能化(BI)一直是一个至关重要的IT问题。

NoSQL数据库几乎没有提供什么专用的查询和分析工具。即使是一个简单的查询,也要求操作者具有很高超的编程技术,而且,常用的BI工具是无法连接到NoSQL的。

像HIVE或PIG那样的新出现的一些解决方案在这方面可以提供一些帮助,它们可以让访问Hadoop集群中的数据变得更加容易,最后也许还会支持其他的NoSQL数据库。Quest软件已经开发了一个产品——Toad for Cloud Databases——它给各种NoSQL数据库提供了专用的查询功能。

4,管理

NoSQL的设计目标是提供一个“零管理”的解决方案,但是目前来说,还远远没有达到这个目标。安装NoSQL还是需要很多技巧的,同时,维护它也需要付出很多的努力。

5,专业知识

毫不夸张地说,全世界有数百万的开发者,他们都对RDBMS的概念和编程方法很熟悉,在每个业务部门中都有这样的开发者。相反,几乎每一个NoSQL开发者都正处于学习状态中。虽然这种情况会随着时间的推移而改变,但是现在,找到一些有经验的RDBMS程序员或管理员要比找到一个NoSQL专家容易的多。

结论

NoSQL数据库正在逐渐地成为数据库领域中不可或缺的一部分,如果使用方法得当的话,能获得很多的好处。但是,企业应该谨慎行事,要充分地认识到这些数据库的一些限制和问题。

关于NoSQL数据库你应该知道的10件事的更多相关文章

  1. 【转载】在IT界取得成功应该知道的10件事

     在IT界取得成功应该知道的10件事 2011-08-11 13:31:30 分类: 项目管理 导读:前面大多数文章都是Jack Wallen写的,这是他的新作,看来要成为NB程序员还要不停的自我总结 ...

  2. (0)开始 Raspberry Pi 项目前需要知道的 10 件事

    https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...

  3. 使用Office 365前,企业必须要知道的10件事

    目前的市场上充斥着很多关于微软Office 365的炒作,相信厂商.客户或者企业的都有自己不同的考虑.Office 365是微软云版本的Office,用户可以通过互联网创建一个帐户,付款.下载应用安装 ...

  4. 关于 NoSQL 数据库你应该了解的 10 件事

    四分之一个世纪以来,关系型数据库(RDBMS)一直是主流数据库模型.但是现在非关系型数据库,“云”或者“NoSQL”数据库,正在作为一种替代数据库模型获得越来越多的占有率.本文中我们将关注非关系型 N ...

  5. 在IT界取得成功应该知道的10件事

    导读:人人似乎都同意IT行业是一个艰难领域,但怎样才能克服逆境,成为一名成功的IT专业人士呢?下文这些特质应该是关键.此文作者Jack Wallen,他在前段时间写过不少文章讨论IT职场,比如退出IT ...

  6. docker – 你应该知道的10件事

      容器并不是一个全新的技术,但这并不妨碍Docker如风暴一样席卷整个世界. 如果你在IT圈里,你一定听说过Docker.就算与其他热门技术,如:Puppet/Chef,Hadoop或者MongoD ...

  7. digitalocean教程:你应该知道的10件事

    DigitalOcean VPS性价比高,全球拥有多处机房,无须备案,非常适合守规矩的中国用户使用.digitalocean优惠码.digitalocean速度.digitalocean评测是网友关心 ...

  8. 《Offer一箩筐》求职之前你必须知道的 4 件事!!

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」. 如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Hi~ 这里是 ...

  9. 关于C#你应该知道的2000件事

    原文 关于C#你应该知道的2000件事 下面列出了迄今为止你应该了解的关于C#博客的2000件事的所有帖子. 帖子总数= 1,219 大会 #11 -检查IL使用程序Ildasm.exe d #179 ...

随机推荐

  1. 关于JavaScript中的setTimeout()链式调用和setInterval()探索

    http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/arc ...

  2. Git教程(5)常用技巧之本地分支

    http://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B 基础 Git 研发组 ...

  3. Android开发之全局获取Context的技巧

    转自<第一行代码-Android>进阶篇 这本书对于入门来说确实很棒,很简单明了的介绍了Android开发中涉及到的方方面面,对我的帮助很大,同时记录一些该书中一些对我以后开发有用的东西, ...

  4. ADT中的代码补全设置

    设置自动补全代码 刚刚学Android,有很多变量和方法 都不熟悉.需要有提示,才更加方便. 快捷方式:Alt + /    可以出现代码提示. 默认的只有输入“ .” 以后才会有代码补全提示,可作如 ...

  5. poj2886Who Gets the Most Candies? (约瑟夫环)

    http://poj.org/problem?id=2886 单点更新 初始位置都是1 如果这个人出去 位置变为0 利用线段树求区间k值 k值的计算如下 如果这个数值是负的 那么下一个人的就是((k- ...

  6. 走迷宫(DFS)

    题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2449&cid=1181 目前dfs 里的递归还是不很懂,AC代码如下: #incl ...

  7. SCOI2010 and SXOI2014 股票交易(DP)

    明显的单调队列…… 但下面的程序一直有bug 附上题解:http://blog.csdn.net/njlcazl/article/details/8611042 附上我的代码: var head,ta ...

  8. Linux 根文件系统制作

    1.创建根文件目录 mkdir rootfs(名字是随便取的) 2.创建子目录 cd rootfs mkdir bin dev etc lib proc sbin sys usr mnt tmp va ...

  9. 【转】DBCP连接池原理分析

    ---------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3. DB ...

  10. 理解Android的手势识别

    对于触摸屏,其原生的消息无非按下.抬起.移动这几种,我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理.不过,为了提高我们的APP的用户体验,有时候我们 ...