Rest Is Just Sql Reinvented

Take a look at these definitions:

Is the similarity just a coincidence?

"[A]ny desired computational communication pattern" is a gross exaggeration of what REST and SQL support.

REST is not a standard, nor a protocol, nor a language. It is a collection of characteristics that may or may not be present in a distributed system. HTTP, as it is typically used, is one example of REST. Arguably, SQL (as it is typically used, not the language itself) is another. The HTTP protocol and the SQL "protocol" have similar RESTful characteristics, as follows:

The similarities between the two are probably a natural result of designing distributed systems for minimal coupling, relative simplicity, and maximal opportunity for standardisation. If you were going to build a distributed system from scratch, whether to exchange documents (HTTP and the Web), facts (SQL and DBMSes), or something similar, a RESTful style -- whether you'd heard of REST or not -- would be a probable outcome of rational engineering for certain categories of distributed application.

However, a RESTful style will be a result only if the designer is concerned mostly with exchanging 'static' things (like documents, snapshots of facts or state, etc.). If the designer is concerned more about systems that are continuously updating, changing, and interacting, then one is more likely to see either PublishSubscribeModel (such as DataDistributionService), DataflowProgramming, or some other style more suitable for realtime low-latency updates, EventDrivenProgramming, and potential DeltaIsolation. Further, if data fusion of large data streams or command-and-control under disruption tolerant conditions are required, then even the above models won't fully suffice: one really needs the ability to embed agent services near the remote resources, and thus upgrade protocols and remote services on-the-fly in ad-hoc manners, to accommodate hostile and resource-limited network conditions.

A RESTful style comes from a set of assumptions that hold less and less well as systems become ever more interdependent. Can't tell you the number of times I wanted SQL to push realtime insert/delete/update modifications back to subscribers to ad-hoc queries...

For more about SQL see also ReinventingTheDatabaseInApplication, RestArchitecturalStyle, RestArchitectureDiscussion, EmbraceSql, KissWebServices

For more about X is Y see also ApiIsLanguage, DomainSpecificLanguage, GeneralApi, GreenspunsTenthRuleOfProgramming, GreencoddsTenthRuleOfProgramming

See OpenDataProtocol for a possible practical realworld example of RestIsJustSqlReinvented...

AugustZeroSeven, MarchZeroNine

View edit of March 19, 2010 or FindPage with title or text search