Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozproszona baza danych
Forum PHP.pl > Forum > Bazy danych > MySQL
matjab
Czy istnieje możliwość utworzenia jednorodnej bazy rozproszonej w MySQL? Szukałem informacji na ten temat i zdaje się, że najpopularniejszym sposobem jest utworzenie bazy centralnej w MSSQL i zlinkowanie baz MySQL. Zastanawiam się, czy można utworzyć taką strukturę przy użyciu jedynie MySQL-a? Dodam, że chciałbym stworzyć ją na hostingach, nie lokalnie (czy tutaj mogą pojawić się utrudnienia w konfiguracji takiej bazy?). Będę wdzięczny za jakiekolwiek informacje, linki do materiałów etc.
Mchl
Replikacja multi-master?
matjab
Cytat(Mchl @ 15.03.2010, 12:58:29 ) *
Replikacja multi-master?

No tak ale mechanizm replikacji służy zdaje się uaktualnianiu wartości z bazy master do slave-ów. (?) Ja chciałbym wykonywać zapytania (głównie select) po wszystkich bazach i przedstawiać je użytkownikowi w sposób jednolity.
Mchl
No a multimasterze każdy serwer jest jednocześnie slavem i masterem.

Może napisz więcej co roumiesz pod opjęciem baza rozproszona.
matjab
Generalnie chciałbym stworzyć taką wymyśloną aplikację, składającą się z kilku paneli - oddziałów (każdy oddział miałby swoją bazę danych). Użytkownik przypisany do oddziału wprowadzałby dane do bazy swojego oddziału, natomiast mógłby przeglądać dane wszystkich oddziałów i tutaj potrzebuje wykonywać zapytania select po bazach wszystkich oddziałów. Oczywiście mechanizm replikacji również będzie potrzebny, aby rozporopagować zmiany w polach słownikowych do wszystkich baz np. nowe ceny produktów, jednak dopiero zaczynam i w chwili obecnej chciałbym stworzyć strukturę (najlepiej w samym MySQL-u) umożliwiającą wykonywanie zapytań select jednocześnie w kilku bazach danych. Dodam jeszcze, że nie robię tego na zlecenie - jest to projekt akademicki. rolleyes.gif
Mchl
Rzuć okiem na silnik FEDERATED. Może wystarczy.
matjab
Stworzyłem jakąś testową strukturę w oparciu o silnik FEDERATED. Mam jednak kilka pytań do osób z większym doświadczeniem.

W chwili obecnej mechanizm FEDERATED działa w mojej bazie tak, że w obu tabelach pokazują się dokładnie te same rekordy (tzn. są to kopie lustrzane - dodaje coś do jednej, pokazuje się w drugiej, usuwam z jednej - nie ma w obydwu, itd...). Powstają zatem następujące pytanie:
- Czy istnieje możliwość sterowaniem przetwarzania zapytań (w tym silniku) w taki sposób, że mogę zdefiniować, kiedy mają zostać zwrócone rekordy ze wszystkich baz, a kiedy tylko z jednej, tej dla której wykonuje bezpośrednio zapytanie? (potrzebuje w zależności od danych podanych przez użytkownika w formularzu wykonywać instrukcję - głównie select - dla jednej bądź wszystkich baz..).
- No i drugie pytanie: czy można połaczyć ze sobą więcej niż dwie bazy?

Z góry dziękuje za podpowiedzi. Mam nadzieję, że jasno się wyraziłem (pora niesprzyjająca) tongue.gif
Mchl
Chyba już wykraczasz poza możliwości MySQL niestety...
matjab
Doczytałem, że w rzeczywistości silnik ten działa tak, że dane przechowywane są na jednym serwerze. Nie bardzo rozumiem zasadność użycia tego silnika, bo przecież w takim przypadku tworzy nam się zwykła baza scentralizowana... Chyba, że nasza 'rozproszona struktura' musi przechowywać część danych wspólnych (tutaj FEDERATED), a część własnych (lokalnie na jednym serwerze i tu wystarczy MyISAM). Chyba, że czego ś nie rozumiem.

Sam w tej sytuacji zastanawiam się, czy nie byłoby dobrym rozwiązaniem stworzenie takiej hybrydowej struktury, w której dane lokalne dla serwera byłyby przechowywane w bazie na serwerze, i wykonywana była by kopia w pewnej centralnej bazie dla wszystkich serwerów. W prawdzie rozwiązanie to nie jest może najbardziej eleganckie, ale będzie chyba wydajne. Dodając lub uaktualniając wiersz należy dodać 2 wpisy, ale za to przy pobieraniudanych możemy skorzystać z tabeli lokalnej (MyISAM) - dane lokalne bądź centralnej (FEDERATED) - wszystkie dane.


Cytat(Mchl @ 15.04.2010, 13:21:56 ) *
Chyba już wykraczasz poza możliwości MySQL niestety...


Kurcze szkoda, zależało mi na MySQL, bo jest najbardziej dostępne i mógłbym rzeczywiście rozproszyć strukturę po (nawet darmowych) hostingach w sieci ;-/

A co sądzisz o mojej koncepcji przedstawionej powyżej Mchl, ma to jakiś sens..?
Rude Dude
Cytat
(potrzebuje w zależności od danych podanych przez użytkownika w formularzu wykonywać instrukcję - głównie select - dla jednej bądź wszystkich baz..).

Spróbuj utworzyć nowe pole tabeli w którym będziesz przechowywał ID bazy z której pochodzi dany rekord. Używając select dodałbyś jako kryterium aby pobrało wyniki tylko dla rekordów z bazy o danym ID.
Mchl
Jeśli chcesz się trzymać MySQL, to możesz pokombinować z innymi silnikami, typu
http://spiderformysql.com/
tyle że raczej nie zainstalujesz tego na 'tanim' hostingu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.