Hi Joshua,<div><br></div><div>I am not an expert in Mnesia, but I can try to give you some suggestions (for sure you might have guessed them by now, but at least you can have a confirmation):</div><div><br></div><div>Q1: "<span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; background-color: rgb(255, 255, 255); ">What would a Database administrator do if mnesia generates events of <code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; ">inconsistent_database, starting to run database behind a partitioned network</code>, in a situation where setting a<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; ">mnesia master node</code> is not desirable (for fear of data loss) ?</span>"</div>
<div>A1: Check if the nodes are up and try to update manually the DB from the node which was working the longest (providing the DB was correct written).</div><div><br></div><div>Q2: "<span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; background-color: rgb(255, 255, 255); ">What is the consequence of the mnesia event <code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; ">inconsistent_database, starting to run database behind a partitioned network</code> as regards my application ? What if i do not react to this event and let things continue the way they are ? am i loosing data ?</span>"</div>
<div>A2: The state is coming from all the nodes failure, that means you can no longer read/write to/from DB. That means, yes, you lose data.</div><div><br></div><div>Q3: "<span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; background-color: rgb(255, 255, 255); ">In large mnesia clusters, what can one do if Mnesia goes down together with the Erlang VM on a remote site ? are there any known good methods of automatically handling this situation ?</span>"</div>
<div>A3: <a href="http://www.erlang.org/doc/apps/mnesia/Mnesia_chap7.html#id311335">http://www.erlang.org/doc/apps/mnesia/Mnesia_chap7.html#id311335</a> If that doesn't work, build inside your middleware a distributed application which should monitor Erlang nodes. If you are still not satisfied, create a watchdog.</div>
<div><br></div><div>Q4: "<span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; background-color: rgb(255, 255, 255); ">There times when one or two nodes are unreachable due to network problems or failures, and mnesia on the surviving Node reports that a given file does not exist especially in cases where you have<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; ">indexes</code>. So at run time, what would be the behavior of my application if some replicas go down. Would you advise me to have a master node within a mnesia cluster ? </span>"</div>
<div>A4: If some replicas go down and your middleware knows how to handle the connection failure, your application should not receive any error. Your application should receive an error only when the BD is sliced or the working node didn't have time to make a replica of the new entry (entries).</div>
<div><br></div><div>Few more considerations here which may work in all the cases when you don't trust the way a DB handles your data over the network:</div><div>1. Replace the replication system with your own data distribution. E.g., instead of using data replication, use your own system to send the data to all nodes. Further on, when a connection fails, broadcast a message to all similar nodes and, following a certain algorithm to pick up another node, switch to another node, trying to revive and update the dead node meanwhile.</div>
<div>2. Replace the DB error reporting with a watchdog. E.g., continuing the idea above, put a bunch of functions to check periodically the nodes and the applications inside he nodes. You can add to it a probabilistic method to decide which node is longer up and to consider that as the most stable node, so, the read/write to be directed with preference to that node.</div>
<div><br></div><div>One more thing. If you don't like Mnesia replication and how it handles the data over the network, try CouchDB which doesn't have master-slave replication, but directional replication. It's written in Erlang as well, but it's no-SQL and it recovers faster from failures. I don't say Mnesia it's not good (well, it's great actually), but following your "fears", I just suggest an alternative which may suits you better.</div>
<div><br></div><div>I hope this mail will help you in choosing correct setup for your network distributed DB.</div><div><br></div><div>Cheers,</div><div>CGS</div><div><br></div><div><br></div><div><br></div><div><br><br><div class="gmail_quote">
On Sun, Oct 9, 2011 at 3:32 PM, Joshua Muzaaya <span dir="ltr"><<a href="mailto:joshmuza@gmail.com">joshmuza@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br clear="all">Hi guys, i have asked a question here: <a href="http://stackoverflow.com/questions/7703170/mnesia-fragmentation-and-replication-resultant-availability-and-reliability" target="_blank">http://stackoverflow.com/questions/7703170/mnesia-fragmentation-and-replication-resultant-availability-and-reliability</a> and need solutions from the forum. I could not edit and reformat sionce it would be time wasting so i deceide to paste you the link above. You can follow the link and provide your solutions. Thanks guys<br>
<font color="#888888">
-- <br><font size="4"><b><span style="font-family:courier new,monospace">Muzaaya Joshua</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">Systems Engineer</span><br style="font-family:courier new,monospace">

<span style="font-family:courier new,monospace">+256774115170</span></b></font><br><br>
</font><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" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>