<?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: The Architecture Layer</title>
	<atom:link href="http://www.pythian.com/news/1003/the-architecture-layer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pythian.com/news/1003/the-architecture-layer/</link>
	<description>News and views from Pythian DBAs</description>
	<lastBuildDate>Fri, 10 Feb 2012 13:01:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>By: Sheeri Cabral</title>
		<link>http://www.pythian.com/news/1003/the-architecture-layer/#comment-198692</link>
		<dc:creator>Sheeri Cabral</dc:creator>
		<pubDate>Wed, 14 May 2008 13:43:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1003/the-architecture-layer#comment-198692</guid>
		<description>Mike -- yes!  although I think it&#039;s important to distinguish between how the data is stored, meaning how the schema is designed, and where the data is stored, meaning the physical architecture.  Even though the application might call a function in the &quot;data access&quot; API, that data access API to me has 2 parts -- the structure of the data (db, table, column for a relational database), and the server on which to store it on.  

I absolutely agree that changes in the schema and/or the architecture should be transparent to the application -- the data access API doesn&#039;t change.  By the same token, though, if the schema changes, the architecture does not, and vice versa.  So whatever makes up what you call the &quot;data access&quot; layer needs to encompass both, and an architecture change should only change the &quot;here&#039;s how to find out what machine to connect to&quot; parts, whereas a schema should only change the &quot;here&#039;s which db(s), table(s) and column(s) to query&quot; parts.



Dominic -- good point.  I guess it&#039;s similar to a smart load balancer for http.  When you go to www.google.com, DNS and Google&#039;s webserver configuration point you to a particular webserver.  Similarly, when an application &quot;goes to&quot; a database, it should be directed where to go by external logic -- that logic is the architecture layer.  

For me, coding the architecture layer into the functional layer (app/business logic) is like never using DNS and hand-configuring your /etc/hosts file for every single website you go to.  It works, but any architecture change requires you to change your /etc/hosts.  

Tony -- I&#039;m not sure if you read the whole post, but the whole point of the article that I quoted was that the business and application layer don&#039;t need to be separate, for exactly the reason you stated.  

I explicitly stated that I agreed with the article and would, for the course of this article, refer to the merged &quot;business/application&quot; layer as the &quot;functional&quot; layer.  Hope that clears things up.</description>
		<content:encoded><![CDATA[<p>Mike &#8212; yes!  although I think it&#8217;s important to distinguish between how the data is stored, meaning how the schema is designed, and where the data is stored, meaning the physical architecture.  Even though the application might call a function in the &#8220;data access&#8221; API, that data access API to me has 2 parts &#8212; the structure of the data (db, table, column for a relational database), and the server on which to store it on.  </p>
<p>I absolutely agree that changes in the schema and/or the architecture should be transparent to the application &#8212; the data access API doesn&#8217;t change.  By the same token, though, if the schema changes, the architecture does not, and vice versa.  So whatever makes up what you call the &#8220;data access&#8221; layer needs to encompass both, and an architecture change should only change the &#8220;here&#8217;s how to find out what machine to connect to&#8221; parts, whereas a schema should only change the &#8220;here&#8217;s which db(s), table(s) and column(s) to query&#8221; parts.</p>
<p>Dominic &#8212; good point.  I guess it&#8217;s similar to a smart load balancer for http.  When you go to <a href="http://www.google.com" rel="nofollow">http://www.google.com</a>, DNS and Google&#8217;s webserver configuration point you to a particular webserver.  Similarly, when an application &#8220;goes to&#8221; a database, it should be directed where to go by external logic &#8212; that logic is the architecture layer.  </p>
<p>For me, coding the architecture layer into the functional layer (app/business logic) is like never using DNS and hand-configuring your /etc/hosts file for every single website you go to.  It works, but any architecture change requires you to change your /etc/hosts.  </p>
<p>Tony &#8212; I&#8217;m not sure if you read the whole post, but the whole point of the article that I quoted was that the business and application layer don&#8217;t need to be separate, for exactly the reason you stated.  </p>
<p>I explicitly stated that I agreed with the article and would, for the course of this article, refer to the merged &#8220;business/application&#8221; layer as the &#8220;functional&#8221; layer.  Hope that clears things up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Marston</title>
		<link>http://www.pythian.com/news/1003/the-architecture-layer/#comment-198566</link>
		<dc:creator>Tony Marston</dc:creator>
		<pubDate>Wed, 14 May 2008 09:09:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1003/the-architecture-layer#comment-198566</guid>
		<description>The idea of having a separate business and application layer does not appeal to me at all. I have used the 3 Tier Architecture in two different languages, so I use nothing more than a presenation layer, business layer and data access layer. The phsical database an be switched from one DBMS to another simply by changing the data access object (DAO).

Your example of the ACCOUNT_NUMBER logic having to appear in multiple places shows a flawed implementation. You should have a single ACCOUNT object which contains the necessary logic to insert, update or delete any ACCOUNT instance, and whenever an instance has to be manipulated it should be done so via the ACCOUNT object. There may be many calls to the ACCOUNT object from many places, but the logic inside that object is defined once and need never be duplicated.</description>
		<content:encoded><![CDATA[<p>The idea of having a separate business and application layer does not appeal to me at all. I have used the 3 Tier Architecture in two different languages, so I use nothing more than a presenation layer, business layer and data access layer. The phsical database an be switched from one DBMS to another simply by changing the data access object (DAO).</p>
<p>Your example of the ACCOUNT_NUMBER logic having to appear in multiple places shows a flawed implementation. You should have a single ACCOUNT object which contains the necessary logic to insert, update or delete any ACCOUNT instance, and whenever an instance has to be manipulated it should be done so via the ACCOUNT object. There may be many calls to the ACCOUNT object from many places, but the logic inside that object is defined once and need never be duplicated.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dominic Brooks</title>
		<link>http://www.pythian.com/news/1003/the-architecture-layer/#comment-198535</link>
		<dc:creator>Dominic Brooks</dc:creator>
		<pubDate>Wed, 14 May 2008 08:01:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1003/the-architecture-layer#comment-198535</guid>
		<description>Do you see which database the data goes into or comes from as distinct from which web server an http request goes via?

Is it a layer or a cloud or just a virtualisation of resources?

A functional layer certainly should not care whether there is one or ten databases nor which particular database Sheeri with the blonde hair colour is in; you can make a good case for saying that a persistance layer not either.

But sometimes it&#039;s not just about databases is it? You want requests about blondes to go down an entire architectural leg including app server, etc.</description>
		<content:encoded><![CDATA[<p>Do you see which database the data goes into or comes from as distinct from which web server an http request goes via?</p>
<p>Is it a layer or a cloud or just a virtualisation of resources?</p>
<p>A functional layer certainly should not care whether there is one or ten databases nor which particular database Sheeri with the blonde hair colour is in; you can make a good case for saying that a persistance layer not either.</p>
<p>But sometimes it&#8217;s not just about databases is it? You want requests about blondes to go down an entire architectural leg including app server, etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sheeri Cabral</title>
		<link>http://www.pythian.com/news/1003/the-architecture-layer/#comment-198290</link>
		<dc:creator>Sheeri Cabral</dc:creator>
		<pubDate>Tue, 13 May 2008 22:42:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1003/the-architecture-layer#comment-198290</guid>
		<description>Thanx Paul -- I think it&#039;s an important way technology is changing, that it&#039;s more and more relevant to think of an &quot;architecture&quot; layer.</description>
		<content:encoded><![CDATA[<p>Thanx Paul &#8212; I think it&#8217;s an important way technology is changing, that it&#8217;s more and more relevant to think of an &#8220;architecture&#8221; layer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mike</title>
		<link>http://www.pythian.com/news/1003/the-architecture-layer/#comment-198262</link>
		<dc:creator>mike</dc:creator>
		<pubDate>Tue, 13 May 2008 21:44:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1003/the-architecture-layer#comment-198262</guid>
		<description>I&#039;ve had the same thoughts about this. People separate things by MVC, and this and that...

I&#039;ve thought of it and I believe I call mine the &quot;Data Access Layer&quot; (for lack of a better term so far) - it is the go-between from the applications and the datastore. &quot;Datastore&quot; could be a hybrid memcache/MySQL solution, sharding, clustering, flatfiles - it doesn&#039;t matter.

As long as there is a proper user_set() call and a user_get() call - the only two ways to modify and access that data, then it will be transparent to the layers above it where exactly the data came from.

Some day I will actually try to make some graphical explanation of this and some example code to sanity check myself and have people pick it apart, but so far on any of the projects I have approached it seems to be a good approach.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve had the same thoughts about this. People separate things by MVC, and this and that&#8230;</p>
<p>I&#8217;ve thought of it and I believe I call mine the &#8220;Data Access Layer&#8221; (for lack of a better term so far) &#8211; it is the go-between from the applications and the datastore. &#8220;Datastore&#8221; could be a hybrid memcache/MySQL solution, sharding, clustering, flatfiles &#8211; it doesn&#8217;t matter.</p>
<p>As long as there is a proper user_set() call and a user_get() call &#8211; the only two ways to modify and access that data, then it will be transparent to the layers above it where exactly the data came from.</p>
<p>Some day I will actually try to make some graphical explanation of this and some example code to sanity check myself and have people pick it apart, but so far on any of the projects I have approached it seems to be a good approach.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Vallee</title>
		<link>http://www.pythian.com/news/1003/the-architecture-layer/#comment-198189</link>
		<dc:creator>Paul Vallee</dc:creator>
		<pubDate>Tue, 13 May 2008 19:18:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1003/the-architecture-layer#comment-198189</guid>
		<description>I&#039;ve added this to the Oracle and SQl Server categories as I don&#039;t think this interesting idea is at all dependent on the database platform and I would like to check in with the other communities we participate in to see how they see this.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve added this to the Oracle and SQl Server categories as I don&#8217;t think this interesting idea is at all dependent on the database platform and I would like to check in with the other communities we participate in to see how they see this.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

