tak też myślałem ale wolałem zapytać zanim narobię se roboty... łatwiej stworzyć puste pliki niż czymś wypełnione

: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

no dobra to sobie jutro potestuje

pytanie o wady i zalety bazy danych do przechowywania plików aktualne

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

:P u mnie przebiegło bez większych problemów

Kod nie jest najpiękniejszy, ale nie powinno być problemów z jego analizą:
<?php
$ziarno = 15478;
$do = 970072;
$ile = 1;
function name($id)
{
$id = (string)$id;
if($dl % 2 == 1)
{
$id = '0'.$id;
$dl ++;
}
$path = 'drzewo';
for($j = 0; $j < $dl - 2; $j++)
{
if($j % 2 == 0)
{
$path .= '/';
}
$path .= $id[$j];
}
$path .= '/'.$id.'.jpg';
return $path;
}
for($i = 0; $i < $ile; $i++)
{
//echo $zmienna.': '.$dlugosc.'<br>';
}
for($i = 0; $i < $ile; $i++)
{
$zap = mysql_query('SELECT * FROM pliki WHERE id = "'.($zmienna+1).'"');
$dlugosc = strlen($wiersz['zawartosc']); //echo $zmienna.': '.$dlugosc.'<br>';
}
for($i = 0; $i < $ile; $i++)
{
//echo $zmienna.': '.$dlugosc.'<br>';
}
echo'</td></tr></table>'; ?>