半结构化数据集成是新兴Web 2.0 API集合所面临的主要挑战之一。无论数据是源自于一个客户的应用程序或者是企业网络服务,寻找其最常见的数据共同特性是十分必要的,从而确保本地运行的服务或云计算服务能够互相了解。
RESTful开放式数据协议–即为更多人所知的OData API –有可能实现基于云计算企业软件即服务产品和平台即服务项目的互相联系,从而成就其“大数据”服务,如整个Netflix的电影目录以及Windows Azure市场的DataMaret.
结构化数据源–例如关系型数据库、电子表格以及包含逗号分隔符的数值文件–主要依赖于无所不在的开放式数据库连接(ODBC)的数据访问API,这一API集合是由微软公司继承SQLAccess集团公司的调用级接口(CLI)并于1992年发布的。Sun Microsystems公司于1997年发布了Java数据库连接(JDBC) v1版API,并在之后将其添加至Java标准版产品中。一个JDBC-ODBC的接口可确保JDBC能够访问ODBC类数据库。ODBC和JDBC API可以处理SQL对表格式数据的 SELECT查询,以及INSERT、UPDATE和DELETE等操作,并可执行已被存储的批处理操作。微软公司的OLE数据库和ActiveX数据对象(ADO)于1996年底开始作为微软数据访问组件(MDAC)的一部分补充ODBC.但是ODBC和JDBC仍然还是客户端/服务器环境下的结构化数据连接混合语言。
随着大量基于网络HTML和XHTML文件半结构化数据的广泛应用,业内对于网络友好、能够访问ODBC/JDBC云计算兼容的数据访问API的需求也甚嚣尘上。Dave Weiner2002年发布了Really Simple Syndication (RSS) 2.0 API,该API是他从Netscape公司的RDF Site Summary和Rich Site Summary API中派生出来的。Wikipedia将RSS描述为一个用于经常性更新发布工作(例如博客、新闻头条、音频和视频)的消息源的标准化格式。
1993年,Sam Ruby设立了一个讨论RSS改良的Wiki,吸引了大量的网络应用程序开发人员和内容供应商。Wiki的成员于2003年发布了Atom v0.2和v0.3;而Google公司将Atom作为其Blogger、Google News和Gmail的统一格式。2004年,互联网工程任务组(IETF)成立了由Tim Bray和Paul Hoffman主导的AtomPub工作组,用以实现Atom格式的标准化。2005年底,IETF为Atom 统一格式v1.0发布了一个IETF REC 4287的建议标准,并于2007年10月为Atom发布协议(AtomPub)发布了一个RFC 5023的建议标准。Google公司的GData格式就是基于Atom和AtomPub v1.0的。
在2007年四月拉斯维加斯召开的MIX07大会的“在云计算中访问数据服务”专题会议上,微软公司数据架构师Pablo Castro提出了一个代号为“Astoria”基于AtomPub的网络数据访问扩展。这些服务的设计目的是:
? Web友好,并不仅仅是普通的HTTP
? 针对不同模式的统一模式
? 关注数据,而非其格式
? 保持高层次,存储抽象化
Astoria的主要功能之一就是能够通过统一的资源标识符访问任何的数据元素(被称为实体)以及通过在相关图形中导航访问相关实体。微软公司的实体数据模型v1定义了可用实体,其中包括数据类型及其其他相关信息。Astoria团队还指定了URI兼容的查询选项,以实现筛选、排序、分页和导航等功能。
最初,Astoria曾支持纯XML(POX)、RDF+XML以及JavaScript Object Notation (JSON)格式。之后,在2008年二月Astoria团队开始考虑使用AtomPub和Web3S来代替POX和RDF+XML,设定AtomPub作为默认选项,JSON作为AJAX应用程序的替代格式。2008年五月微软公司推出Astoria作为ADO.NET Data Services Framework Beta 1,它与ADO.NET Entity Framework Beta 1一起作为。NET 3.5 Beta 1和Visual Studio 2008 SP1的组件。在2009年十一月召开的微软专业开发人员大会2009上,Astoria的名称也从ADO.NET Data Services改为Windows Communication Foundation (WCF) Data Services.而在2010年年初,微软公司又将ADO.NET Data Services的格式更名为OData.
那么到底何为OData?
开放式数据协议是一个基于REST用于对配置为“数据服务”的网络可访问资源集合执行创建、读取、更新和删除(CRUD)等操作的协议。微软公司于2010年三月建立了OData.org网站并于次年五月发布了当前的[MS-ODATA]:开放式数据协议(0Data)规格发布于2011年5月。
根据0Data常见问题中的说法,“0Data可能会在未来某个时候根据来自于社区的反馈而提交给一个标准组织。在此期间,开放式数据协议规格符合微软公司的开发规范承诺(OSP),它允许包括开源项目在内的第三方在任何运行时和客户使用服务时建立数据服务。”
最流行的浏览器可直接显示0Data源。如图1所示,一个SDK采样只读Northwind服务的订单明细表的URI返回第一Order_Details项的AtomPub代表。
图1. IE 9显示了Northwind采样数据库中50个订单明细记录的第一个0Data源。
由图1可见,0Data是一个开销大量XML资源的冗长协议。第一批50个订单明细记录的条目长度为65,536字节。在$format=json的附加查询选项下,SDK采样只读Northwind服务供应商订单明细表的URI返回的第一个Order_Details项的JSON表示如下:
{ “d” :{ “results”:[ { “__metadata”:{ “uri”:“https://odata.sqlazurelabs.com/OData.svc/v0.1/jc650b4zaf/Northwind/Order_Details(OrderID=10248,ProductID=11)”, “type”:“Northwind.Order_Details” }, “Discount”:0, “OrderID”:10248, “ProductID”:11, “Quantity”:12, “UnitPrice”:“14.0000”, “Order”:{ “__deferred”:{ “uri”:“https://odata.sqlazurelabs.com/OData.svc/v0.1/jc650b4zaf/Northwind/Order_Details(OrderID=10248,ProductID=11)/Order” } }, “Product”:{ “__deferred”:{ “uri”:“https://odata.sqlazurelabs.com/OData.svc/v0.1/jc650b4zaf/Northwind/Order_Details(OrderID=10248,ProductID=11)/Product” } } }, …
第一批50个JSON项使用了29,859字节,是AtomPub版的45.6%.对SQL Azure实验室的0Data服务的查询,最多返回50个条目。如果数据源超过50行,由$skiptoken指定跳过若干条目,从连续数据页开始。微软公司于6月29日宣布了MIT许可下data.js的可用性,适用于本地存储0Data和HTML 5 功能的JavaScript库。
WCF数据服务是0Data的一个。NET客户(消费者)库,这是一个Visual StudioLightSwitch 应用程序的可选数据源。Windows Azure SDK的Microsoft.Windows.Azure.StorageClient库是另外一个0Data ADO.NET集合数据源的。NET客户库。截至2011年6月,供应商提供对Silverlight 4, PHP, Java, Ruby, Objective-C (iPhone), Android, Windows Phone 7, .NET Compact Framework 3.5, Joomla 以及Drupal等额外客户库的链接。
当前,0Data生产者包括SAP NetWeaver 2.0 Gateway、IBM Web Sphere、GeoREST、Microsoft Excel (通过PowerPivot)、 SharePoint 2010以及SharePoint Online (参见图2)、SQL Azure、Windows Azure Table Storage、 Windows Azure Marketplace DataMarket,、SQL Server Reporting Services以及Dynamics CRM.0Data SDK还提供了与服务器库的链接,从而实现创建0Data生产者。截至2011年6月,生产商库支持。NET Framework 3.5 SP1、 .NET Framework 4.0、odata4j (Java)、Rails OData (一个Ruby的预发布版)和MySQL OData.
图2. IE 9显示了Northwind采样数据库中插入SharePoint Online列表项1000个订单明细记录的第一个0Data源。(SharePoint限制查询最多1000项。)
尽管0Data目前的关注重点仍然是微软,但0Data也显示了在其他开发环境中获得大量占有率的趋势,特别是Java和Ruby的消费者和生产者库目前都可用。如果你需要从本地和基于云计算的众多源连接企业数据,请试一下0Data.毫无疑问,0Data将开始成为网络世界的ODBC.