Se você estiver interessado nos benefícios que pode obter da imutabilidade em um banco de dados, ou pelo menos em um banco de dados que ofereça a ilusão de imutabilidade, verifique Datomic.
Datomic é um banco de dados inventado por Rich Hickey em aliança com a Think Relevance, existem muitos vídeos nos quais eles explicam a arquitetura, os objetivos e o modelo de dados. Pesquise infoq, um em particular é intitulado Datomic, Database como um valor . Em confreaks, você pode encontrar uma palestra que Rich Hickey fez na conferência euroclojure em 2012. confreaks.com/videos/2077-euroclojure2012-day-2-keynote-the-datomic-architecture-and-data-model
Há uma conversa no vimeo.com/53162418 que é mais orientada para o desenvolvimento.
Aqui está outra de stuart halloway em.pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html
- Datomic é um banco de dados de fatos no tempo, chamado datums, em cinco tuplas [E, A, V, T, O]
- E ID da entidade
- Um nome de atributo na entidade (pode ter espaços para nome)
- V Valor do atributo
- T ID da transação, com isso você tem noção de tempo.
- O Uma operação de afirmação (valor presente ou atual), rejeição (valor passado);
- Utiliza seu próprio formato de dados, chamado EDN (Extensible Data Notation)
- As transações são ACID
- Utiliza o registro de dados como linguagem de consulta, declarativa como consultas SQL + recursivas. As consultas são representadas com estruturas de dados e, estendidas com a linguagem jvm, você não precisa usar o clojure.
- O banco de dados é dissociado em 3 serviços separados (processos, máquinas):
- Transação
- Armazenamento
- Mecanismo de consulta.
- Você pode dimensionar separadamente cada serviço.
- Não é de código aberto, mas existe a versão gratuita (como na cerveja) do Datomic.
- Você pode indicar um esquema flexível.
- conjunto de atributos está aberto
- adicione novos atributos a qualquer momento
- sem rigidez na definição ou consulta
Agora, como as informações são armazenadas como fatos no tempo:
- tudo o que você faz é adicionar fatos ao banco de dados e nunca excluí-los (exceto quando exigido por lei)
- você pode armazenar tudo em cache para sempre. O Query Engine vive no servidor de aplicativos como um banco de dados na memória (para idiomas jvm, os idiomas não-jvm têm acesso por meio de uma API REST.)
- você pode consultar no passado.
O banco de dados é um valor e um parâmetro para o mecanismo de consulta, o QE gerencia a conexão e o cache. Como você pode ver o banco de dados como um valor e a estrutura de dados imutável na memória, é possível mesclá-lo com outra estrutura de dados feita com valores "no futuro" e transmiti-la ao QE e à consulta com valores futuros, sem alterar o banco de dados real .
Existe um projeto de código aberto da Rich Hickey, chamado codeq , que pode ser encontrado no github Datomic / codeq, que estende o modelo git e armazena referências a objetos git em um banco de dados livre de datomic e faz consultas ao seu código. pode ver um exemplo de como usar datomic.
Você pode pensar em datômico como um ACID NoSQL, com dados que você pode modelar tabelas ou documentos ou lojas Kv ou gráficos.