<?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: Polymorphism</title>
	<atom:link href="http://third-bit.com/blog/archives/3350.html/feed" rel="self" type="application/rss+xml" />
	<link>http://third-bit.com/blog/archives/3350.html</link>
	<description>Data is ones and zeroes &#124; Software is ones and zeroes and hard work.</description>
	<lastBuildDate>Fri, 03 Feb 2012 17:07:30 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Waldemar Kornewald</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3325</link>
		<dc:creator>Waldemar Kornewald</dc:creator>
		<pubDate>Fri, 08 Jan 2010 13:10:33 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3325</guid>
		<description>You might be interested in this project which wants to add support for non-relational DBs in Django&#039;s ORM:

http://bitbucket.org/wkornewald/django-nonrel-multidb/</description>
		<content:encoded><![CDATA[<p>You might be interested in this project which wants to add support for non-relational DBs in Django&#8217;s ORM:</p>
<p><a href="http://bitbucket.org/wkornewald/django-nonrel-multidb/" rel="nofollow">http://bitbucket.org/wkornewald/django-nonrel-multidb/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: D. Richard Hipp</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3324</link>
		<dc:creator>D. Richard Hipp</dc:creator>
		<pubDate>Tue, 05 Jan 2010 21:37:43 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3324</guid>
		<description>As promised, additional thoughts on why Fossil is
a NoSQL database:

  http://www.fossil-scm.org/fossil/doc/tip/www/theory1.wiki</description>
		<content:encoded><![CDATA[<p>As promised, additional thoughts on why Fossil is<br />
a NoSQL database:</p>
<p>  <a href="http://www.fossil-scm.org/fossil/doc/tip/www/theory1.wiki" rel="nofollow">http://www.fossil-scm.org/fossil/doc/tip/www/theory1.wiki</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blake Winton</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3323</link>
		<dc:creator>Blake Winton</dc:creator>
		<pubDate>Sat, 02 Jan 2010 21:19:42 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3323</guid>
		<description>Aran:

I think part of the attraction of using SQL is that you can switch backends, so you don&#039;t want to use Postgres-specific features because that would tie you down.

On the other hand, once you&#039;ve picked, say CouchDB, there&#039;s really nothing else you could easily switch to, so you might as well take full advantage of CouchDB&#039;s power.  (And we&#039;re not going to mention anything about not _actually_ being able to easily switch to a different SQL backend. ;)</description>
		<content:encoded><![CDATA[<p>Aran:</p>
<p>I think part of the attraction of using SQL is that you can switch backends, so you don&#8217;t want to use Postgres-specific features because that would tie you down.</p>
<p>On the other hand, once you&#8217;ve picked, say CouchDB, there&#8217;s really nothing else you could easily switch to, so you might as well take full advantage of CouchDB&#8217;s power.  (And we&#8217;re not going to mention anything about not _actually_ being able to easily switch to a different SQL backend. <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aran</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3322</link>
		<dc:creator>Aran</dc:creator>
		<pubDate>Sat, 26 Dec 2009 19:04:17 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3322</guid>
		<description>I think there&#039;s a conflating problem, which is the habit of ORMs to encourage programmers to use ORM classes to hold model logic. It&#039;s currently a commonly accepted &quot;good practice&quot; but I disagree with it.

I think apps requiring great flexibility should make more frequent use of the State pattern, delegating persistence to ORM objects but retaining model logic. I think the additional layer of indirection affords the flexibility needed to solve problems like the tagging problem, because a domain object like a bug report can delegate to more than ORM object, and be easily decorated by things like &quot;Taggable,&quot; when you want to avoid having multiple tag namespaces.



On a separate note, I&#039;m not sure I follow your logic about not using e.g. Postgres&#039;s full power. If Postgres had an extension that fixed your problem, why would it be worse to be tied to it than it is to be tied to one specific NoSQL program?</description>
		<content:encoded><![CDATA[<p>I think there&#8217;s a conflating problem, which is the habit of ORMs to encourage programmers to use ORM classes to hold model logic. It&#8217;s currently a commonly accepted &#8220;good practice&#8221; but I disagree with it.</p>
<p>I think apps requiring great flexibility should make more frequent use of the State pattern, delegating persistence to ORM objects but retaining model logic. I think the additional layer of indirection affords the flexibility needed to solve problems like the tagging problem, because a domain object like a bug report can delegate to more than ORM object, and be easily decorated by things like &#8220;Taggable,&#8221; when you want to avoid having multiple tag namespaces.</p>
<p>On a separate note, I&#8217;m not sure I follow your logic about not using e.g. Postgres&#8217;s full power. If Postgres had an extension that fixed your problem, why would it be worse to be tied to it than it is to be tied to one specific NoSQL program?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: D. Richard Hipp</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3321</link>
		<dc:creator>D. Richard Hipp</dc:creator>
		<pubDate>Fri, 25 Dec 2009 23:09:41 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3321</guid>
		<description>Greg, Fossil *is* a NoSQL database - albeit one that is specialized to the particular task of version control, not a general purpose library designed to build other applications around.  Fossil is not tied to SQL or SQLite.  The current Fossil implementation uses SQLite as its local data store and as a high-level scripting language to simplify the implementation, but you could very easily reimplement Fossil using any old key/value pair or pile-of-files approach for the local data storage - you&#039;d just need to work a little harder and write a bunch more code.  SQLite is used in Fossil because it helps make the job easier and it was readily at hand.  Nothing in the file format specification for Fossil says anything about SQL, relations, or tables.  Fossil is in no way designed around SQL or SQLite.

But your blog does bring out the fact that I need to do a better job of explaining the concepts behind Fossil and perhaps even use the word &quot;NoSQL&quot; someplace in the Fossil documentation.  I&#039;ll work on that after the Christmas break....</description>
		<content:encoded><![CDATA[<p>Greg, Fossil *is* a NoSQL database &#8211; albeit one that is specialized to the particular task of version control, not a general purpose library designed to build other applications around.  Fossil is not tied to SQL or SQLite.  The current Fossil implementation uses SQLite as its local data store and as a high-level scripting language to simplify the implementation, but you could very easily reimplement Fossil using any old key/value pair or pile-of-files approach for the local data storage &#8211; you&#8217;d just need to work a little harder and write a bunch more code.  SQLite is used in Fossil because it helps make the job easier and it was readily at hand.  Nothing in the file format specification for Fossil says anything about SQL, relations, or tables.  Fossil is in no way designed around SQL or SQLite.</p>
<p>But your blog does bring out the fact that I need to do a better job of explaining the concepts behind Fossil and perhaps even use the word &#8220;NoSQL&#8221; someplace in the Fossil documentation.  I&#8217;ll work on that after the Christmas break&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Janes</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3320</link>
		<dc:creator>David Janes</dc:creator>
		<pubDate>Thu, 24 Dec 2009 12:00:19 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3320</guid>
		<description>This post has been itching my brain all evening, to the point of losing sleep. There are three things here to me:

1. NoSQL - exactly as Greg says: if you&#039;re going to use this stuff, abstracting away the platform doesn&#039;t make sense.

2. *SQL - for things that SQL does well, one probably should continue to use it even in a NoSQL application, e.g. account management. And there&#039;s no point here complaining that you can&#039;t do joins from the *SQL to NoSQL world (e.g. again, to map say a user account into NoSQL rows), since normalization, joins, etc are what you gave up to gain the NoSQL features.

3. Common stuff - independent of whether one is doing *SQL or NoSQL applications, or hybrids, there&#039;s things that are common to both/all: paging through results (row level stuff), displaying results in templates (row data stuff), and so forth. Here&#039;s where we&#039;d like to see common code, no matter what the back end that&#039;s providing the data. Unfortunately, there&#039;s probably very few people with the synthesis knowledge and reputation to adapt Django to this right now.</description>
		<content:encoded><![CDATA[<p>This post has been itching my brain all evening, to the point of losing sleep. There are three things here to me:</p>
<p>1. NoSQL &#8211; exactly as Greg says: if you&#8217;re going to use this stuff, abstracting away the platform doesn&#8217;t make sense.</p>
<p>2. *SQL &#8211; for things that SQL does well, one probably should continue to use it even in a NoSQL application, e.g. account management. And there&#8217;s no point here complaining that you can&#8217;t do joins from the *SQL to NoSQL world (e.g. again, to map say a user account into NoSQL rows), since normalization, joins, etc are what you gave up to gain the NoSQL features.</p>
<p>3. Common stuff &#8211; independent of whether one is doing *SQL or NoSQL applications, or hybrids, there&#8217;s things that are common to both/all: paging through results (row level stuff), displaying results in templates (row data stuff), and so forth. Here&#8217;s where we&#8217;d like to see common code, no matter what the back end that&#8217;s providing the data. Unfortunately, there&#8217;s probably very few people with the synthesis knowledge and reputation to adapt Django to this right now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Wilson</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3319</link>
		<dc:creator>Greg Wilson</dc:creator>
		<pubDate>Thu, 24 Dec 2009 11:22:15 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3319</guid>
		<description>@Travis Thanks for the pointer --- nice to have the hackery hidden under an ORM layer, but I&#039;d still like a DB that made the hackery unnecessary :-)</description>
		<content:encoded><![CDATA[<p>@Travis Thanks for the pointer &#8212; nice to have the hackery hidden under an ORM layer, but I&#8217;d still like a DB that made the hackery unnecessary <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rene Dudfield</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3318</link>
		<dc:creator>Rene Dudfield</dc:creator>
		<pubDate>Thu, 24 Dec 2009 08:13:07 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3318</guid>
		<description>Have you tried zodb?

There are lots of tools that use zodb, and you can even use sql dbs as a backend if you like (with relstorage).

Personally I&#039;m using a very simple key/value store. ( see http://renesd.blogspot.com/2009/12/pywebsitesqlitepickle-sqlite-vs-pickle.html ) Since zodb does not support python3 and there seems to be no roadmap for doing so.</description>
		<content:encoded><![CDATA[<p>Have you tried zodb?</p>
<p>There are lots of tools that use zodb, and you can even use sql dbs as a backend if you like (with relstorage).</p>
<p>Personally I&#8217;m using a very simple key/value store. ( see <a href="http://renesd.blogspot.com/2009/12/pywebsitesqlitepickle-sqlite-vs-pickle.html" rel="nofollow">http://renesd.blogspot.com/2009/12/pywebsitesqlitepickle-sqlite-vs-pickle.html</a> ) Since zodb does not support python3 and there seems to be no roadmap for doing so.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jorge Vargas</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3317</link>
		<dc:creator>Jorge Vargas</dc:creator>
		<pubDate>Thu, 24 Dec 2009 07:57:00 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3317</guid>
		<description>This is a very interesting take on no sql dbs. I like idea. I&#039;ll also take a look at Basie</description>
		<content:encoded><![CDATA[<p>This is a very interesting take on no sql dbs. I like idea. I&#8217;ll also take a look at Basie</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Travis Bradshaw</title>
		<link>http://third-bit.com/blog/archives/3350.html#comment-3316</link>
		<dc:creator>Travis Bradshaw</dc:creator>
		<pubDate>Thu, 24 Dec 2009 05:33:09 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350#comment-3316</guid>
		<description>I thought it would be worth pointing out that SQLAlchemy does polymorphism wonderfully.  I&#039;ve used it in several projects with great success:

http://www.sqlalchemy.org/docs/05/mappers.html#mapping-class-inheritance-hierarchies</description>
		<content:encoded><![CDATA[<p>I thought it would be worth pointing out that SQLAlchemy does polymorphism wonderfully.  I&#8217;ve used it in several projects with great success:</p>
<p><a href="http://www.sqlalchemy.org/docs/05/mappers.html#mapping-class-inheritance-hierarchies" rel="nofollow">http://www.sqlalchemy.org/docs/05/mappers.html#mapping-class-inheritance-hierarchies</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

