NOSQL,数据库架构之选

basho公司的CTO Justin Sheehy认为,NoSQL是一场运动,而非技术

Mike Loukides是O'Reilly传媒的内容战略副总裁,写了一篇名为  NoSQL运动:数据库架构抉择

原文链接:The NoSQL movement

 

         看了他写的这些,觉得确实挺有道理的。由于我所进的公司招运维,不要女生,让我觉得很纠结。推荐我往数据库方面走。我仔细思考了,觉得还不错。因为互联网行业的Linux运维本来就是一个需要“精而泛,泛而精”的职业。数据库方面的知识是必须了解的,而且如果想成为一句好的运维工程师就必须对程序及数据库有深入的了解。

         于是,我决定,现在好好了解关于Linux系统及其应用方面的东西。再不断加强数据库方面的学习。可是非系型数据库是现在的主流而NoSQL据说必火。通过专家们的分析,确实非常有道理。于是纠结的事情发生了。我到底该选择哪个呢?MySQL or NoSQL。对于一个善不成熟的NoSQL,而且必火的东西,早一天学都会有很大优势。因为学习新知识本来也要讲究时机(我是这么认为的),和广泛应用的MySQL???

        思来想去,我终于想通了。还是先从MySQL入手吧,毕竟是现在的主流。而且相关资源非常齐全。先将一个弄熟了,再学NoSQL应该就不是件难事的吧。

        起初看到这个名字,还不怎么懂,为什么说NoSQL是一起运动呢?看完全文之后,才明白,的确啊,企业在选择的时候,选择的就是一个架构。谁优谁劣都说不请,最重要的是要适合自己。不是吗?

     {  留下,做纪念。}

       自关系型数据库诞生以来,数据库领域已经产生了许多变化:

       数据激增。虽然存储的容量和CPU的速度都在飞速发展,使得数据库可以应对数据量的激增,但是数据量的确是一个棘手的问题,对于任何重要的数据库而言,分布式必不可少。

  • 亚秒级的查询响应。在八十年代,数据库查询以批处理的方式运行,查询效率低下。现在的互联网,已经从静态文件发展到由复杂数据库支撑的站点,而且对于大多数查询,我们需要亚秒级的响应时间。
  • 7*24小时正常运行。为静态HTML文件设置冗余服务器非常容易,但复杂的数据库复制就另当别论了。
  • 对高速数据流的捕捉越来越重要。许多应用的后台数据库吸纳数据的速度远远快于处理数据查询的速度。比如,在日志应用或者分布式传感应用数据库中,写入比查询频繁的多。ETL(数据提取、转换和加载)固然不可或缺,但对高速数据流的捕捉显得越来越重要。
  • 非结构化数据。非结构化数据早就存在,并不是数据世界里的新景观,但我们越来越不希望强制数据结构。
  • 牺牲ACID。ACID(原子性、一致性、隔离性、持久性)虽然很重要,但现代应用带来的挑战让我们意识到,为了实现其它特性(如低延迟和可用性),我们必须做出牺牲。
  • 需求的不断变化,迫使我们不得不思考全新的数据库解决方案:

    • 分布式。庞大的数据库只是采用分布式的一个原因,另一个原因是现代应用(尤其是Web应用)要求满足许多在线用户的瞬时响应。响应时间每超时一秒,都会造成大量用户流失。
    • 实时计算。如果你正通过构建在线应用支持业务分析,那么用户必然期望实时业务分析。这不仅便捷,每天执行成百上千的查询,彻底改观了我们的工作。
    • 可扩展性。如果你正在构建一个面向客户的应用,进行业务分析,那么可扩展性是一个大问题。垂直可扩展性已经近乎极限,物理定律的制约使得Intel架构的时钟频率在3.5GHz的范围内徘徊不前,水平可扩展性(构建多节点分布式系统)成了唯一的途径。
    • 高可用性。应用系统架构中的任何一部分出现单点故障,都会导致灾难性的后果,数据库系统必须提供高可用性支持。一个高可用性系统天然就是一个分布式系统。
    • 数据分片。对于一个给定的分布式数据库,接下来的问题就是数据分片。关系型数据库在多台主机之间采用手动分片,或者基于数据本身的某些属性对数据集进行分区。MongoDB非常容易进行数据分片,HBase、Riak和Cassandra本身就是分布式数据库。
    • Schemaless(无模式)。NoSQL数据库通常称为schemaless(无模式),因为它们与关系型数据库的架构形态无关。事实上,NoSQL并非完全无模式。在像CouchDB或MongoDB这样的文档数据库中,文档是许多键值对(key-value)。Riak也可以被看做是一个文档数据库,但比文档类型更灵活。Cassandra和HBase被称为面向列的数据库。在大多数应用开发中,NoSQL数据库前期规划更少,灵活性更大,更适合敏捷开发。
    • ACID和CAP。ACID属性深入人心,但如果我们仔细思考数据库的架构,就会发现对一个分布式系统实现一致性和隔离性等ACID属性非常困难。ACID属性非常重要,但自由的选择需要折中。CAP定律指出,对于一个分布式计算系统,一致性、可用性和分区容错性只能同时满足其中二者。
    • 脚本语言。所有的关系型数据库都有SQL语言变种(例如,T-SQL和PL/SQL)作为数据脚本语言。在非关系型数据库的世界里,也有一些脚本语言可用。CouchDB和Riak支持JavaScript脚本,MongoDB也是如此。Hadoop项目分裂出的几个脚本编程语言项目(包括Pig和Hive)适用于HBase。Redis项目正在试验集成Lua脚本语言。
    • RESTful接口。只有CouchDB和Riak提供了RESTful接口。
    • 图形。Neo4J是一个为维护图形而专门设计的数据库。图形是非常灵活的数据结构,图数据库可以模拟其它任何类型的数据库。
    • SQL。我们一直在探讨NoSQL运动,但也无法忽略SQL这门熟悉的编程语言。有人正在致力于将SQL移植到Hadoop之上,也许我们未来会采用混合的数据库架构。
    • 科学数据SciDB是一个面向大型科研应用的数据库项目,其存储模型基于多维数组。SciDB的存储可以轻松扩展到数百PB,每晚收集数十TB的数据。
    • 混合架构。 NoSQL运动与数据库架构的选择息息相关。也许最后的数据库架构选择是混合架构,而不是某种单一的数据库技术。只有选择混合架构,才能博采众长,与技术的发展相适应。混合架构是在传统电子商务站点中融入社会化特性的最佳方式。

    摘自:http://cloud.csdn.net/a/20120223/312320.html

     

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值