InfoQ

News

Google Base vs. Microsoft's Astoria

Posted by Jonathan Allen on Jul 25, 2007 06:26 AM

Community
.NET,
SOA
Topics
REST ,
.NET Framework ,
Data Access
Tags
Astoria ,
Google ,
Google Base

Dare Obasanjo has done a comparison of two new protocols for accessing database style data via HTTP. These protocols, based on REST, are the Google Base and Microsoft's Astoria.

The basic concept between the two protocols is the same. URLs are used in lieu of SQL to specify queries. Relationships and filters must be encoded as part of the URL and all requests are GETs.

The first difference pointed out by Dare is that Astoria uses a hierarchical format to represent relationships. For example, to specify that you wanted the orders for customer key 5 you would have something like "/Customers[5]/Orders". Google Base, on the other hand, uses a flat model where categories and predicates have to be used to ferret out relationships.

Both support filtering and sorting, but Google Base has a richer syntax and support for full-text queries across all categories. Google Base does get a bit carried away however, with support for inline If/Else constructs.

Astoria does have a really nice feature called expand. It allows the user to indicate they also want the children nodes for the data they requested. This eliminates the need to perform 1+N queries to get a collection of rows and the related child rows. The data comes back as inline XML under the appropriate node.

Google Base likewise has some features not found in Astoria. For example one can turn on spelling correction, which works in a manner similar to Google Search. You can also filter out repetitive information using the Crowd feature. In the article, Dare requested, "all restaurants stored within Google Base but show no more than 2 per cuisine type".

Dare Obasanjo concludes:

In comparing both approaches there is a lot to like and dislike. I like the "expand" feature in Astoria as well as the fact that I can retrieve XML results from multiple paths of the hierarchy. However there does seem to be a paucity of operators and functions for better filtering of results.

From the Google Base data API, I love the "crowd" feature and having a full library of functions for performing tests within predicates. Also some of the operators such as the ones for finding results near a certain location are quite impressive although unnecessary for the majority of RESTful protocols out there. That said, I do think they went overboard on some of the features such as having if...else blocks within the URIs. I suspect that some of that complexity wouldn't have been needed if they just had hierarchies instead of a flat namespace that requires complex filtering to get anything out of it.

 

No comments

Reply

Exclusive Content

Book Except and Interview : Aptana RadRails, An IDE for Rails Development

Aptana RadRails: An IDE for Rails Development by Javier Ramírez discusses the latest Aptana RadRails IDE, a development environment for creating Ruby on Rails applications.

Fast Bytecodes for Funny Languages

Cliff Click discusses how to optimize generated bytecode for running on the JVM. Click analyzes and reports on several JVM languages and shows several places where they could increase performance.

Scott Ambler On Agile’s Present and Future

Scott Ambler, Practice Lead for Agile Development at IBM, speaks on the current status of the Agile community and practices having a look at the perspective of the Agile’s future.

Manager's Introduction to Test-Driven Development

Dave Nicolette and Karl Scotland try to introduce non-technical managers to one of the most popular Agile development techniques: Test-Driven Development (TDD).

Structured Event Streaming with Smooks

Smooks is best known for its transformation capabilities, but in this article Tom Fennelly describes how you can also use it for structured event streaming.

How to Work With Business Leaders to Manage Architectural Change

Successful architectures evolve over time to meet changing business requirements. Luke Hohmann presents how to collaborate with key members of your business to manage architectural changes.

Colors and the UI

In this article, Dr. Tobias Komischke explains how colors used in a GUI can influence our interaction with a computer and offers advice on using the appropriate colors for the interface.

Building your next service with the Atom Publishing Protocol

In his presentation, recorded at QCon San Francisco, MuleSource architect Dan Diephouse explores ways to use the Atom Publishing Protocol (AtomPub) when building services in a RESTful way.