BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

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

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

Favoritos

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

Conteúdo educacional

BT