2009-09-24 10 views
14

mam skierowaną następujące wyzwanie:Prowadzenie rozproszonych baz danych zsynchronizowane w niestabilnej sieci

Mam kilka baz danych w różnych lokalizacjach geograficznych, w których sieć może fail dużo (używam sieci komórkowej). Muszę zsynchronizować wszystkie bazy danych, ale nie trzeba być w czasie rzeczywistym. Używam Java, ale mam swobodę wyboru dowolnej bezpłatnej bazy danych.

Wszelkie sugestie, w jaki sposób mogę to osiągnąć.

Dzięki.

+0

Szukasz narzędzia? Opracowywanie niestandardowego rozwiązania? –

Odpowiedz

8

Nie znam żadnych baz danych, które zapewnią tę funkcjonalność po wyjęciu z pudełka; jest tu dużo złożoności ze względu na konieczność ostatecznej spójności i rozwiązywania konfliktów (np. co się stanie, jeśli sieć zostanie podzielona na dwie połówki i zaktualizujesz coś do wartości 123, a ja zaktualizuję ją na drugiej połowie do 321, a następnie sieci ponownie się łączą?)

Być może trzeba będzie wykonać własne.

Dla niektórych pomysłów, jak to zrobić, zapoznaj się z konstrukcji systemu Yahoo PNUTS: http://research.yahoo.com/node/2304 i Amazon Dynamo: http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

+0

+1. Dobre linki! – David

+0

Praca z Yahoo jest bardzo interesująca. Pomysł opracowania własnego rozwiązania był już w mojej głowie. Chciałbym mieć coś podobnego do GIT dla baz danych – jassuncao

+2

Rzecz w tym, że Git sprawia, że ​​przeprowadzasz ręczne scalanie w przypadku sprzecznych aktualizacji. Zasadniczo nie jest to realną opcją dla baz danych. Potrzebny jest zatem model spójności, który prowadzi do tak niewielu niespodzianek, jak to tylko możliwe. – SquareCog

0

Nie znam twoich wymagań ani twoich aplikacji, ale to nie jest typ szybkiego pytania. Jestem bardzo zainteresowany, aby zobaczyć, co inni mają do powiedzenia. Mam jednak sugestię, która może, ale nie musi, działać w twoim przypadku, w zależności od Twoich wymagań i sytuacji. w szczególności nie pomoże to użytkownikom, którzy muszą korzystać z aplikacji nawet wtedy, gdy sieć jest niedostępna (dostęp offline).

Utrzymanie małej liczby zsynchronizowanych baz danych jest dość skomplikowanym zadaniem. Czy istnieje możliwość posiadania tylko jednej scentralizowanej bazy danych i czy aplikacje klienta łączą się bezpośrednio z nią lub (moje preferowane rozwiązanie) zapisują niektóre usługi internetowe, aby obsłużyć dostęp do/aktualizację danych, zamiast mieć wiele baz danych klientów?

Rozumiem, że ogranicza to dostęp w trybie offline, ale można korzystać z różnych strategii buforowania. (Co oczywiście prowadzi z powrotem do pierwotnego pytania.)

17
+0

Wielki zbiór informacji. Dziękuję Ci. – jassuncao

+0

Nie ma za co. – MaD70

3

Sprawdź SymmetricDS. SymmetricDS jest niezależnym od bazy danych oprogramowaniem do synchronizacji/replikacji danych. Wykorzystuje technologie sieciowe i bazodanowe do replikowania tabel między relacyjnymi bazami danych w czasie zbliżonym do rzeczywistego. Oprogramowanie zostało zaprojektowane w taki sposób, aby skalować do dużej liczby baz danych, pracować w połączeniach o niskiej przepustowości i wytrzymywać okresy przerwy w sieci.

+0

Tak. Już na niego patrzyłem i kręciłem. Wygląda całkiem boga. Prawdopodobnie to, co będzie używane – jassuncao