Zda-li je lepší mít obrázky v souborech nebo v databázi (a to včetně obsahu), viz např. http://forum.root.cz/index.php?… (zdrojak.cz nebo root.cz) o tom existoval článek, který citoval studii, která říkala, že co se týče rychlosti, tak pokud je velikost dat do určité hodnoty (a myslím, že to byl 1 MB), pak se vyplatí databáze, pro větší pak soubory.
Výhody ukládání obrázků v databázi (včetně obsahu):
* Nemůže se stát, že by se někdo (ať už z jakéhokoli důvodu) dostal na ftp a tam ti nekontrolovaně smazal, přepsal nebo přesunul pár obrázků a ty by ses o tom nedozvěděl do okamžiku, kdy bys je chtěl zobrazit. (Nutno říci, že byť k tomu dojít může, je to málo pravděpodobné.)
* Pokud chceš ke každému obrázku spravovat i popisek (ať už jeden či více, v jednom jazyku či multilinválně), pak se víc hodí víc databáze.
* Pokud chceš mít pro každý obrázek i miniaturu (ať už jednu nebo různé velikosti), pak se víc hodí databáze.
* Pokud chceš mít v názvu obrázku diakritiku a znaky, které by jinak nešly zobrazit (\ : ? \0 \n…), pak jedině přes databázi.
* Pokud plánuješ možnost ukládat víc verzí stejného obrázku nebo možnost mít více obrázků stejného jména, pak jedině přes databázi
Je to proto, že databáze drží obrázek a všechny informace a metainformace o něm v jednom záznamu.
Nevýhody ukládání do databáze:
* Při zálohování a exportech databáze sql soubory nabobtnají na desítky až stovky megabajtů a manipulace s nimi začne být o trochu náročnější.
* Velikost databáze může být také problém (to si zjisti sám, jestli by to případně nebyl problém),
* Úkoly typu "u tohohle obrázku se mi nelíbí tenhle pixel a chtěl bych ho upravit" bývají při ukládání do databáze složitější.
* Větší nároky na databázi, když má najednou "vyplivnout" obsah stovek obrázků. (U řešení přes soubory je zátěž (na webserver jako celek) v podstatě stejná, v tomto případě je ale soustředěna celá na databázi ("úzké hrdlo"))
* Naopak, při použití sendfile() (kdy v databázi je jen cesta k souboru) je šance, že systém (je-li tak nakonfigurován) pošle soubor asynchronně.
1000 souborů snad ještě jde zvládnout přečíst a poslat během zlomku sekundy. Rozhodneš-li se pro další dělení do adresářů, klíč podle počátečních písmen nemusí být efektivní, doporučil bych nějakou jednoduchou hashovací funkci.