Voltdb @ NoSQL[br]

Preview:

DESCRIPTION

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

Citation preview

@ NoSQL[br]

Edward Ribeiro – edward.ribeiro@gmail.comHttp://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?

Recommended