Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Projekt bazy dla wielu użytkowników, dylemat
siewca
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 15.11.2008

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


Mam pewien dylemat i mam nadzieję tutaj go rozwiać korzystając z pomocy kolegów którzy ugryźli kiedyś podobny temat smile.gif

Tworzę program magazynowy dla wielu użytkowników, każdy użytkownik ma swoje konto i widzi tylko swój magazyn (o istnieniu innych nie ma pojęcia). Zakładając że każdy użytkownik w magazynie będzie miał może nawet kilka tysięcy produktów.

Rozważam jedną z trzech możliwości podczas projektowania bazy:

1. Towar wszystkich użytkowników jest w jednej tabeli, ale każdy towar ma przypisane id użytkownika po którym będzie rozpoznawany właściciel towaru (chyba najmniej wydajna opcja, tak mi się wydaje, bo przecież przy wielu użytkownikach tabela byłą by ogromna).
2. Zakładając konto użytkownikowi tworzona jest osobna tebela dla jego magazynu, jednak w obrębie tej samej bazy (wiadomo nie będzie trzeba robić tego ręcznie, wymaga minimalnej administracji)
3. Po rejestracji użytkownika, w ciągu 24 godzin administrator instaluje kopię programu na nowej bazie danych, tak więc każdy user ma swoją bazę. Niby najbardziej wydajna opcja (tak mi się zdaje) jednak przy wielu użytkownikach aktualizacja programu o nowe funkcje była by męczarnią.

Ogólnie wygodny w budowie i w późniejszym zarządzaniu był by pierwszy sposób, ale czy skrypty wyszukiwania i operacje na rekordach nie będą się mulić gdy w bazie będą tysiące produktów?

Zapraszam do dyskusji, wierzę że te informacje przydadzą się nie tylko mi.

Pozdrawiam, i sorry jeśli gdzieś jest już podobny wątek. Przejrzałem jednak ciężko ogarnąć cały dział. Furum jest ogromne smile.gif
Go to the top of the page
+Quote Post
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!

Użytkownicy systemu to osobna tabela, magazyny to osobna tabela (tutaj kwestia czy mogę mieć jeden tylko magazyn czy kilka), produkt to osobna tabela, przypisanie produktu do magazynu wraz z datą i stanem magazynowym to osobna tabela....

Dalej analogicznie biggrin.gif

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
Mchl
post
Post #3





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

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


Albo 1, albo 3 (jeżeli zależy Ci na silnej izolacji użytkowników). O 2. nawet nie myśl.
[edit]

Aha, akurat 1. będzie najbardziej wydajna. Z 3. łatiwej będzie wybrać dane konkretnego użytkownika i przenieść go np na inny serwer.

Ten post edytował Mchl 6.02.2010, 12:38:11
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ja obecnie rozwijam podobną aplikację. stosuje 1 przykład. i wszytskie zapytania opieram na widokach (tak tak korzystam z Postgre) i się nie przejmuje że tabela jest ogromna.


--------------------
Go to the top of the page
+Quote Post
siewca
post
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 15.11.2008

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


Rozumiem że opcja 2, przy wielu użytkownikach tworząc tabele strasznie spowolniła by bazę?
Opcja 3, po przemyśleniu nie wchodzi grę jednak. Np w bazie jest 100 userów, jeśli zrobił bym jakieś dodatkowe funkcje to musiał bym aktualizować 100 programów.
Opcja 1 niby wszystko ok. ale czy będzie to wydajne przy ogromnej ilości towaru? Macie może jakieś doświadczenie z pracą na baaardzo dużej tabeli? Czy MySQL i php dobrze sobie z tym radzi?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




z MySQL to nie wiem ale baza która ma 2,1GB na postgresie jest chyba dość pokaźna i nic nigdy mi się z tym nie stało smile.gif postgres rządzi.


--------------------
Go to the top of the page
+Quote Post
Mchl
post
Post #7





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

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


baaaardzo duża, to jaka?

Radzi sobie tym lepiej, im lepiej baza i aplikacja zaprojektowane winksmiley.jpg
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ooo i to co napisał ~Mchl jest tu najważniejsze, o ERD poczytaj.


--------------------
Go to the top of the page
+Quote Post
siewca
post
Post #9





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 15.11.2008

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


Hmmm. A może zamiast MySQL postawić to na PostgreSQL? Wydaje się wydajniejsza niż przy większej ilości rekordów niż MySQL i obsługuje zagnieżdżone zapytania
Go to the top of the page
+Quote Post
Mchl
post
Post #10





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

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


MySQL też obsługuje zagnieżdżone zapytania, a 'wydaje się' że 'na oko' chłop w szpitalu umarł tongue.gif

Jak źle sobie poustawiasz tabele, napiszesz marne zapytania, źle skonfigurujesz serwer, to i Oracle będzie Ci kuleć. Jeszcze raz pytam, ile to rekordów będziesz miał w tabeli (i ile bajtów na rekord?).
Go to the top of the page
+Quote Post
siewca
post
Post #11





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 15.11.2008

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


Jeszcze nie ustaliłem jakie dokładnie będą pola i o jakiej wielkości. To będę wiedział projektując magazyn.
Co do ilości rekordów to wszystko zależy ilu będzie userów i ile będą wrzucać towaru ale myślę że po 6 miesiącach będzie to ok 5 tys i będzie rosło.

Wiesz, mi też 'wydaje się' że 'na oko' chłop w szpitalu umarł smile.gif ale po to jest ten temat żeby zastąpić słowo 'wydaje się' słowem 'wiem że' winksmiley.jpg
Go to the top of the page
+Quote Post
Mchl
post
Post #12





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

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


Nie widziałem jesze testu, który by wskazywał na wyraźną przewagę Postgresa nad MySQL. Wybierając miedzy tymi dwoma należy raczej wziąć pod uwagę nie wydajność, a dostępne funkcjonalności i własne doświadczenie.
Go to the top of the page
+Quote Post
siewca
post
Post #13





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 15.11.2008

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


Jeśli chodzi o doświadczenie z bazami. Na MySQL zrobiłem parę serwisów nieruchomości z ofertami, magazynów itp. Ogólnie mają się dobrze i działają do dziś smile.gif
Przed przystąpieniem do pracy z Postgre musiał bym poznać jej możliwości i różnice.
Go to the top of the page
+Quote Post
Mchl
post
Post #14





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

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


Zawsze możesz pisać aplikację tak, aby mogła działać z jednym i z drugim (PDO, ORM, itp) winksmiley.jpg
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 07:33