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!

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados