• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 云计算推波助澜 非关系数据库蓄势待发

云计算推波助澜 非关系数据库蓄势待发

录入:edatop.com     点击:
Google App Engine 

        Google App Engine本质上不是一个数据库。他是一种云技术,用于分布式Python应用程序,它是和自己隐藏在内部某个地方的数据库一起工作的。不首先通过应用程序层来访问数据库是不可能的。但是封装一个数据库命令和格式化请求数据并不困难,因此我们可以认为App Engine是一个数据库,只不过这个数据库附加了一个以Python语言写的嵌入程序。

        这种额外定制的层非常有用。许多关于其它"玩具"数据库的抱怨围绕在某个缺少的操作导致不能找到正确的结果。如果你想给这里的数据库增加一些功能,你能够用Python语言自己开发出来。如果你想要有JOIN操作,你能自己用Python语言写,也能同时定制内存缓存器。这对于那些让用户存储他们自己数据的Web应用程序特别有用。如果你需要增加安全控制权限,限制每个用户看到自己应该看到的内容,你也可以用Python语言实现。

        App Engine数据存储比Amazon的SimpleDB更具结构结构性,它的结构性很大一部分来自Python的对象模型。你存储的不是成对的键值,而是Python对象,这些对象被定义成非常类似于SQL模式。你能为每列设置数据类型,在你需要的列之间进行索引。事务机制也深深的和Python联系在一起,因为每个事务实际上就是一个Python函数。这么说有一些过分简单化,因为对这个Python函数还是有一系列的限制的(如每个数据项只能更新一次)。好的消息是Google数据项正在创建特殊的事务方法,对一些普通行为(如"创建"或者"更新"一行)进行抽象。

        检索有意做成类似于SQL查询,实际上,Google提供它自己的类SQL语言,GQL。使用的时候,GQL被解析成查询语句。App Engine还有一套基于Python的方法集,方法集合拴在一起处理数据集合和查询。你不需要浪费分析查询周期。

        值得一提的是Python栈包括了一些最好的数据库也不具备的功能特性。有一个程序库来操作图像文件,通过剪切和Goolge特有的"I feel lucky"功能对图片进行修补。你也可以将数据存储为Goolge文档,电子表格和日程数据项。起初App Engine看起来仅仅像是一个数据库,但是你也能容易的在Google栈里进行数据抽取。

        直到几周前,App Engine还在测试阶段,使用它是免费的。只要你的使用空间大小在基本的限额之内,它仍旧是免费的。另外,Google的收费机制和Amazon极为相似。存储的价格比Amazon的更便宜(每月每G字节12美分),带宽的收费是相同的(10美分没G字节)。

        Google的使用期限责任制与Amazon的不同。你需要制定一个个人隐私策略,保护你用户的数据。如果你的用户违反了版权规定,你必须反应给DMCA(千禧年数字版权法),你不这么做的话,Google将会为你这么做。Google保留在任何时间以任何理由删除内容的权利。"你同意Google删除、丢失任何存储内容和服务试用期传送内容、保持的通信而不负任何责任。"

        这些条款越来越受到关注。现在Google承诺在决定注销账户前预留90天的时间让你将数据从服务器取走。其它受关注的条款在DMCA的问题上,这使得许多人都不解。

        存在这么一个问题,如果你决定离开Google或者说Google让你离开时该怎么办。Google发布了一个不错的开发工具,让你轻松在本地机器上测试你的应用程序。使用这些工具在你机器上测试是没有技术问题的,除非你没有支持类云技术的功能。包括测试在内的数据存储自身是不会自动复制自己的,但是在自己本地机器上却能实现其它的功能。像以前一样,有一些法律问题,因为"许可证的唯一目的就是让你使用和享受提供服务的好处。"

Apache CouchDB数据库

        毫无疑问我们需要使用云技术来享受这些新的服务。CouchDB是众多开源项目中的一个,该项目构建了一个用于存储key-value pairs的数据库。这个项目使用Erlang语言编写的,受Apache 软件基金支持。你可以下载源文件在任何机器上安装,然后编译运行它们。使用它是没有费用的,除了你需要花钱购置服务器。

        CouchDB与Amazon的工具是相似的,但是它有一些特别之处。你仍旧以行的形式来存储key-value pairs,但是这些key-value pairs可以是任何标准的JSON(JavaScript Object Notation)数据类型,如布尔和数字类型。值的范围不局限于1024字节长度的字符串,有办法可以让其存储长数值,甚至是图形。所有的请求和响应格式化为JavaScript。没有基于XML的Web Services,只有JSON. 

        最大的不同在于写查询语句。CouchDB可以通过JavaScript单独写map functions和reduce functions。一个简单的查询或许仅仅就是一个map function,带有一个"If"子句来测试数据比某个数值大还是小。只有在你试图计算统计由map functions查询的数据时才会用到reduce functions。发现计算行的个数很容易办到,但是也有可能丢失了一些其它很酷的特性,因为map function只能由JavaScript来写。我除了发现计算出匹配的数目,至于其他的非学术的用途我还没有弄清楚。文档包括了一个给人印象很深刻的reduction function,用来归并统计的,但是我不知道CouchDB真的是否是处理这类事情的正确工具,如果你需要更复杂的统计,妥当的就是坚持使用传统的数据库,获得统计报表。

上一篇:利用多核PC技术进行 形编程
下一篇:10G EPON 将在 FTTB/C/N 率先应用

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图