Organização de Arquivos e Índices no Postgree
Introdução
Este trabalho tem como objetivo apresentar características do SGBD PostgreSQL quanto a sua organização de arquivos e índices. A versão utilizada para estudos foi a 9.2.4.
Organização Física do Banco de Dados
O PostgreSQL organize seus principais objetos em forma de arquivo, hierarquicamente. No topo da hierarquia, temos clusters; pode-se entendê-los como uma coleção de banco de dados. Cada cluster está organizado numa estrutura de diretórios e subdiretórios própria.
Existem três tabelas de sistema que são compartilhadas por todos os bancos de dados em um mesmo cluster:
1. pg_group – listagem de grupos de usuários;
2. pg_database – listagem de bancos de dados em um cluster;
3. pg_shadow – listagem de usuários válidos.
Cada cluster contém um ou mais bancos de dados. Cada banco de dados tem um nome que o identifica e é único por cluster. Bancos de dados, por sua vez, são uma coleção de Tabelas (possivelmente agrupada por esquemas), funções, visões, índices, e outros.
Cada banco de dados precisa ter um nome, ao contrário do cluster. Este nome pode não ser único, o que leva á necessidade de uso de schemas. Todos os objetos de um banco são únicos por schema.
Paginação
Dados no PostgreSQL encontram-se no diretório “data/base” dentro do caminho da instalação. Existem vários diretórios, um para cada banco de dados. Dentro de cada diretório, existem vários arquivos, todos relacionados a tabelas. Cada tabela do banco de dados tem seu próprio arquivo.
Cada arquivo/tabela pode conter até 1 GB de dados. Após este limite, um novo arquivo é criado. Cada arquivo é tratado em blocos de 8KB - uma página.
Buffer Management
Cada página possui um cabeçalho seguido de uma lista de itens de tamanho fixo que, na verdade, são ponteiros para tuplas na mesma página. As tuplas