<span class="Apple-style-span" style="font-size: 15px; border-collapse: collapse; color: rgb(80, 0, 80); "> And I realize that you are not trying to replace RDBs, just building a<br>&gt; nicer interface to them. I am just concerned that some of the nice<br>
&gt; properties are lost in the process. I think my main concern comes from<br>&gt; seeing people create databases, by automatically generating tables from<br>&gt; OO-classes. They invariably ends up with something not nearly as nice,<br>
&gt; as if they had constructed the database in a more traditional fashion.<br>&gt;<br><br></span><div><font class="Apple-style-span" color="#500050" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 15px;">for web applications in the Internet, due to security reasons, 99% of the databases are handled exlusively by te web application. This increases the arguments in favor of spending less time in database design. Moreover, since there are no concurrent updates from different applications, (communication with other applications are done trough the middle tier of the web application rather than trough the database), the database just provides transaction coherence (for  the single application) and storage. Then it is much faster to perform transactions in the application trough STM and leave the database for storage purposes. At this time the database can be substituted with advantage  by files.  </span></font></div>
<div><font class="Apple-style-span" color="#500050" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 15px;"><br></span></font></div><div><font class="Apple-style-span" color="#500050" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 15px;">All of this gives credit to ORM solutions and HappStack or SQLalchemy, Database design and maintenance don&#39;t worth the pain in this scenario. My package  TCache <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-size: 13px; "><a href="http://hackage.haskell.org/package/TCache">http://hackage.haskell.org/package/TCache</a> is made also around this philosophy.</span></span></font></div>
<div><font class="Apple-style-span" color="#500050" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 15px; "><br></span></font></div><div><font class="Apple-style-span" color="#500050" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 15px;">If the ORM has an interface such is SQLalchemy, it would be nice to have two &quot;drivers&quot; one for pure SQL databases, where all the primitives would be executed in the database, and other pure Haskell where the primitives are executed in memory. For example, the transactions would be executed trough STM. This driver would have configurable persistence (either in files, manualy designed databases or whatever) . Perhaps mixed drivers can be added later. This would unite the best of both worlds. It would be flexible enough to permit the change of scenario without breaking the code. This would be nice for prototyping for example.</span></font></div>
<div><font class="Apple-style-span" color="#500050" size="4"><span class="Apple-style-span" style="border-collapse: collapse; font-size: 15px;"><br></span></font></div>