a MySQL a népszerű adatbázis-kezelő rendszerek közé tartozik. Használható az alkalmazások szerint tervezett adatok tárolására és lekérésére. A legtöbb alkalmazás szükséges a képek kezeléséhez. Ez az oktatóanyag lehetőséget nyújt a képek MySQL táblában történő tárolására.
Megjegyzések: a szakemberek segíthetnek a vállalat vagy a projekt képadatbázis-fejlesztésében.
tárolja a kép elérési útját
a legegyszerűbb megoldás a képek tárolása a fájlrendszer könyvtáraiban, és az adatbázisban lévő fotókra való hivatkozások tárolása, például az SQL & MySQL, például a kép elérési útja, a kép neve stb. Alternatív megoldásként akár CDN-en vagy számos gazdagépen is tárolhatja a képeket egy nagy kiterjedésű jelentős területen, és megőrizheti hivatkozásaikat az adatbázis erőforrásainak eléréséhez.
ily módon nem a teljes képet kell tárolnunk az adatbázisban, hanem csak a mappában tárolt kép elérési útját kell tárolnunk. A képek tárolása akkor jó, ha a képek mindig ugyanabban a mappában lesznek, azaz ha minden képnek megvan az egyedi elérési útja, amely mindig ugyanaz lesz. Bizonyos esetekben azonban a képeket át kell vinni egyik mappából a másikba. Ebben az esetben a legjobb megoldás a képfájl dinamikus elérési útjának létrehozása, tehát ha a képet át kell helyezni, akkor nem lenne kötelező módosítani az adatbázist.
frissíthetünk egy meglévő táblát egy képútvonal mező hozzáadásához az alábbiak szerint.
// Add column to store image path
ALTER TABLE `my_table`
ADD COLUMN `image_pathLocation` varchar(1024)
egy másik megközelítés az, hogy külön táblázatot hozunk létre a képekhez, és hivatkozást adunk a táblázatokhoz a képtábla segítségével. Ily módon több tábla tárolhatja a képeket egyetlen táblázatban. Használhatja az alábbi táblázatot a képek tárolására.
// Create the Image table
CREATE TABLE image (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(1024) NOT NULL,
`title` VARCHAR(2048) NULL,
`description` VARCHAR(4096) NULL,
`extension` VARCHAR(160) NULL,
`directory` VARCHAR(512) NULL,
`size` FLOAT NOT NULL,
`type` VARCHAR(50) NOT NULL,
`url` VARCHAR(2048) NULL,
`medium` VARCHAR(1024) NULL,
`small` VARCHAR(1024) NULL,
`thumb` VARCHAR(1024) NULL,
`caption` VARCHAR(1024) NULL,
`altText` VARCHAR(512) NULL,
`createdAt` DATETIME NULL,
`modifiedAt` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `idx_image_name` (`name` ASC),
INDEX `idx_image_type` (`type` ASC)
) ENGINE = InnoDB;
a fenti táblázatban a név a tárolt kép tényleges neve, a cím pedig opcionális, hogy bemenetet kapjon a képet feltöltő felhasználóktól. A típus oszlop eldöntheti, hogy a képet helyben vagy CDN-en tárolja-e. Ha helyileg tárolja, akkor az oszlopkönyvtár segítségével megadhatjuk a kép tárolásának elérési útját. CDN esetén az oszlop URL-jét használhatjuk a kép alapútjának megszerzéséhez. A típuson, a könyvtáron és az URL-en kívül kis, közepes és nagy méretű képeket is használhatunk ugyanazon kép több méretben történő tárolására.
ha használni szeretné a képeket, töltse le őket a lemezről a megadott elérési út segítségével. Ez a megközelítés előnye, hogy a képeket nem feltétlenül kell lemezen tárolni; a kép elérési útja helyett URL-t tárolhatunk, és a képeket bármilyen internet-elérhető helyről lekérhetjük.
kép tárolása a MySQL táblában
a kép MySQL adatbázisban történő tárolásának másik módja az, ha magában a táblázatban tárolja. A képek mérete meglehetősen nagy lehet, néha nagyobb, mint 1 vagy 2 MB. Így a képek adatbázisban történő tárolása további terhelést jelenthet az adatbázisra és az adatbázis és a webkiszolgáló közötti hálózatra, ha azok külön gazdagépeken vannak.
ebben a megközelítésben a képfájlok kezelése kihívást jelenthet. A többi művelet végrehajtása előtt először vissza kell állítania őket az adatbázisból.
van néhány kivétel, ahol a teljes adatbázis RAM-ban van tárolva. A MySQL adatbázisokat egymás után tárolják egy lemezen. Ez azt jelenti, hogy az adatbázis-képfájlok blobokká alakulnak, beágyazódnak egy adatbázisba, majd lemezen maradnak. Sok problémát elkerülhetünk, ha egyszerűen tároljuk őket egy lemezen, amint azt az első megközelítés említi.
most hozza létre a táblázatképet, hogy tárolja a képeket az adatbázisban. Az id segítségével azonosítottam az egyes képeket és feliratokat, hogy tároljam a kép nevét megjelenítési célokra. A kép oszlop a képet a táblázatban tárolja a LONGBLOB adattípus használatával.
// Create the Image table
CREATE TABLE image (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(1024) NOT NULL,
`title` VARCHAR(2048) NULL,
`description` VARCHAR(4096) NULL,
`extension` VARCHAR(160) NULL,
`size` FLOAT NOT NULL,
`caption` VARCHAR(1024) NULL,
`altText` VARCHAR(512) NULL,
`picture` LONGBLOB NOT NULL,
`createdAt` DATETIME NULL,
`modifiedAt` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `idx_image_name` (`name` ASC),
INDEX `idx_image_type` (`type` ASC)
) ENGINE = InnoDB;
Összegzés
ez az oktatóanyag lehetőséget biztosított a képek tárolására a MySQL adatbázis segítségével. Ugyanez a megközelítés követhető más adatbázisok esetében is.