Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%)
|
Zacząłem się zastanawiać własnie nad składowaniem plików w bazie danych, do tej pory myślałem że to rozwiązanie jest co najmniej głupie, jednak w pewnym momencie gdy chciałem napisać klasę zarządzającą plikami doszło do mnie że przy dużej ilości plików aby osiągnąć dobrą wydajność, będę musiał się bawić w tworzenie struktury folderów tak że np. dla pliku o id 15742 ścieżka dostępu będzie wyglądała np. /download/01/57/42/15742.jpg albo w jakichś podobny sposób
z tego co się kiedyś dowiadywałem wynikało że OS bierze sobie dane o jakimś folderze i przeszukuje jeden po drugim w poszukiwaniu wskazanego przez nas pliku, tak więc złożoność liniowa przy bazie danych i kluczu głównym można podejrzewać złożoność będzie logarytmiczna chciałbym prosić o opinie i wasze doświadczenia... jakie są wady i zalety takiego rozwiązania |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%)
|
tak też myślałem ale wolałem zapytać zanim narobię se roboty... łatwiej stworzyć puste pliki niż czymś wypełnione (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) :P
no dobra a odnośnie ilości? 1k, 10k, 100k ile to jest "dużo"? EDIT: źle Ciebie zrozumiałem Cytat Duzo plikow... 20-100k zrozumiałem jako dużo plików o rozmiarze 20-100 KB (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) no dobra to sobie jutro potestuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pytanie o wady i zalety bazy danych do przechowywania plików aktualne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) EDIT2: Po testach no dobra opowiem trochę o specyfice benchmarka, jego wynikach i moich pytaniach w związku z nimi O.o skleconych zostało ~1M plików różnej losowej długości w przedziale 2kB-8kB test polegał na wybraniu 1000 losowych plików, dla wszystkich przypadków tych samych, zapisaniu ich zawartości do zmiennej i wyznaczeniu długości tej zmiennej OS: Win XP, FS: NTFS, DB: MySQL, tabela: InnoDB, pola: id (primary key, int), zawartosc (blob) Struktura katalogów była tworzona w oparciu o identyfikator w ten sposób: (parę przykładów dla różnych identyfikatorów) 5 -> /05.jpg 73 -> /73.jpg 936 -> /09/0936.jpg 4729 -> /47/4729.jpg 83952 -> /08/39/083952.jpg dla przypadku gdy wszystkie pliki znajdowały się w jednym katalogu adres wyglądał wg schematu: xxx.jpg chyba wszystko jasne testowane przypadki: 1. wszystkie pliki w jednym katalogu 2. pliki w bazie danych 3. opisana struktura katalogów a ) wyniki po pierwszym odpaleniu dla danego ziarna: 1. 28.68 s 2. 11.88 s 3. 40.62 s b ) po kolejnym uruchomieniu dla danego ziarna: 1. 0.43 s 2. 11.57 s 3. 0.61 s Wnioski które naszły mnie podczas testów: - winda ma chłonny cache, mogłem odpalić test z jakimś ziarnem, potem odpalić kolejne 2 (nie sprawdzałem dla większej ilości) testy na innym ziarnie, wrócić do pierwszego i wyniki były jak w przypadku b ) - jestem zawiedzony szybkością bazy danych - i najdziwniejszy: utworzona struktura katalogów jedynie pogarsza wydajność Może źle napisałem test, kod podaje poniżej, dla chętnych którzy chcą zweryfikować te wyniki u siebie na localu mogę wysłać skrypty które napisałem w celu wygenerowania tych plików i ułożenia ich w odpowiedniej strukturze, z góry jednak oświadczam że nie biorę odpowiedzialności jeśli jakimś cudem wyrządzą jakieś szkody (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) :P u mnie przebiegło bez większych problemów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Kod nie jest najpiękniejszy, ale nie powinno być problemów z jego analizą:
Ten post edytował zimi 18.07.2008, 09:07:07 |
|
|
|
zimi Składowanie plików w bazie danych 15.07.2008, 22:02:25
dr_bonzo Duzo plikow w 1 katalogu i OS/system plikow moze n... 15.07.2008, 22:18:46
zimi właśnie zastanawia mnie co znaczy to du... 15.07.2008, 22:46:36
dr_bonzo hehehe, benczmark na pustych plikach. bez jaj Mus... 15.07.2008, 23:16:48
dr_bonzo Hmm,
ze baza jest wolna to chyba oczywiste ;D opro... 20.07.2008, 12:02:49
zimi CytatA co do podzialu na katalogi, hmm, moze jest ... 20.07.2008, 14:37:33 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 08:20 |