Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como armazenar fotos no banco de dados MySQL


MySQL está entre os sistemas de gerenciamento de banco de dados populares. Ele pode ser usado para armazenar e recuperar dados projetados de acordo com as aplicações. A maioria dos aplicativos são necessários para gerenciar as imagens. Este tutorial fornece as opções para armazenar imagens em uma tabela MySQL.



Observações :Profissionais podem ajudá-lo no desenvolvimento de banco de imagens para sua empresa ou seu projeto.


Armazenar o caminho da imagem




A abordagem mais simples é armazenar imagens em diretórios no sistema de arquivos e armazenar referências às fotos no banco de dados como SQL e MySQL, por exemplo, o caminho para a imagem, o nome da imagem e assim por diante. Alternativamente, você pode até manter imagens em um CDN ou vários hosts em uma grande extensão de território substancial e manter suas referências para acessar esses recursos nesse banco de dados.



Dessa forma, não somos obrigados a manter a imagem inteira no banco de dados, mas a armazenar apenas o caminho para a imagem armazenada em uma pasta. Armazenar imagens é bom se as imagens estiverem sempre na mesma pasta, ou seja, se cada imagem tiver seu caminho único que sempre será o mesmo. No entanto, em alguns casos, as imagens devem ser transferidas de uma pasta para outra. Nesse caso, a melhor solução é criar um caminho dinâmico para o arquivo de imagem, assim, se a imagem tiver que ser movida, não haverá obrigação de modificar o banco de dados.



Podemos atualizar uma tabela existente para adicionar um campo de caminho de imagem conforme mostrado abaixo.


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



Outra abordagem é criar uma tabela separada para as imagens e adicionar uma referência nas tabelas usando a tabela de imagens. Dessa forma, várias tabelas podem armazenar as imagens em uma única tabela. Você pode usar a tabela abaixo mencionada para armazenar suas imagens.


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



Na tabela mencionada acima, o nome é o nome real da imagem que está sendo armazenada e o título é opcional para obter a entrada dos usuários que fazem o upload da imagem. Além disso, a coluna de tipo pode decidir se a imagem é armazenada localmente ou em um CDN. Se estiver armazenado localmente, podemos usar o diretório de colunas para especificar o caminho onde a imagem está armazenada. No caso do CDN, podemos usar a coluna URL para obter o caminho base da imagem. Além do tipo, diretório e URL, também podemos usar pequenos, médios e grandes para armazenar a mesma imagem em vários tamanhos.



Quando precisar usar as imagens, recupere-as do disco usando o caminho especificado. A vantagem dessa abordagem é que as imagens não precisam necessariamente ser armazenadas em um disco; podemos manter um URL em vez de um caminho de imagem e recuperar imagens de qualquer local acessível pela Internet.


Armazenar imagem na tabela MySQL




Outra maneira de armazenar uma imagem no banco de dados MySQL é armazená-la na própria tabela. O tamanho das imagens pode ser bastante grande, às vezes maior que 1 ou 2 MB. Portanto, armazenar imagens em um banco de dados pode sobrecarregar seu banco de dados e a rede entre seu banco de dados e seu servidor web se eles estiverem em hosts separados.


Nesta abordagem, os arquivos de imagem podem ser difíceis de gerenciar. Você deve primeiro restaurá-los do banco de dados antes que outras operações sejam executadas.


Existem algumas exceções onde todo o banco de dados é armazenado na RAM. Os bancos de dados MySQL são armazenados sequencialmente em um disco. Isso significa que seus arquivos de imagem de banco de dados são convertidos em blobs, incorporados em um banco de dados e, em seguida, mantidos em um disco. Podemos evitar muitos problemas simplesmente armazenando-os em um disco, conforme mencionado na primeira abordagem.



Agora crie a tabela Image para armazenar as imagens no banco de dados. Eu usei id para identificar cada imagem e legenda para armazenar o nome da imagem para fins de exibição. A coluna de imagem armazena a imagem na tabela usando o tipo de dados como 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;


Resumo




Este tutorial forneceu as opções para armazenar imagens usando o banco de dados MySQL. A mesma abordagem pode ser seguida para outros bancos de dados.