Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tworzenie bazy- optymalizacja
Forum PHP.pl > Forum > Bazy danych
artisan
Witam,
mam pytanie, które rozwiązanie będzie bardziej efektywne, szybsze i lepsze dla serwera. Ogólnie sytuacja jest taka: mam sobie kilku, bardzo dużo użytkowników, którzy mają w moim systemie możliwośc obsługi swoich klientów. i teraz pytanie: czy dla każdego uzytkownika/firmy tworzyć odrębną bazę danych, która będzie przechowywać tylko i wyłącznie dane na temat tej wybranej jednostki czy wrzucić wszystko do jednej bazy i rozróżniać po id jednostki?
Pyton_000
1 system, 1 baza
aniolekx
to zalezy
Forti
Cytat(aniolekx @ 20.07.2015, 09:33:10 ) *
to zalezy


super odpowiedz! Rzetelna i w pełni satysfakcjonująca.


Jeden system - jedna baza. W przeciwnym wypadku i tak będziesz musiał przynajmniej dwa razy zainicjować połączenie do bazy - raz do ogólnej z globalnymi danymi jak konfiguracje itp. i drugi raz dla danego użytkownika.
Bezsensu wink.gif Kilka baz stosuje się moim zdaniem gdy content jest zupełnie różny i np. z danej bazy korzysta więcej niż jedna aplikacja, oraz dodatkowa do testów czy coś.

Szybciej będzie wyszukiwać rekordy po odpowiednich kluczach w 1-3 mln rekordowej tabeli - moim zdaniem.
Crozin
Cytat
Cytat
to zalezy
super odpowiedz! Rzetelna i w pełni satysfakcjonująca.
Zważywszy na ilość szczegółów w pytaniu zadanym przez autora... w sumie najpoprawniejsza jaką można dać.

@artisan: Jest jakikolwiek powód dla którego wydaje Ci się, że rozdzielenie na n baz danych coś zmieni?
aniolekx
polecam objerzec: Wojciech Matusiak: Skalowalność PHP+MySQL - case study
Forti
Cytat(Crozin @ 20.07.2015, 09:56:17 ) *
super odpowiedz! Rzetelna i w pełni satysfakcjonująca.Zważywszy na ilość szczegółów w pytaniu zadanym przez autora... w sumie najpoprawniejsza jaką można dać.

@artisan: Jest jakikolwiek powód dla którego wydaje Ci się, że rozdzielenie na n baz danych coś zmieni?


Moim zdaniem gościu napisał dosyć rzeczy. Ma kilka dziesiąc użytkowników - każdy z nich ma jakieś swoje dane w postaci klientów. Nie wiadomo ile oraz ile konkretnie danych potrzeba. Nie wiadomo jeszcze jak zaprojektować baze.
Padło pytanie:

Zrobić to na jednej database czy dla każdego klienta odzielnie - co będzie wydajniejsze.


A więc śmiało mogę załozyć że aplikacja nie będzie duża (kilkadziesiąt, a nawet napisał "kilku" to jest bardzo mało). Niech każdy z nich ma 1000 klientów. Załóżmy że mamy 1000 userów. To daje 1 mln klientów. Nie jest to nie wiadomo jak dużo wink.gif
To już chyba łatwiej będzie robić jedną tabele dla jednego użytkownika - łatwiej mieć 1000 tabel niż 1000 baz danych, prawda? Czy się mylę? Jeżeli tak to mnir poprawcie, proszę.
vokiel
Hmm, to zależy ;-)

A tak na poważnie - to na prawdę zależy.
Przykładowo jeśli masz jakiś rozbudowany system obiegu dokumentów/zamówień/księgowy czy cokolwiek innego w którym masz kilkadziesiąt tabel, to IMHO będzie lepiej mieć bazę per klient. Owszem część rzeczy się powtórzy, trzeba będzie zarządzać połączeniami do baz, ale dzięki temu masz odseparowane dane jednego klienta od danych drugiego. Poza tym nie musisz przekazywać ID klienta do każdego zapytania (lub dawać wszędzie JOIN'y). W razie jakiś niespodziewanych przypadków masz większą szansę na to, że ucierpi tylko jeden klient. Nawet głupi eksport danych jest łatwiejszy bo eksportując całą bazę masz w zrzucie dane tylko jednego klienta - a nie wszystkich wymieszane ze sobą. Teraz jeśli Twoi klienci obsługują innych klientów, to i tak będziesz miał tam ich ID - odseparowanie bazy per klient zmniejsza poziom abstrakcji o jeden poziom.

Z drugiej strony, jeśli system jest mały i dane opierają się na kilku tabelach to spokojnie można to robić w jednej bazie.
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.