![]() |
![]() |
![]()
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.
|
|
|
![]() |
![]()
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?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 6.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
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. |
|
|
![]()
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.
![]() |
|
|
![]()
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.
|
|
|
![]()
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) ![]() |
|
|
![]()
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...
|
|
|
![]()
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. 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 |
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 10:19 |