Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Design bazy - czy istnieje lepsza możliwość?
Forum PHP.pl > Forum > Bazy danych > MySQL
reflektor
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?

Crozin
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.
bpskiba
Wydaje się, że partycjonowanie może być ciekawym rozwiązaniem np interwałem czasu

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

Thorang Hoog
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.
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.