Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So speichern Sie Bilder in einer MySQL-Datenbank

MySQL gehört zu den beliebten Datenbankverwaltungssystemen. Es kann zum Speichern und Abrufen von Daten verwendet werden, die gemäß den Anwendungen entworfen wurden. Die meisten Anwendungen werden benötigt, um die Bilder zu verwalten. Dieses Tutorial bietet die Optionen zum Speichern von Bildern in einer MySQL-Tabelle.

Notizen :Profis können Ihnen bei der Entwicklung einer Bilddatenbank für Ihr Unternehmen oder Ihr Projekt helfen.

Speichern Sie den Bildpfad

Der einfachste Ansatz besteht darin, Bilder in Verzeichnissen im Dateisystem zu speichern und Verweise auf die Fotos in der Datenbank wie SQL &MySQL zu speichern, z. B. den Pfad zum Bild, den Bildnamen und so weiter. Alternativ können Sie sogar Bilder auf einem CDN oder zahlreichen Hosts über eine große Ausdehnung eines beträchtlichen Territoriums speichern und ihre Referenzen aufbewahren, um auf diese Ressourcen in dieser Datenbank zuzugreifen.

Auf diese Weise müssen wir nicht das gesamte Bild in der Datenbank halten, sondern nur den Pfad zu dem in einem Ordner gespeicherten Bild speichern. Das Speichern von Bildern ist gut, wenn sich die Bilder immer im selben Ordner befinden, d. h. wenn jedes Bild seinen eindeutigen Pfad hat, der immer gleich ist. In einigen Fällen sollen die Bilder jedoch von einem Ordner in einen anderen übertragen werden. In diesem Fall besteht die beste Lösung darin, einen dynamischen Pfad zur Bilddatei zu erstellen. Wenn das Bild also verschoben werden muss, besteht keine Verpflichtung, die Datenbank zu ändern.

Wir können eine vorhandene Tabelle aktualisieren, um ein Bildpfadfeld wie unten gezeigt hinzuzufügen.

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

Ein anderer Ansatz besteht darin, eine separate Tabelle für die Bilder zu erstellen und mithilfe der Bildtabelle eine Referenz in Tabellen hinzuzufügen. Auf diese Weise können mehrere Tabellen die Bilder in einer einzigen Tabelle speichern. Sie können die untenstehende Tabelle verwenden, um Ihre Bilder zu speichern.

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

In der oben erwähnten Tabelle ist der Name der tatsächliche Name des Bildes, das gespeichert wird, und der Titel ist optional, um Eingaben von den Benutzern zu erhalten, die das Bild hochladen. Außerdem kann die Typspalte entscheiden, ob das Bild lokal oder auf einem CDN gespeichert wird. Wenn es lokal gespeichert ist, können wir das Spaltenverzeichnis verwenden, um den Pfad anzugeben, in dem das Bild gespeichert ist. Im Fall von CDN können wir die Spalten-URL verwenden, um den Basispfad des Bildes abzurufen. Neben Typ, Verzeichnis und URL können wir auch klein, mittel und groß verwenden, um dasselbe Bild in mehreren Größen zu speichern.

Wenn Sie die Bilder verwenden müssen, rufen Sie sie unter Verwendung des angegebenen Pfads von der Festplatte ab. Der Vorteil dieses Ansatzes besteht darin, dass die Bilder nicht unbedingt auf einer Festplatte gespeichert werden müssen; Wir können eine URL anstelle eines Bildpfads speichern und Bilder von jedem Ort abrufen, auf den über das Internet zugegriffen werden kann.

Bild in MySQL-Tabelle speichern

Eine andere Möglichkeit, ein Bild in der MySQL-Datenbank zu speichern, besteht darin, es in der Tabelle selbst zu speichern. Die Bildgröße kann ziemlich groß sein, manchmal größer als 1 oder 2 MB. Das Speichern von Bildern in einer Datenbank kann Ihre Datenbank und das Netzwerk zwischen Ihrer Datenbank und Ihrem Webserver zusätzlich belasten, wenn sie sich auf separaten Hosts befinden.


Bei diesem Ansatz kann es schwierig sein, die Bilddateien zu verwalten. Sie müssen sie zuerst aus der Datenbank wiederherstellen, bevor andere Operationen durchgeführt werden sollen.


Es gibt einige Ausnahmen, bei denen die gesamte Datenbank im RAM gespeichert wird. MySQL-Datenbanken werden sequentiell auf einer Festplatte gespeichert. Das bedeutet, dass Ihre Datenbankbilddateien in Blobs konvertiert, in eine Datenbank eingebettet und dann auf einer Festplatte gespeichert werden. Wir können viele Probleme vermeiden, indem wir sie einfach auf einer Festplatte speichern, wie im ersten Ansatz erwähnt.

Erstellen Sie nun die Tabelle Image, um die Bilder in der Datenbank zu speichern. Ich habe id verwendet, um jedes Bild und jede Bildunterschrift zu identifizieren, um den Namen des Bildes für Anzeigezwecke zu speichern. Die Bildspalte speichert das Bild in der Tabelle unter Verwendung des Datentyps als 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;

Zusammenfassung

Dieses Tutorial bot die Optionen zum Speichern von Bildern mithilfe der MySQL-Datenbank. Der gleiche Ansatz kann für andere Datenbanken verfolgt werden.