<div dir="ltr">Britt,<div><br></div><div>If you use the remote module you will have the ability to create multiple states that can reside on multiple machines, so you won't be limited by the RAM capacity of just one machine, and you can then use RPC calls to query them from a web server or command line app.</div><div><br></div><div>In order to minimize your memory footprint and keep things fast you could use an IntMap to store your users (i.e. IntMap User). You could also install ekg on the server that broadcasts your state to get a good idea of just how large your state is. Since acid-state transactions are pure they complement parallelism nicely as well.</div><div><br>Alberto,<br><br>Acid state has two logs on disk, one for events and another for checkpoints. Checkpoints represent the entire serialized state. Events are incremental changes on the state. Writing checkpoints is an expensive operation (since the entire state will be written to disk from the MVar), and shouldn't be done very often. <br><br>Note on usability:<br><br>If you have long event files, and you are constantly opening and closing your state you will most likely experience poor performance. Since acid-state will attempt to read the entire event log to recreate the state in memory. Someone can correct me if I'm wrong.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 10, 2014 at 3:15 PM, Britt Mathis <span dir="ltr"><<a href="mailto:britt.mathis@gmail.com" target="_blank">britt.mathis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Someone on irc mentioned acid-state remote (it may have even been you), I will definitely be using it. My only worry is that I only have 512MB of Ram to work with atm, which should be fine until I have several thousand users. I see on the acid state website that I would need to integrate with something else to provide the ability to have a data structure larger than memory (I may be missing or misunderstanding something), would it be trivial to add this in later or should I be worried about it now? </p><div class="HOEnZb"><div class="h5">
<div class="gmail_quote">On Oct 10, 2014 4:10 PM, "David Johnson" <<a href="mailto:djohnson.m@gmail.com" target="_blank">djohnson.m@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I recommend looking into Data.Acid.Remote if you plan on using acid-state. Will allow you to inspect your state using ghci. <br><br><a href="http://hackage.haskell.org/package/acid-state-0.12.2/docs/Data-Acid-Remote.html" target="_blank">http://hackage.haskell.org/package/acid-state-0.12.2/docs/Data-Acid-Remote.html</a><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 10, 2014 at 2:55 PM, Britt Mathis <span dir="ltr"><<a href="mailto:britt.mathis@gmail.com" target="_blank">britt.mathis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">I was told about acid-state on irc,  but I wasn't sure if it did the incremental part - it looks like it will be perfect, thank you. And I will definitely check out that paper as well. </p><div><div>
<div class="gmail_quote">On Oct 10, 2014 3:37 PM, "Nicolas Trangez" <<a href="mailto:nicolas@incubaid.com" target="_blank">nicolas@incubaid.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, 2014-10-10 at 23:29 +0400, Nikita Volkov wrote:<br>
> There's "acid-state", which provides a log-based persistence model. I.e.,<br>
> it persists the modifications you make to the data structure.<br>
<br>
You might also be interested in the paper 'Generic Storage in Haskell'<br>
by Sebastiaan Visser, and his thesis about the same subject.<br>
<br>
Nicolas<br>
<br>
><br>
> 2014-10-10 23:09 GMT+04:00 Britt Mathis <<a href="mailto:britt.mathis@gmail.com" target="_blank">britt.mathis@gmail.com</a>>:<br>
><br>
> > Hello everyone,  I'm not sure if something like this already exists so I<br>
> > figured I would ask here first before I reinvent the wheel. What I need is<br>
> > a data structure that behaves like Data.Map, but is serialized to disk<br>
> > incrementally so I only have the overhead of writing what has changed every<br>
> > time.<br>
> ><br>
> > _______________________________________________<br>
> > Haskell-Cafe mailing list<br>
> > <a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
> > <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
> ><br>
> ><br>
> _______________________________________________<br>
> Haskell-Cafe mailing list<br>
> <a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
> <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br>
<br>
</blockquote></div>
</div></div><br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Cell: <a href="tel:1.630.740.8204" value="+16307408204" target="_blank">1.630.740.8204</a>
</div>
</blockquote></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Cell: 1.630.740.8204
</div>