Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Banco de Dados Web
4º TSI
Jonathan de Matos
Diferenças e Semelhanças
Porque escolher MySQL ou PostgreSQL?
●São os SGBDs livres mais populares●São os projetos mais antigos e maduros●Suporte de ferramentas livres:
● PHP, Perl, Python, Glade / Gnome-DB, …●Suporte de ferramentas proprietárias
● Kylix, Java, Delphi, Visual Basic, ASP, ColdFusion, …
●Outros SGBDs livres:● Firebird (fork do Interbase da Borland)● MSDE (versão limitada do Microsoft SQL Server)
● HSQLDB (desenvolvido em Java)3
Principais características
Teste de desempenho
Teste de desempenho
Teste de desempenho
Qual escolher: MySql ou Postgres?
●Um tipo de Banco de Dados faz a diferença entre ter ou não uma aplicação eficiente, seja ela de qualquer porte.●Para escolher um destes dois SGBDs, procure entender bem mais recursos que sua aplicação necessita.●Na escolha de um Banco de Dados devem ser considerados aspectos como:▫ Recursos▫ Complexidade▫ Desempenho
Organização: Diretórios e arquivos
●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 subdiretó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 onome do diretório é o OID (Object Identifiers Registry) do banco de dados.
Configuração
●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
Arquivos de Log
●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 do banco●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.
Operação e processos●O MySQL ouve na porta TCP 3306 e normalmente tem três processos rodando: mysqldsafe, (shell script) , mysqld●O MySQL lança uma thread(linha de execução) para cada Conexão.
●O PostgreSQL ouve na porta TCP 5432 e tem um processo chamado postmaster executando:●O postmaster lança quatro processos auxiliares: logger, writer, stats buffer, stats collector.
●O postgreSQL dispara um processo 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 implicitamente uma sequência para IDs únicos usados como chave primária:
● CREATE TABLE (id SERIAL);
Tipos de dados●O MySQL 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.
Clustering (alta disponibilidade)
●O MySQL possui suporte para clustering por meio de um aplicativo chamado “NDB table Manager”
●O PostgreSQL suporta clusterização através de um projeto separado chamado “Slony”.
Recursos avançados●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 e 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 (hot backups).
Características únicas (MySQL)
●Os bancos de dados MyISAM tem uma característica de “full text indexing feature” que podem ser usadas em buscas em campos de texto.
●O MySQL suporta consultas entre bancos diferentes.
Características únicas (Postgres)
●O postgreSQL permite a herança, de forma que uma tabela pode herdar de uma tabela mãe e adicionar novos atributos.●Suporta esquemas para prover namespace e segurança em tabelas no banco de dados.●O postgreSQL reforça a integriadade em campos de data.
● Por exemplo, ele irá retornar um erro se você tentar gravar 2008-02-30 em um campo de data, enquanto o MySQL permite isso.
●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.
Administração do banco