Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да съхранявате снимки в MySQL база данни

MySQL е сред популярните системи за управление на бази данни. Може да се използва за съхраняване и извличане на данни, проектирани според приложенията. Повечето от приложенията са необходими за управление на изображенията. Този урок предоставя опциите за съхраняване на изображения в MySQL таблица.

Бележки :Професионалистите могат да ви помогнат с разработването на база данни с изображения за вашата компания или проект.

Запазване на пътя на изображението

Най-простият подход е да съхранявате изображения в директории на файловата система и да съхранявате препратки към снимките в базата данни като SQL и MySQL, например пътя към изображението, името на изображението и т.н. Като алтернатива, можете дори да съхранявате изображения в CDN или множество хостове на голяма обширна територия и да запазите техните препратки за достъп до тези ресурси в тази база данни.

По този начин от нас не се изисква да държим цялото изображение в базата данни, а да съхраняваме само пътя до изображението, съхранено в папка. Съхраняването на изображения е добре, ако изображенията винаги ще бъдат в една и съща папка, т.е. ако всяко изображение ще има свой уникален път, който винаги ще бъде един и същ. Въпреки това, в някои случаи изображенията трябва да се прехвърлят от една папка в друга. В този случай най-доброто решение е да създадете динамичен път към файла с изображение, така че ако изображението трябва да бъде преместено, няма да има задължение за промяна на базата данни.

Можем да актуализираме съществуваща таблица, за да добавим поле за път на изображение, както е показано по-долу.

// Add column to store image path
ALTER TABLE `my_table`
ADD COLUMN `image_pathLocation` varchar(1024)

Друг подход е да създадете отделна таблица за изображенията и да добавите препратка в таблици с помощта на таблицата с изображения. По този начин множество таблици могат да съхраняват изображенията в една таблица. Можете да използвате таблицата по-долу, за да съхранявате вашите изображения.

// 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;

В гореспоменатата таблица името е действителното име на изображението, което се съхранява, а заглавието е по избор, за да получите информация от потребителите, качващи изображението. Също така колоната тип може да реши дали изображението се съхранява локално или в CDN. Ако се съхранява локално, тогава можем да използваме директорията с колони, за да посочим пътя, където се съхранява изображението. В случай на CDN, можем да използваме URL адреса на колоната, за да получим основния път на изображението. Освен тип, директория и URL, можем също да използваме малки, средни и големи, за да съхраняваме едно и също изображение в различни размери.

Когато трябва да използвате снимките, изтеглете ги от диска, като използвате посочения път. Предимството на този подход е, че снимките не е задължително да се съхраняват на диск; можем да задържим URL вместо път на изображение и да извличаме изображения от всяко място, достъпно в интернет.

Съхраняване на изображението в MySQL таблица

Друг начин за съхраняване на изображение в базата данни на MySQL е да го съхраните в самата таблица. Размерът на изображенията може да бъде доста голям, понякога по-голям от 1 или 2MB. Така че съхраняването на изображения в база данни може да натовари допълнително вашата база данни и мрежата между вашата база данни и вашия уеб сървър, ако те са на отделни хостове.


При този подход управлението на файловете с изображения може да бъде предизвикателство. Първо трябва да ги възстановите от базата данни, преди да бъдат извършени други операции.


Има някои изключения, при които цялата база данни се съхранява в RAM. MySQL бази данни се съхраняват последователно на диск. Това означава, че файловете с изображения на вашата база данни се преобразуват в блобове, вграждат се в база данни и след това се съхраняват на диск. Можем да избегнем много проблеми, като просто ги съхраняваме на диск, както е посочено в първия подход.

Сега създайте таблица Image, за да съхранявате изображенията в базата данни. Използвах id за идентифициране на всяко изображение и надпис, за да съхраня името на изображението за целите на показване. Колоната картинка съхранява изображението в таблицата, като използва типа данни като LONGBLOB .

// 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;

Резюме

Този урок предостави опциите за съхраняване на изображения с помощта на базата данни MySQL. Същият подход може да се следва и за други бази данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL КАТО IN()?

  2. Научете MySQL – Седмица на новите технологии

  3. Обяснена функция на MySQL IF().

  4. Невалиден номер на параметъра:параметърът не е дефиниран. Вмъкване на данни

  5. Как мога да използвам MySql потребителски дефинирана променлива в .NET MySqlCommand?