BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

VoltDB: Um novo horizonte para os bancos de dados SQL

por Pedro Mariano em 31 Mai 2010 |

Dia 25 de Maio foi anunciado o Release do VoltDB. O VoltDB é um banco de dados relacional que vêm atingir um ramo onde os RDBMS estavam perdendo mercado para os NoSQL, que é o mercado de escalabilidade. Segunda a empresa VoltDB (fundada por Mike Stonebraker, o criador do PostgreSQL) responsável pelo projeto, o novo RDBMS garante escalabilidade e confiabilidade, obtendo, em alguns casos, performance superior aos banco de dados NoSQL baseados em chave-valor (key-value).

O VoltDB ficou disponível em versão pré -lançamento  por alguns meses e, segundo a empresa, os resultados foram extremamentes satisfatórios e as expectativas foram superadas. Michael Rauchman CTO da empresa Getco testou a versão de pré-lançamento e disse:

Nós utilizamos a versão pré-lançamento do VoltDB por diversos meses e sua performance e escalabilidade excederam qualquer DBMS que nós já havíamos utilizado.

O que o VoltDB vêm oferecer merece grande atenção: ele é diferente da maioria dos RDBMS atuais, que se baseiam em designs antigos de cerca de 30 anos atrás que  apresentam alguns problemas de design quando o assunto é de performance e escalabilidade. Isso acontece pois esses designs  foram criados bem antes dos bancos de dados para web (web-scale), quando escalabilidade e performance eram tratadas de uma maneira diferente.

De acordo com o anúncio, os bancos de dados tradicionais gastam quase 90% do seu tempo com tarefas não tão "necessárias", como logging, lagging e gerenciamento de buffer.  O VoltDB trás uma série de diferenciais que fazem com que essas tarefas não comprometam a performance e escalabilidade, conseguindo ser 50x mais rápido do que um RDBMS tradicional. Alguns desses diferenciais são:

  • Processamento in-memory eliminando overheads e maximizando o throughput.
  • O VoltDB distribui os dados - e uma engine SQL para processá-los - para cada core da CPU no seu cluster.
  • Cada thread opera de forma autônoma, elminando a necessidade de locking e latching.
  • Os dados são automáticamente replicados para uma disponibilidade intra-clusters, eliminado o logging.
  • O VoltDB escala quase que linearmente, basta adicionar mais servidores ao cluster.

O VoltDB garante consistência transacional (ACID). A empresa realizou alguns benchmarks que podem ser conferidos no anúncio do RDBMS. Benchmarks esses que comprovam que o VoltDB consegue escalar quase que linearmente além de ser mais rápido do que bancos chave-valor em alguns casos.

O VoltDB está disponível para download no site oficial. Ele possui uma versão open-source sob a licença GPL disponível gratuitamente, e uma versão paga anualmente por um valor um tanto quanto "salgado". O valor inicial para a versão paga é de $15,000 por ano por 4 servidores. Mais informações sobre preços podem ser encontradas aqui.

Sabemos que uma (existem outras) vantagem dos banco de dados NoSQL era a facilidade de se escalar apenas adicionando novas máquinas ao cluster. Você considera que essa "nova era" dos RDBMS podem ser uma ameaça aos banco de dados NoSQL ?  Caso você já tenha utilizado o VoltDB por favor não deixe de comentar nesse post.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Arquitetura do VoltDB by Edward Ribeiro

Eu testei brevemente a versão beta do VoltDB, e gostaria de compartilhar algumas impressões.

Bem, para alcançar níveis de throughtput e escalabilidade superiores a sistemas NoSQL, e ainda assim manter o SQL e o ACID, eles tiveram que tomar decisões de projeto radicais como:

1. Este é um sistema para executar em clusters de máquinas de 64 bits. E mais, o sistema valoriza throughput (vazão), portanto uma transação em particular pode demorar um pouco mais, mas a taxa de transações/segundo será bem alta.

2.O banco é todo armazendo em RAM, portanto se o cluster tiver 20 máquinas com 20 GB de RAM cada teu banco poderá ser, no máximo, 400 GB. Por questões de durabilidade e tolerância a falhas, os fragmentos de tabela são replicados e, portanto, o tamanho útil deve ser menor que isso.

3. Não existe compatibilidade com JDBC/ODBC. Quaisquer frameworks que dependam de jdbc (Hibertate, jdbcTemplate, etc) não poderão ser usados, ao menos por enquanto.

4. A única forma de interagir com o banco, em produção, é através de stored procedures (SPs). Na verdade, o voltdb até permite consultas diretas, mas só para testes e depuração.

5. As stored procedures (SPs) são escritas em Java e executadas sequêncialmente, portanto, deve-se ter cuidado para não criar SPs muito demoradas que podem "engargalar" a execution engine (por sinal, é uma engine por core).

6. Os commits são feitos em RAM, e periodicamente é feito um snapshot em disco. Portanto, se você tiver uma queda de energia pode perder dados "comitados", e para evitar isso deve-se investir em NoBreaks e sistemas de suporte a energia.

7. Atualmente, eles suportam apenas um sub-set do SQL. Os joins, por exemplo, ainda não são suportados, mas devem ser num futuro próximo.

8. Construir uma aplicação usando o VoltDB ainda é um processo chato e um pouco demorado. Faz-se necessário um conjunto de ferramentas e IDEs para gerar/depurar o quanto antes.

9. Você precisa fazer o particionamento das tabelas "no braço", e ter uma idéia muito clara de como particionar as colunas para que o throughput seja mantido alto. Deve-se gastar um esforço considerável para particionar de forma que cada transação seja single-sited, isto é, seja executada do início ao fim em uma única engine do banco. No futuro, devem ser criadas ferramentas que fazem isso automaticamente, mas por enquanto, você precisa particionar bem senão os níveis de throughput não serão os esperados.

Re: Arquitetura do VoltDB by Pedro Henrique Santana Mariano

Muito legal essas suas observaçoes Edward, legal voce compartilhar conosco.

Me deu uma outra visao do VoltDB, ainda tenho que testar ele com calma, mais concerteza pensarei 2 vezes antes de implementar ele.

Re: Arquitetura do VoltDB by Edward Ribeiro

Não sei se meus comentários pareceram pessimistas, mas gostaria de deixar claro que achei o VoltDB muito interessante e gostaria de usá-lo no futuro, se possível. Em suma, eu gostei do banco! :)

O fato de ser um banco em RAM também não o torna menos seguro, pois ele tem um esquema de replicação de tabelas e dados (k-safety) intra-cluster configurável que provê tanto a durabilidade das transações quanto a tolerância a falhas.

O lance é que para se fazer um teste honesto com o VoltDB você deve ter um cluster de, no mínimo, duas máquinas multi-core com pelo menos 2 GB de RAM, e mais uma terceira máquina como cliente. E testar várias formas de particionar as colunas para ver o throughput (cada tabela tem somente uma coluna que é escolhida para ser a coluna de partição horizontal).

SGBDs como Oracle e MySQL são denominados como "one size fits all", isto é, são usados tanto para OLTP quanto OLAP. O VoltDB se estabelece como um banco OLTP somente. Se você precisar rodar aplicações de Data Warehouse então o VoltDB vêm com mecanismos de exportação de dados para outros bancos como Vertica (também do Stonebraker), por exemplo, que são especializados em DW.

Um cenário possível:

1. O site "X" vende CDs/DVDs e livros na web. Toda a consulta/cadastro de clientes e produtos, mais a compra de produtos é feita no cluster VoltDB;

2. Diariamente, um script exporta todos os dados e transações do dia anterior do VoltDB para um banco MySQL ou Vertica.

3. Se os gerentes querem relatórios ad-hoc ou fazer OLAP eles vão ao banco Vertica (ou MySQL). O banco VoltDB é o que atende os usuários do site.

4. Periodicamente, dados "stalled" são retirados do VoltDB, pois não são mais necessários para atender as necessidades diárias.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

3 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT