Tablespace

O PostgreSQL vem derrubar por terra toda essa afirmação arcaica de que apenas SGDB pago pode ser utilizado em grandes empresas.

Olá a todos, é muito bom ver como o mundo PostgreSQL vem crescendo a cada dia! Era normal pensarmos em Banco de Dados comercial como sinônimo de segurança, features e estabilidade. Porém, com o amadurecimento do mundo Open Source (e semelhantes), os softwares estão mais poderosos e confiáveis; o PostgreSQL vem derrubar por terra toda essa afirmação arcaica de apenas SGDB pago pode ser verdade para grandes empresas

Recentemente a equipe de desenvolvimento PostgreSQL anunciou o lançamento da versão 8.0, ainda em beta test. O PostgreSQL 8.0 vem com uma série de inovações, entre elas:

Tablespace

Como sabemos, uma das features do PostgreSQL 8 é uma super melhoria no gerenciamento de discos, permitindo assim, selecionar os sistemas de arquivos que iremos armazenar as informações (isso inclui esquemas, tabelas e índices). Em outras palavras, isso significa que eu posso escolher uma determinada PASTA no servidor a qual será utilizada para armazenar uma determinada informação.

O Conceito é muito semelhante ao de tablespace do Oracle, porém, uma tablespace no Oracle é um arquivo localizado em um determinado sistema de arquivos. Já no PostgreSQL, uma tablespace é apenas um lugar no sistema de arquivos onde serão armazenados os objetos (no PostgreSQL, os objetos como tabela e índices são arquivos sem extensão e nomeados numericamente – OID – Object ID).

Este conceito é muito útil para:

As tablespaces podem ter diversas utilidades, dependendo da necessidade do Administrador do SGDB. Vejamos agora como fazer isso no PostgreSQL 8.0.

OBS: Estou utilizando para tal demonstração a versão para Windows, usando o Windows 2000 Professional.

  1. Vamos criar uma pasta chamada DB_SQLMAGAZINE na unidade C:
  2. Agora vamos ao psql. Como ainda não tenho nenhum banco de dados criado no meu PostgreSQL, utilizarei o banco TEMPLATE1.

    O comando digitado foi:

    CREATE DATABASE "DB_SQL" TEMPLATE=template0 TABLESPACE=space_sqlmagazine;

    Onde:

    • DB_SQL”: Nome do Banco de Dados criado;
    • TEMPLATE=template0: Todo banco de dados PostgreSQL necessita de um banco de exemplo (template). Quando não especificado TEMPLATE=, o PostgreSQL utiliza o banco template1. O fato de estar conectado no template1 para criar a tablespace (imagens acima), faz com que este banco não possa ser usado como template, por isso, especifiquei o template0;
    • TABLESPACE=space_sqlmagazine: Finalmente, esta é a nova feature do PostgreSQL. Estou definindo aqui ONDE ficarão os objetos do DB_SQL. Neste caso, C:\DB_SQLMAGAZINE.
  3. Vamos agora exemplificar a criação de um objeto nesta Tablespace.

    O comando digitado foi:

    CREATE TABLESPACE space_sqlmagazine location ‘c:/DB _SQLMAGAZINE’; 

    Onde:

    • sql_magazine: Nome da Tablespace;
    • C:/DB_SQLMAGAZINE é o local que irá receber os dados. Observe que a barra está no padrão UNIX para ser compatível com qualquer Sistema Operacional.

    Vejamos o conteúdo:

    Veja o número 17234, ele é o OID para DB_SQL, ou seja, criamos o banco DB_SQL dentro da pasta DB_SQLMAGAZINE!

    Eu poderia fazer agora a criação de uma tabela do DB_SQL em OUTRA TABLESPACE através do comando:

    CREATE TABLE "SQL_TABELA" ("ID" serial ) TABLESPACE outra_tablespace; 

    Observe que para qualquer objeto a ser criado, é possível definir onde será armazenado o objeto no sistema de arquivos através do parâmetro TABLESPACE nome_tablespace.

    É isso aí pessoal! Espero que tenham gostado desta dica de utilização de uma FEATURE muito interessante que podemos usufruir no PostgreSQL 8.0!

Artigos relacionados