voltdb @ nosql[br]

21
@ NoSQL[br] Edward Ribeiro – [email protected] Http://www.twitter.com/edward_ribeiro Http://www.github.com/eribeiro

Upload: edward-ribeiro

Post on 12-Jan-2015

694 views

Category:

Documents


7 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Voltdb @ NoSQL[br]

@ NoSQL[br]

Edward Ribeiro – [email protected]://www.twitter.com/edward_ribeiroHttp://www.github.com/eribeiro

Page 2: Voltdb @ NoSQL[br]

VoltDB não é um bancode propósito geral

Page 3: Voltdb @ NoSQL[br]

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

Page 4: Voltdb @ NoSQL[br]

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

Page 5: Voltdb @ NoSQL[br]

Ressalvas

O VoltDB não vai resolver todos os teus problemas de gerenciamento de dados.

O VoltDB não é um banco monolítico!

Page 6: Voltdb @ NoSQL[br]
Page 7: Voltdb @ NoSQL[br]

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

Page 8: Voltdb @ NoSQL[br]

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

Page 9: Voltdb @ NoSQL[br]

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

Page 10: Voltdb @ NoSQL[br]

Partição (site)

● Execution Engine é single-threaded

● Cada partição equivale a um núcleo de CPU

Dados Índices

ExecutionEngine

Stored Procedure

Page 11: Voltdb @ NoSQL[br]

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

Page 12: Voltdb @ NoSQL[br]

Durabilidade

● O “D” em ACID– K-Safety

– Snapshot

– Command-Logging

Page 13: Voltdb @ NoSQL[br]

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.● ....

Page 14: Voltdb @ NoSQL[br]

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)

Page 15: Voltdb @ NoSQL[br]

Command Logging

Page 16: Voltdb @ NoSQL[br]

Command Logging

Page 17: Voltdb @ NoSQL[br]

Versão 2.0

● Command Logging● GUI Admin interface● Suporte JDBC/ODBC● VoltOne

Page 18: Voltdb @ NoSQL[br]

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

Page 19: Voltdb @ NoSQL[br]

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

Page 20: Voltdb @ NoSQL[br]

Contato

● http://www.twitter.com/edward_ribeiro● http://www.github.com/eribeiro● edward [dot] ribeiro [at] gmail [dot] com

Page 21: Voltdb @ NoSQL[br]

Obrigado! Perguntas?