2012-07-04 17 views
6

Jakie są możliwości selektywnej dystrybucji danych?Dystrybucja bazy danych

Wyjaśniam moje pytanie na przykładzie. Rozważ centralną bazę danych zawierającą wszystkie dane. Ta baza danych znajduje się w określonej lokalizacji geograficznej.

Aplikacja A potrzebuje podzestawu informacji znajdujących się w centralnej bazie danych. Ponadto aplikacja A może znajdować się w lokalizacji geograficznej innej (i może daleko) od tej, w której znajduje się centralna baza danych.

Tak więc pomyślałem o stworzeniu nowej bazy danych w tej samej lokalizacji aplikacji, która zawierałaby podzbiór informacji z centralnej bazy danych.

Która technologia/produkt pozwala na wdrożenie takiej konfiguracji?

Dzięki

Odpowiedz

4

szukać database replication. SQL Server może to zrobić na pewno, inni (Oracle, MySQL, ...) powinni go również mieć.

Chodzi o to, że druga lokalizacja zachowuje kopię (podzbioru). Aktualizacje są wymieniane przyrostowo. Sposób traktowania konfliktów zależy od aplikacji.

+0

Witam, jednym z nowych wymagań jest to, że muszę pobierać dane z wielu źródeł, czy jest to możliwe przy użyciu replikacji bazy danych? Dzięki –

+0

@MickaelMarrache: Czy nawet spojrzałeś na to, co replikacja może zrobić dla ciebie? Odpowiedź na twoje pytanie będzie jasna ... "być może": -o – krlmlr

2

Większość dużych programów bazodanowych, takich jak MySql i SQL Server, może wykonać zadanie, ale to nie jest dobrym modelem. Wraz ze wzrostem aplikacji (ruchu i użytkowników), nie tylko utworzy obciążenie na centralnym serwerze bazy danych (który może obsługiwać inne aplikacje), ale także będzie nadużywać przepustowości sieci do przesyłania danych pomiędzy z daleka baza danych i serwer aplikacji.

Lepszym modelem jest utrzymywanie danych w pobliżu serwera aplikacji i używanie odległej bazy danych wyłącznie w celu tworzenia kopii zapasowych i odzyskiwania. Możesz użyć architektury sieciowej FC \ IP SAN (lub dowolnej innej architektury sieci pamięci masowej ) jako modelu sieci pamięci masowej, w zależności od potrzeb aplikacji.

1

Jednym z dużych pytań, które nie zostały rozwiązane, jest to, czy aplikacja A wymaga dostępu do danych w trybie tylko do odczytu, czy też wymaga odczytu i zapisu.

Bezpośrednią koncepcją, która przychodzi Ci na myśl podczas czytania Twoich wymagań, jest sharding. W MySQL można to osiągnąć za pomocą partitioning. Mówiąc to, zanim przejdziesz do partycji, upewnij się, że czytasz na ich pros and cons. Istnieją przypadki, w których partycjonowanie może spowolnić działanie, jeśli indeksy nie są dobrze dobrane lub schemat partycjonowania nie jest dobrze przemyślany.

Jeśli twoje potrzeby są tylko do odczytu, to powinno to być dość proste rozwiązanie. Możesz używać MySQL w kontekście Master-Slave i używać App A z niewolnika. Jeśli potrzebujesz odczytu i zapisu, staje się to znacznie bardziej złożone.

W zależności od twoich potrzeb zapisu, możesz podzielić swoje czytania do swojego niewolnika i swoje zapisy do mistrza, ale to znacznie zwiększa złożoność struktury kodu (musisz radzić sobie z wieloma połączeniami do wielu dbs). Zaletą tego rodzaju układu jest to, że nie trzeba posiadać złożonej infrastruktury DB.

Po drugiej stronie możesz zachować kod w niezmienionej postaci i użyć replikacji Master-Master w MySQL.Chociaż nie jest oficjalnie wspierany przez Oracle, wiele osób odniosło sukces. Szybkie wyszukiwanie w Google pozwoli ci znaleźć ogromną listę blogów, poradników itp. Pamiętaj, że twój kod musi być odpowiednio napisany, aby to wspierać (np. Nie możesz używać pól automatycznego zwiększania PK, itp.).

Jeśli masz gotówkę do wydania, możesz obejrzeć niektóre z bardziej komercyjnych ofert. Oracle DB i SQL Server oba obsługują to.

Do replikacji między węzłami można również użyć replikacji danych w oparciu o blokowanie, na przykład DRDB(and Mysql DRDB), ale problem, który zawsze napotykamy, dotyczy sytuacji, w której zawiedzie połączenie między dwoma węzłami.

Największy problem, jaki napotkasz, to sposób radzenia sobie z kolidującymi aktualizacjami w 2 oddzielnych węzłach DB. Jeśli dane są geograficznie zależne, może to nie być problemem dla Ciebie.

Krótko mówiąc, nie jest to łatwy (lub niedrogi) problem do rozwiązania.

0

Ważne jest, aby zająć się możliwością wystąpienia konfliktów w fazie projektowania, gdy tylko mówimy o replikowaniu baz danych.

Przechodząc dalej, SAP Sybase Replication Server pozwoli ci to zrobić, albo z bazami danych Sybase, albo z 3rd party.

W świecie Sybase jest to często określane jako korporacyjne środowisko typu roll-up. Może istnieć wiele geograficznie oddzielonych baz danych, każda z podzbiorem danych, nad którymi sprawują nadrzędną kontrolę. W centrali znajduje się serwer, który zawiera wszystkie różne podzbiory w jednym repozytorium. Możesz replikować całe tabele lub replikować na podstawie wartości w poszczególnych wierszach/kolumnach.

Dzięki temu bazy danych są w luźno spójnym stanie. Szybkość transakcji, separacja geograficzna i opóźnienie, które mogą być nieodłączne dla sieci, będą miały wpływ na szybkość przenoszenia aktualizacji z jednej bazy danych do drugiej. Jeśli połączenie sieciowe jest tymczasowo niedostępne, serwer Sybase Replication Server będzie umieszczał w kolejce transakcję i wysyłał je, gdy tylko łącze pojawi się ponownie, ale stabilność połączenia sieciowego wpłynie na niezawodność i stabilność systemu replikacji.

Ponownie, jak inni stwierdzili, że nie jest tanie, ale jest stosunkowo proste do wdrożenia i utrzymania.

Nota prawna: Pracowałem dla Sybase i nadal jestem częścią rodziny firm SAP.