云计算推波助澜 非关系数据库蓄势待发
时间:03-18
来源:51CTO
点击:
在过去的日子,当你有数据需要存储管理的时候,办法很简单:安装一个正式的数据库,将需要存储的数据录入进去,让系统帮你进行分类管理,而你只需要花时间去选择哪家数据库提供商。现在事情并非如此,一些新兴数据库工具开始泛滥,赋予了"数据库"这几个字眼更多的含义,打破了传统数据库关系模型。有经验的数据库管理员称之为"玩具",认为它们有很严重的威胁,而这些威胁就是来自这些新兴的数据库。一些傲慢的家伙为新兴数据库很好用,速度很快,满足他们手头的需求,置威胁于不顾。
非关系型数据库正在吸引人们的注意,因为它们可以忽略许多的规则,而这些规则正是经验丰富的数据库管理员积累的深刻教训。问题是现在这些规则的条条款款已成为一种束缚,使得很难创建一个真正强大的、让多台计算机一起运行的数据库系统。因为所有的Web应用程序设计者都梦想构建一个多机运行的应用程序,保存所有用户的所有数据,要想做到这些,有些老的规则需要避开,甚至是打破。
首当其冲的事情就是摒弃旧的JOIN操作。大学生曾经严格的按照课后作业的要求,如何标准化数据,将一个表格划分为许多的部分。那个时候磁盘非常贵,数据标准化工作显得额外重要。问题当数据分散在不同机器上的时候,JOIN操作真的使得速度变得很慢。现在磁盘空间非常便宜,许多数据模型并没有从数据标准化中受益,因此JOIN操作很容易就被摒弃。
立即一致性和最终一致性的差别依赖数据的重要性来定。那些听到这些新兴数据库就要拿心脏病药的保守者通常是银行的程序员,它们希望确保每天结束后收支相等。毕竟银行的领导不能忍受由于失败的数据库事务而导致帐目出错。
但是许多现代的Web站点不会因为某个事务失效而不能运行的。我看见Facebook经常有小故障。不会因为某些评论数据丢失了就不能运行了。这些网站不会像银行那样苛刻关注帐目清算,它们不需要关系数据库所有的功能。(一些人开玩笑说银行应该把购买Oracle许可证的钱拿出来成立一个基金,赔偿那些因为失败的事务操作导致钱丢失的人们。)
为了更好地理解这些非关系型数据库的扩展层,我捡了几个进行测试,构建了几个测试应用程序。发现它们主要的命令操作不会超过这三个:插入、更新、删除。有一些提供群集,有一些只能提供某种服务,有一些夸大其词说接管整个服务器栈,有一些比其它的数据库提供更好的AJAX工具。但是,他们中没有一个合适,它们都不能供银行来使用。
文中我没有介绍其它几个有趣的数据库,一是由于本文篇幅限制,二是因为它们和我以下提到的几个没有多大的区别。举个例子,Sun公司正在构建一个关系型数据库,称之为Derby,用Java虚拟机一起使用。Oracle也有它自己的嵌入式数据库,叫做Berkeley DB,但是现在称之为Oracle Embedded Database。有些程序员甚至创建了低费用的程序库,将对象直接写入到磁盘中。这些产品也延伸了"数据库"这几个字眼的含义,但是我不准备在这里陈述它们。
Amazon SimpleDB数据库
SimpleDB是Amazon推进云计算服务计划中最为高级和最似云技术的组件之一。一旦你签约雇佣Amazon的服务,获得通行密码,你就能将包含键值的Web Service XML文件装载到SimpleDB中去,只要你持续支付费用,它将一直为你存储这些数据。你不需要考虑安装任何应用程序或者备份什么。Amazon在它的Web service墙后已经为你隐藏了所有这些工作。
SimpleDB是两级分层结构。最上面的一级是"domain",第二级是"item"。在你选择domain 和item 名之后,你就写入了键值。SimpleDB相对来说有丰富的API,拥有对数据排序能力,甚至具备计算出匹配查询结果的item数目的能力。你甚至能写查询语句,可以查询那些不从某个特定字符串开始的值。这或许和我们使用的SQL和Oracle数据有很大的区别,但是这些低租金的数据库也有自身的缺点,甚至不能对结果集进行排序。
SimpleDB设计初衷是和Amazon的Simple Storage Service (S3)一起使用的,但是每对键值的大小限制在1024字节。这对于很多的字符串来说,已经足够了,但是对于许多的内容引擎是不够的。因此你在S3中存储的是数据的指针。
现在使用类似JOIN这样的操作还有一些限制,需要多种调用。每个查询只能运行5秒钟。结果仅能保持250个item。每个item仅有250对。还有许多的常见操作有限制,有人开始思考SimpleDB是给我们的生活带来了便捷或是麻烦。
Amazon开始重写API,企图得到更多更好的认证。到2009年9月,整个SSL都会运行call,提供安全和认证。Amazon也增加了安全机制,使用更多的复杂的哈希算法来将更多的请求打包。这些仅仅是Amazon取得的小的改进。
该公司也创建了更多的程序库,让服务的使用更加简单。这里有许多的软件包和主流以及一些少见的语言结合使用。文档相当广泛,很容易找到。通常你可以很快启动你的工作,开始存储数据所用的时间也缩短了。
现在价格也很合适。Amazon最近将存储的价格从1.5美元降到25美分每G字节。公司将收费透明化,目的是激励用户来计划他们的消费预算。
Amazon有一套先进的条款来处理使用期限问题。有许多的条款来处理你可能遇到的问题,有一些吸引了我的注意力。举个例子,Amazon申明,"我们可能删除最近6个月存在SimpleDB中却没有访问的内容,但是不用负任何责任。"这对于只是为了给系统做测试的人来说很容易接受。从措辞来看,Amazon此举的目地就是为了保持它的数据中心良好运行。
还有其他的一些问题。举个例子,使用期限条款包括一长列禁止数据,如"助长非法活动",带有"种族、性别、宗教、国籍、残疾、性取向、年龄"歧视的数据都是禁止的。这存在一个问题。想像一下如果为某个教堂开展反男同性恋婚姻运行了一个网站。这听起来你确实有性取向歧视。但是,如果你是开展男同性恋婚姻的宣传活动,反对这些教堂的呢,这个时候还能说你是在歧视这些基本的宗教信仰吗?
我对那些正在分析处理这些抱怨的律师感到遗憾,但是至少他们可以高枕无忧了,因为他们知道这些数据可以以任何理由或者是没有理由的删除掉。如果你仅使用免费的服务,Amazon不会给你任何通知,就会删除你的数据,但是你如果是付费用户,就承诺有60天的提醒通知,在期限内你就能将你的数据处理好。
非关系型数据库正在吸引人们的注意,因为它们可以忽略许多的规则,而这些规则正是经验丰富的数据库管理员积累的深刻教训。问题是现在这些规则的条条款款已成为一种束缚,使得很难创建一个真正强大的、让多台计算机一起运行的数据库系统。因为所有的Web应用程序设计者都梦想构建一个多机运行的应用程序,保存所有用户的所有数据,要想做到这些,有些老的规则需要避开,甚至是打破。
首当其冲的事情就是摒弃旧的JOIN操作。大学生曾经严格的按照课后作业的要求,如何标准化数据,将一个表格划分为许多的部分。那个时候磁盘非常贵,数据标准化工作显得额外重要。问题当数据分散在不同机器上的时候,JOIN操作真的使得速度变得很慢。现在磁盘空间非常便宜,许多数据模型并没有从数据标准化中受益,因此JOIN操作很容易就被摒弃。
立即一致性和最终一致性的差别依赖数据的重要性来定。那些听到这些新兴数据库就要拿心脏病药的保守者通常是银行的程序员,它们希望确保每天结束后收支相等。毕竟银行的领导不能忍受由于失败的数据库事务而导致帐目出错。
但是许多现代的Web站点不会因为某个事务失效而不能运行的。我看见Facebook经常有小故障。不会因为某些评论数据丢失了就不能运行了。这些网站不会像银行那样苛刻关注帐目清算,它们不需要关系数据库所有的功能。(一些人开玩笑说银行应该把购买Oracle许可证的钱拿出来成立一个基金,赔偿那些因为失败的事务操作导致钱丢失的人们。)
为了更好地理解这些非关系型数据库的扩展层,我捡了几个进行测试,构建了几个测试应用程序。发现它们主要的命令操作不会超过这三个:插入、更新、删除。有一些提供群集,有一些只能提供某种服务,有一些夸大其词说接管整个服务器栈,有一些比其它的数据库提供更好的AJAX工具。但是,他们中没有一个合适,它们都不能供银行来使用。
文中我没有介绍其它几个有趣的数据库,一是由于本文篇幅限制,二是因为它们和我以下提到的几个没有多大的区别。举个例子,Sun公司正在构建一个关系型数据库,称之为Derby,用Java虚拟机一起使用。Oracle也有它自己的嵌入式数据库,叫做Berkeley DB,但是现在称之为Oracle Embedded Database。有些程序员甚至创建了低费用的程序库,将对象直接写入到磁盘中。这些产品也延伸了"数据库"这几个字眼的含义,但是我不准备在这里陈述它们。
Amazon SimpleDB数据库
SimpleDB是Amazon推进云计算服务计划中最为高级和最似云技术的组件之一。一旦你签约雇佣Amazon的服务,获得通行密码,你就能将包含键值的Web Service XML文件装载到SimpleDB中去,只要你持续支付费用,它将一直为你存储这些数据。你不需要考虑安装任何应用程序或者备份什么。Amazon在它的Web service墙后已经为你隐藏了所有这些工作。
SimpleDB是两级分层结构。最上面的一级是"domain",第二级是"item"。在你选择domain 和item 名之后,你就写入了键值。SimpleDB相对来说有丰富的API,拥有对数据排序能力,甚至具备计算出匹配查询结果的item数目的能力。你甚至能写查询语句,可以查询那些不从某个特定字符串开始的值。这或许和我们使用的SQL和Oracle数据有很大的区别,但是这些低租金的数据库也有自身的缺点,甚至不能对结果集进行排序。
SimpleDB设计初衷是和Amazon的Simple Storage Service (S3)一起使用的,但是每对键值的大小限制在1024字节。这对于很多的字符串来说,已经足够了,但是对于许多的内容引擎是不够的。因此你在S3中存储的是数据的指针。
现在使用类似JOIN这样的操作还有一些限制,需要多种调用。每个查询只能运行5秒钟。结果仅能保持250个item。每个item仅有250对。还有许多的常见操作有限制,有人开始思考SimpleDB是给我们的生活带来了便捷或是麻烦。
Amazon开始重写API,企图得到更多更好的认证。到2009年9月,整个SSL都会运行call,提供安全和认证。Amazon也增加了安全机制,使用更多的复杂的哈希算法来将更多的请求打包。这些仅仅是Amazon取得的小的改进。
该公司也创建了更多的程序库,让服务的使用更加简单。这里有许多的软件包和主流以及一些少见的语言结合使用。文档相当广泛,很容易找到。通常你可以很快启动你的工作,开始存储数据所用的时间也缩短了。
现在价格也很合适。Amazon最近将存储的价格从1.5美元降到25美分每G字节。公司将收费透明化,目的是激励用户来计划他们的消费预算。
Amazon有一套先进的条款来处理使用期限问题。有许多的条款来处理你可能遇到的问题,有一些吸引了我的注意力。举个例子,Amazon申明,"我们可能删除最近6个月存在SimpleDB中却没有访问的内容,但是不用负任何责任。"这对于只是为了给系统做测试的人来说很容易接受。从措辞来看,Amazon此举的目地就是为了保持它的数据中心良好运行。
还有其他的一些问题。举个例子,使用期限条款包括一长列禁止数据,如"助长非法活动",带有"种族、性别、宗教、国籍、残疾、性取向、年龄"歧视的数据都是禁止的。这存在一个问题。想像一下如果为某个教堂开展反男同性恋婚姻运行了一个网站。这听起来你确实有性取向歧视。但是,如果你是开展男同性恋婚姻的宣传活动,反对这些教堂的呢,这个时候还能说你是在歧视这些基本的宗教信仰吗?
我对那些正在分析处理这些抱怨的律师感到遗憾,但是至少他们可以高枕无忧了,因为他们知道这些数据可以以任何理由或者是没有理由的删除掉。如果你仅使用免费的服务,Amazon不会给你任何通知,就会删除你的数据,但是你如果是付费用户,就承诺有60天的提醒通知,在期限内你就能将你的数据处理好。
- 浅析SQL Server与Oracle区别(04-22)
- 5条DBA最佳实践指导(04-25)
- Oracle简化Oracle 10g中用户管理(04-29)
- 讲解基于Oracle高性能动态SQL程序开发(04-29)
- 在Linux系统下优化Oracle具体步骤(05-01)
- 如何选择Oracle优化器(04-30)