Haskell.org GSOC: Ticket Queryhttp://ghc.haskell.org/trac/summer-of-code/query?status=!closed&reporter=Lemmih&order=owner
Haskell.org Google Summer of Codeen-USHaskell.org GSOC/images/summerlambda.pnghttp://ghc.haskell.org/trac/summer-of-code/query?status=!closed&reporter=Lemmih&order=owner
Trac 1.0.1http://ghc.haskell.org/trac/summer-of-code/ticket/1614
http://ghc.haskell.org/trac/summer-of-code/ticket/1614#1614: Replicating backend for AcidState.Wed, 21 Mar 2012 06:46:31 GMTLemmih<p>
<a class="ext-link" href="http://acid-state.seize.it/"><span class="icon">​</span>AcidState</a> is a high performance library for adding ACID (<a class="ext-link" href="http://en.wikipedia.org/wiki/ACID"><span class="icon">​</span>http://en.wikipedia.org/wiki/ACID</a>) guarantees to (nearly) any kind of Haskell data structure. In layman's term, it's a library that will make your data persist even in the event of, say, a power outage.
</p>
<p>
<a class="ext-link" href="http://acid-state.seize.it/"><span class="icon">​</span>AcidState</a> relies on an on-disk transaction log from which to recreate the Haskell data structure if your application crashed unexpectedly. This makes the hard drive a single point of failure (leading to the loss of data, even) and the low reliability of hard drives simply does not merit this.
</p>
<p>
I propose that this should be solved by replicating the state across a cluster of machines. Each machine would keep a copy of the transaction log on disk and the single point of failure would be gone.
</p>
<p>
When thinking about this project, one has to keep the CAP theorem (<a class="ext-link" href="http://en.wikipedia.org/wiki/CAP_theorem"><span class="icon">​</span>http://en.wikipedia.org/wiki/CAP_theorem</a>) in mind. In particular, I propose consistency and availability to be guaranteed. Partition tolerance (compared to consistency and availability) has fewer uses and is much harder to implement.
</p>
<p>
<a class="ext-link" href="http://acid-state.seize.it/"><span class="icon">​</span>AcidState</a> is already structured for multiple backends so few, if any, internal changes are required before this project can begin.
</p>
<h2 id="Interestedmentors:">Interested mentors:</h2>
<ul><li>Jeremy Shaw (an officially accepted haskell.org mentor)
</li></ul><h2 id="Interestedstudents:">Interested students:</h2>
<ul><li>David Himmelstrup.
</li></ul>Resultshttp://ghc.haskell.org/trac/summer-of-code/ticket/1614#changelog