Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lưu trữ ảnh trong cơ sở dữ liệu MySQL

MySQL là một trong những hệ quản trị cơ sở dữ liệu phổ biến. Nó có thể được sử dụng để lưu trữ và truy xuất dữ liệu được thiết kế theo các ứng dụng. Hầu hết các ứng dụng được yêu cầu để quản lý hình ảnh. Hướng dẫn này cung cấp các tùy chọn để lưu trữ hình ảnh trong bảng MySQL.

Ghi chú :Các chuyên gia có thể giúp bạn phát triển cơ sở dữ liệu hình ảnh cho công ty hoặc dự án của bạn.

Lưu trữ đường dẫn hình ảnh

Cách tiếp cận đơn giản nhất là lưu trữ hình ảnh trong các thư mục trên hệ thống tệp và lưu trữ các tham chiếu đến ảnh trong cơ sở dữ liệu như SQL &MySQL, chẳng hạn như đường dẫn đến hình ảnh, tên hình ảnh, v.v. Ngoài ra, bạn thậm chí có thể lưu giữ hình ảnh trên CDN hoặc nhiều máy chủ lưu trữ trên một số phạm vi rộng lớn của lãnh thổ đáng kể và giữ các tham chiếu của chúng để truy cập các tài nguyên đó trong cơ sở dữ liệu đó.

Bằng cách này, chúng ta không bắt buộc phải giữ toàn bộ hình ảnh trong cơ sở dữ liệu mà chỉ lưu trữ đường dẫn đến hình ảnh được lưu trữ trong một thư mục. Lưu trữ hình ảnh là tốt nếu các hình ảnh luôn ở trong cùng một thư mục, tức là nếu mỗi hình ảnh sẽ có đường dẫn duy nhất của nó luôn giống nhau. Tuy nhiên, trong một số trường hợp, ảnh sẽ được chuyển từ thư mục này sang thư mục khác. Trong trường hợp đó, giải pháp tốt nhất là tạo một đường dẫn động đến tệp hình ảnh, vì vậy nếu hình ảnh phải được di chuyển, sẽ không có nghĩa vụ phải sửa đổi cơ sở dữ liệu.

Chúng tôi có thể cập nhật bảng hiện có để thêm trường đường dẫn hình ảnh như được hiển thị bên dưới.

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

Một cách tiếp cận khác là tạo một bảng riêng cho các hình ảnh và thêm một tham chiếu vào các bảng bằng cách sử dụng bảng hình ảnh. Bằng cách này, nhiều bảng có thể lưu trữ hình ảnh trong một bảng. Bạn có thể sử dụng bảng được đề cập bên dưới để lưu trữ hình ảnh của mình.

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

Trong bảng được đề cập ở trên, tên là tên thực của hình ảnh đang được lưu trữ và tiêu đề là tùy chọn để lấy đầu vào từ người dùng tải lên hình ảnh. Ngoài ra, cột loại có thể quyết định xem hình ảnh được lưu trữ cục bộ hay trên CDN. Nếu nó được lưu trữ cục bộ, thì chúng ta có thể sử dụng thư mục cột để chỉ định đường dẫn nơi hình ảnh được lưu trữ. Trong trường hợp CDN, chúng ta có thể sử dụng URL cột để lấy đường dẫn cơ sở của hình ảnh. Ngoài loại, thư mục và URL, chúng tôi cũng có thể sử dụng nhỏ, vừa và lớn để lưu trữ cùng một hình ảnh ở nhiều kích thước.

Khi bạn cần sử dụng ảnh, hãy truy xuất chúng từ đĩa bằng đường dẫn được chỉ định. Ưu điểm của cách tiếp cận này là ảnh không nhất thiết phải được lưu trữ trên đĩa; chúng tôi có thể giữ một URL thay vì một đường dẫn hình ảnh và truy xuất hình ảnh từ bất kỳ vị trí nào có thể truy cập internet.

Lưu trữ hình ảnh trong bảng MySQL

Một cách khác để lưu trữ hình ảnh trong cơ sở dữ liệu MySQL là lưu trữ hình ảnh đó trong chính bảng. Kích thước hình ảnh có thể khá lớn, đôi khi lớn hơn 1 hoặc 2MB. Vì vậy, lưu trữ hình ảnh trong cơ sở dữ liệu có thể đặt thêm tải lên cơ sở dữ liệu của bạn và mạng giữa cơ sở dữ liệu và máy chủ web của bạn nếu chúng nằm trên các máy chủ riêng biệt.


Trong cách tiếp cận này, các tệp hình ảnh có thể khó quản lý. Trước tiên, bạn phải khôi phục chúng từ cơ sở dữ liệu trước khi thực hiện các thao tác khác.


Có một số ngoại lệ trong đó toàn bộ cơ sở dữ liệu được lưu trữ trong RAM. Cơ sở dữ liệu MySQL được lưu trữ tuần tự trên đĩa. Điều này có nghĩa là các tệp ảnh cơ sở dữ liệu của bạn được chuyển đổi thành các đốm màu, được nhúng vào cơ sở dữ liệu và sau đó được lưu trên đĩa. Chúng ta có thể tránh được nhiều vấn đề bằng cách lưu trữ chúng trên đĩa đơn giản như đã đề cập trong cách tiếp cận đầu tiên.

Bây giờ tạo bảng Image để lưu trữ các hình ảnh trong cơ sở dữ liệu. Tôi đã sử dụng id để xác định từng hình ảnh và chú thích để lưu tên của hình ảnh cho mục đích hiển thị. Cột hình ảnh lưu trữ hình ảnh trong bảng bằng kiểu dữ liệu là 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;

Tóm tắt

Hướng dẫn này cung cấp các tùy chọn để lưu trữ hình ảnh bằng cơ sở dữ liệu MySQL. Cách tiếp cận tương tự có thể được thực hiện cho các cơ sở dữ liệu khác.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm id khả dụng tiếp theo trong MySQL

  2. Truy vấn phân biệt chữ hoa chữ thường trong MySQL

  3. Không thể thêm hoặc cập nhật hàng con:ràng buộc khóa ngoại không thành công

  4. Cơ sở dữ liệu người dùng MySQL không có cột mật khẩu - Cài đặt MySQL trên OSX

  5. Cách chạy máy chủ lưu trữ mysqladmin trên Amazon RDS