<div dir="ltr">Vimal,<div><br></div><div>As Joe mentioned, focus of a new product should be on key-differentiators and time-to-market. This way you can check the product-market fit, and, if needed, can fail-fast.</div><div><br></div><div>If you are familiar with Mnesia, it does not take more than 10 minutes to set it up. Since it is a Erlang-integrated DBMS, it will help you code fast in case you need transactional guarantees, and it withstands decent load before you need to look at performance optimisation options.</div><div><br></div><div>As Jesper mentioned, when you look at storing data, you have to select the right mix of mechanism. It is not always database alone. This worries you only later. Some of them of course you should have it at the initial stage itself -- e.g. storing media files in file system.</div><div><br></div><div>Theepan</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 12, 2015 at 3:14 AM, Jesper Louis Andersen <span dir="ltr"><<a href="mailto:jesper.louis.andersen@gmail.com" target="_blank">jesper.louis.andersen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class=""><br><div class="gmail_quote">On Sun, Oct 11, 2015 at 7:48 PM, Joe Armstrong <span dir="ltr"><<a href="mailto:erlang@gmail.com" target="_blank">erlang@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'd probably use the file system, then ets or dets and "roll my own" first.</blockquote></div><br></span>To much extent, this is what WhatsApp is doing according to what I've been able to dissect out of their talks. They use mnesia for storing meta-data, but they use an UFS2 file system on FreeBSD to store the majority of data and just pick it off of the disk whenever they need it. The other trick they use is to use the clients to store the majority of data and only use the servers as a temporary transient store until the client comes back up and requests its missing data.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Were I to start, I'd definitely do the API modularity split as well, but I'd probably pick postgresql as a backing store over mnesia, perhaps with mnesia as an in-memory cache for active users. The assumption is user data is not changing that often, and postgresql have the added value of being a system I *know* how to operate and handle. There is much to be said for picking technology which is tried and proven and you know how to operate.</div><div class="gmail_extra"><br></div><div class="gmail_extra">A possible switch is Riak for the UFS2 store, but it does require the ability to "append" to an object in Riak. Otherwise it is kind of moot to load data, add a couple of bytes and store the object back again. Perhaps this can be done by "chaining" documents in Riak with content addressing.<span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>J.</div>
</font></span></div></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>