SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Edward Ribeiro – edward.ribeiro@gmail.com
Http://www.twitter.com/edward_ribeiro
Http://www.github.com/eribeiro
Big Data




Não vamos
deste BigData...
… mas sim deste
BigData.
"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.
OLTP   OLAP
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
"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.
Divisão de Trabalho
"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.
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
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
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
100% Memória
●   Dados + Stored Procedures + Index
●   20 * 64 GB = 1.2 TB

●   MAS
    ●   K-Safety para durabilidade (D em ACID)
    ●   Snapshots em disco
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
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.
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
Partições

        Work
        Queue



 execution engine


   Table Data
   Index Data
Transações
●   Single-partition
update pontuacao = 1000 from jogadores
where jogador_id = ?;


●   Multi-partition
select max(pontuacao) from jogadores;
Single Partition x Multi-Partition
    select count(*) from orders where customer_id = 5
                     single-partition



    select count(*) from orders where product_id = 3
                     multi-partition



    insert into orders (customer_id, order_id, product_id) values (3,303,2)
                     single-partition



    update products set product_name = ‘spork’ where product_id = 3
                  multi-partition




    Partition 1                   Partition 2                     Partition 3

1   101 2                 2       201 1                   3       201 1               table orders :   customer_id (partition key)
1   101 3                 5       501 3                   6       601 1               (partitioned)    order_id
                                                                                                       product_id
4   401 2                 5       502 2                   6       601 2


     1       knife                  1       knife                   1         knife   table products : product_id
     2       spoon                  2       spoon                   2         spoon   (replicated)     product_name
     3       fork                   3       fork                    3         fork
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
    ●   ...
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
Snapshots
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
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/
Versão Comercial


●   Command Logging

●   VoltDB Enterprise Manager
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
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
Perspectivas Futuras
●   Particionamento de Dados Automático

●   Modelagem Preditiva de Aplicações OLTP

●   Execução Especulativa

●   Suporte a WAN

●   On-the-fly maintenance
● Acesse!
● Estude!


● Baixe! (GPL)


● Experimente!


● Contribua!
VoltDB talk at QCON-Brasil

Contenu connexe

En vedette

En vedette (19)

David lobster fotos
David lobster fotosDavid lobster fotos
David lobster fotos
 
Logo
LogoLogo
Logo
 
Scan artikel eur en ib lynx - Majesteit107 jun-jul 2016
Scan artikel eur en ib lynx - Majesteit107 jun-jul 2016Scan artikel eur en ib lynx - Majesteit107 jun-jul 2016
Scan artikel eur en ib lynx - Majesteit107 jun-jul 2016
 
Astronomia
AstronomiaAstronomia
Astronomia
 
Fatos importantes da história de curitibanos parte 2
Fatos importantes da história de curitibanos   parte 2Fatos importantes da história de curitibanos   parte 2
Fatos importantes da história de curitibanos parte 2
 
A verdade sobre o choque de gestão mg
A verdade sobre o choque de gestão mgA verdade sobre o choque de gestão mg
A verdade sobre o choque de gestão mg
 
Certificate of Recognition 2015
Certificate of Recognition 2015Certificate of Recognition 2015
Certificate of Recognition 2015
 
Mãe
MãeMãe
Mãe
 
Pasien safety
Pasien safetyPasien safety
Pasien safety
 
Dictionaire Anglais Bambara la lettre Q
Dictionaire Anglais Bambara la lettre QDictionaire Anglais Bambara la lettre Q
Dictionaire Anglais Bambara la lettre Q
 
JQuery - introdução ao
JQuery - introdução ao JQuery - introdução ao
JQuery - introdução ao
 
Free Online Jobs In India
Free Online Jobs In IndiaFree Online Jobs In India
Free Online Jobs In India
 
Lost: Transformando Adversidades em Oportunidades (S01E01)
Lost: Transformando Adversidades em Oportunidades (S01E01)Lost: Transformando Adversidades em Oportunidades (S01E01)
Lost: Transformando Adversidades em Oportunidades (S01E01)
 
Handbook de ti para concursos
Handbook de ti para concursosHandbook de ti para concursos
Handbook de ti para concursos
 
4.Ph.D.
4.Ph.D.4.Ph.D.
4.Ph.D.
 
Feliz natal e ano novo de 2012
Feliz natal e ano novo de 2012Feliz natal e ano novo de 2012
Feliz natal e ano novo de 2012
 
Moodboard
MoodboardMoodboard
Moodboard
 
Adam Hrubý: Evoluce designéra
Adam Hrubý: Evoluce designéraAdam Hrubý: Evoluce designéra
Adam Hrubý: Evoluce designéra
 
Buscai ao senhor enquanto se pode achar.
Buscai ao senhor enquanto se pode achar.Buscai ao senhor enquanto se pode achar.
Buscai ao senhor enquanto se pode achar.
 

Similaire à VoltDB talk at QCON-Brasil

TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDatatdc-globalcode
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisJefferson Martins de Andrade
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLWagner Bianchi
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!Intel Software Brasil
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!Luciano Palma
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesJoao Galdino Mello de Souza
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Intel Software Brasil
 
SGBD - ORACLE - JAVA
SGBD - ORACLE - JAVASGBD - ORACLE - JAVA
SGBD - ORACLE - JAVAssuser4cf889
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core DuoSamuel Bié
 
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)Marcelo Barros de Almeida
 
Artigo mega team pdf
Artigo mega team pdfArtigo mega team pdf
Artigo mega team pdfpfilho2011
 
Arquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PICArquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PICAlexandre Brandão Lustosa
 
Webinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaWebinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaEmbarcados
 
Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLRaul Oliveira
 

Similaire à VoltDB talk at QCON-Brasil (20)

Voltdb @ NoSQL[br]
Voltdb @ NoSQL[br]Voltdb @ NoSQL[br]
Voltdb @ NoSQL[br]
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | Florianópolis
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!
 
SGBD - ORACLE - JAVA
SGBD - ORACLE - JAVASGBD - ORACLE - JAVA
SGBD - ORACLE - JAVA
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core Duo
 
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
 
Treinamento ORM .Net
Treinamento ORM .NetTreinamento ORM .Net
Treinamento ORM .Net
 
Artigo mega team pdf
Artigo mega team pdfArtigo mega team pdf
Artigo mega team pdf
 
Arquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PICArquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PIC
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
Webinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaWebinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao Grafana
 
Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQL
 

Dernier

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Dernier (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

VoltDB talk at QCON-Brasil

  • 1. Edward Ribeiro – edward.ribeiro@gmail.com Http://www.twitter.com/edward_ribeiro Http://www.github.com/eribeiro
  • 3. … mas sim deste BigData.
  • 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.
  • 5. OLTP OLAP
  • 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;
  • 20. Single Partition x Multi-Partition select count(*) from orders where customer_id = 5 single-partition select count(*) from orders where product_id = 3 multi-partition insert into orders (customer_id, order_id, product_id) values (3,303,2) single-partition update products set product_name = ‘spork’ where product_id = 3 multi-partition Partition 1 Partition 2 Partition 3 1 101 2 2 201 1 3 201 1 table orders : customer_id (partition key) 1 101 3 5 501 3 6 601 1 (partitioned) order_id product_id 4 401 2 5 502 2 6 601 2 1 knife 1 knife 1 knife table products : product_id 2 spoon 2 spoon 2 spoon (replicated) product_name 3 fork 3 fork 3 fork
  • 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/
  • 28. Versão Comercial ● Command Logging ● VoltDB Enterprise Manager
  • 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
  • 34. ● Acesse! ● Estude! ● Baixe! (GPL) ● Experimente! ● Contribua!