Voltdb @ NoSQL[br]

974 visualizações

Publicada em

Apresentação mais recente sobre VoltDB no NoSQL[br], 22/10/2011.

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Voltdb @ NoSQL[br]

  1. 1. @ NoSQL[br]Edward Ribeiro – edward.ribeiro@gmail.comHttp://www.twitter.com/edward_ribeiroHttp://www.github.com/eribeiro
  2. 2. VoltDB não é um bancode propósito geral
  3. 3. O que é VoltDB?● Open source GNU GPL SQL-92 (subset)● Relacional ACID● In-memory Dados e índices residem em memória● Distribuído Cluster Partição horizontal de dados (sharding)● OLTP Suporte ao negócio
  4. 4. OLTP● Operações pontuais e conhecidas a priori● Consultas recuperam somente um sub- conjunto pequeno de dados● Dados indexados● Grande volume de atualizações e inserções● Dados cabem em RAM
  5. 5. RessalvasO VoltDB não vai resolvertodos os teus problemas degerenciamento de dados.O VoltDB não é um bancomonolítico!
  6. 6. Tópicos Importantes da ArquiteturaExecução mono-thread em cada partição Remover a complexidade de estruturas de dados concorrentes e eliminar lockings100% em memória Aumentar throughputStored Procedures como mecanismo de Reduzir roundtrip de redeinteração entre aplicação cliente e banco Eliminar user stalls Permitir otimizações na execução do SQLArquitetura Distribuída Particionar os dados, aumentando o throughput, escalabilidade e tolerância a falhas
  7. 7. Tabelas: Particionadas ID Titulo Ano 392 Matrix 1999 393 Donnie Darko 2002 408 Blade Runner 1985 412 Terminator 1985ID Titulo Ano ID Titulo Ano 392 Matrix 1999 ID Titulo Ano 393 Donnie 2002 412 Terminator 1985 408 Blade 1985 Darko Runner
  8. 8. Tabelas: Replicadas UF Nome AC Acre DF Distrito Federal SP São Paulo RJ Rio de Janeiro ES Espírito SantoUF NomeAC Acre UF NomeDF Distrito Federal AC AcreSP São Paulo DF Distrito FederalRJ Rio de Janeiro SP São PauloES Espírito Santo RJ Rio de Janeiro ES Espírito Santo
  9. 9. Partição (site) Stored Procedure Execution Engine Dados Índices● Execution Engine é single-threaded● Cada partição equivale a um núcleo de CPU
  10. 10. Stored Procedures● Dois tipos: – Partição única (single partitioning) ● update ano from movie where id = 1289; – Multi-partição (multi-partitioning) ● select count(*) from movie;● Stored Procedure = Transação
  11. 11. Durabilidade● O “D” em ACID – K-Safety – Snapshot – Command-Logging
  12. 12. K-Safety● Replicação de dados● k-1: cada partição é replicada em duas máquinas● k-2: cada partição é replicada em três máquinas● k-3: cada partição é replicada em quatro máquinas.● ....
  13. 13. Export x Snapshot● Snapshot – Backup – Durabilidade – Pode ser executado de forma discreta ou contínua (e.g., a cada 250 ms)● Export – Interface para outros sistemas (SQL ou NoSQL)
  14. 14. Command Logging
  15. 15. Command Logging
  16. 16. Versão 2.0● Command Logging● GUI Admin interface● Suporte JDBC/ODBC● VoltOne
  17. 17. Melhores Práticas● Maximize o número de transações de partição única● Escolha com cuidado a coluna de partição das tabelas● As stored procedures não devem ser muito longas nem acessar recursos externos (web, email, etc).● Distribua as conexões dos clientes entre os nós do cluster● http://community.voltdb.com
  18. 18. Casos de Uso (potenciais)● Jogos on-line● Monitoramento do mercado financeiro● Reserva de passagens aéreas on-line● Propaganda on-line● Tracking de pacotes● Registro de chamadas telefônicas● Real-time Analytics● Fonte:http://highscalability.com/blog/2010/12/6/what-the-heck-are-you- actually-using-nosql-for.html
  19. 19. Contato● http://www.twitter.com/edward_ribeiro● http://www.github.com/eribeiro● edward [dot] ribeiro [at] gmail [dot] com
  20. 20. Obrigado!Perguntas?

×