Diferenças entre Smart Large Object e Simple Large Object

Versão para impressãoEnviar para amigoVersão PDF

  1. SIMPLE LARGE OBJECT
  2. SMART LARGE OBJECT

SIMPLE LARGE OBJECT


  • São os tipos TEXT e BYTE
  • BYTE: Utilizado para salvar arquivos binarios como planilhas, programas,etc
  • TEXT: Utilizado para salvar textos
  • Limitações
    • Tamanho em 2^31 (2 GB)
    • Não podem ser utilizados em comparações (where)
    • Não podem ser utilizados em SQL com funções agregadas: sum, avg,...
    • Não podem ser utilizados em SQL com group by e order by
    • Não podem ser utilizados em subquerys que são referencias com EXISTS ou IN
    • Não podem ser utilizado como parâmetros de rotinas SPL , porém pode-se utilizar com o a opção REFERENCES que irá passar o ponteiro no parametro da função.
    • Não podem ser declarados em variáveis de rotinas SPL, porém é possível utilizar a cláusula REFERENCES
  • Monitoração:
    • onstat-d update
    • oncheck -pB
    • onstat -O
  • São gravados em BLOBSPACES e/ou DBSPACE.
  • Para o banco é assumido que: pequenos dados BYTE/TEXT são gravados em DBSPACEs, portanto é possivel logar. Grandes dados BYTE/TEXT são gravados em BLOBSPACES são logados posteriormente.
  • DBSPACE
    • Quando gravado em DBSPACE pode-se dizer que o dado é tratado como um outro campo qualquer (logado e espaço de paginas reutilizados)
    • dica: pode-se utilizar a opção CHECK com a função length para limitar o tamanho do registro gravado.
    • Se o dado BYTE/TEXT ocupar mais que duas paginas(quando gravado em dbspace) é mais vantajoso gravar o dado em BLOBSPACE.
  • BLOBSPACE:
    • Composto por free-map pages, bitmap pages e blobpages
    • Na criação de um BLOBSPACE, o a unidade utilizada no parâmetro -g é o numero de paginas e não a qtde de bytes.
    • Após a criação de um BLOBSPACE não é possível utiliza-lo, é necessário trocar de logical log (onmode -l).
    • Free-map e Bitmap pages tem o tamanho padrão do sistema, assim são os unicos registros que são carregados na shared memory e logados no logical log.
    • Em __nenhuma__ situação os dados (blobpage) são gravados nos arquivos/dbspace de Logical Log. Quando é feito o backup do logical log o blobpage é copiado direto do blobspace para o backup do logical log.
    • O acesso _não_ é feito pelo Buffer Pool, ele é gravado/lido diretamente no disco.
  • BLOBPAGES:
    • Contem um overhead extra de 12 bytes
    • Na criação de um BLOBSPACE é necessário definir o tamanho do blobpage size que tem de ser múltiplo do tamanho de pagina default do banco. O tamanho desta pagina é fixo para todo blobspace.
      Para definir o tamanho da pagina é preciso especificar o parametro -g a unidade utilizada neste parametro é numero de paginas. Portanto "-g 5" em um Informix onde a pagina padrão é 2k irá definir um BLOBPAGE de 10K
    • Quando é feito update em um campo BYTE/TEXT é necessário um lock para cada BLOBPAGE, portanto se um dado utilizar muitos BLOBPAGES, muitos locks serão alocados.
    • Se gravado em um BLOBSPACE o espaço que sobra em um BLOBPAGE não é reutilizado.
    • Um blobpage que foi excluído só é liberada novamente para uso quando sua ultima imagem inserida foi "becapeada" para o logical log.
  • Um campo BYTE/TEXT utiliza 52 bytes para o ponteiro no registro que contém o campo.
  • DML:
    • Um dado BYTE/TEXT nunca é modificado internamente, é possível apenas inserir e deletar.
    • Em caso de um update é alocado uma nova blobpage para o novo dado e o ponteiro é atualizado no registro que contém o campo, o blobpage antigo é liberado no backup do logical log.
  • Não permite acesso aleatório ao dado
  • Quando é transferido para o cliente é preciso transferir o objeto completo, se não couber na memória, é necessário salva-lo no file system e o cliente acessar o objeto dali.
  • CLIENTE:
    • Para cada conexão de cliente que utiliza Simple Large Object é definido um grupo de dois buffers para blobspace.
    • Um buffer para leitura e outro para gravação
    • Desta maneira é limitado o acesso a um unico campo por vez
    • O tamanho de cada buffer é de um blobpage referente ao campo utilizado.
    • env DBBLOBBUF: utilizado apenas com o DML UNLOAD, define o tamanho do buffer utilizado durante o processo, valor padrão é 10 (=10kbytes). Quando o dado é maior é utilizado um espaço temporário.

SMART LARGE OBJECT


  • É similar ao Simple Large Object
  • São os tipos BLOB e CLOB
  • BLOB: Utilizado para salvar arquivos binários como planilhas, programas,etc
  • CLOB: Utilizado para salvar textos
  • Limite de tamanho em 4*2^40 (4 TB)
  • São gravados em SBSPACES
  • SBSPACE
    • Composto por chunk header, metadata area, user-data e reserved data area.
    • Metadata area: Contém Sbspace Descriptor tblspace(*), Chunk adjunct tblspace(*), Level 1 e 2 archive tblspace(*), Chunk one LO header tblspace, Chunk one user-data free list tblspace (*) Exclusivo apenas do primeiro chunk do sbspace
    • Sbspace Descriptor: Contém informações sobre os tblspaces, não cresce.
    • Chunk adjunct: ???, cresce quando é adicionado novos chunks.
    • Level 1 e 2: ???,
    • Chunk one LO header: ???, cresce quando é adicionado novos chunks.
    • Chunk one user-data-free-list: cresce quando os espaços livres estão muito fragmentados.
    • Reserved area:
    • User-data area:
    • Para melhor performance é recomendável que a Metadata seja alocada no meio do chunk (lugar padrão, porém pode-se especificar o local na criação do chunk.
    • Devido a metadata ficar no meio do chunk, consequentemente existem duas areas para user-data e duas para reserved data, uma antes e outra depois do metadata area.
  • Permite acesso aleatórios ao dado. Assim é possível ler e pesquisar no objeto como se estivesse acessando um arquivo no file system
  • É possivel encriptar o campo
  • É possivel utilizar mais recursos para pesquisas de textos nos campos CLOB porém é necessário utilizar API (datablade)
  • Permite opções como : Logar alterações, rastrear ultimo acesso ao campo, tratamento para detectar dados corrompidos.
  • Quando é feito um SQL o IDS retorna um ponteiro para o objeto e o cliente pode utilizar este ponteiro para acessar o dado.
  • Funções:
    FILETOBLOB carrega um arquivo para um campo BLOB
    FILETOCLOB carrega um arquivo para um campo CLOB
    LOTOFILE salva um campo BLOB/CLOB para arquivo
    LOCOPY copia um BLOB/CLOB para outro BLOB/CLOB
    ENCRYPT_DES ou
    ENCRYPT_TDES Cria um campo BLOB encriptado apartir de um campo CLOB
    DECRYPT_BINAR ou
    DECRYPT_CHAR retorna um campo BLOB desencriptado

0
Ainda não votado
Sua avaliação: Nenhum

CLOB

OLá Martins, Obrigado pela tua pagina, é muito didactica.Gostaria de pedir ajuda no tema dos CLOB, tenho que criar uma tabela com 2 campos (id,documento), para gravar um ficheiro DOC ou XLS ou PDF. Como posso fazer isto? Obrigado

RE: CLOB

Olá Miguel,
Desculpa a "demora" para responder, acredito que já tenha achado a resposta para isso, mas para não passar em branco aqui....
Incluir dados em um campo CLOB, BLOB, TEXT ou BYTE é feito pela aplicação e isso depende da linguagem e driver cliente do Informix que está utilizando pois alguns possuem mais recursos que outros.
Não tenho como lhe dar uma resposta exata aqui, vc teria que olhar o manual da linguagem que utiliza e do driver usado para conectar no Informix.
Cesr

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.