Este artigo mostra como armazenar dados não estruturados em bancos de dados SQL Server e Oracle. Os dados não estruturados nos permitem armazenar no banco de dados qualquer tipo de informação, como imagens, arquivos executáveis, arquivos zipados etc.
Para que serve:
Os BLOBs são usados para armazenar imagens e outros dados binários, como arquivos executáveis, planilhas do Excel, arquivos zipados etc. Já os CLOBs permitem armazenar textos longos, como por exemplo, a descrição detalhada de um produto.
Em que situação o tema é útil:
BLOBs/CLOBs podem reduzir muito o número de linhas de código de suas aplicações ao permitir o armazenamento de arquivos binários, por exemplo. Imagine uma aplicação que manipule uma quantidade muito grande de imagens, como um catálogo de produtos. Neste caso é mais prático armazenar as imagens no próprio banco de dados, pois se utilizássemos o sistema de arquivos seria necessária a criação de toda uma lógica de gerenciamento e sincronização entre produtos e imagens.
Resumo do DevMan:
Os bancos de dados modernos como SQL Server e Oracle permitem armazenar em seus bancos de dados não somente dados estruturados como inteiros, decimais, strings etc., mas também dados binários. Usando LOBs (Large Objects) podemos armazenar qualquer tipo de informação no banco de dados, desde imagens até arquivos executáveis por exemplo. Neste artigo veremos como armazenar e recuperar imagens e textos longos em bancos de dados SQL Server 2005 e Oracle 10g através do desenvolvimento de um exemplo prático.
Figura 1. Criando o tablespace e o usuário do nosso exemplo no Oracle
Os bancos de dados modernos permitem armazenar informações conhecidas como “não estruturadas”, ou seja, não se encaixam em nenhum tipo de dados com os quais costumamos trabalhar (inteiros, strings, decimais etc.). Estes tipos de dados são chamados de LOBs (Large Objects), que permitem armazenar no banco de dados diversos tipos de informações, como imagens, textos longos, arquivos zipados, arquivos executáveis, arquivos XML etc.
O tipo de LOB mais comum e mais utilizado é o BLOB (Binary Large Object), que aceita qualquer tipo de informação. Paralelo a isso temos também a possibilidade de trabalhar com textos imensos, que são os chamados CLOBs (Character Large Objects).
Neste artigo veremos como manipular estes tipos de dados com os dois principais bancos de dados do mercado, SQL Server 2005 e Oracle 10g.
Vantagens na utilização de CLOBs/BLOBs
Você pode estar se perguntando neste momento qual a vantagem de utilizar campos BLOB para armazenar imagens e textos longos. Imagine um cadastro de produtos que armazene imagens para todos os itens do catálogo. Poderíamos ter uma coluna com o endereço físico do arquivo de imagem, neste caso a imagem seria armazenada em um arquivo do sistema operacional. Mas agora imagine este cenário com um cadastro imenso, com milhões de registros. Seria necessária a criação de uma lógica exclusiva para a manutenção de imagens no sistema de arquivos, o que adicionaria complexidade e consequentemente linhas de código à sua aplicação. Ao armazenar diretamente no banco de dados você não precisa preocupar-se com isso, pois as imagens estarão juntamente com os registros dos produtos.
É claro que esta não é a alternativa definitiva, depende muito de cada caso e os objetivos da aplicação sendo desenvolvida. Um inconveniente que você deve estar imaginando sobre essa solução é que seu banco de dados poderá crescer muito e rapidamente. Entretanto, com o custo que temos atualmente por GB não acho que isso seja impeditivo para este tipo de solução.
BLOBs/CLOBs no Oracle 10g
Para demonstrar o exemplo em Oracle 10g utilizaremos a ferramenta Oracle SQL Developer, uma ferramenta gratuita extremamente poderosa e essencial aos desenvolvedores que trabalham com o Oracle. Para baixá-la confira a seção de links no final do artigo. Caso você não tenha um servidor Oracle, é possível utilizar a versão gratuita (Oracle Database 10g Express Edition), cujo link para download também está disponível no final do artigo.
...