O Armazenamento de diversas imagens em aplicativos é uma dúvida constante, na questão de aplicativos móveis esta preocupação aumenta, pois é inevitável que a utilização de uma outra ferramenta não inclusa no próprio dispositivo deverá ser utilizada. Os métodos com que o desenvolvedor se depara para a utilização do armazenamento são dois a utilização de um campo do tipo BLOB(Binary Large Object – grande objeto binário) ou de um campo no banco de dados que referencia o caminho da imagem e armazenando ela em um servidor, sendo está podendo ser feita de diversas formas, as mais mencionadas são a utilização de um servidor para o armazenamento de imagens ou a utilização de um serviço que já faça este controle um exemplo seria o Firebase Cloud Storage.

Armazenamento com BLOB

            A utilização do armazenamento no banco de dados com o tipo de arquivo BLOB não é muito recomendada, mas é uma opção viável para utilização em softwares que não necessitam de uma grande quantidade de armazenamento de imagens ou outros tipos de arquivos. Mas este tipo de armazenamento ainda possui alguns vantagens e desvantagens, que seriam:

Vantagens:

  • Organização: Todosos dados ficam centrados em apenas um local, fazendo com que a realização de backups seja feita de forma mais fácil, necessitando apenas armazenar os dados contidos no banco de dados.

Desvantagens:

  • Banco de Dados muito grande: Com o armazenamento feito diretamente no banco de dados à consequência de deixá-lo muito grande é inevitável se existe a necessidade de guardar diversos arquivos.
  • Lentidão: Sempre que for necessário consultar a imagem no banco de dados esta consulta deverá consultar uma grande quantidade de dados.

Armazenamento da referência do arquivo

            A utilização de referencias da imagem salva é uma ótima solução para quem possui uma necessidade de armazenamento maior. Com ela deve-se armazenar o caminho da imagem no banco de dados e ao mesmo tempo salva-la em algum local que possa ser acessível posteriormente, essa utilização pode ser feita de diversas formas e maneiras, dando uma liberdade maior para o desenvolvedor escolher qual seria a melhor solução para seu caso.

            Algumas vantagens e desvantagens são listadas para a sua utilização, mas cada uma dessas deve levar em consideração onde será armazenado o arquivo, vantagens e desvantagens do armazenamento em um servidor:

Vantagens:

  • Velocidade: A velocidade é uma das grandes vantagens deste tipo de armazenamento, isso se da em consequência que a sua consulta será redirecionada diretamente ao caminho no qual a imagem está armazenada.

Desvantagens:

  • Inconsistência: Qualquer modificação de local ou de exclusão feita diretamente no local no qual está armazenado as imagens é um fator de risco para a consistência com o banco de dados, pois o caminho pode estar apontando para um local no qual  a imagem pode não estar mais localizada.

Utilização de um serviço específico para armazenamento

            Hoje existem diversos serviços que disponibilizam o armazenamento de imagens e arquivos para aplicações. Alguns deles são totalmente de graça e outros sendo pagos conforme a utilização. Este tipo de armazenamento também possui suas vantagens e desvantagens, sendo elas:

Vantagens:

  • Organização: Os arquivos ficam armazenados em outro local que não interfere diretamente com o servidor e nem o banco de dados.
  • Segurança: Os arquivos ficam seguros por serem administrados apenas no local de armazenamento que seria a ferramenta exterior.
  • Velocidade: A velocidade aumenta por ser apenas armazenada uma URL no qual está armazenada a imagem, fazendo assim com que a consulta seja feita de uma forma mais rápida e direcionada.

Desvantagens

  • Dependência: Conforme a quantidade de dados armazenados vai crescendo a dependência com o serviço utilizado fica maior, tendo assim uma maior dificuldade de desvinculação com a solução utilizada.

Firebase Cloud Storage

            O Firebase é uma plataforma que foi adquirida pela Google e desde 2014 está a crescer com o tempo, possuindo diversos serviços para a utilização em aplicações móveis e para web.

O Cloud Storage do Firebase é um destes serviços dedicados ao armazenamento de arquivos, tendo funções de upload e download de arquivos, além destas funções primitivas ele ainda conta com um controle de perda de conexão e de acesso a arquivos. Em relação a perda de conexão na hora de upload ou download a operação pode ser retornada de onde parou, poupando tempo e largura de banda. Já o controle de acesso pode ser feito diretamente no Firebase, podendo ser definido quais usuários podem acessar quais arquivos.

Armazenamento de Imagens no Firebase

            O armazenamento das imagens e seu controle pode ser feito de duas formas, sendo uma delas diretamente no console de controle do Firebase, e a outra forma por meio da aplicação que utiliza os serviços do Firebase.

            O Cloud Storage permite que o usuário crie pastas para um melhor controle das informações, além disso ao ser feito o upload da imagem para o Storage ele retorna uma URL de acesso ao arquivo, se o arquivo for do tipo imagem ela pode ser acessada diretamente pelo navegador, podendo ser feita o download por este meio. Além disso o Storage possui uma área para o controle de tokens das imagens, podendo ser adicionados novos ou excluídos conforme a necessidade, fazendo com que o caminho da imagem seja alterado.

            Além das informações armazenadas o Firebase possui gráficos que mostram a usabilidade do Storage pela aplicação, podendo ser consultado a quantidade de Bytes e objetos armazenados, mostrando essas informações por datas de quando foram utilizados.

            Algumas considerações devem ser feitas ao começar a utilizar o Firebase como uma solução para armazenar as imagens de uma aplicação, uma delas é que o Storage tem um limitador de 5GB de armazenamentos gratuitos, depois que isso é ultrapassado o valor fica de US$ 0,026/GB, mas a cobrança só é feita por utilização, então enquanto a aplicação utilize até os limites nada será cobrado a mais independente do tempo de utilização.

            Depois de analisado e pesquisado sobre o assunto a forma que traz mais vantagens e que possui uma melhor integração com uma aplicação seria a utilização de serviços para armazenar imagens como o Firebase Cloud Storage.

Autor: Matheus Bernardi