BT

O Datomic, de Rich Hickey, adota Computação em Nuvem, Aplicações inteligentes e Consistência

por Michael Hunger , traduzido por Paulo Vitor Rendeiro em 07 Mai 2012 |

Desenvolvido desde 2010, por Rich Hickey e a equipe Relevance, o Datomic oferece algumas abordagens novas para arquitetura de bancos de dados. Impulsionado pelas tendências atuais, como computação em nuvem e armazenamento, o Datomic possui transações consistentes, API de consulta rica e dimensionamento de leitura.

No início de março, a equipe da Relevance, juntamente com Rich Hickey e Stuart Halloway, anunciou uma nova plataforma de banco de dados na qual eles têm trabalhado desde 2010.

O Datomic aproveita evoluções recentes da computação distribuída, especialmente do armazenamento de dados como serviço (SaaS), da disponibilidade de quantidades de servidores de aplicação de acordo com a demanda momentânea e, também, da sua necessidade de escalar mais operações de leitura que de escrita. Outros aspectos importantes do Datomic são:

  • separação dos conceitos de leitura e escrita;
  • garantias transacionais fortes nas escritas;
  • a noção de imutabilidade, expressa por bases de dados estritamente incrementais;
  • snapshots do banco de dados ao longo do tempo com valores consultáveis;
  • incorporação do tempo (transações) na estrutura de dados central do Datom como um fato relacionado a entidades, atributos, valores e transações;
  • Datalog como uma linguagem de consulta estruturada baseada em lógica, permitindo consultas complexas, incluindo joins inferidos.

 

	Exemplo da linguagem Datalog (consulta de custos de transporte superiores ao preço do produto)
	[:find ?cliente ?produto
	 :where [?cliente :enderecoEntrega ?endereco]
	        [?endereco :cep ?cep]
	        [?produto :produto/peso ?peso]
	        [?produto :product/preco ?preco]
            // função invocada dentro do código da aplicação
	        [(Entrega/estimativa ?cep ?peso) ?custoEntrega]
	        [(<= ?preco ?custoEntrega)]]

A arquitetura do Datomic é composta pelos seguintes blocos:

  • um serviço de armazenamento rápido e distribuído (AWS Dynamo DB em SSD);
  • um serviço transacional único, responsável exclusivamente por serializar escritas em uma corrente de dados consistente;
  • uma biblioteca de funcionalidades incluída nas aplicação, que tratam tanto da consulta e carregamento de dados quanto dos índices.

Datomic Architecture

Rich falou sobre o Datomic em uma breve entrevista concedida para a InfoQ. Ele também falou do Datomic em seu Keynote na Clojure/West.

Desde o anúncio do Datomic, que foi acompanhado de uma série de apresentações sobre sua arquitetura, tem havido uma série de discussões interessantes.

Sergio Bossa e Daniel Spiewak questionaram algumas decisões de design do Datomic.

Um dos questionamentos foi sobre a vazão reduzida de operações de escrita e a escolha de um serviço transacional único, o que poderia resultar em um ponto central de falha bem como no principal gargalo.

Outra indagação foi a respeito da decisão de mover quantidades massivas de dados para o código (aplicações executando consultas) ao invés de movimentar o código para os dados, como diversas abordagens (incluindo o map-reduce) realizam atualmente.

Rich Hickey respondeu a estes questionamentos nos blogs de Alexandru Popescu e Michael Fogus. Ele ressaltou que o transacionador pode ser construído como um componente de alta disponibilidade e que há a possibilidade de serem criados multiplos bancos de dados Datomic, paralelos e compartilhados, que podem ser consultados de forma cruzada. Ele também destacou que o ponto principal do Datomic não está na vazão extremamente alta de escritas mas, sim, na escalada de leituras, nas consultas elaboradas e em seu sistema transacional consistente.

A resposta sobre a movimentação dos dados para a aplicação discute o esforço corrente dos servidores de banco de dados em possuírem muitas responsabilidades, como consulta, escrita, distribuição, otimização, log, monitoração e muitas outras. O Datomic tenta separar estas responsabilidades. Aplicações são muito mais fáceis de escalar do que servidores de banco de dados. Elas podem, inclusive, cuidar de consultas diferentes - e necessidades, provenientes de casos de uso, de atender a diferentes características de consulta bem como de requisições de dados (hot dataset).

Outro ponto interessante foi que o Datomic pode ser visto como um índice distribuído globalmente, cuja atualização em disco é feita de forma constante. Além disso, índices delta estão sendo computados constantemente no transacionador, assim como cada aplicação a ser virtualmente fundida com o índice principal. Os segmentos do índice, que é cacheado e imutável, permitem ao mecanismo de consulta recuperar diretamente partes específicas de valores do banco de dados sem a necessidade de transportar partes grandes do banco de dados para o cliente.

As ofertas atuais do Datomic cobrem:

  • uma biblioteca de funcionalidades, que traz em si uma implementação, em memória, tanto do transacionador e quanto do serviço de armazenamento (para desenvolvimento);
  • uma máquina virtual, que contém uma instância do transacionador e um serviço de armazenamento de dados persistentes (para testes e aplicações pequenas);
  • uma oferta comercial pública em AWS com uma faixa de uso grátis (até 1000 horas por mês), utilizando o DynamoDB da Amazon.

Avalie esse artigo

Relevância
Estilo/Redação

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
Comentários da comunidade

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

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.