MeuMySQL Blog is now at http://blog.mdnsolutions.com/.

Thursday, June 30, 2011

O que é um Banco de dados em Cluster?

Um cluster é uma coleção de produtos componentes para prover escalabilidade e disponibilidade a baixos custos. Com isso em mente, é possível criar um banco de dados em cluster para aplicações empresariais de alta qualidade armazenando e processando informações por nós entre os produtos. A arquitetura para um banco de dados em cluster é distinguido por como as responsábilidades com os dados são compartilhadas entre os computadores em rede (nós).

Em uma arquitetura shared-nothing (nada compartilhado), o particionamento é de forma que cada nó (computador) possua uma parcela dos dados. Isto é, um nó irá operar exclusivamente em uma porção de dados. Escalabilidade, obviamente, depende de um bom particionamento. Em uma partição física pode ser que um computador coloque sua porção de dados em seu disco local com todos os nós conectados via rede de alta velocidade (tal como Myrinet ou InfiniBand). Tal esquema - pelo qual se assemelha a uma rede de área de armazenamento - reduz a tolerância à erros mas um nó com problemas ainda pode tornar o dado inacessível. No entando, a partição física normalmente compartilha os discos, sendo que desta forma outro nó pode tomar pra si a responsabilidade de finalizar o processo.

Esta arquitetura é de longe a mais popular; IBM DB2, Microsoft SQL Server, MySQL Cluster, e Bizgres MPP (based on PostgreSQL) todos seguem este esquema. O lado ruim deste tipo de configuração é a dificuldade na instalação e manutenção.

Em uma arquitetura de shared-everything ou shared-disk (tudo compartilhado ou disco compartilhado) qualquer nó pode operar em qualquer porção do banco de dados. O modelo físico normalmente envolve armazenamento vinculado à rede (network-attached storage), no qual todos os nós se comunicam com um separador, disco compartilhado (frequentemente um RAID) via uma interconexão de alta velocidade (tradicionamente Fibre Channel). Novamente a partição lógica é a chave da escalabilidade. O lado ruim da arquitetura de compartilhar tudo é que possa haver um enorme tráfego quando vários nós tentam se comunicar com um específico disco simutaneamente.

Neste caso, o uníco grande banco de dados que oferece uma arquitetura de compartilhamento de tudo (shared-everything architecture) é o Oracle, cujo o produto RAC (Real Application Cluster) constroi um cache compartilhado em cada um dos seus nós por meio de "Cache Fusion". Esta tecnologia usa redes de alta velocidade para manter o cache coerênte.

Ambas arquiteturas podem requerer diferentes interconexões : Ethernet para gerenciamento, InfiniBand ou Myrinet para a comunicação entre nós e Fibre Channel para comunicação entre blocos de armazenagem. Dada as tendências de comotidização é possivel que iWARP ou Myri-10G irão emergir como simples interconexões para banco de dados em cluster.

Abaixo um video sobre o MySQL Cluster para exemplificar.