For situations where we want to host data on multiple sources, we need to be able to sync database changes around. This involves:
- Recording changes made to the database
- Replaying them on other nodes
- Conflict resolution in case changes are out-of-sync
Point 3) will be most difficult and must be handled on a per-case basis. Sometimes we can let the last change win, sometimes the user needs to intervene and sometimes we can come up with fitting application-specific algorithms. This functionality should be modular enough to allow for all these cases. Additionally, it should allow for different mechanisms of storing and broadcasting the changes.