Channels ▼

Arnon Rotem-Gal-Oz

Dr. Dobb's Bloggers

Why the Database as a Service is a Bad Idea

August 16, 2008

Microsoft recently released SP1 for .NET. While the SP brings some nice stuff it seems, it also has some bugs and a few less than inspiring components . Another example for a less-than-stellar idea is the "ADO.NET data services" component.

 

Before I go on to explain why I think that, I should probably mention that this isn't just a Microsoft thing, as IBM also mentions similar ideas as part of its (broader and sometimes even worse) view of "Information as a Service"

So why is exposing the database through a web service (RESTful or otherwise) wrong? Let me count the ways:

  1. It circumvents the whole idea about "Services". There's no business logic.
  2. It makes for CRUD resources/services.
  3. It is exposing internal database structure or data rather than a thoughtout contract.
  4. It encourages bypassing real services and going straight to their data.
  5. It creates a blob service (the data source).
  6. It encourages minuscule demi-serices (the multiple "interfaces" of said blob) that disregard few of the fallacies of distributed computing .
  7. It is just client-server in sheep's clothing.
When it comes for ADO.NET data services you can add a few other problems like
  1. it isn't really RESTful. You can also "enhance" the services with operations like example 18 in "Using ADO.NET data services" : http://host/vdir/northwind.svc/CustomersByCity?city=London   (though it does support caching and hypermedia ). Not being only RESTful is not a bad thing in itself. It is the inconsistency of the API when the reson de etre of the service is exposing data
  2. Also (on not being RESTful) it doesn't really externalize a state machine --  it externalizes a relational model
  3. It is built on Entity Services.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video