Mijn uitspraken zijn dan ook onder voorbehoud van implementatie-keuzes. Nochtans gok ik dat het resultaat bij andere databases weinig zal verschillen: hoe je het ook went of keert, uiteindelijk moet de data eerst van de DB naar je script en van je script naar de user, in plaats van directe pass-thru wat je bij een webserver of bijvoorbeeld PHP's readFile methode hebt.
Daarnaast is snelheid maar 1 van de vele requirements die je kunt hebben. Verder is het natuurlijk niet zo dat je de plaatjes ook alleen maar uit de database mag lezen. Niks houdt je tegen om een cache op het FS te maken waar je de plaatjes weghaalt. Het snelheids argument is dan volledig onderuit gehaald.
En vervolgens krijg je problemen met concurrency en cache invalidation. Ik dacht dat jij juist voorstander was van dingen simpel houden?

Ik gok dat een goede cache controle en filesystem cache
net iets complexer is om op te zetten dan een simpele filebackup.
Daarnaast, de incrementele backup procedure waarbij je naast een database ook nog een deel van je filesystem moet gaan backuppen (en deze backups ook goed in sync moet houden) is een stuk lastiger dan enkel een database backup. En Murphy dicteert in dat geval 2 dingen:
1 - Als iets lastiger is gaat dat veel vaker fout
2 - Als iets fout kan gaan, gaat het ook fout op het moment dat het het minst goed uitkomt.
Hangt af van je platform. Onder windows server kan ik een folder selecteren, onder properties de backup wizzard doorlopen en in een paar klikken een automatische incremental backup schedulen. Dat is zelfs nog minder werk dan een speciale task maken die een mysqldump doet, het resultaat correct renamed en verplaatst naar een backup locatie. Incremental file-backups zijn wel zo gemeengoed dat dit nauwelijks een issue mag zijn qua complexiteit.
En dan praat je over onnodig grote backups? Wanneer je je code telkens weer mee opslaat bij je plaatjes ben je sowieso niet goed bezig.
Met incremental backups is dat juist geen issue. Evengoed heb je gelijk dat de source ook uit een repository kan trekken, ik had het over een situatie waarin dat niet zo geregeld is (wat helaas in mijn ervaring nog te vaak voorkomt), of waarbij local changes zijn gemaakt (idem).
Plaatjes in de DB zorgt ervoor dat de content uit 1 bron komt die gegarandeerd in sync is met elkaar (want 1 bron kan natuurlijk erg lastig niet in sync zijn met zichzelf). Wanneer je je content uit 2 compleet verschillende bronnen moet halen is het heel lastig om die in sync te houden (tenzij jij een transactional systeem hebt waarin je je filesystem en je DB op kunt nemen)
Wellicht nogmaals ter verduidelijking: wanneer je van elk image wat je hebt, een unieke fingerprint van het origineel maakt, het origineel met die fingerprint als naam opslaat, en bij elke wijziging een
nieuw plaatje maakt met zijn eigen unieke fingerprint heb je ook nagenoeg nooit problemen met synchronisatie, zolang je FS backups maar even vaak gemaakt worden als DB backups (wat simpeler is dan het lijkt: er is genoeg backup software die continue wijzigingen automatisch toevoegt aan een incremental backup, bij MySQL moet je dan al bezig met dumps en binlogs).
Ik zal niet ontkennen dat het (iets) simpeler is om backups op te zetten als je alles op 1 locatie houdt: dat is evident. Maar om voor die paar uitzonderingsituaties standaard alles in je DB te plempen lijkt me, zeker als het om veel binaire data gaat, een slecht plan. Wederom, wellicht dat andere databases er beter mee omgaan, maar ik heb enig ervaring met grote MySQL databases (1Gb+ aan data) en de problemen met backups, replication, caching, etc wegen voor mij niet op tegen het extra werk van een filebackup task toevoegen. Daar komt bij dat ik geregeld een DB backup terug moet zetten maar nagenoeg nooit een compleet filesystem. Al heeft dat wellicht ook te maken met die troep die MySQL heet

Dat is unencrypted

En dan ben ik vrij gul: in de meest ideale situatie is MySQL 27% langzamer. Ga ik ook leuren met connecties openen etc wordt het al 38% langzamer. Ter vergelijking: memcache doet er "slechts" 15% langer over.
offtopic:
Wellicht een idee trouwens om deze discussie af te splitsen naar een apart draadje? Het begint wat offtopic te raken.
[
Voor 5% gewijzigd door
FragFrog op 19-07-2010 12:18
]