Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać zdjęcia w bazie danych MySQL

MySQL należy do popularnych systemów zarządzania bazami danych. Może służyć do przechowywania i pobierania danych zaprojektowanych zgodnie z aplikacjami. Większość aplikacji jest wymagana do zarządzania obrazami. Ten samouczek zawiera opcje przechowywania obrazów w tabeli MySQL.

Notatki :Specjaliści mogą pomóc w tworzeniu bazy danych obrazów dla Twojej firmy lub projektu.

Przechowuj ścieżkę obrazu

Najprostszym podejściem jest przechowywanie obrazów w katalogach w systemie plików i przechowywanie odniesień do zdjęć w bazie danych, takiej jak SQL i MySQL, na przykład ścieżka do obrazu, nazwa obrazu i tak dalej. Alternatywnie możesz nawet przechowywać obrazy w sieci CDN lub wielu hostach na dużym obszarze znacznego terytorium i zachować ich odniesienia, aby uzyskać dostęp do tych zasobów w tej bazie danych.

W ten sposób nie musimy przechowywać całego obrazu w bazie danych, ale przechowywać tylko ścieżkę do obrazu przechowywanego w folderze. Przechowywanie obrazów jest dobre, jeśli obrazy będą zawsze znajdować się w tym samym folderze, tj. jeśli każdy obraz będzie miał swoją unikalną ścieżkę, która zawsze będzie taka sama. Jednak w niektórych przypadkach obrazy należy przenieść z jednego folderu do drugiego. W takim przypadku najlepszym rozwiązaniem jest utworzenie dynamicznej ścieżki do pliku obrazu, więc jeśli obraz będzie musiał zostać przeniesiony, nie będzie obowiązku modyfikowania bazy danych.

Możemy zaktualizować istniejącą tabelę, aby dodać pole ścieżki obrazu, jak pokazano poniżej.

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

Innym podejściem jest utworzenie oddzielnej tabeli dla obrazów i dodanie odniesienia w tabelach za pomocą tabeli obrazów. W ten sposób wiele tabel może przechowywać obrazy w jednej tabeli. Możesz użyć poniższej tabeli do przechowywania swoich obrazów.

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

W powyższej tabeli nazwa jest rzeczywistą nazwą przechowywanego obrazu, a tytuł jest opcjonalny, aby uzyskać dane wejściowe od użytkowników przesyłających obraz. Ponadto kolumna typu może zdecydować, czy obraz jest przechowywany lokalnie, czy w sieci CDN. Jeśli jest przechowywany lokalnie, możemy użyć katalogu kolumn, aby określić ścieżkę, w której przechowywany jest obraz. W przypadku CDN możemy użyć adresu URL kolumny, aby uzyskać podstawową ścieżkę obrazu. Oprócz typu, katalogu i adresu URL możemy również użyć małych, średnich i dużych, aby przechowywać ten sam obraz w wielu rozmiarach.

Gdy musisz użyć obrazów, pobierz je z dysku, korzystając z określonej ścieżki. Zaletą tego podejścia jest to, że zdjęcia niekoniecznie muszą być przechowywane na dysku; możemy przechowywać adres URL zamiast ścieżki obrazu i pobierać obrazy z dowolnej lokalizacji dostępnej przez Internet.

Przechowuj obraz w tabeli MySQL

Innym sposobem przechowywania obrazu w bazie danych MySQL jest przechowywanie go w samej tabeli. Rozmiar obrazu może być dość duży, czasami większy niż 1 lub 2 MB. Tak więc przechowywanie obrazów w bazie danych może dodatkowo obciążyć bazę danych i sieć między bazą danych a serwerem WWW, jeśli znajdują się one na osobnych hostach.


W tym podejściu zarządzanie plikami obrazów może być trudne. Musisz najpierw przywrócić je z bazy danych przed wykonaniem innych operacji.


Istnieją wyjątki, w których cała baza danych jest przechowywana w pamięci RAM. Bazy danych MySQL są kolejno przechowywane na dysku. Oznacza to, że pliki obrazów bazy danych są konwertowane na obiekty blob, osadzane w bazie danych, a następnie przechowywane na dysku. Możemy uniknąć wielu problemów, po prostu przechowując je na dysku, jak wspomniano w pierwszym podejściu.

Teraz utwórz tabelę Image, aby przechowywać obrazy w bazie danych. Użyłem identyfikatora do identyfikacji każdego obrazu i podpisu, aby przechowywać nazwę obrazu do celów wyświetlania. Kolumna obrazu przechowuje obraz w tabeli przy użyciu typu danych jako 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;

Podsumowanie

Ten samouczek zawierał opcje przechowywania obrazów przy użyciu bazy danych MySQL. To samo podejście można zastosować w przypadku innych baz danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać czas z ciągu znaków w MySQL?

  2. Zapytanie MySQL „NIE W” 3 tabele

  3. Jak włączyć mysqlnd dla php?

  4. Znajdź wartości, które nie zawierają liczb w MySQL

  5. Wyodrębnianie podciągów MySQL za pomocą separatora