首页 > 单独文章 > 正文

Google Base与微软Astoria协议比较

时间:2007-08-07 04:10:36 作者:officeba 【认证】

  Dare Obasanjo对通过HTTP访问数据库样式数据的两个新的协议进行了对比。这两个协议都基于REST,分别是Google Base和Microsoft的Astoria。

  两个协议之间的基本概念都是一样的。在SQL里面使用URL指定查询。关系和过滤器必须被编码成URL的一部分,所有的查询都是GET。

  Dare指出的第一个不同之处是,Astoria使用层级格式表示关系。比如,要指定一个客户键值为5的订单列表,你需要使用像“/Customers[5]/Orders”这样的字符串。而Google Base则使用了一种普通的模式,在指定关系的时候必须使用类别和属性。

  两者都支持过滤和排序,但是Google Base有更为丰富的语法和对跨所有类的全文查询支持。但是Google Base多少有些自作聪明,它还提供了对内联If/Else结构的支持。

  Astoria有一个非常棒的称之为Expand的属性。用这个属性用户可以同时指定请求数据的子节点,从而免除了需要执行1+N次查询以获得数据行和相关子行的集合。这些数据在合适的节点下以内联XML的形式返回。

  在Google Base里面同样也有一些Astoria所不具备的特性。比如用户可以进行拼写检查,和Google Search的工作方式类似。使用Crowd属性还可以过滤重复的信息。在这个文章中,Dare做了一个请求,“返回了所有储存在Google Base里面的餐馆,但每个菜的类型只显示两条记录”。

  Dare Obasanjo总结说:

  在比较两个方法的过程中,有很多喜欢和不喜欢的特性。我喜欢Astoria里的Expand属性,因为可以从多个层级路径中提取XML结果。但是如果要获得更好的过滤结果,它还缺少一些必要的操作和函数。

  对于Google Base的数据API,我喜欢Crowd属性和在属性集里进行测试的一个完整的函数库。还有一些操作,比如在某位置附近查找结果等,尽管对于大多数RESTful协议并不是必须的。也就是说,我真的认为有些属性太“超前”了,比如在URI里面增加if...else块等。我怀疑谁会去用这些复杂的属性,如果它们只有层次,而不是一个需要复杂过滤才能获取数据的普通命名空间的话。

 


相关文章

同类最新