<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - sql tag</title>
  <link>http://www.codingthearchitecture.com/tags/sql/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 21 May 2012 09:41:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>To SQL or not to SQL?</title>
    <link>http://www.codingthearchitecture.com/2009/07/21/to_sql_or_not_to_sql.html</link>
    
      
        <description>
          &lt;p&gt;
Eric Lai wrote an interesting article for Computerworld entitled &lt;a href=&#034;http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam_&#034;&gt;No to SQL? Anti-database movement gains steam&lt;/a&gt; that highlighted the small but growing trend for not using a traditional relational database for managing data. Nati Shalom&#039;s &lt;a href=&#034;http://natishalom.typepad.com/nati_shaloms_blog/2009/07/no-to-sql-anti-database-movement-gains-steam-my-take.html&#034;&gt;No to SQL? Anti-database movement gains steam - My Take&lt;/a&gt; is a good follow-up.
&lt;/p&gt;

&lt;p&gt;
I&#039;m sure that most of us have good experiences of using a relational database in our projects and, despite the pain of sometimes mapping the data into a relational schema, relational databases provide an easy to use known quantity
for managing data. With this in mind, you should certainly let your &lt;a href=&#034;http://www.codingthearchitecture.com/2008/07/30/experience_should_guide_not_constrain.html&#034;&gt;experience guide you&lt;/a&gt; but bear in mind that relational databases aren&#039;t the answer to every question.
&lt;/p&gt;

&lt;p&gt;
The case study that we use as a basis for the &lt;a href=&#034;http://www.softwarearchitecturefordevelopers.com&#034;&gt;exercises in our software architecture training course&lt;/a&gt; is relatively small yet most people decide to use a relational database to store the data without really giving the alternatives a second thought. Most of the time it comes down to experience in that most people are comfortable with using a relational database in their architecture. But there are many viable alternatives; from using flat files and object databases through to in-memory data structures, data grids and the cloud. So while relational databases might be a solution for your particular problem, it&#039;s always worth spending a couple of minutes assessing whether they are the *best* solution. Here are some things to think about before deciding on whether to go down the SQL or non-SQL route.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you have special non-functional requirements that would be hard to satisfy with a relational database? (e.g. high performance/low latency, massive scalability, etc)&lt;/li&gt;
&lt;li&gt;What is the available skillset of the team?&lt;/li&gt;
&lt;li&gt;Do you have existing licenses for an RDBMS?&lt;/li&gt;
&lt;li&gt;Could an open source RDBMS be appropriate?&lt;/li&gt;
&lt;li&gt;Do you need to access legacy systems where the data is already in an RDBMS?&lt;/li&gt;
&lt;li&gt;Do you have the hardware available to run an RDBMS?&lt;/li&gt;
&lt;li&gt;Do you already have existing backup and archival processes and procedures for relational databases?&lt;/li&gt;
&lt;li&gt;What are your management information and reporting requirements (scheduled and ad hoc)? Is it possible to satisfy these with a non-SQL solution?&lt;/li&gt;
&lt;li&gt;Do other systems need access to your data via a SQL interface? (a service gateway might be a better approach, but that&#039;s another issue)&lt;/li&gt;
&lt;li&gt;Do you have data migration requirements from an existing relational database?&lt;/li&gt;
&lt;li&gt;Can the data management problem be split up into transactional and non-transactional partitions, maybe using a relational database for only one of them?&lt;/li&gt;
&lt;li&gt;Do you really *need* persistence?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Relational databases are established mainstream solutions that are applicable in many cases. Just don&#039;t forget that there are other alternatives too.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2009/07/21/to_sql_or_not_to_sql.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2009/07/21/to_sql_or_not_to_sql.html</guid>
    <pubDate>Tue, 21 Jul 2009 10:07:00 GMT</pubDate>
  </item>
  
  </channel>
</rss>

