PostgreSQL para usuários do MySQL

Sobre

Este documento foi originalmente publicado em: http://linuxboxadmin.com/articles/postgresql-for-mysql-users.php por Keith Winston.

A versão abaixo contém algumas adaptações

Introdução

Se você tem utilizado o MySQL por algum tempo, você tem um conhecimento investido que pode desencorajá-lo de explorar outros bancos de dados. Esse guia simples irá mostrar como tarefas comuns no MySQL são executadas no PostgreSQL. Ele também demonstra algumas características únicas de cada banco de dados.

História do PostgreSQL em um parágrafo

O PostgreSQL é um banco de dados relacional open source relational popular, considerado por muitos como sendo omais robusto e avançado dentro do mundo open source. Iniciou como um projeto de Berkeley, na Califórnia, na década de 80 e passou por várias mudanças de nome, definindo PostgreSQL em 1996. Tem um alto nível de estabilidade e uma comunidade ativa. O PostgreSQL oferece muitas características de bancos corporativos e uma licença compatível com a BSD.

Organização de diretórios e arquivos

Nota: essas são as configuraçoes e localizações padrão no Fedora. Verifique a documentação ou o gerenciador de pacotes do seu sistema para maiores detalhes.

Os banco de dados MyISAM no MySQL ficam no diretório home do MySQL (normalmente /var/lib/mysql) com um subdiretório para cada banco de dados. Os bancos de dados InnoDB databases ficam no diretório home do MySQL e todas compartilham arquivos de tablespace chamados ibdataN.

Os bancos de dados do PostgreSQL ficam no diretório de dados do PostgreSQL (normalmente /var/lib/pgsql/data) e todos compartilham os dubdiretórios base e global. Quando um novo banco de dados é criado, o PostgreSQL cria um subdiretório em /var/lib/pgsql/data/base/, porém o nome do diretório é o OID do banco de dados.

Configuração e arquivos de log

O arquivo de configuração do MySQL é /etc/my.cnf.

O PostgreSQL tem três arquivos de configuração, todos em /var/lib/pgsql/data:

  • postgresql.conf -- O principal arquivo de configuração, contém a maior parte das opções
  • pg_hba.conf -- segurança e autenticação, deve ser alterado para permitir acesso pela rede
  • pg_ident.conf -- mapeamento de usuários do postgresql para o unix, nem sempre necessário

O arquivo de log do MySQL é o /var/log/mysqld.log. As mensagens de log do PostgreSQL ficam em /var/lib/pgsql/data/pg_log/, mas a localização pode ser alterada no postgresql.conf.

Administração

Para gerenciar o MySQL, muitas pessoas gostam de usar o pacote web phpMyAdmin. Para o PostgreSQL, há um pacote similar chamado phpPgAdmin.

O superusuário padrão do MySQL é o root. O superusuário padrão do PostgreSQL é o postgres.

O aplicativo de linha de comando do MySQL é o mysql. O aplicativo de linha de comando do PostgreSQL é o psql. Ambos podem ser usados para gerenciar bancos de dados locais ou remotos. Comandos SQL (CREATE, DROP, SELECT, etc.) funcionam em ambos os aplicativos. O comando GRANT command é quase idêntico, exceto para acesso remoto. O acesso remoto no PostgreSQL é configurado no arquivo pg_hba.conf. A maioria dos comandos de dsistema no psql começam com uma barra invertida. Enquanto o monitor do mysql monitor tem algums comandos com contrabarra, eu sempre usei os comandos em inglês, então quando eu comecei a usar o psql, encontrei algumas dificuldades. Segue uma tabela de alguns comandos comuns.

MySQL PostgreSQL Resultados do comando
show databases; l; (L minúsculo) bancos de dados disponíveis
show tables; d tabelas disponíveis
use db c db; mudar o banco de dados na qual está conectado
desc table; d table; mostrar a definição da tabela
select from user/host/db/ tables_priv/columns_priv z object; ver permissões
? or comando ? ? or command? ajuda
exit or quit or q q sair do monitor

Operação normal e processos

O MySQL ouve na porta TCP 3306 e normalmente tem três processos rodando: /usr/bin/mysqld_safe (shell script) /usr/libexec/mysqld

O MySQL lança uma thread pra cada conexão.

O PostgreSQL ouve na porta TCP 5432 e normalmente tem esses processos executando: /usr/bin/postmaster O postmaster lança quatro processos auxiliares: logger, writer, stats buffer, stats collector.

O postgreSQL dispara um proecesso para cada conexão.

Tipos de dados

Os tipos de dados mais comuns e semelhantes entre o MySQL e o PostgreSQL são: INTEGER, FLOAT, DECIMAL, TEXT, DATE, TIMESTAMP.

O MySQL usa o tipo de dados AUTO_INCREMENT para criar IDs únicos como chave primária: CREATE TABLE (id INTEGER AUTO_INCREMENT PRIMARY KEY);

O postgreSQL usa o tipo de dados SERIAL para criar uma sequência para IDs únicos usados como chave primária: CREATE TABLE (id SERIAL);

O MySQL has tem esses tipos de dados adicionais: BLOB, ENUM, SET.

O PostgreSQL tem esses tipos de dados adicionais: Geométricos (BOX, POLYGON, etc.), Rede(CIDR, MACADDR, etc.), OID, XID. O postgreSQL tem suporte a funções de objetos grandes para BLOBs, mas somente uma referência para o BLOB é salva no banco de dados.

Transações e chaves estrangeiras

O banco de dados do tipo InnoDB suporta transações, enquanto o MyISAM não suporta. No PostgreSQL, cada comando SQL é uma transação (a menos que desabilitado para carga de tabela ou mais que um comando esteja empacotado dentro de declarações de transação). O PostgreSQL também usa o Controle de Concorrência Multi Versão(MVCC), considerado por muitos como sendo mais granular que o lock em nível de linha.

O MySQL suporta chaves estrangeiras no InnoDB. O postgreSQL suporta chaves estrangeiras.

Clustering

MySQL has strong support for clustering and offers the NDB table manager designed specifically for clusters.

O PostgreSQL suporta clusterização através de um projeto separado chamado Slony.

Procedimentos armazenados, funções, gatilhos, e visualizações

O MySQL 5.0+ adicionou procedimentos armazenados, funções, gatilhos, e visualizações. A implementação dessas características é relativamente nova, e podem haver algumas questões a serem tratadas.

O PostgreSQL tem suporte maduro para procedimentos armazenados, funções, gatilhos, e visualizações. Procedimentos armazenados e funções podem ser escritas em diversas linguagens, incluindo PL/PGSQL, SQL, TCL, PL/Perl,e C.

Backup/Restore

O utilitário de backup do MySQL é o mysqldump. Restores podem ser feitos usando o comando mysql.

O utilitário de backup do postgresql é o pg_dump. Restores podem ser feitos usando o pg_restore ou o psql. O postgreSQL suporta backups quentes.

Características únicas do MySQL

Os bancos de dados MyISAM tem uma característica de full text indexing feature quem podem ser usadas em buscas em campos de texto.

O MySQL suporta consultas entre bancos diferentes.

Características únicas do PostgreSQL

O postgreSQL permite a herança, de forma que uma tabela pode herdar de uma tabela mãe e adicionar novos atributos.

O postgreSQL suporta schemas esquemas para prover namespace e segurança em tabelas no banco de dados. Pense em esquemas como mini bancos de dados criados dentro de um banco de dados.

O postgreSQL reforã a intetrigadade em campos de data. Por exemplo, ele irá retornar um erro se você tentar gravar 2006-02-30 em um campo de data, enquanto o MySQL permite isso.

O postgreSQL usa o utilitário vacuumdb para liberar espaço de registros apagados e otimizar índices. O vacuum deve ser agendado para executar via cron pelo menos uma vez por semana.

O fator Oracle

Nenhuma discussão sobre bancos de dados open source é completa sem mencionar a longa sombra da Oracle. Nos últimos 18 meses, a Oracle adiquiriu duas empresas de bancos de dados open source, a Innobase e a Sleepy Cat, que forneciam suporte como backend para o MySQL. Pareceque a Oracle estava se sentindo ameaçada pelo sucesso do MySQL no mercado. O futuro do InnoDB no MySQL é questionável, e o suporte para o Berkeley DB já foi retirado. Por essas razões, eu creio que é prudente para qualquer DBA MySQL pelo menos considerar o PostgreSQL como um porto seguro se a Oracle resolver atacar.

Conclusão

Eu tentei cobrir as questões administrativas chave e mostrar os relacionamentos entre as características do MySQL e do PostgreSQL frequentemente atualizadas. Espero que isso ajude a utilizar o seu conhecimento do MySQL para trabalhar com o PostgreSQL.

# % if c.boo_box: Selo da Individualidade DVD O Fugitivo Duet for Guitars #2 - Importado Cancer Ward Isolation Ward American Chatterbox - 4 - Teacher´s Book - Importado