O documento apresenta o banco de dados NoSQL VoltDB, descrevendo suas principais características como: ser open source, SQL-like, ter dados armazenados completamente em memória, suporte a transações ACID e arquitetura distribuída. O VoltDB é projetado para cargas de trabalho OLTP com operações pontuais e alto volume de dados, não sendo apropriado para todos os casos de uso de banco de dados.
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. 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. Ressalvas
O VoltDB não vai resolver
todos os teus problemas de
gerenciamento de dados.
O VoltDB não é um banco
monolítico!
6.
7. Tópicos Importantes da Arquitetura
Execuçã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 Reduzir roundtrip de rede
interação entre aplicação cliente e banco Eliminar user stalls
Permitir otimizações na execução do SQL
Arquitetura Distribuída Particionar os dados, aumentando o
throughput, escalabilidade e tolerância a
falhas
8. Tabelas: Particionadas
ID Titulo Ano
392 Matrix 1999
393 Donnie Darko 2002
408 Blade Runner 1985
412 Terminator 1985
ID Titulo Ano
ID Titulo Ano
392 Matrix 1999 ID Titulo Ano
393 Donnie 2002
412 Terminator 1985 408 Blade 1985 Darko
Runner
9. 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 UF Nome
DF Distrito Federal AC Acre
SP São Paulo DF Distrito Federal
RJ Rio de Janeiro SP São Paulo
ES Espírito Santo RJ Rio de Janeiro
ES Espírito Santo
10. Partição (site)
Stored Procedure
Execution
Engine
Dados
Índices
● Execution Engine é single-threaded
● Cada partição equivale a um núcleo de CPU
11. 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
12. Durabilidade
● O “D” em ACID
– K-Safety
– Snapshot
– Command-Logging
13. 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.
● ....
14. 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)
18. 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
19. 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
20. Contato
● http://www.twitter.com/edward_ribeiro
● http://www.github.com/eribeiro
● edward [dot] ribeiro [at] gmail [dot] com