Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Jonathan Allen on Jul 25, 2007 06:26 AM
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.
Would you enroll in an India Forex Group i.e http://www.indiaforex.com Groups?
We are in a similar market as Google Base but our product gives structure (while still not imposing any set of predefined categories) to our index and therefore makes it possible for users to not only perform keyword search but also browse hierarchically with the ability to specify unlimited number of filters to refine their search. Valnur http://www.valnur.com
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
1 comment
Watch Thread Reply