Aplicações e Sistemas Distribuidos - Opinião

mOrSa

Power Member
Olá a todos! Gostava de colocar uma questão para o pessoal que já desenvolveu aplicações multiposto e com localizações diversas.

Desenvolvi uma web app em PHP e PostGreSQL para um centro de explicações que faz a gestão de alunos, turmas, horários, etc. Neste momento, dado à projecção e sucesso q a empresa está a ter vão ser abertas 2 novas filiais.

A minha questão prende-se com o facto da organização do SGBD. Qual será a melhor opção para fazer a manutenção dos dados e conseguir consistência em simultâneo?

As minha ideia inicial seria um sistema de multiplos clientes e 1 servidor, correspondendo cada cliente a uma filial diferente. O servidor ficaria alojado na própria empresa e as filiais comunicariam com este através de ADSL. Neste caso temos as questões de segurança e de disponibilidade: teria de usar VPNs ou IP Tunneling e no caso do ISP dar o berro ou qq coisa semelhante seria complicado e o sistema deixaria de estar operacional o que não está nos meus planos, para além do tráfego extra criado pelas VPN's.

No caso de ter um sistema de servidor/cliente em cada filial teria de ter sempre algo que me mantivesse informado das acções ocorridas numa determinada filial e da possibilidade de obter dados dessa mesma filial. Pensei em fazer um pseudo-log com os comandos SQL realizados nos SGBDs locais e posteriormente, fora da hora do expediente, efectuar os comandos no servidor principal, quer automaticamente quer manualmente. No caso de um volume de dados grande seria também complicado. Mais ainda penso também ser mais fácil de "hackar" se estiver a fazer ligações à BD durante alguns minutos...

Gostava que me dessem a vossa opinião. Poderão existir ainda opções que tenha descurado ou q não me tenham sequer passado pela cabeça.

Peço desculpa pelo testamento :P
1abraço

Mário Rodrigues
 
eu vou-te falar no mysql pk é o que conheço, não sei se o postgres tem as mesmas funcionalidades.
Por exemplo, podes usar a funcionalidade cliente <-> servidor por sucursal mas teres os servidores ligados entre si, desta forma, os servidores vao sempre actualizando os dados uns dos outros com as alterações relativas a cada sucursal, e no caso de falha de links, eles vao guardando toda a informação na mesma e quando houver link novamente, toda a informação é actulizada.
Eu sei que dá para fazer isto no mysql, só não sei se o postgres também da, mas é um ideia.
 
Como se fosse replicação? o PostGreSQL é em tudo mais evoluído do que o MySQL embora tenha estado algo "adormecido". A replicação no Postgresql tem a ver com o Slony-I.
http://slony.info/

Será isso? Ter clones dos servidores, se bem percebi?

Poderemos ir por essecaminho, sim. Vou ler qq coisa acerca do slony-i
 
Bom estamos a falar um pouco sobre replicação de dados. É um assunto delicado que não vais resolver com sucesso assim do nada.

Se tens bd's em vários sítios das duas uma: ou vais querer que a informação não se espalhe, ficando a info de cada filial no servidor respectivo; ou entao queres que a informação seja replicada, ficando cópias de tudo em diversos servidores. Esta última opção permite-te aumentar a disponibilidade da informação (se uma réplica falhar tens a informação noutro sítio). Contudo é uma solução que tem problemas: a replicação dos dados consegue-se fazer, mas ás vezes há problemas.

O meu conselho seria dizer-te para implementares um sistema de réplicas com uma réplica primária e x réplicas secundárias. O que é que isto vai fazer? tens cópias de informação em todos os servidores, havendo para o efeito um servidor principal. Qualquer commit para a bd é feito para a réplica primária, sendo que depois a mesma propaga essas alterações para as réplicas secundárias. Caso a réplica primária vá abaixo, uma réplica secundária irá assumir o seu lugar. Depois, a antiga réplica primária, caso fique em cima, irá ser actualizada.


Procura alguma maneira de implementar um sistema de active replication.

Depois diz ai o que achaste desta solução.

(investiga os seguintes termos: active replication, Bayou, Coda)
 
Do site do slony-I:

  • Slony-I does not have any functionality within it to detect a node failure, nor to automatically promote a node to a master or other data origin.
Logo... fora de questão... mas a ideia do Paos[CeRe4L] não é nada má ;)

1abraço
 
Back
Topo