[pgsql] Datatype voor plaatjes
Ik wil graag een plaatje opslaan in mijn PostgreSQL database. Maar ik vraag me af welk datatype ik moet gebruiken: text of bytea?
In MySQL gebruikte ik altijd een BLOB-veld, en dat werkte prima, maar volgens mij hoor je een bytea te gebruiken, of niet?
Alvast bedankt voor de hulp.
Uitzondering: Wanneer je op pixelniveau vergelijkingen wilt gaan doen tussen plaatjes, bv. gezichtsherkenning of vingerafdrukken vergelijken.
Het vreet toch niet meer ruimte dan in het filesysteem? En waarom levert het niets op? Als ik bijvoorbeeld avatars bij een user wil gebruiken, dan is het toch handig als je dat in de database doet? Als je het gewoon in het filesysteem opslaat, en je verwijdert bijvoorbeeld de user, dan moet je ook nog het plaatje verwijderen, want je kan dan niet met een FK werken ofzo...
Het verwijderen van een bestand kun je vanuit PHP doen en bij succes pas het id uit de database verwijderen. Met PL/PERL kun je een stored procedure schrijven die vanuit de database jouw filesystem benadert en het bestand weggooid. Mogelijkheden genoeg dus!
Bestanden sla je niet op in de database, een filesystem kan dat veel beter. Het komt de snelheid van de database zeker ten goede.
Edit: Heb me toch een hekel aan fouten met d's en t's...
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Wederom bedankt voor je goede hulp!
Maar een text-datatype is hier toch meer op zijn plaats? Je weet toch niet hoe lang die link gaat worden (je weet het waarschijnlijk wel, maar het is niet iets wat persé niet langer dan ... karakters mag zijn).
Het pad naar het bestand kan overal hetzelfde zijn, dat hoef je eigenlijk niet apart op te slaan. Tevens ga jij natuurlijk alle namen zelf bepalen, dan krijg je nooit dubbele namen. De originele bestandsnaam kun je uiteraard ook nog even opslaan, mocht je daar behoefte aan hebben.
Edit: Er zijn inderdaad beperkingen aan de lengte van de filename, zie wikipedia.
Gewijzigd op 01/01/1970 01:00:00 door Frank -