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