Web of Data illustrated, meet Bob.

bob

Something to try

Next time you start an application, why not create a subdomain for your data tier, create a script for each SQL query and call it via HTTP (honestly you won't notice a speed difference), similarly expose all static files your system uses on the same (or a different) sub domain. Here's the advantages:

  1. You can scale without changing your application
  2. You can swap servers without changing your application
  3. You can move data around your server and take advantage of all the HTTP servers features.
  4. You can cache your resources and utilize HTTP caching.
  5. You can distribute or relocation your application anywhere on the net without worrying about data.
  6. You can migrate over to different data systems (swap database vendors etc) without changing your application.
  7. You can call every resource on the web in the same manner, from APIs through to linked data and all in between.
  8. You're critical SQL and data mapping code will be fully abstracted and in self contained files (ultra easy to edit, bug fix, maintain).
  9. You can take advantage of HTTP logging, and HTTP status codes instead of custom exceptions.
  10. You have a ready made RESTful API in to your data tier, so you can hook on other applications, or open it up to third parties, or the entire net.

So much more, all by one simple step - and that's only the first half of the cartoon ;)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Printed from: http://webr3.org/blog/general/web-of-data-illustrated-meet-bob/ .
© Your Name Here 2012.

10 Comments 42 Tweets

52 Comments   »

  • RetroRock says:

    The "something to try" section at the bottom is quite interesting. I’m not sure you can actually say you’ll see no speed/load differences by requesting all data via HTTP, though.

    This comment was originally posted on Reddit

  • reggieband says:

    If you are already using an ORM then I bet it wouldn’t add noticeable overhead. Besides, all of you SQL queries are going down a wire eventually (once scaling comes into play) so there is going to be some server processing those requests eventually. Chances are that server is going to be using caches 99% of the time (if you are lucky) so the overhead is a HTTP request parse + mem-lookup. I think this is really the first time I groked why people get jazzed about REST.

    This comment was originally posted on Reddit

  • bobappleyard says:

    Hey everyone! Oh, different Bob. Never mind.

    This comment was originally posted on Reddit

  • stesch says:

    Yes, the part about the format was a bit simplified. It just works if Bob has to deal with the same task from different data sources. Then the "Universal Data Model" is feasible.

    This comment was originally posted on Reddit

  • reggieband says:

    I thought about the format question too. But HTTP allows you to send the Content-Type header. So I see a few potential solutions, including 1. Send whatever raw format comes back from the database and let the app server decode it. The drawback is the leaky abstraction. 2. Use a binary format like [Protocol Buffers](http://code.google.com/apis/protocolbuffers/) and pay for encoding and decoding data. 3. Use a text based format like JSON or SOAP and pay for encoding + bandwidth. I’d probably have one server that handles raw requests and a set of servers that could do encoding to particular formats. The HTTP Request can easily contain parameters that determine the format of the response. Having the ability to specify the response content-type would be very advantageous in the long run even if it was inefficient in the short-term. As for security, HTTP already has that built in with [HTTP Secure](http://en.wikipedia.org/wiki/HTTP_Secure). Security is in layers though and chances are you’d have the same security features for your HTTP server that you would have for you db server (at the firewall level, etc.)

    This comment was originally posted on Reddit

  • shifty3 says:

    The universal data model exists: RDF. There are multiple formats available that RDF can be serialized in, e.g. RDF/XML, Turtle. Of course, you still need a schema that describes the data: RDFS, OWL. As a starting point, more information is available at [http://linkeddata.org/](http://linkeddata.org/), which is also what the comic strip was all about. There is also a [linked data deployment guide](http://virtuoso.openlinksw.com/Whitepapers/html/vdld_html/VirtDeployingLinkedDataGuide.html) for [http://en.wikipedia.org/wiki/Virtuoso_Universal_Server](Virtuoso).

    This comment was originally posted on Reddit

  • shifty3 says:

    For an example of Linked Data, see [DBPedia](http://dbpedia.org), which is dataset of structured information extracted from Wikipedia. [Information about reddit](http://dbpedia.org/page/Reddit) and its [RDF+JSON](http://dbpedia.org/data/Reddit.json) and [RDF/XML](http://dbpedia.org/data/Reddit.rdf) serializations.

    This comment was originally posted on Reddit

  • Tordek says:

    Awesome, thanks!

    This comment was originally posted on Reddit

  • ithkuil says:

    make you could put a summary paragraph at the top above the comic book for people that can read.

    This comment was originally posted on Reddit

  • webr3 says:

    Yup, as shifty3 said; universal data model is RDF, and specifically you’ll be wanting Linked Data. as for security that’s been handled for years, HTTP auth, basic/digest whatever, or even HTTPS with client side certificates, or be really future tech and go for WebID / FOAF+SSL. All this comes from the man at the top, TimBL, and I think we can safely say he know’s what he’s talking about :) All the best on your journey in to REST / linked data, should you take it – and hopefully see you there.

    This comment was originally posted on Reddit

RSS feed for comments on this post , TrackBack URI

Leave a Reply

Additional comments powered by BackType

  • webr3 avatar