PostgreSQL para um bilhão de usuários

             Fernando Ike de Oliveira

                       B2BR - Grupo TBA


  ...
Breve história...




        2004 libera um conjunto de ferramentas para replicação,
        balanceamento de carga e alt...
PL/Proxy




      PL/Proxy é uma linguagem usada para chamadas remotas
      e particionamento de banco de dados usando h...
PL/Proxy
Princípio de funcionamento PL/Proxy




   Exemplo
   "SELECT (hashtext(’pgcon1’))%3" = 0
   "SELECT (hashtext(’p...
PL/Proxy
idéias básicas possíveis




        Como um barramento, para todos as servidores
        PostgreSQL
        Tabe...
PL/Proxy
Problema




           Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy
Princípio do Proxy




                     Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PL/Proxy
Particionamento de dados




                    Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
PgBouncer
Um serviço de pool para o PostgreSQL



        Baixo consumo de recurso (2k por conexão)
        Suporta reconfi...
PgBouncer
Modos de pool




       Sessão (session)
       Transação (transaction)
       Instrução (statement)




      ...
PgBouncer
Sessão




         Quando um cliente conecta, o PgBouncer retira uma
         conexão do pool e entrega para a ...
PgBouncer
Transação




       Servidor mantém para o cliente a conexão somente
       durante a transação. Quando PgBounc...
PgBouncer
Instrução (Statement)




        Este é o modo usado usado com o PL/Proxy. Por ser mais
        agressivo, ele ...
Skytools
O que é?




           Skytools são um conjunto de scripts para gerenciar cluster
           de servidores Postg...
Skytools
Basicamente...




        Centralização de log gerenciamento de exceções.
        Gerenciamento de conexões ao b...
Skytools
Conteúdo




       londiste
       walmgr
       serial_consumer
       queue_mover
       queue_splitter
      ...
Skytools
Londsite é...




         ... um sistema de replicação
         ... Master/Slave(s) como tipo de replicação
    ...
Skytools
Walmgr é...




        ... uma ferramenta para gerenciar replicação por WAL
        ... similar ao pg_standby (c...
Skytools
queue_mover e queue_splitter



   Ambos
      Usa o PgQ como transporte dos dados
        Move/copia os dados pa...
Skytools
cube_dispacher e table_dispacher

   Ambos
      Ferramentas para replicar dados em tabelas particionadas.
      ...
Exemplo 1




            Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Exemplo 2




            Fernando Ike de Oliveira   Pgbouncer, plproxy, skytools
Dúvidas




  Links e Listas de discussão:
      https://developer.skype.com/SkypeGarage/DbProjects/SkypePostgresqlWhitepa...
Conclusão


  Contatos:
     fernando.ike@b2br.com.br
      fernando.ike@gmail.com
      http://www.midstorm.org/~fike/web...
Upcoming SlideShare
Loading in …5
×

Skytools, pgbouncer e plproxy

1,288 views

Published on

Palestras sobre o Sytools, pgbouncer e plproxy. Ferramentas do skype para cluster em PostgreSQL

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,288
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Skytools, pgbouncer e plproxy

  1. 1. PostgreSQL para um bilhão de usuários Fernando Ike de Oliveira B2BR - Grupo TBA Setembro de 2008 / PGCon-BR 2008 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  2. 2. Breve história... 2004 libera um conjunto de ferramentas para replicação, balanceamento de carga e alta-disponibilidade para PostgreSQL. Essas ferramentas são conhecidas como PL/Proxy, PgBouncer, Skytools. A licença é BSD. Instalação à partir do código-fonte ou pacotes *.deb *.rpm. Oficialmente o Debian, Fedora tem pacotes binários. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  3. 3. PL/Proxy PL/Proxy é uma linguagem usada para chamadas remotas e particionamento de banco de dados usando hash dos dados. PL/Proxy permite criar funções de proxy usando hash para especificar destino (base de dados alvo). PL/Proxy é comparável à um roteador de rede que encaminha a expressão SQL para o instância correta. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  4. 4. PL/Proxy Princípio de funcionamento PL/Proxy Exemplo "SELECT (hashtext(’pgcon1’))%3" = 0 "SELECT (hashtext(’pgcon2’))%3" = -1 "SELECT (hashtext(’pgcon3’))%3" = -2 "SELECT (hashtext(’pgcon4’))%3" = 0 "SELECT (hashtext(’pgcon5’))%3" = 0 "SELECT (hashtext(’pgcon6’))%3" = 2 "SELECT (hashtext(’pgcon7’))%3" = -1 "SELECT (hashtext(’pgcon8’))%3" = 0 "SELECT (hashtext(’pgcon9’))%3" = 0 "SELECT (hashtext(’pgcon10’))%3" = 0 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  5. 5. PL/Proxy idéias básicas possíveis Como um barramento, para todos as servidores PostgreSQL Tabelas Particionamento usando funções de Proxy Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  6. 6. PL/Proxy Problema Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  7. 7. PL/Proxy Princípio do Proxy Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  8. 8. PL/Proxy Particionamento de dados Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  9. 9. PgBouncer Um serviço de pool para o PostgreSQL Baixo consumo de recurso (2k por conexão) Suporta reconfiguração sem reiniciar o serviço Suporta reinício/atualização sem derrubar a conexão cliente Suporta o protocolo v3 ou superior, somente => 7.4 O Parse SQL nao eh muito rápido e consome pouco tempo de cpu Tem uma interface console de gerenciamento Tem estrutura sua (própria) estrutura de autenticação mas similar ao arquivo similar ao arquivo de senha pg_pwd do PostgreSQL. Permite autenticação do tipo: trust, texto plano, crypt, md5. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  10. 10. PgBouncer Modos de pool Sessão (session) Transação (transaction) Instrução (statement) Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  11. 11. PgBouncer Sessão Quando um cliente conecta, o PgBouncer retira uma conexão do pool e entrega para a aplicação Ao o cliente desconectar, o PgBouncer re-aloca a conexão para o pool. geralmente essa configuração é recomendada para aplicações legadas(Por não usarem de forma eficiente o pool) Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  12. 12. PgBouncer Transação Servidor mantém para o cliente a conexão somente durante a transação. Quando PgBouncer notifica que transação acabou, o servidor devolve a conexão para o pool. Essa opção não deve ser usada com servidor de aplicações que gerenciam pool (Jboss, por exemplo) Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  13. 13. PgBouncer Instrução (Statement) Este é o modo usado usado com o PL/Proxy. Por ser mais agressivo, ele retornar o conexão para opool depois que a consulta termina. Transações muito longas com múltiplos Statements são desabilitados neste modo. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  14. 14. Skytools O que é? Skytools são um conjunto de scripts para gerenciar cluster de servidores PostgreSQL. Desenvolvido em C e Python Permitem usar para replicação assíncrona Permitem replicar dados particionados nos servidores "slave(s)" Possível extender usando as API do PgQ Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  15. 15. Skytools Basicamente... Centralização de log gerenciamento de exceções. Gerenciamento de conexões ao banco de dados Gerenciamento de configuração Gerenciamento de scrips... Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  16. 16. Skytools Conteúdo londiste walmgr serial_consumer queue_mover queue_splitter table_dispatcher cube_dispatcher Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  17. 17. Skytools Londsite é... ... um sistema de replicação ... Master/Slave(s) como tipo de replicação ... de replicação é assíncrona ... baseada fortemente nas idéias do no Slony-1. ... um replicador baseado em gatilhos Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  18. 18. Skytools Walmgr é... ... uma ferramenta para gerenciar replicação por WAL ... similar ao pg_standby (contrib) ... possível gerenciar replicação baseada em PITR (Warm Standby). ... escrito em python ... uma ferramenta de replicação que usa túnel SSH. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  19. 19. Skytools queue_mover e queue_splitter Ambos Usa o PgQ como transporte dos dados Move/copia os dados para os servidores Slave Move/copia os dados em lote(batch) O processamento é/são nos slave(s) queue_mover Usado para mover/copia os dados para OLTP, Web queue_splitter Usado para BI Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  20. 20. Skytools cube_dispacher e table_dispacher Ambos Ferramentas para replicar dados em tabelas particionadas. Usados para preparar os dados para outros servidores cube_dispacher Prepara os dados para banco de dados do tipo BI, OLAP, Cubo... Não tem suporte para operações de remoção de registro Caso haja duas versões do mesmo registro, ele irá enviar somente a última versão. table_dispacher script para configuraro particionamento de uma ou mais tabela. possibilita particionar uma tabela por mês, por exemplo. Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  21. 21. Exemplo 1 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  22. 22. Exemplo 2 Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  23. 23. Dúvidas Links e Listas de discussão: https://developer.skype.com/SkypeGarage/DbProjects/SkypePostgresqlWhitepaper https://developer.skype.com/SkypeGarage/DbProjects/PlProxy http://pgfoundry.org/mailman/listinfo/plproxy-users https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer http://pgfoundry.org/mailman/listinfo/pgbouncer-general https://developer.skype.com/SkypeGarage/DbProjects/SkyTools http://pgfoundry.org/mailman/listinfo/skytools-users http://joaocosme.wordpress.com/2008/07/03/comecando-com-o-plproxy/ Fernando Ike de Oliveira Pgbouncer, plproxy, skytools
  24. 24. Conclusão Contatos: fernando.ike@b2br.com.br fernando.ike@gmail.com http://www.midstorm.org/~fike/weblog PGCon Brasil 2008 http://pgcon.postgresql.org.br Imagens Joao Comes http://joaocosme.wordpress.com Fernando Ike de Oliveira Pgbouncer, plproxy, skytools

×