O que é o PostgreSQL?

Propaganda
CLUSTERS DE ALTA DISPONIBILIDADE
O que é um Cluster?
Cluster é um sistema que compreende dois ou mais computadores ou sistemas na
qual trabalham em conjunto para executar processos, de tal forma para que os
usuários que os utilizam tenham a impressão que trabalham em um único
computador, criando assim a impressão de um recurso único (computador virtual).
Este conceito é denominado transparência do sistema. Como características
fundamentais para a construção destas plataformas incluem-se elevação da:
confiança, distribuição de carga e desempenho.
Tipos de Clusters
- Alta Disponibilidade
Estes modelos de clusters são construídos para prover uma disponibilidade de
serviços e recursos de forma ininterrupta através do uso da redundância implícita
ao sistema. A idéia geral é que se um nó do cluster vier a falhar aplicações ou
serviços possam estar disponíveis em outro nó. Estes tipos de cluster são
utilizados para base de dados de missões críticas, correio, servidores de arquivos
e aplicações.
- Balanceamento de carga
Este modelo distribui o tráfego ou requisições de recursos provenientes das
estações que executam os mesmos programas entre as máquinas que compõem
o cluster. Todos os nodos estão responsáveis em controlar os pedidos. Se um nó
falhar, as requisições são redistribuídas entre os nós disponíveis no momento.
Este tipo de solução é normalmente utilizado em fazendas de servidores de web.
- Combinação HA & Load Balancing
Como o próprio nome diz combina as características dos dois tipos de cluster,
aumentando assim a disponibilidade e escalabilidade de serviços e recursos. Este
tipo de configuração de cluster é bastante utilizado em servidores de web, mail,
news ou FTP.
- Processamento Distribuído ou Processamento Paralelo
Este modelo de cluster aumenta a disponibilidade e performance para as
aplicações, particularmente as grandes tarefas computacionais. Uma grande
tarefa computacional pode ser dividida em pequenas tarefas que são distribuídas
ao redor das estações, como se fosse um supercomputador. É comum associar
este tipo de cluster ao projeto Beowulf da NASA. Estes clusters são usados para
computação cientifica ou análises financeiras, tarefas típicas para exigência de
alto poder de processamento.
Razões para utilização de um Cluster
Clusters ou combinações de clusters são usados quando os conteúdos são
críticos ou quando os serviços têm que estar disponíveis e/ou processados o
quanto mais rápido possível. Provedores de Internet ou sites de comércio
eletrônico freqüentemente requerem alta disponibilidade e balanceamento de
carga de forma escalável. Os clusters paralelos têm uma importante participação
na indústria cinematográfica para renderização de gráficos de altíssima qualidade
e animações. Os clusters Beowulf são usados na ciência, engenharia e finanças
para atuarem em projetos de desdobramento de proteínas, dinâmica de fluídos,
redes neurais, analise genética, estatística, economia, astrofísica dentre outras.
Pesquisadores, organizações e empresas estão utilizando os clusters porque
necessitam de incrementar sua escalabilidade, gerenciamento de recursos,
disponibilidade ou processamento a nível supercomputacional a um preço
disponível.
A Alta Disponibilidade está ligada diretamente a nossa crescente dependência aos
computadores, pois agora eles possuem um papel crítico principalmente em
empresas cuja maior funcionalidade é exatamente a oferta de algum serviço
computacional, como e-business, notícias, sites web, banco de dados, dentre
outros.
Um cluster de Alta Disponibilidade visa manter a disponibilidade dos serviços
prestados por um sistema computacional replicando serviços e servidores, através
da redundância de hardware e reconfiguração de software. Vários computadores
juntos agindo como um só, cada um monitorando os outros e assumindo seus
serviços caso algum deles venham a falhar. A complexidade do sistema deve
estar no software que deve se preocupar em monitorar outras máquinas de uma
rede, saber que serviços estão sendo executados, quem os está executando, e o
que como proceder em caso de uma falha. Perdas na performance ou na
capacidade de processamento são normalmente aceitáveis; o objetivo principal é
não parar. Existem algumas exceções, como sistemas de tempo real e de missão
crítica.
A tolerância a falhas é conseguida através de hardware, como sistemas raid,
fontes e placas redundantes, sistemas rede totalmente ligados para prover
caminhos alternativos na quebra de um link.
Esta solução combinada visa prover uma solução de alta performance aliada a
possibilidade da não existência de paradas críticas. Este cluster combinado é uma
solução perfeita para ISP e aplicações de rede nas quais a continuidade de suas
operações é muito crítica.
Cluster Combinado Alta Disponibilidade e Balanceamento de CargaAlgumas características desta plataforma:
- Redirecionamento dos pedidos aos nós falhas para os nós reservas;
- Melhoria na qualidade dos níveis de serviço para as aplicações típicas de rede;
- Transparente integração para as aplicações stand-alone e não-cluster juntos em
uma única rede virtual;
- Disponibilizar uma arquitetura de framework altamente escalável.
CLUSTERS DE
ALTA
DISPONIBILIDADE
I – Introdução
Um dos principais problemas enfrentados hoje pelas empresas é a necessidade de alta
disponibilidade SEMPRE em todas as áreas da companhia. Até mesmo aqueles que
eventualmente poderiam parar de utilizar o sistema por algumas horas ou minutos, em
casos de manutenção ou problemas, não podem nem imaginar tal fato. Os principais
motivos, em ter o sistema sempre disponível, são:
a concorrência e a dependência cada vez maior das informações digitais e até mesmo dos
documentos digitalizados.
No caso de negócios B2B ou B2C, não pode existir a chance ou a prerrogativa do sistema
falhar, já que se isto acontece é o mesmo que um prédio comercial fechar as portas e seus
clientes ficarem do lado de fora, sem poder entrar para consumir. E o pior de tudo:
é"arranhar" o vínculo de confiança no serviço prestado.
Em virtude dessa necessidade, surgem diversas implementações dos fabricantes de
hardware e software para que isso se torne real e este problema gerenciável. Uma das
soluções que existem hoje de mais efetivo na tolerância a falha é o CLUSTER. O cluster,
seja de hardware ou software, foi desenvolvido exatamente com o propósito de garantir a
alta disponibilidade dos sistemas, suportar também ambientes críticos e elevar o nível de
SLA deste ambiente alcançando o máximo de excelência possível.
O que é um Cluster?
Cluster é um sistema que compreende dois ou mais computadores ou sistemas na
qual trabalham em conjunto para executar processos, de tal forma para que os
usuários que os utilizam tenham a impressão que trabalham em um único
computador, criando assim a impressão de um recurso único (computador virtual).
Este conceito é denominado transparência do sistema. Como características
fundamentais para a construção destas plataformas incluem-se elevação da:
confiança, distribuição de carga e desempenho.
Desmistificação
A primeira dúvida que aparece quando falamos de um ambiente de alta disponibilidade são
os custos envolvidos para construção do ambiente.Podemos afirmar que os valores já foram
extremamente altos no passado,mas agora acompanham a tendência dos outros ambientes
de tecnologia,que estão caindo de preço e se tornando cada vez mais acessíveis. Vale
reforçar que para um ambiente em cluster, é necessário no mínimo uma storage e dois
equipamentos que suportem a operação. Além disso, as especificações do equipamento
devem seguir a orientação mínima do fabricante da tecnologia de cluster e as aplicações
que serão suportadas.
No cenário atual, as empresas, que já têm soluções Microsoft e até as que estão aderindo a
essa plataforma, podem utilizar do Windows Server, que oferece o recurso disponível sem a
necessidade de compra de licença de utilização da tecnologia, o qual diminui o custo do
projeto e implementação final. O serviço funciona muito bem tornando possível a criação
de até 8 nós no mesmo cluster para suporte a aplicativos como o Microsoft SQL Server,
Exchange, ISA Server, entre muito outros recursos.
Para banco de dados, temos a possibilidade de implantar o SQL Server em alta
disponibilidade de forma simples para administrar recursos e movimentá-los entre os nós
participantes da instancia selecionada. Com isso, ganhamos nesta implementação a
possibilidade de um down time mínimo para o banco de dados. Isso porque temos janelas
maiores para possíveis manutenções nos servidores, o que muitas vezes se faz necessário,
sem que as aplicações parem de funcionar durante este período, já que o outro equipamento
pode assumir o papel principal na produção.
Uma dúvida muito comum: É como o cluster pode prover escalabilidade juntamente a alta
disponibilidade? Na verdade quando falamos de Microsoft SQL Server o cluster não é uma
solução aplicável de escalabilidade. Para conquistar isso, temos que utilizar outros recursos
disponíveis no próprio Microsoft SQL Server para atingir este objetivo. Uma excelente
saída é a replicação bi-direcional utilizada,inclusive, em ambientes governamentais críticos
no Brasil.
Aplicações para Clusters
Os clusters podem ser usados para uma infinidade de aplicações. Basicamente, para
qualquer uma que exija processamento pesado. Como exemplos de aplicações, temos
previsão meteorológica (previsão do tempo e condições climáticas), simulações
geotérmicas (ou seja, simulação de eventos no solo), renderização de efeitos especiais
(muito usado em filmes), simulações financeiras, distribuição de carga, etc.
Basicamente, qualquer tipo de aplicação crítica, ou seja, aplicações que não podem parar de
funcionar ou não podem perder dados (como os sistemas de bancos, por exemplo), podem
utilizar as tecnologias de cluster, desde que devidamente configurados para não serem
sujeitas a falhas graves. Assim, o cluster deve contar com nobreaks ou geradores que
garantam o funcionamento do sistema mesmo nos casos de queda de energia, além de
meios de manutenção e detecção de falhas eficientes, como já citado.
Tipos de Clusters
- Alta Disponibilidade
Estes modelos de clusters são construídos para prover uma disponibilidade de
serviços e recursos de forma ininterrupta através do uso da redundância implícita
ao sistema. A idéia geral é que se um nó do cluster vier a falhar aplicações ou
serviços possam estar disponíveis em outro nó. Estes tipos de cluster são
utilizados para base de dados de missões críticas, correio, servidores de arquivos
e aplicações.
- Balanceamento de carga
Este modelo distribui o tráfego ou requisições de recursos provenientes das
estações que executam os mesmos programas entre as máquinas que compõem
o cluster. Todos os nodos estão responsáveis em controlar os pedidos. Se um nó
falhar, as requisições são redistribuídas entre os nós disponíveis no momento.
Este tipo de solução é normalmente utilizado em fazendas de servidores de web.
- Combinação HA & Load Balancing
Como o próprio nome diz combina as características dos dois tipos de cluster,
aumentando assim a disponibilidade e escalabilidade de serviços e recursos. Este
tipo de configuração de cluster é bastante utilizado em servidores de web, mail,
news ou FTP.
- Processamento Distribuído ou Processamento Paralelo
Este modelo de cluster aumenta a disponibilidade e performance para as
aplicações, particularmente as grandes tarefas computacionais. Uma grande
tarefa computacional pode ser dividida em pequenas tarefas que são distribuídas
ao redor das estações, como se fosse um supercomputador. É comum associar
este tipo de cluster ao projeto Beowulf da NASA. Estes clusters são usados para
computação cientifica ou análises financeiras, tarefas típicas para exigência de
alto poder de processamento.
Cluster Beowulf
O nome Beowulf vem de um herói muito valente que tinha a missão de derrotar um
monstro, num texto inglês antigo. Esse tipo de cluster, voltado à computação paralela, foi
fundamentado em 1994, pela NASA, com a finalidade de processar as informações
espaciais que a entidade recolhia. Desde então, grandes empresas (como HP e IBM) e
universidades (como a brasileira Unesp) vêm construindo clusters deste tipo e como cada
vez mais nós!
O que distingue o Cluster Beowulf dos outros tipos são as seguintes características (que são
aplicadas de acordo com a finalidade do cluster):
- A conexão dos nós pode ser feita por redes do tipo Ethernet (mais comum);
- Existe um servidor responsável por controlar todo o cluster, principalmente quanto a
distribuição de tarefas e processamento (pode haver mais de um servidor, dedicado a tarefas
específicas, como monitoração de falhas). Este servidor é chamado de Front-end;
- O sistema operacional é baseado Linux, sendo necessário que ele contenha todos os
programas para cluster;
- Pode-se usar computadores comuns, inclusive modelos considerados obsoletos;
infowester
- Não é necessário usar equipamentos próprios para clusters. Basta equipamentos comuns à
redes e os tradicionais PCs.
De maneira generalizada, o Cluster Beowulf permite a construção de sistemas de
processamento que podem alcançar altos valores de gigaflops (um gigaflop equivale a 1
bilhão de instruções de ponto flutuante executadas por segundo). Isso tudo com o uso de
computadores comuns e de um sistema operacional com código-fonte livre, ou seja, além
de gratuito, pode ser melhorado para a sua finalidade. Tais características fizeram do
Cluster Beowulf um tema muito explorado em universidades e claro, aplicado para vários
fins.
Entre os requisitos para o sistema operacional de um Cluster Beowulf, estão a necessidade
de se ter as bibliotecas para Parallel Virtual Machine (PVM) ou para Message Passing
Interface (MPI). Ambos os tipos são usados para a troca de mensagens entre os nós do
cluster. O MPI é mais avançado que o PVM, pois pode trabalhar com mensagens para todos
os computadores ou para apenas um determinado grupo (por exemplo, quando somente este
grupo vai realizar determinada tarefa).
Cluster MOSIX
MOSIX é a sigla para Multicomputer Operating System for UnIX. Trata-se de um conjunto
de ferramentas de cluster para Linux, voltado ao tipo Balanceamento de Carga. Uma de
suas principais características é a não necessidade de aplicações e recursos de software
voltados ao cluster, como acontece com o Beowulf. O MOSIX é eficiente na tarefa de
distribuição dinâmica de processamento entre os computadores do cluster. Esse tipo, assim
como o Beowulf, é muito utilizado por universidades em pesquisas e projetos. Por ser
baseado em Linux, sua implementação é transparente, além de ser relativamente fácil de
instalar.
De maneira generalizada, O MOSIX é uma extensão para Linux (ou sistemas baseados em
Unix) de um sistema de cluster que trabalha como se fosse um único supercomputador, por
meio de conceitos de Distribuição de Processos e Balanceamento de Carga.
**** TABELA COMPARATIVA ENTRE O MOSIX E O BEOWULF *****
Cluster Banco de Dados
Quando falamos em Cluster de banco de dados, pensamos em 3 tipos de clusters:



Shared All: Onde a memória (shared buffers) e os discos (datafiles) são
compartilhados por cada nó do cluster;
Shared Disc: Onde apenas os disco são compartilhados pelos nós do cluster;
Shared Nothing: Onde cada nó tem a sua própria memória e discos;
Cluster Banco de Dados MySQL
MySQL Cluster combina o banco de dados open source mais popular com uma arquitetura
de cluster tolerante à falhas que permite implementar aplicações de banco de dados de
missão crítica com até 99.999% de disponibilidade.
MySQL Cluster :



Fornece disponibilidade de 5 noves usando arquitetura de servidor paralelo isento
de ponto simples de falha.
Fornece performance e alta capacidade de saida requerida para atender à maioria
das necessidades de aplicações das empresas.
Incrementa escalarmente suas aplicações de forma linear à medida que suas
necessidades crescem sem ter de investir em hardware mais despendioso.
MySQL Cluster tem arquitetura flexívelmente distribuída que fornece um controle
completo sobre o nível de performance, confiabilidade e escalabilidade que você necessita
para atender suas necessidades de aplicativos.
Obtenha o panfleto explicativo: MySQL Cluster Evaluation Guide (em inglês)
"MySQL Cluster fornece alta-disponibilidade que nos permite garantir acesso contínuo a
internet banda-larga e serviços VoIP para nossos assinantes."
— Lars-Åke Norling
CTO, Bredbandsbolaget (B2)
O Maior Provedor de Banda-larga da Suécia

Projetado para 99.999% de Disponibilidade
MySQL Cluster fornece arquitetura de tolerância à falhas que garante que as aplicações de
missão crítica de sua empresa atinjam 99.999% de disponibilidade. Isto significa menos de
5 minutos de servidor inativo por ano, incluindo tempo de manutenção programado.
MySQL Cluster implementa recuperação de nós automática para garantir que uma
aplicação automáticamente comute para outro nó de banco de dados que contenha um
conjunto de dados consistente, caso um ou mais nós de banco de dados falhe. Caso todos os
nós falhem, por falhas de hardware por exemplo, MySQL Cluster assegura que um sistema
inteiro possa ser recuperado seguramente em um estado consistente ao usar uma
combinação de pontos de checagem e logs de execução. Além do mais, MySQL Cluster
garante que os sistemas estejam disponíveis e consistentes à distância, ao habilitar clusters
inteiros a serem replicados cruzando regiões distantes.

Alto Desempenho que Somente um Banco de Dados de Memória Centralizada
pode Oferecer
MySQL Cluster possui o tempo de resposta e fluxo de dados para atender a aplicações
empresariais que exijam grandes volumes de solicitações. A maior vantagem de MySQL
Cluster é o desempenho, sendo uma solução de banco de dados clusterizado de memória
centralizada, que mantém todas as informações em memória e limita gargalos de IO ao
gravar assíncronamente registros de transações para o disco. MySQL Cluster também
permite servidores a compartilhar processamento com o cluster, obtendo o aproveitamento
de todo o hardware. Tempos típicos de resposta para o MySQL Cluster estão na faixa de
alguns Mili-segundos e o MySQL Cluster já conseguiu gerenciar dezenas de milhares de
transações distribuídas por segundo que foram replicadas através de nós de banco de dados.

Recuperação de Falhas Extremamente Rápida
MySQL fornece tempo de recuperação de falhas extremamente rápido com resposta de subsegundos, para que suas aplicações possam se recuperar rapidamente em caso de falha de
aplicação, rede ou falha de hardware. MySQL Cluster utiliza replicação síncrona para
propagar a informação de transacionalidade para todos os nós de banco de dados
apropriados, para que as aplicações possam ser conectadas automáticamente em outro nó
rapidamente. Este procedimento elimina o tempo perdido na operação de recriar e executar
os arquivos de registro requeridos pela arquitetura 'Shared-Disk' para se recuperar com
sucesso. Além disso, Nós de banco de dados do MySQL Cluster estão habilitados a
automaticamente re-iniciarem, se recuperarem e reconfigurarem-se dinamicamente em caso
de falhas, sem a necessidade de criar rotinas avançadas em sua aplicação para isso.

Arquitetura Flexível Distribuída com Recuperação de Ponto de Falha Múltipla
A arquitetura de servidor paralelo combina nós de banco de dados, nós de gerenciamento
de servidor, e nós de aplicação que podem ser distribuídos através de computadores e
regiões para garantir que não haja só um ponto de recuperação de falhas. Qualquer nó pode
ser parado e iniciado sem parar as aplicações que utilizam o banco de dados. E o MySQL
Cluster é totalmente configurável para que você implemente o nível apropriado de
desempenho, escalabilidade e tolerência a falhas que seja compatível com as necessidades
de suas aplicações.

Significativa redução de Custos com Serviços Inoperantes
MySQL Cluster não somente baixa os custos de licenciamento com uma licensa comercial
viável sob seu mecanismo de duplo licenciamento, mas também reduz significativamente o
tempo de sistema inoperante - o principal contribuidor pata o custo total de propriedade
(TCO) de programas de banco de dados. Além do mais, um ambiente baseado em padrões
altamente portáveis permite que você distribua suas aplicações utilizando hardware de
baixo custo e programas de software livre à custo reduzido.

Baixo Custo de Manutenção
MySQL Cluster foi desenvolvido para ser extremamente auto-governável, portanto poucos
parâmetros de sistema atualmente necessitam de ajuste fino, assim reduzindo o risco de que
ocorram erros e prejuízos. Como resultado, há tipicamente poucos conflitos com outros
programas e equipamentos e menor necessidade de intervenção manual. Também significa
que MySQL Cluster terá custos de manutenção muito menores, com menor necessidade de
ajustes finos por parte de Administradores de banco de dados.

Administração Simplificada
MySQL Cluster inclui ferramentas poderosas e fáceis de usar para administrar seu ambiente
de grupo de servidores. Ferramentas de linha de comando permitem que você inspecione os
nós de banco de dados, controle o acesso às aplicações, crie e restaure backups.

Serviços e Suporte
MySQL fornece extensivos serviços de consultoria, treinamento e suporte técnico para
assegurar o sucesso de seu próximo projeto de banco de dados para aplicativos de missão
crítica. MySQL tem provado isto através de milhões de implementações de clientes com
sucesso, que puderam reduzir seus riscos e maximizar o retorno de investimento.
O que é o PostgreSQL?
Para alguns pode parecer um assunto batido, mas esse é um artigo introdutório, voltado
principalmente àqueles que conhecem pouco ou nada sobre o PostgreSQL. O PostgreSQL é
um SGBD (Sistema Gerenciador de Banco de Dados) objeto-relacional de código aberto,
com mais de 15 anos de desenvolvimento. É extremamente robusto e confiável, além de ser
extremamente flexível e rico em recursos. Ele é considerado objeto-relacional por
implementar, além das características de um SGBD relacional, algumas características de
orientação a objetos, como herança e tipos personalizados. A equipe de desenvolvimento do
PostgreSQL sempre teve uma grande preocupação em manter a compatibilidade com os
padrões SQL92/SQL99.
Histórico do PostgreSQL
O PostgreSQL (conhecido anteriormente como Postgres95) derivou do projeto POSTGRES
da universidade de Berkley, cuja última versão foi a 4.2. O POSTGRES foi originalmente
patrocinado pelo DARPA (Agência de Projetos de Pesquisa Avançada para Defesa), ARO
(Departamento de Pesquisa Militar), NSF (Fundação Cinetífica Nacional) e ESL Inc. A
implementação do projeto POSTGRES iniciou em 1986, já em 87 tornou-se operacional. A
primeira versão lançada para o público externo foi em 1989. Devido a uma crítica feita ao
seu sistema de regras, o POSTGRES teve essa parte re-implementada e lançada em uma
segunda versão em 1990. Em 1991 foi lançada a versão 3, com melhorias no executor de
consultas e algumas partes do código foram re-escritas. As versões subsequentes, até o
Postgres95, foram focadas em confiabilidade e portabilidade. O POSTGRES foi utilizado
para diversos sistemas de pesquisa e de produção, uma aplicação de análise financeira, um
banco com rotas de asteróides, e diversos sistemas de informações geográficas. O código
do POSTGRES foi aproveitado em um produto comercializado pela Illustra Information
Technologies (posteriormente incorporada à Informix, que agora pertence à IBM).
A versão seguinte, o Postgres95, teve mudanças radicais em relação ao projeto original. O
seu código foi totalmente revisado, o tamanho dos fontes foi reduzido em 25%, e a
linguagem SQL foi implementada como interface padrão. A performance foi
consideravelmente melhorada e vários recursos foram adicionados. Em 1996 o nome
Postgres95 tornou-se inadequado, o projeto foi rebatizado "PostgreSQL", para enfatizar a
relação do POSTGRES original com a linguagem SQL. A numeração da versão voltou a
seguir o padrão anterior ao Postgres95 (considerada a 5.0), e a primeira versão do
PostgreSQL foi a 6.0. Enquanto a ênfase do Postgres95 tinha sido a correção de falhas e
otimização do código, o desenvolvimento das primeiras versões do PostgreSQL foi
orientada à melhoria de recursos e implementação de novos recursos, sempre seguindo os
padrões de SQL anteriormente estabelecidos.
O PostgreSQL hoje
A equipe do projeto cresceu e se espalhou pelo mundo. O Grupo Global de
Desenvolvimento do PostgreSQL tem membros nos Estados Unidos, Canadá, Japão,
Russia, vários países da Europa e alguns outros. Esse grupo é formado essencialmente por
empresas especializadas em PostgreSQL, empresas usuárias do sistema, além dos
pesquisadores acadêmicos e programadores independentes. Além da programação, essa
comunidade é responsável pela documentação, tradução, criação de ferramentas de
modelagem e gerenciamento, e elaboração de extensões e acessórios.
Pela riqueza de recursos e conformidade com os padrões, ele é um SGBD muito adequado
para o estudo universitário do modelo relacional, além de ser uma ótima opção para
empresas implementarem soluções de alta confiabilidade sem altos custos de
licenciamento. É um programa distribuído sob a licença BSD, o que torna o seu código
fonte disponível e o seu uso livre para aplicações comerciais ou não. O PostgreSQL foi
implementado em diversos ambientes de produção no mundo, entre eles, um bom exemplo
do seu potencial é o banco de dados que armazena os registros de domínio .org, mantido
pela empresa Afilias.
Alguns recursos presentes na versão mais recente:














Sub-consultas;
Controle de concorrência multi-versão (MVCC);
Integridade Referencial;
Funções armazenadas (Stored Procedures), que podem ser escritas em várias
linguagens de programação (PL/PgSQL, Perl, Python, Ruby, e outras);
Gatilhos (Triggers);
Tipos definidos pelo usuário;
Esquemas (Schemas);
Conexões SSL.
Áreas de armazenamento (Tablespaces)
Pontos de salvamento (Savepoints)
Commit em duas fases
Arquivamento e restauração do banco a partir de logs de transação
Diversas ferramentas de replicação
Extensões para dados geoespaciais, indexação de textos, xml e várias outras.
Tabela Comparativa
Sistema OPeracional
ANSI SQL
Performance
Sub-selects
Transactions
Database replication
Foreign key support
Views
Stored procedures
Triggers
Unions
Full joins
Constraints
Cursors
Procedural languages
(PLs)
Vacuum (cleanup)
Different table types
PostgreSQL 8.0
MySQL 4.1
MySQL 5.0 (beta)
Windows, dezenas de
Linux, Windows,
Linux, Windows,
sistema operacionais
FreeBSD, MacOS X, FreeBSD, MacOS X,
derivados do UNIX
Solaris, HP UX, AIX, e Solaris, HP UX, AIX, e
(Linux, BSDs, HP-UX,
outros
outros.
AIX, OS X,...)
Possível; Usuário pode
Segue algumas regras
executar MySQL de
dos padrões ANSI SQL
ANSI-SQL 92/99
forma ANSI mais
pode ser executado em
compatível (Modo
Modo ANSI
ANSI)
Não Testado
Mais Lento
Mais Rápido
Sim
Sim
Sim
desde a versão 4.1
Sim
Somente a tabela
Sim
Sim
InnoDB
Sim
Sim
Sim
Sim
Somente a tabela
Sim
Sim
InnoDB
Sim
Não
Sim
Sim (pl/SQL)
Não
Sim
Sim
Não
Sim
Sim
Sim
Sim
desde a versão 4.0
Não
Planejada para a versão
Sim
Não
5.1
Não
Planejada para a versão
Sim
Não
5.1
Partial
Sim
Não
(somente leitura)
Sim
PL/pgSQL, PL/Tcl,
Sim
Não
PL/Perl, PL/Python
PL/PHP, PL/Java
Sim
Sim
Sim
Não
Sim
Sim
(PostgreSQL possui
MyISAM, InnoDB,
MyISAM, InnoDB,
sua própria tabela de MEMORY,
MEMORY,
tipos nativa, não
BerkeleyDB, MERGE, BerkeleyDB, MERGE,
utilizando nenhuma
outra tabela de tipos
alternativos)
ODBC
JDBC
Outras APIs
Suporte a IPv6
Archive and NDB
(Cluster)
(InnoDB possui
funcionalidade
adicional)
Sim
Sim
Sim
Sim
Maioria das
Linguagens (Ex.:. Perl,
Maioria das
C/C++, .NET, OLELinguagens
DB, Tcl/Tk, Python,
PHP, ...)
Sim
Archive and NDB
(Cluster), Federated
(InnoDB possui
funcionalidade
adicional)
Sim
Sim
Maioria das
Linguagens
Não
Planejada para a versão
5.1
Não
Diferença de Objetivos
PostgreSQL





Sem uma diretiva principal por
ser um projeto de uma
comunidade on line.
O objetivo utópico (Dez anos
atrás) era ser tão funcional
quanto os outros sistemas
comerciais.
Hoje o objetivo é, de ser tão
funcional quanto esses
sistemas.
Para ser um RDBMS
(Relational Database
Management System), isto é o
mais próximo do padrão SQL e
ter a maioria das
funcionalidades
implementadas;
Disponibilização com alta
qualificação e um RDBMS livre
para o usuário.
MySQL





Ser de fácil utilização ao
usuário;
Disponibilizar ao usuário um
começo bem simples no
mundo dos Banco de Dados;
Ser diferente dos outros
sistemas em virtude de sua
simplicidade;
Transformar-se no DBMS, que
reina como soberano no
mundo PHP e ampliar seus
domínios para a WEB;
Política de reembolso ao
desenvolvedores, através da
criação de uma empresa que
vende licenças comerciais e
suporte.
Diferenças Importantes de Funcionalidades
Muitos dos usuários de PostgreSQL utilizam MySQL também, e muitos dos usuários de
MySQL também utilizam PostgreSQL.
Para se trocar é necessário que se saiba de algumas diferenças de funcionalidades para que
não haja frustrações ao fazer a mudança de sistema.





Gerenciamento de Usuário
Codificação – somente o MYSQL é comentado, pois há uma Codificação em
PostgreSQL separado
Mudança de Liguagem
Funções e Procedimentos
SQL
Conclusão
As tecnologias de Clustering possibilitam a solução de diversos problemas que envolvem
grande volume de processamento. As aplicações que um cluster pode ter são diversas, indo
desde a simples melhora no desempenho de um determinado sistema ou a hospedagem de
um site como o InfoWester, até o processo de pesquisas científicas complexas. O que
realmente chama a atenção, é que todo o processamento pode ser feito de maneira que
pareça ser um único computador dotado de alta capacidade. Assim, é possível que
determinadas aplicações sejam implementadas em custer, mas sem interferir no
funcionamento de outras aplicações que estejam relacionadas.
Empresas especializadas, centros de pesquisas e universidades costumam estudar este
assunto a fundo. Como conseqüência, existem clusters com até milhares de nós. Um
exemplo no Brasil, é um cluster que foi desenvolvido em 2003 por um aluno da
Universidade Estadual Paulista (Unesp), de São Paulo. Baseado no tipo Beowulf, este
cluster ficou bastante conhecido, por ajudar na pesquisa de medicamentos para o tratamento
da tuberculose. O valor gasto neste projeto foi 60 mil reais. Se tivesse sido utilizado um
supercomputador de capacidade equivalente, os gastos seriam até 17 vezes maior.
Só por este exemplo, é possível ver os vários benefícios do Clustering. Processamento
eficiente, custo baixo, ampla gama de aplicações, enfim. Quem se sujeita a estudar estes
conceitos (que são muito mais amplos do que o que foi explicado neste artigo) poderá não
só ter sucesso profissional, mas ter um conhecimento grande sobre vários conceitos da
computação em si.
Bibliografia
http://www.administradores.com.br
http://www.infowester.com
http://www.midstorm.org
http://www.vivaolinux.com.br
http://br-linux.org
http://www.pgday.it/
http://www.postgresql.org.br/
http://www.dragones.org
Download