Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wydajność - Jedna ogólna baza vs kilka baz
pastan
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 3
Dołączył: 25.03.2009

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


Witam,
Aktualnie rozplanowuje na kartce swój najnowszy projekt i bardzo staram się dopiąć każdy element już podczas planowania by zaoszczędzić potem czasu i nerwów gdy będę to wszystko przekładał na kod. Podczas planowania mam pewien problem do rozgryzienia i mam nadzieję, że pomożecie.

Planuje stworzyć portal gdzie każdy z użytkowników po zarejestrowaniu będzie posiadał własne adresy, dokumenty oraz inne dane, które będą zapisywane w tabelach mySQL. Zakładam, że liczba rekordów dla jednego użytkownika będzie bardzo duża, na oko ponad milion. I teraz zastanawiam się czy stworzyć jedną bazę ogólną z tabelkami i w niej przechowywać wszystkie dane każdego z użytkowników. Boje się tylko, że wtedy taka tabela może mieć naprawdę sporo rekordów (np. 100 użytkowników * 1mln rekordów = 100mln rekordów!!!) co sprawi, że szybkość działania portalu bardzo drastycznie się zmniejszy.

Pomysł jaki mi wpadł do głowy to podczas rejestracji nowego użytkownika tworzyć nową bazę danych dla niego a w niej wszystkie tabelki. Wtedy jedna tabelka posiadała by maks 1mln rekordów a nie 100mln jak w poprzednim rozwiązaniu. Według mnie będzie to bardziej optymalne rozwiązanie jeżeli chodzi o szybkość działania portalu.

Czy ktoś z Was próbował już coś takiego zrobić? Czy moje myślenie jest poprawne? Czy rozdzielenie użytkowników tak by każdy posiadał własną bazę jest dobrym pomysłem? Czy aby na pewno tym rozwiązaniem zwiększę szybkość działania systemu?

Z góry dziękuję za pomoc!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ZaqU
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 21.01.2013

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


Pomysł z tworzeniem osobnej bazy dla każdego użytkownika z osobna jest bardzo radykalny i abstrakcyjny. Przede wszystkim, odpada możliwość pracy na danych wielu użytkowników, gdyż tworzenie 100 połączeń dla 100 różnych użytkowników dopiero może obciążyć wykonanie skryptu php.

Wbrew pozorom, milion rekordów dla współczesnych serwerów to bułka z masłem. Oczywiście, najważniejsze jest odpowiednie zaplanowanie bazy przed jej utworzeniem (nigdy na odwrót!). O takich rzeczach jak stringi przechowywane w varchar'ach o odpowiedniej długości, czy też liczby o typie stosownym do ich maksymalnej wielkości chyba nie muszę wspominać, bo to jest raczej oczywiste. To o czym powinieneś pomyśleć, to przede wszystkim INDEKSY. Dobrze założone potrafią zdziałać cuda, nawet przy największych wydawać by się mogło bazach.

Trudno jest udzielić jakichś bardziej szczegółowych porad nie wiedząc co chcesz w tej bazie zapisać, ani jakie operacje na danych wykonywać. Może da się coś skrócić, bo milion rekordów na dane użytkownika to naprawdę bardzo dużo - zastanów się, czy rzeczywiście nie da się tej ilości zmniejszyć. Poczytaj też o testach wydajnościowych MySQL, a najlepiej przeprowadź własne testy obciążeniowe.
Go to the top of the page
+Quote Post

Posty w temacie


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: 18.10.2025 - 02:23