4. "The end of an architectural era: (it’s time
for a complete rewrite),"
M. Stonebraker, S. Madden, D. J. Abadi, S. Harizopoulos,
N. Hachem, and P. Helland, in VLDB ’07: Proceedings of
the 33rd international conference on Very large data
bases, 2007, pp. 1150-1160.
6. OLTP
● Transações envolvem pequenas quantidades
de dados
● Consultas simples e pontuais (where user_id = ?)
● Acesso a dados indexados
● Operações conhecidas a priori (sem ad hoc)
● Consultas e atualizações frequentes
● Dados geralmente cabem em RAM
● Se os dados históricos forem arquivados
periodicamente
7. "OLTP through the looking glass, and what we
found there,"
S. Harizopoulos, D. J. Abadi, S. Madden, and M.
Stonebraker, in SIGMOD ’08: Proceedings of the
2008 ACM SIGMOD international conference on
Management of data, New York, NY, USA, 2008,
pp. 981-992.
9. "H-store: a high-performance, distributed main
memory transaction processing system,"
R. Kallman, H. Kimura, J. Natkins, A. Pavlo, A. Rasin, S.
Zdonik, E. P. C. Jones, S. Madden, M. Stonebraker, Y.
Zhang, J. Hugg, and D. J. Abadi, Proc. VLDB Endow.,
vol. 1, iss. 2, pp. 1496-1499, 2008.
10. Características do VoltDB
● Distribuído (sharding)
● 100% in-memory
● ACID e SQL (sub-set)
● Interação entre aplicação e banco somente
através de stored procedures
11. Características do VoltDB
● Implementado em C++ (execution engine) e
Java (JNI)
● Clientes em Java, C++, Ruby*, Erlang*, e http-
json
● não tem JDBC/ODBC !!!
● Open Source (GPL)
● Linux 64 bits
12. Distribuído
● Sharding (particionamento horizontal)
● Cada tabela, uma coluna é usada para o
particionamento (tabelas particionadas)
● Transações ordenadas globalmente
● Peer-to-Peer (P2P)
● Cluster LAN
13. 100% Memória
● Dados + Stored Procedures + Index
● 20 * 64 GB = 1.2 TB
● MAS
● K-Safety para durabilidade (D em ACID)
● Snapshots em disco
14. Stored Procedures
● A interação entre aplicações clientes e o BD se
dá somente através de stored procedures
● SQL ANSI (subset)
● Java
● Vantagens:
● Sem bloqueios de usuário
● Reduzir round-trip de rede
● Transação = stored procedure
– sucesso → commit, exceção → abort
15. System Stored Procedures
● Chamada síncrona ou assíncrona
● Manual de boas práticas para stored
procedures
● Não “pesar” a SP
● Maximizar o uso de single partition SP
● System Stored Procedures: @AdHoc, @Shutdown,
@SnapshotRestore, @SnapshotSave, @Statistics,
@SystemInformation, @UpdateApplicationCatalog,
@UpdateLogging, etc.
16. Partições
● Uma participação contém:
● Execution Engine (single-threaded)
● Índice
● Dados
● Filas de execução
● Cada partição corresponde a um núcleo de CPU
17. Partições
Work
Queue
execution engine
Table Data
Index Data
18.
19. Transações
● Single-partition
update pontuacao = 1000 from jogadores
where jogador_id = ?;
● Multi-partition
select max(pontuacao) from jogadores;
21. K-Safety
● Disponibilidade, Tolerância a falhas, e
Durabilidade
● Cada tupla é replicada em um número “k” de
máquinas.
● k-1 → uma cópia além do original
● k-2 → duas cópias além do original
● ...
22.
23.
24. Snapshots
● Spooling para disco
● Pode ser operação única, a intervalos
regulares ou continuamente
● Dois propósitos:
● Back-up contra desastres
● Exportar dados “vivos para outros sistemas
– Configura-se as tabelas a serem exportadas
26. Export tables
● Permite exportar tabelas para arquivos.
● Exporta dados “vivos”
● Quaisquer modificações (insert, update, delete)
● Somente inserções
● Tabelas especificadas pelo usuário
● Flat files, jdbc/odbc em breve
27. Performance
● A princípio, 45x superior a um BD convencial
● Escalabilidade linear
● 300.000 tx/s em ~ 15 nós (commodity PCs)
● 1.000.000 tx/s (hardware high end SGI)
● http://www.mysqlperformanceblog.com/2011/02/28/is-
voltdb-really-as-scalable-as-they-claim/
29. Command Logging
● Versão 1.5.5 e posteriores
● Spool de chamadas a stored procedures para
disco
● Não é WAL (sorry trolls...), mas o princípio é o
mesmo
● Síncrono ou assíncrono.
● Buffering e Replay
30.
31.
32. 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
33. Perspectivas Futuras
● Particionamento de Dados Automático
● Modelagem Preditiva de Aplicações OLTP
● Execução Especulativa
● Suporte a WAN
● On-the-fly maintenance