首页 > 大数据 > 正文

是玩具还是未来?颠覆传统数据库的云

2009-06-15 11:17:41  来源:CIO时代网

摘要: 因为有意忽视由老一代数据库大师们的惨痛教训得来的许多规则,这些新的非关系型数据库引起人们的注意。由于所有的Web设计人员都梦想开发一种需要一间塞满机器的大房间来保存所有
关键词: 数据库 云计算

    你有一些要保存的数据。在过去,答案很简单:安装一个正式的数据库,把数据输入其中,然后在让计算机为你整理各种东西的同时,把你的时间花在给数据库制造商开据金额不菲的支票上。现在,事情不是那么呆板了。新一波令人激动的新工具正在把“db”这两个字母附加在许多摆脱传统关系型模型的代码上。老数据库管理员称它们为“玩具”,暗示来自这些自以为了不起的年轻人的荒唐事存在着可怕的危险。而这些自以为了不起的年轻人不理会这些警告,因为新工具好得和速度快得足以满足他们的需要。

    因为有意忽视由老一代数据库大师们的惨痛教训得来的许多规则,这些新的非关系型数据库引起人们的注意。由于所有的Web设计人员都梦想开发一种需要一间塞满机器的大房间来保存所有用户的所有数据的新东西,因此规则需要被改变,甚至被打破。

    第一个需要废除的东西就是庄严古老的JOIN。硬盘空间价格昂贵,一个好的规格化专家才能把数据保存在有限的硬盘空间中。问题是当数据分布在多台机器上时,JOIN速度变得非常非常慢。现在硬盘空间是那么的便宜,而且许多数据模型不能从标准化中得到好处。JOIN很容易遭遗弃。

    下一个新规则是开始使用像“最终一致性”这样的句子。Amazon的SimpleDB文档资料包含这个不精确的承诺:“一致性通常在数秒钟内达到,但是高系统负载或网络分区可能会增加这个时间”。当新的小人物谈论群集中的所有计算机如何找出时间来复制数据并在机器状态良好和可供使用时提供一致和答案时,他们真正惹恼了那些有怪癖的老人。立即的一致性与最终的一致性之间的这种区别有着深刻的哲学含意,取决于数据有多重要。当听到这些新数据库的新闻时伸手去拿救心药的老程序员们通常是为希望确保一天工作结束时账户平衡的银行编写程序。毕竟,如果在一次失败的数据库交易后少了一文钱,银行的那些才华横溢的领导人就不能转过身来把现金“投资”到次级抵押贷款中。

    但是,即使一些交易失败许多现代网站却仍将毫不停顿地继续前进。(我经常看到Facebook上的小故障,但地球毕竟不会因此停止转动。)这些网站中没有一个关心账目是否像银行的账目那样平衡——他们实际上不需要传统数据库的威力。

    为了让人们了解不断增加的非关系型数据库,我选择了其中一些并利用它们开发了一些测试应用。这个领域令人吃惊地多样化,虽然这类产品是那么的精干――以致它们实际上只有不超过3条的命令:插入(Insert)、更新(Update)和删除(Delete),还有一些数据库只可作为服务来使用。

    Amazon SimpleDB

    SimpleDB是Amazon大举进军云计算服务行动的最先进的、最像云的组件之一。一旦登录和得到秘密口令后,你就可以向SimpleDB 发送Web服务XML,它将为你保存数据――只要你按计费表上显示的费用付费。你不需要考虑安装任何东西或备份什么。Amazon为你把所有这些工作隐藏在它的Web服务墙后。

    SimpleDB在这些数据对之上提供两层分级。顶级是“域”,第二级是“条目”。你在选择域和条目名后,再输入数据对。SimpleDB特性比较丰富的API包括对数据分类,甚至统计与查询匹配的条目的数量。你甚至可以编写把没有以某个串开头的值排除在外的查询。对于使用SQL Server 或Oracle的人来说,这可能听起来算不了什么,但一些这类低费用数据库不能对结果集合中的数据进行分类。

    SimpleDB旨在与Amazon的Simple Storage Service (S3)的一起使用,因为数据对中的每个值的长度限制在1,024字节。这对于许多串来说足够了,但对于许多内容引擎就不够了。因此你需要保存指向S3中数据的指针。SimpleDB中有一些像Java Persistence Architecture扩展的库,这些库跨两个云,为你处理这种指针戏法。

    另一些限制会导致你开始利用多个调用来完成类似JOIN这样的工作。每个查询只能运行5秒。答案只能容纳250个条目。每个条目只能有250个数据对。一些人半开玩笑地用“description1”、“description2”和“description3”这样的词把许多值串在一起。目前还有很多突破类似限制的简单的办法,但它们开始让你置疑SimpleDB是使你的生命变得更容易,还是更困难。

    Amazon开始重新编写API以取得更多和更好的认证功能。到2009年9月,调用SimpleDB(以及其他一些服务)将通过SSL进行,从而提供安全性和认证。此外,Amazon还将加强签名机制。

    这家公司还在开发让使用这项服务更加简单的更多的库。Amazon提供几十种用于所有主要语言和一些小语种的软件包。文档资料内容全面。一般只需要很短时间你就可以上手,开始保存你的数据。

    产品的价格现在更容易控制。Amazon每月为你提供25小时计算时间的“免费级”服务――Amazon估计,这些时间足以运行每月处理不到 200万次请求的基础日志工具。此外,Amazon将存储价格由每GB 1.50美元削减为25美分。该公司似乎承诺保持收费的透明,这样用户将可以安排自己的消费结构。

    Amazon的服务条款中有几个吸引了我的注意。例如,Amazon称:“我们可能删除你在过去6个月没有访问过的任何Amazon SimpleDB内容而无须负任何责任。”这对于那些免费试用这种系统的人来说是可接受的,但这种措词似乎暗示着Amazon在保持数据库运行时权力似乎是无限的。当然,如果你是个付费客户,它承诺提前60天通知你。你可以拿回你的数据――如果你支付不断发生的存储费用的话。

    Google App Engine本身并不是数据库。它是分发Python应用的云,它具有隐藏在内部的自己的数据库。不首先经过应用层,访问这个数据库是不可能的。不过,包装数据库调用和格式化请求数据并不难,因此可以认为App Engine是具有一层用Python编写的嵌入程序的数据库。

    这个额外的定制层常常很有用。因为许多对新的非关系型数据库的抱怨在于:由于缺少一些特性,使得想要寻找的数据无法被找到。如果你想向App Engine中的数据库添加更多的功能,你可以本地用Python迅速准备好许多特性。如果你需要JOIN,你可以用Python合成一个并且同时可以定制内存缓存。如果你需要添加安全性限制每个用户只使用合适的数据,你也可以用Python编写这个功能。

    App Engine库比Amazon‘的SimpleDB更有结构,它的这种结构主要是从Python的对象模型中继承的。你保存的不是“键-值对”,而是 Python对象,并且这些对象是用某种与SQL schema非常类似的东西定义的。你可以设置每个列的类型,然后请求对你需要的列进行索引。交易机制也与Python有着很深的瓜葛,因为每个交易都实际上只是个Python功能。

    搜索被有意设置为类似SQL;事实上,Google提供它自己被解析为查询的SQL式的语言,GQL。Google还提供一套可以串在一起处理数据选择和查询的基于Python的方法。在解析查询时,不必浪费计算时间。

    需要指出的是,Python栈包括许多最好的数据库中没有的特性。它提供一个裁剪处理图像文件的库,甚至还有用某种神奇的配方修复图像的功能。如果你想给某人发电子邮件,你可以发。你还可以把数据保存为Google文档、电子报表和日历项。它可能乍看起来像是个数据库,但它很容易吸入到Google栈中。

    直到几周前,App Engine还是beta版,使用是免费的。只要你保持在一些基本的限额内,它仍是免费的。此后,Google将采用一种与Amazon的机制非常类似的机制收费。存储的价格比Amazon更便宜(每月每GB 12美分),但带宽的收费差不多(每GB 10美分)。

    Google的服务条款规定了一套不同于 Amazon的责任。你必须明确制定保密政策,保护你的用户的数据。如果你的用户违反版权规定,你必须对DMCA(数字千年版权法)移除通知做出响应,或者Google替你做这件事。Google保留在任何时间、出于任何理由删除任何内容的权力:“用户需要同意Google对删除或未能保存任何内容不承担任何责任或义务。”当然,经过几年的时间后,这些条款变得更有针对性。Google现在承诺如果它决定取消你的账户――某个它可以出于“任何理由”做的事情――给你90天从服务器移走你的数据的宽限期。

  


第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。