Jestem nowy zarówno w CouchDB, jak i PouchDB i używam go do utworzenia systemu zarządzania kontaktami, który synchronizuje się z urządzeniami mobilnymi i stacjonarnymi i może być używany w trybie offline. Widzę, że używanie PouchDB jest nieskończenie łatwiejsze niż pisanie podprogramu PHP/MySQL.Jak rozwiązywać konflikty z ciągłą replikacją
Używam go z powodzeniem, a gdy wprowadzam sprzeczne zmiany na urządzeniach offline, CouchDB używa algorytmu, aby arbitralnie wybrać zwycięzcę, a następnie poprawnie przekazuje go do wszystkich urządzeń.
Co chciałbym zrobić, to zaimplementować niestandardowy algorytm scalający rekordy konfliktów. Oto algorytm chciałbym używać:
- Jeśli rekord zostanie usunięty na jednego klienta, a jedynie aktualizowany na innym, zaktualizowanych wersji wygrywa, chyba że obie klienci zgadzają się na usunięcie.
- Rekord z najnowszym "zmodyfikowanym" znacznikiem czasu staje się wzorcem , a starszy rekord staje się drugorzędny.
- Wszystkie pola, które istnieją tylko w drugorzędnym (lub są puste w wzorcu ) są przenoszone do wzorca.
- Wersja główna jest zapisywana, a pomocnicza jest usuwana.
Przewodnik CouchDB ma dobry explanation, ale nie mam pojęcia, jak go wdrożyć za pomocą interfejsu API PouchDB podczas ciągłej replikacji. Według PouchDB API, istnieje opcja "onChange" w opcjach replikacji, ale nie rozumiem, jak go używać do przechwytywania konfliktów.
Jeśli ktoś mógłby napisać krótki samouczek zawierający przykładowy kod, ja i jestem pewien, że wielu innych użytkowników PouchDB doceniłoby to!
Dziękuję bardzo Dale! To bardzo pomaga. –