<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: NoSQL and the Relational Model: don&#8217;t throw the baby out with the bathwater</title>
	<atom:link href="http://matthew.yumptious.com/2009/07/databases/nosql-and-the-relational-model-dont-throw-the-baby-out-with-the-bathwater/feed/" rel="self" type="application/rss+xml" />
	<link>http://matthew.yumptious.com/2009/07/databases/nosql-and-the-relational-model-dont-throw-the-baby-out-with-the-bathwater/</link>
	<description>Geek musings touching on music, maths, applied computer science, and software development with Ruby, Javascript and others</description>
	<lastBuildDate>Tue, 06 Apr 2010 17:03:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Matthew</title>
		<link>http://matthew.yumptious.com/2009/07/databases/nosql-and-the-relational-model-dont-throw-the-baby-out-with-the-bathwater/comment-page-1/#comment-315</link>
		<dc:creator>Matthew</dc:creator>
		<pubDate>Tue, 06 Apr 2010 17:03:27 +0000</pubDate>
		<guid isPermaLink="false">http://matthew.yumptious.com/?p=37#comment-315</guid>
		<description>Nathan - that sounds like a good PhD thesis topic :) might be worth trying to address some of the sub-problems with a reasonable degree of rigour before attempting to solve them all at once though?

Eg one big concern with that approach would be the scope for DoS vulnerabilities if remote users are allowed to construct arbitrary queries. You&#039;d need a way to sandbox things in terms of computational resources, not just in terms of authorisation for the logical model.

And I guess the general problem is that of the &#039;leaky abstraction&#039;. It&#039;s not just the physical data layout that needs to be optimised beneath the relational abstraction, it&#039;s dynamic policies relating to dataflow, indexing, cache expiry policies, other trade-offs between being consistent and up-to-date and being scalable, especially in distributed scenarios. If you could find a clean formalism for expressing these kinds of policies and trade-offs and optimisations for a logical model that&#039;s expressed relationally, that would be a big part of the puzzle. Probably it has been done already to some extent, but like you say, buried in old papers behind pay-walls and a Really Big Problem to take all that research and turn it into tools that engineers can understand and respect and use.</description>
		<content:encoded><![CDATA[<p>Nathan &#8211; that sounds like a good PhD thesis topic <img src='http://matthew.yumptious.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  might be worth trying to address some of the sub-problems with a reasonable degree of rigour before attempting to solve them all at once though?</p>
<p>Eg one big concern with that approach would be the scope for DoS vulnerabilities if remote users are allowed to construct arbitrary queries. You&#8217;d need a way to sandbox things in terms of computational resources, not just in terms of authorisation for the logical model.</p>
<p>And I guess the general problem is that of the &#8216;leaky abstraction&#8217;. It&#8217;s not just the physical data layout that needs to be optimised beneath the relational abstraction, it&#8217;s dynamic policies relating to dataflow, indexing, cache expiry policies, other trade-offs between being consistent and up-to-date and being scalable, especially in distributed scenarios. If you could find a clean formalism for expressing these kinds of policies and trade-offs and optimisations for a logical model that&#8217;s expressed relationally, that would be a big part of the puzzle. Probably it has been done already to some extent, but like you say, buried in old papers behind pay-walls and a Really Big Problem to take all that research and turn it into tools that engineers can understand and respect and use.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nathan Sobo</title>
		<link>http://matthew.yumptious.com/2009/07/databases/nosql-and-the-relational-model-dont-throw-the-baby-out-with-the-bathwater/comment-page-1/#comment-314</link>
		<dc:creator>Nathan Sobo</dc:creator>
		<pubDate>Tue, 06 Apr 2010 16:40:35 +0000</pubDate>
		<guid isPermaLink="false">http://matthew.yumptious.com/?p=37#comment-314</guid>
		<description>You are right on. I&#039;ve developed an as yet unreleased relational modeling API (called Monarch) that allows you to build up relations with algebraic operations (select, join, project, etc). There&#039;s a server side component in Ruby and a client-side component in JavaScript. You can actually construct a relation on the client and send it to the server, where it is re-interpreted in terms of a set of user-specific views that sandbox the queries to a permitted subset of the database. The tree of algebraic operations can of course be compiled to SQL and run against a relational db (as has already been done by Arel and SQL Alchemy), but you can also do other things with it. For example, you can subscribe to a relation to receive updates on its contents from the browser. I&#039;m basically recapitulating the concept of a materialized view at the application level. It&#039;s a great model for subscribing to real time updates on arbitrary slices of the domain. Anyway, my thought is that by capturing the relational model at the application level, it may be possible to leverage it in a manner less monolithic than just sending SQL to a relational database. I have this idea that I could use the event propagation system to maintain my own materialized views that are stored in Cassandra. By making the application itself aware of the relational model, perhaps physical data layout and access patterns can be better controlled. Some relations can be maintained automatically. Others may need programmer intervention that explicates ad hoc optimizations. Etc. But bringing the theoretical underpinnings closer to the programming language means the language can be leveraged in making these choices. Just dipping my toe in the water of working with relations has unveiled a daunting array of theoretical challenges. For instance, if I do maintain a tree of interdependent materialized views, how do I detect and exploit any redundancy shared between the relations that define them? My research quickly leads me into heavy math and lots of papers behind academic pay walls. But the research exists and is ongoing... why limit the knowledge to the innards of proprietary databases? Anyway, drop me a line and I&#039;d love to add you as a collaborator on the repository if you&#039;re interested.</description>
		<content:encoded><![CDATA[<p>You are right on. I&#8217;ve developed an as yet unreleased relational modeling API (called Monarch) that allows you to build up relations with algebraic operations (select, join, project, etc). There&#8217;s a server side component in Ruby and a client-side component in JavaScript. You can actually construct a relation on the client and send it to the server, where it is re-interpreted in terms of a set of user-specific views that sandbox the queries to a permitted subset of the database. The tree of algebraic operations can of course be compiled to SQL and run against a relational db (as has already been done by Arel and SQL Alchemy), but you can also do other things with it. For example, you can subscribe to a relation to receive updates on its contents from the browser. I&#8217;m basically recapitulating the concept of a materialized view at the application level. It&#8217;s a great model for subscribing to real time updates on arbitrary slices of the domain. Anyway, my thought is that by capturing the relational model at the application level, it may be possible to leverage it in a manner less monolithic than just sending SQL to a relational database. I have this idea that I could use the event propagation system to maintain my own materialized views that are stored in Cassandra. By making the application itself aware of the relational model, perhaps physical data layout and access patterns can be better controlled. Some relations can be maintained automatically. Others may need programmer intervention that explicates ad hoc optimizations. Etc. But bringing the theoretical underpinnings closer to the programming language means the language can be leveraged in making these choices. Just dipping my toe in the water of working with relations has unveiled a daunting array of theoretical challenges. For instance, if I do maintain a tree of interdependent materialized views, how do I detect and exploit any redundancy shared between the relations that define them? My research quickly leads me into heavy math and lots of papers behind academic pay walls. But the research exists and is ongoing&#8230; why limit the knowledge to the innards of proprietary databases? Anyway, drop me a line and I&#8217;d love to add you as a collaborator on the repository if you&#8217;re interested.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SQL is Dead. Long Live SQL. : Dataspora Blog</title>
		<link>http://matthew.yumptious.com/2009/07/databases/nosql-and-the-relational-model-dont-throw-the-baby-out-with-the-bathwater/comment-page-1/#comment-151</link>
		<dc:creator>SQL is Dead. Long Live SQL. : Dataspora Blog</dc:creator>
		<pubDate>Wed, 25 Nov 2009 10:58:37 +0000</pubDate>
		<guid isPermaLink="false">http://matthew.yumptious.com/?p=37#comment-151</guid>
		<description>[...]  others   have noted, some balance is in [...]</description>
		<content:encoded><![CDATA[<p>[...]  others   have noted, some balance is in [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
