@ NoSQL[br]
Edward Ribeiro – [email protected]://www.twitter.com/edward_ribeiroHttp://www.github.com/eribeiro
VoltDB não é um bancode propósito geral
O que é VoltDB?
● Open source
● Relacional
● In-memory
● Distribuído
● OLTP
SQL-92 (subset)
ACID
Dados e índices residem em memória
GNU GPL
Cluster
Partição horizontal de dados (sharding)
Suporte ao negócio
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
Ressalvas
O VoltDB não vai resolver todos os teus problemas de gerenciamento de dados.
O VoltDB não é um banco monolítico!
Tópicos Importantes da ArquiteturaExecução mono-thread em cada partição Remover a complexidade de estruturas
de dados concorrentes e eliminar lockings
100% em memória Aumentar throughput
Stored Procedures como mecanismo de interação entre aplicação cliente e banco
Reduzir roundtrip de redeEliminar user stallsPermitir otimizações na execução do SQL
Arquitetura Distribuída Particionar os dados, aumentando o throughput, escalabilidade e tolerância a falhas
Tabelas: ParticionadasID Titulo Ano
392 Matrix 1999
393 Donnie Darko 2002
408 Blade Runner 1985
412 Terminator 1985
ID Titulo Ano
392 Matrix 1999
412 Terminator 1985
ID Titulo Ano
408 Blade Runner
1985
ID Titulo Ano
393 Donnie Darko
2002
UF Nome
AC Acre
DF Distrito Federal
SP São Paulo
RJ Rio de Janeiro
ES Espírito Santo
Tabelas: Replicadas
UF Nome
AC Acre
DF Distrito Federal
SP São Paulo
RJ Rio de Janeiro
ES Espírito Santo
UF Nome
AC Acre
DF Distrito Federal
SP São Paulo
RJ Rio de Janeiro
ES Espírito Santo
Partição (site)
● Execution Engine é single-threaded
● Cada partição equivale a um núcleo de CPU
Dados Índices
ExecutionEngine
Stored Procedure
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
Durabilidade
● O “D” em ACID– K-Safety
– Snapshot
– Command-Logging
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.● ....
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)
Command Logging
Command Logging
Versão 2.0
● Command Logging● GUI Admin interface● Suporte JDBC/ODBC● VoltOne
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
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
Contato
● http://www.twitter.com/edward_ribeiro● http://www.github.com/eribeiro● edward [dot] ribeiro [at] gmail [dot] com
Obrigado! Perguntas?