Opracowałem rozszerzenie Chrome, która zapisuje dane lokalnie za pomocą indekseddb. Chcę dodać funkcję do synchronizacji danych między wieloma komputerami. Czy możesz mi zaproponować rozwiązanie. Dzięki

Edytuj : Nie utrzymuję żadnego serwera i nie zbieram żadnych użytkowników prywatnych informacji. Rozszerzenie jest zasadniczo mashup danych z bezpłatnych osób trzecich. Jeśli więc mój użytkownik wprowadza zmiany danych w komputerze, powinien również również zastanowić się w komputerze B lub urządzeniu C (w celu wsparcia na przyszłość TOO :)

1
surya 8 sierpień 2012, 18:51

2 odpowiedzi

Najlepsza odpowiedź

Aktualizacja: W oparciu o edycję, wierzę, że link MR. DENI MF jest miłym wskaźnikiem, aby uzyskać równanie do pracy. Ale wierzę, że technologia nie jest jeszcze dostępna na ogólne wykorzystanie i że prawdopodobnie będziesz lepiej zsynchronizowany na serwerze, prawdopodobnie nawet stroną trzecią pozwalającą na to zrobić (Amazon S3 i / lub podobne usługi). Chrome ma już wbudowaną usługę synchronizacji - Jak synchronizować rozszerzenie Chrome Dane na różnych komputerach? - ale można wykorzystać tylko dla małych ilości danych, tak realistycznie te mogą być wskaźnikami do rzeczywistych danych hostowanych w innym miejscu.

Oryginalna odpowiedź poniżej:

Jest kilka aspektów, których potrzebujesz, aby dowiedzieć się. Po pierwsze, gdy mówisz "wiele komputerów", czy to oznacza, że wiele komputerów rozmawiających z tym samym zestawem serwerów (ów) lub czy rzeczywiście oznaczasz wiele komputerów w rówieśniczym sensie rówieśniczym (każdy komputer jest zarówno klientem, jak i serwer) .

Po drugie, potrzebujesz mechanizmu synchronizacji i protokołu. Jeśli wszystko jest miłe, a wszyscy są zaufani bez prawdziwych tajemnic i biegania masz przynajmniej kilka wyzwań; W pewnej prywatnej sieci możesz bardzo dobrze używać czegoś takiego jak CouchdB lub podobny, który działa świetnie z pudełka (ale staje się trudny, gdy tylko spróbujesz dodać uwierzytelnianie i autoryzację do danych). Jeśli nie, musisz przewrócić własne.

Zakładając, że masz klientów rozmawiający z konkretnym zestawem serwerów (przy użyciu HTTP lub podobnych), i zakładając, że nie można używać CouchDB lub podobnych (z powodów podanych w poprzednim akapicie), toczenie własne nie jest zbyt trudne. Ponieważ wiersze bazy danych (lub podobne) mogą być utworzone na dowolnym klient lub serwerowi, przy użyciu tradycyjnego klucza pierwotnego policji szeregowej, najprawdopodobniej nie będzie tego wart i musisz użyć UUID lub podobnego do unikalnych kluczy (aby każda maszyna może tworzyć własne - Zakładany unikalny - klucz dla każdego obiektu). Dodaj co najmniej jedną kolumnę dla każdego wiersza, który zawiera go "zaktualizowany" znacznik czasu (gdy obiekt został utworzony lub zaktualizowany) i dodaj inną bazę danych zawierającą ostatnią synchronizację znacznika czasu. Za każdym razem, gdy klient się łączy, poproś serwer w dowolne aktualizacje od ostatniego podłączenia i wyślij serwer dowolne aktualizacje utworzone lokalnie od ostatniego podłączenia. Rzeczy takie jak usuwanie wierszy jest nieco trudniejsze, ponieważ usunięty rząd nie ma "zaktualizowanego" czasu znacznika, więc rozważ tylko dodanie prostej flagi "usuniętej" do każdego wiersza, aby sprawić, że rzeczy prostsze.

Powinno to przynajmniej wystarczyć, aby cię idzie.

2
Community 23 maj 2017, 10:34

Oto a Dobra odpowiedź, która wyjaśnia, jak dokonać przeglądarki do przeglądarki (peer do peer) połączenia.

Inne rozwiązanie dokonałby pewnego rodzaju aplikacji bocznej serwera, która umożliwiłoby użytkownikom przechowywanie danych na serwerze lub niektórych pamięci trzecich, a później pobierają dane do innych komputerów.

2
Community 23 maj 2017, 12:18