PDA

Zobacz pełną wersję : Wspólna baza userów



perkusista
09-10-2006, 08:54
Założenia:
1. Jest wiele instalacji joomla pod różnymi domenami. Serwisy są ze sobą powiązane.
2. Baza userów jest na Comunity Builder
Problem:
1. Potrzebna jedna wspólna dla wszystkich serwisów baza userów.
Propozycja rozwiązania:
1. Na jednym z serwisów nazwijmy go Master (M). Istnieje baza userów. Tylko na serwisie M można dodawać userów, aktualizować dane itp.
2. Na pozostałych serwisach niech będą Slaves (S) instnieje wierna kopia bazy userów M.
3. Przy każdej zmianie na M tabele z S są dosłownie zamieniane z tabelmi z M

Pytania:
1. Czy takie rozwiązanie ma racje bytu w przypadku serwisu z maksymalną liczbą userów równą 1000. Czy to rozwiązanie nie wpłynie negatywnie na szybkość działania serwisu ?
2. Czy jest sens rozwijać ten pomysł i zrobić do tego jakiegoś bota, któy będzie sprawdzał czy dane table uległy modyfikacji i w razie potrzeby replikował pomiędzy innymi bazami oraz komponent któy będzie przechowywał info o bazach do któych mają być kopiowane table ?

nexus246
09-10-2006, 13:04
Założenia:
1. Jest wiele instalacji joomla pod różnymi domenami. Serwisy są ze sobą powiązane.
2. Baza userów jest na Comunity Builder
Problem:
1. Potrzebna jedna wspólna dla wszystkich serwisów baza userów.
Propozycja rozwiązania:
1. Na jednym z serwisów nazwijmy go Master (M). Istnieje baza userów. Tylko na serwisie M można dodawać userów, aktualizować dane itp.
2. Na pozostałych serwisach niech będą Slaves (S) instnieje wierna kopia bazy userów M.
3. Przy każdej zmianie na M tabele z S są dosłownie zamieniane z tabelmi z M

Pytania:
1. Czy takie rozwiązanie ma racje bytu w przypadku serwisu z maksymalną liczbą userów równą 1000. Czy to rozwiązanie nie wpłynie negatywnie na szybkość działania serwisu ?
2. Czy jest sens rozwijać ten pomysł i zrobić do tego jakiegoś bota, któy będzie sprawdzał czy dane table uległy modyfikacji i w razie potrzeby replikował pomiędzy innymi bazami oraz komponent któy będzie przechowywał info o bazach do któych mają być kopiowane table ?

ad.1 Zależy jak to zostanie zrobione ale generalnie moim zdaniem nie wpłynie jeśli samą replikacje bazy userów robi się "poza" Joomlą.

ad.2 Myślę że tak. Chociaż tak jak pisałem wcześniej zrobiłbym to poza Joomlą. Tworzysz takiego bota, odpalasz go minutę, dwie i on już robi swoje. Może tylko zmieniłbym koncepcję tego - tzn. na M postawiłbym skrypt udostępniający informacje o userach (jest taka technologia SOAP czyli udostępnianie usług w skrócie albo może w XML, sporo możliwości jest) a to serwery S byłyby odpowiedzialne za sprawdzanie co pobrać. Tylko trzeba to dobrze przemyśleć od strony bezpieczeństwa.

Nie napisałeś jednej rzeczy, czy serwisy są na jednej fizycznej maszynie. Bo jeśli tak by było to można przerobić sam skrypt logowania zmieniając mu bazę w które ma weryfikować użytkownika.

perkusista
09-10-2006, 23:54
Rzecz w tym, że nie chciał bym modyfikować skryptów logowania ani zmuszać jakichkolwiek modułów, komponentów z S aby sztucznie pobierały info z inneg miejstac niż #__useres na swojej instalacji bo podczas upgradów do nowych wersji komponentów, bądź joomli trzeba było by na nowo wszystko modyfikować. Co innego zainsalować na M boot do replikacji któy będzie można łatwo skonfiguraować. Instalacje S będa cały czas niezależne a zarazem będa miały cały czas aktualną baze userów.

Tak serwisy są na jednej maszynie.

Pytanie nadal brzmi czy warto robić całą sprawą zająć się na poważnie, czyli czy takie operacje replikacji nie będą zbyt czasochłonne dla bazy. Dajmy na to ze mam 5 serwisów S i przy jakiejkolwiek zmianie w tabelach CB na M replikuje te, które uległy zmianie na wszystkie bazy S. Jak duże mogą być bazy cb