Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Design bazy - czy istnieje lepsza możliwość?
reflektor
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 30.04.2013

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


Witam,

W chwili obecnej próbuje zaprojektować bazę MySQL, aczkolwiek nie wiem czy moje rozwiązanie jest najbardziej optymalne. Poniżej przedstawię swój problem i moje rozwiązanie. Jeżeli ktoś posiada lepszy pomysł to proszę dać znać.

Zadanie:
Do bazy MYSQL co godzinę z komputerów klientów dostarczane są logi, które zawierają spis wszystkich ściągniętych plików i ich rozmiarów. W każdym znajduje się średnio 500 informacji o "plikach" i każdy przesyłany jest z X komputerów co godzinę. W chwili obecnej mam dwie tabele. Jedna to standardowa tabela zarejestrowanych użytkowników, a druga to tabela plików. Tabela plików przedstawia się następująco:


+ id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
+ user_id INT NOT NULL (powiązanie z użytkownikiem, który przesłał loga)
+ logfile_id INT NOT NULL (numer identyfikacyjny loga, z którego "pochodzi" dany plik)
+ nazwa_pliku varchar(128)
+ rozmiar_pliku INT NOT NULL


Log wyświetlane są klientom na żądanie dlatego musi istnieć powiązanie plik <-> log. Przyjmując, że mam bardzo dużą liczbę użytkowników i logi wysyłane są średnio co godzinę to jak nietrudno się domyślić w bazie robi się małe kongo-bongo. Myślałem o stworzeniu jednej "tabeli plików" dla jednego użytkownika, ale z tego, co wyczytałem na innych serwisach to nie jest dobry pomysł. Czy istnieje jakieś lepsze rozwiązanie tego problemu?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Twoja obecna struktura wydaje się być jak najbardziej w porządku. Jedyne co bym zmienił to zwiększył limit 128 znaków na nazwę pliku - rzadko, ale jednak mogą pojawić się dłuższe pliki; zaś rozmiar pliku musi być typu BIGINT - chyba, że masz gwarancję, że wszystkie będą poniżej ~2 GiB.
Go to the top of the page
+Quote Post
bpskiba
post
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


Wydaje się, że partycjonowanie może być ciekawym rozwiązaniem np interwałem czasu

http://dev.mysql.com/tech-resources/articl...rtitioning.html

Go to the top of the page
+Quote Post
Thorang Hoog
post
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 9
Dołączył: 8.02.2009

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


polecam stworzyć trzecią tabelę gdzie zapiszesz dane logów czyli
id użytkownika,
id pliku,
czas rozpoczęcia pobierania,
ewentualny ip
i co tam jeszcze tylko potrzebujesz.
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: 19.08.2025 - 05:00