Banco de Dados - Oracle

Large Objects para Oracle

As Large Objects, ou apelidando carinhosamente de LOBS, são tipos de dados que podem armazenar até 4GB de informação binária, como imagens, sons, vídeos, arquivos pdf e etc, ou caracteres, single-byte ou multi-byte, em uma ou mais colunas de uma única tabela do seu banco de dados.

por Rodrigo Almeida



Olá!

Hoje em dia, cada vez mais os sistemas estão ficando mais sofisticados e utilizando diversos recursos de desenvolvimento no banco de dados, porém, com esse crescimento progressivo das aplicações, os volumes de dados estão cada vez maior e os banco de dados precisam de manutenção diária para cuidar desse crescimento, assim sendo, a Oracle DataBase disponibiliza desde a versão 8i, uma ótima solução para armazenagem de informação, ajudando o desenvolvedor e o DBA, o chamado Large Objects.

As Large Objects, ou apelidando carinhosamente de LOBS, são tipos de dados que podem armazenar até 4GB de informação binária, como imagens, sons, vídeos, arquivos pdf e etc, ou caracteres, single-byte ou multi-byte, em uma ou mais colunas de uma única tabela do seu banco de dados.

O motivo que leva a pouca utilização das LOBs, é devido as aplicações do mercado utilizam as colunas LONG (Para tipo de dados alfanuméricos) ou LONG RAW (para tipos de dados binários) pela alta capacidade de armazenamento também, que pode chegar até 2GB, porém, LONG e LONG RAW não são Lobs! Isso faz com que o DBAs Oracle, Engenheiros de softwares e desenvolvedores de diversas empresas, perca alguns cabelos e noites quando temos que falar sobre PERFORMANCE, ARMAZENAMENTO, MANUTENÇÃO e COMPARTIBILIDADE das aplicações do ambiente.

Mas, o que existe de tão diferente entre LOBs e LONGs?

Bom, para entendermos as diferenças existentes entre elas, devemos analisar as características de cada tipo de dados, entender o funcionamento, saber as particularidades de cada um para tirarmos algumas conclusões. O primeiro a entrar no nosso ring virtual será o tipo de dados LONG e LONG RAW.

LONG

São tipos de dados alfanuméricos com tamanho variável, seu comprimento máximo pode chegar até 2GB.

LONG RAW

São tipos de dados binários com tamanho variável, seu comprimento é igual as LONG, podendo chegar até 2GB, mas ao declarar um variável LONG RAW, a especificação do seu tamanho na declaração é obrigatória.

CARACTERÍSTICAS

As principais características que colunas LONG e LONG RAW levam no seu currículo, são:

- Tem como restrição a utilização de uma coluna por tabela, caso tente colocar mais colunas, o Oracle não permitirá a criação da tabela, gerando erros;

- O tamanho máximo de armazenamento é 2 GB;

- Não permite armazenagem de informação fora do banco de dados;

- Não suporta tipos de objetos;

- Os comandos SELECT retorna o dado armazenado;

- O acesso aos dados da coluna é feita de forma sequencial, deste modo, a performance da consulta pode ficar mais pesada;

- Não pode ser replicado;

- Não participa de transações com COMMIT ou ROLLBACK;

- Funções SQL e cláusulas como WHERE, GROUP BY e ConnectBy não funciona com essas colunas;

- O PL/SQL não interpreta o contéudo das colunas LONG RAW.

Agora que sabemos como as LONG trabalham, devemos fazer uma analise por completo das LOBs.

As LOBs podem ser divididas em 4 tipos de dados, como descritos abaixo:

BLOB

São tipos de dados binária.

CLOB

São tipos de dados alfanuméricos, podendo armazenar caracteres compatíveis com o charset do banco de dados.

NLOB

São tipos de dados alfanuméricos, podendo armazenar caracteres compatíveis com o national charset do banco de dados.

BFILE

São tipos de dados binários armazenados fora do banco de dados em arquivos do sistema operacional, com TXT e HTML.

CARACTERÍSTICAS

- As LOBS podem armazenar até 4GB de dados, isso incluí todos os tipos de LOBs citados acima;

- Podemos trabalhar com 2 modos de operação, INTERNA (Lógica) e EXTERNA (Física);

- Permite replicação dos dados, exceto para BFile que trabalha com a parte física;

- Suporte a tipos de objetos;

- O sistema de acesso aos dados para as LOBs é de forma randônica, isso permite ganho de performance nas consultas;

- Habilitação para transações, COMMIT e ROLLBACK, exceto para BFile;

- O comando SELECT retorna os Locators das LOBS e não os dados armazenados;

- Podemos trabalhar com mais de uma coluna LOB nas tabelas, ampliando o armazenamento da tabela;

- Existe pacotes específicos para administrar colunas LOBs no banco de dados;

- Existe views específicas no dicionario de dados para administração de LOBs dentro do banco de dados;

- Funções SQL podem ser utilizadas, porém, com algumas restrições dependendo do tipo de LOB;

Existe ainda muitos recursos específicos das LOBs que devemos comentar e explicar, assim como fazer algumas comparações e opinar sobre as visões de um DBA na parte de manutenção e do desenvolvedor no desenvolvimento com esses tipos de recursos.

Nos próximos capítulos sobre LOBs, vou comentar os tópicos citados, suas particulariedades, seus recursos, suas funções, fazer exemplos de utilização e fazer uma comparação entre as rivais, para deixar nosso conhecimento sobre elas mais profundas.

Qualquer dúvida, sugestão ou acrescímos nesse assunto, mande e-mails.

Abraços,

Rodrigo Almeida

Rodrigo Almeida

Rodrigo Almeida