Dando prosseguimento aos nossos posts iremos hoje dar continuidade ao Capítulo 6 do livro PRIMEIROS PASSOS COM O DB2 Express-C.
Falaremos hoje sobre modelo de armazenamento no DB2.
Qualquer dúvida sobre o assunto tratado até o momento, por favor deixem seus comentários.

No post anterior falamos sobre as seguintes estruturas:

1 – O modelo de processo do DB2
e
2 – O modelo de memória do DB2

Agora vamos detalhar um pouco sobre o modelo de armazenamento.

MODELO DE ARMAZENAMENTO DO DB2

Falaremos um pouco sobre algumas estruturas de armazenamento DB2, sejam elas lógicas ou físicas.
–> Páginas e extensões
–> Bufferpool
–> Tablespace
–> Containers****

Páginas e extensões

Página é a menor unidade de armazenamento no DB2 e elas podem ter tamanhos de 4k, 8k, 16k e 32k.
Extensões são agrupamentos de páginas. Seria muito dispendioso para o DB2 tratar uma página por vez, desta maneira ele irá trabalhar com um conjunto de páginas buscando o melhor desempenho possível.

Bufferpools

O Bufferpool é uma área de memória utilizada para cache de dados. O DB2 utiliza-se dessa área afim de ganhar desempenho reduzindo I/Os sequenciais promovendo a leitura (busca prévia) e gravação de modo assíncrono (DB2 antecipa quais páginas serão necessárias e realiza uma pesquisa prévia no disco para o bufferpool, para que fiquem prontas para o uso).
Os bufferpools possuem paginação de 4k, 8k, 16k e 32k. Um bufferpool pode servir como área de memória de um ou vários tablespaces, desde que a paginação das tablespaces sejam iguais ao do bufferpool.

Tablespaces

O Tablespace é um estrutura de armazenamento lógico, ou seja, ela é utilizada com o intuito de agrupamento lógico de objetos. Todos os objetos como tabelas, índices e etc criados em um banco de dados DB2 pertencerão a uma tablespace.
As tablespaces possuem um tamanho de paginação de 4k, 8k, 16k e 32k. Essa paginação deve corresponder ao mesmo tamanho de paginação dos Bufferpools, ou seja, tablespaces e bufferpools caminharão lado a lado. Se você tiver um tablespace com paginação de 16k, então será necessário a criação de um bufferpool de 16k como área de memória dessa tablespace.
Uma tablespace pode ser do tipo:
Regular;
Large;
Temp (System ou User).
Quanto ao gerenciamento dessas tablespaces, as mesmas podem ser do tipo:
SMS –> gerenciada pelo sistema operacional, container serão acrescidos ou removidos pelo SO;
DMS –> gerenciada pelo DB2;
Automatic Storage –> onde o DBA irá informar os storage groups desse ambiente DB2 para que o mesmo utilize-se das facilidade da tablespace SMS e desempenho da tablespace DMS. Este tipo requer o minimo de trabalho possível e é o recomendado atualmente.

Containers

Apesar de não detalhado no livro, o conceito de Container é muito simples. O DB2 precisa armazenar fisicamente os dados de tabelas, de indices e os próprios dados, desta forma o DB2 utiliza-se de containers que podem ser arquivos, filesystems ou raw devices. O tipo de armazenamento utilizado será baseado no tipo de tablespace escolhido.

Abaixo um figura resumindo a estrutura de armazenamento comentado acima em estrutura física e estrutura lógica.

***Object – é o objeto propriamente dito: tabela, indice e etc.
***Data Page ou Página.

Baseado nas informações e estruturas detalhas acima podemos definir mais um componente do DB2, o database propriamente dito.
Um database é formado por estruturas lógicas de armazenamento, estruturas fisicas de armazenamento, estrutura de memória e também processos (falaremos futuramente sobre o tópico processos).

Abaixo uma imagem de um banco de dados DB2.

Dado as informações acima terminamos nosso capítulo 6 do livro PRIMEIROS PASSOS COM O DB2 Express-C.
Existem alguns exercicios de fixação no livro, seria importante faze-los, pois tratam da criação das estruturas comentadas até o momento.

No próximo post falaremos mais sobre o livro. Como informado traçarei uma rota um pouco diferente da apresentada no livro, por este motivo fique atento aos capítulos mencionados em cada post.