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.
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 –
@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