[erlang-questions] Mnesia, versioning and recovering from network splits
Thu Jan 3 03:25:31 CET 2008
You haven't given us a plan about which data you're going to throw away.
Suppose one side of the split does a transaction that affects rows A &
B, and the other side does a transaction that affects rows B & C.
If one side is going to be thrown away, because it's being restored from
backup, then one whole transaction will be thrown away.
If you go row-by-row, presumably you will keep the changes to both row A
and row C, so you have to decide what to do about row B, and making it
consistent with both transactions either:
- needs application knowledge
- with application knowledge, is still impossible
Joel Reymont wrote:
> I think there's a reasonably straightforward way for Mnesia to recover
> from network splits. I also think that it would be much faster to
> merge databases in this scenario than drop a database and reload it
> form backups.
> I believe merging databases would require versioning of Mnesia records
> (simple integer should do) and the addition of a merging mechanism.
> Record versions would be shipped around and the latest version of the
> record would then be pulled by the server that has fallen behind.
> What are the flaws in my thinking?
> Thanks, Joel
> erlang-questions mailing list
More information about the erlang-questions