Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rozproszona baza danych
matjab
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Replikacja multi-master?
Go to the top of the page
+Quote Post
matjab
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował matjab 15.03.2010, 13:37:03
Go to the top of the page
+Quote Post
Mchl
post
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


No a multimasterze każdy serwer jest jednocześnie slavem i masterem.

Może napisz więcej co roumiesz pod opjęciem baza rozproszona.
Go to the top of the page
+Quote Post
matjab
post
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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. (IMG:style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post
Mchl
post
Post #6





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Rzuć okiem na silnik FEDERATED. Może wystarczy.
Go to the top of the page
+Quote Post
matjab
post
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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) (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Mchl
post
Post #8





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Chyba już wykraczasz poza możliwości MySQL niestety...
Go to the top of the page
+Quote Post
matjab
post
Post #9





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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..?

Ten post edytował matjab 15.04.2010, 12:36:21
Go to the top of the page
+Quote Post
Rude Dude
post
Post #10





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 23.07.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Mchl
post
Post #11





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:15