I am starting to architect a project with the following requirements:
- The common system will be distributed among several physical nodes in the WAN
- Each node will use and manage a common set of data records.
- Operations on these records must be robust against network outages.
I consider using Mnesia / Erlang as the base platform for this project, but I would like to know how well it (Mnesia) can handle the simultaneous disconnected conflicting operations in the data set.
Illustrative scenario:
- Nodes A and B have connectivity and an empty dataset.
- Node Adds a record (1, ABC).
- Here, the recordset should transparently synchronize, and now node B also has a record (1, ABC).
- The network connection between them is lost.
- Node A changes the entry to (1, DEF).
- Node B (later timestamp) changes the entry to (1, GHI).
- Network connection is restored
- Expected
- : after transparent synchronization, both nodes contain a record (1, GHI).
To simplify, suppose that a complete change history is not required (for example, it is not important that record 1 is used to store ABC or DEF, it is only important that it now contains GHI).
Is this the finished (or trivial) ability of Mnesia?
source share