![Page 1: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/1.jpg)
DatomicLidando com dados de maneira versionada
![Page 4: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/4.jpg)
Datomic
Arquitetura
ACID
Funções
![Page 5: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/5.jpg)
![Page 6: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/6.jpg)
Dados em uma estrutura financeira
![Page 7: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/7.jpg)
Datomic
![Page 8: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/8.jpg)
Banco Orientado a Fatos
![Page 9: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/9.jpg)
ID Nome Telefone Celular Telefone Fixo
1 John Doe 11 5555 5555 11 5556 5556
2 Mark Doe 11 5555 5556 NULL
3 Jane Doe 11 5555 6666 NULL
![Page 10: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/10.jpg)
Modelo Entidade-Atributo-Valor (EAV)
![Page 11: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/11.jpg)
ID Atributo Valor
1 Nome John Doe
1 Telefone Celular 11 5555 5555
1 Telefone Fixo 11 5556 5556
2 Nome Mark Doe
2 Telefone Celular 11 5555 5556
3 Nome Jane Doe
3 Telefone Celular 11 5555 6666
![Page 12: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/12.jpg)
Modelo EAVT - Datomic
![Page 13: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/13.jpg)
ID Atributo Valor Transação
1 Nome John Doe 12
1 Telefone Celular 11 5555 5555 12
1 Telefone Fixo 11 5556 5556 13
2 Nome Mary Poppins 25
2 Telefone Celular 11 5555 5556 67
2 Recomendado por
1 128
3 Nome Jane Doe 222
3 Telefone Celular 11 5555 6666 223
![Page 14: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/14.jpg)
Fatos podem deixar de ser fatos
![Page 15: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/15.jpg)
ID Atributo Valor Transação
1 Telefone Fixo 11 5555 5555 12
1 Telefone Fixo 11 5555 5555 55
![Page 16: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/16.jpg)
É possível sobrescrever um fato
![Page 17: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/17.jpg)
ID Atributo Valor Transação
1 Nome Jane Doe 25
1 Nome Jane Doe 98
1 Nome Jane Mary Doe 98
![Page 18: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/18.jpg)
Mas isso é uma sobrescrita
![Page 19: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/19.jpg)
Transações do banco de dados são entidades
![Page 20: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/20.jpg)
ID Atributo Valor Transação
1 Nome John Doe 12
1 Telefone Celular 11 5555 5555 12
1 Telefone Fixo 11 5556 5556 13
2 Nome Mary Poppins 25
2 Telefone Celular 11 5555 5556 67
3 Nome Jane Doe 72
3 Telefone Celular 11 5555 6666 99
![Page 21: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/21.jpg)
ID Atributo Valor
12 Hora 2012-09-12T00:00:00Z
13 Hora 2012-09-12T00:00:05Z
25 Hora 2012-09-22T00:00:00Z
![Page 22: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/22.jpg)
Qualquer informação relevante pode ser adicionada na transação
![Page 23: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/23.jpg)
ID Atributo Valor
12 Hora 2012-09-12T00:00:00Z
12 Usuário Joaquim José
13 Hora 2012-09-12T00:00:05Z
13 Usuário Maria Augusta
![Page 24: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/24.jpg)
Arquivos em um controle de versão
Arquivos em uma pasta
vs
![Page 25: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/25.jpg)
Queries
![Page 26: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/26.jpg)
Programação Lógica
![Page 27: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/27.jpg)
[[?entidade :atributo1 ?valor1]]
![Page 28: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/28.jpg)
{:find [?celular] :in [?nome] :where [[?pessoa :pessoa/nome ?nome] [?pessoa :pessoa/telefone-celular ?celular]]}
![Page 29: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/29.jpg)
{:find [?nome] :where [[?pessoa :pessoa/nome ?nome] [?pessoa :pessoa/idade ?idade] [(> ?idade 35)]]}
![Page 30: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/30.jpg)
Schema
![Page 31: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/31.jpg)
Todo atributo tem um tipo
![Page 32: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/32.jpg)
Integer String
Long Boolean
Double UUID
Big Int Ref
Big Dec Instant
Float
![Page 33: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/33.jpg)
Sempre não nulo
Não há obrigatoriedade de campo
![Page 34: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/34.jpg)
Viajando no tempo
![Page 35: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/35.jpg)
Default
![Page 36: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/36.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 37: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/37.jpg)
![Page 38: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/38.jpg)
As Of
![Page 39: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/39.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 40: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/40.jpg)
Qual era o telefone da cliente cujo CPF é “11111111111” no instante 2015-05-08T01:12:00Z ?
![Page 41: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/41.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 42: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/42.jpg)
Qual o nome do cliente cujo CPF é “11111111111” no instante 2015-04-01T01:12:00Z ?
![Page 43: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/43.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 44: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/44.jpg)
Since
![Page 45: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/45.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 46: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/46.jpg)
Quais foram os clientes que mudaram de nome após dia 01/04 ?
![Page 47: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/47.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 48: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/48.jpg)
History
![Page 49: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/49.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 50: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/50.jpg)
Qual foram todos os nomes utilizados pelo cliente cujo CPF é 11111111111 ?
![Page 51: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/51.jpg)
ID Atributo Valor Hora da Transação
1 Nome Jane Doe 25/03/2015 10:00:12Z
1 CPF 11111111111 25/03/2015 10:00:12Z
1 Telefone 11 5555 5555 25/03/2015 10:00:12Z
1 Nome Jane Doe 12/04/2015 15:02:27Z
1 Nome Jane Mary Doe 12/04/2015 15:02:27Z
![Page 52: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/52.jpg)
Qual era o nome do cliente cujo nome hoje é Jane Mary Doe no dia 01/04/2015 ?
![Page 53: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/53.jpg)
Múltiplos bancos
![Page 54: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/54.jpg)
(d/query {:find [?as-of-nome] :in [$current-db $as-of-db] :where [[$current-db ?pessoa :pessoa/nome "Jane Mary Doe"] [$old-db ?pessoa :pessoa/nome ?as-of-nome]]} (d/db connection) (d/as-of #inst "2015-04-01T00:00:00Z"))
![Page 55: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/55.jpg)
Banco orientado a fatos
![Page 56: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/56.jpg)
Fatos não são “apagados” ou alterados: escrevemos novos valores como novas “versões" de fatos antigos
![Page 57: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/57.jpg)
Pode-se buscar no banco com uma data específica, com fatos inseridos a partir de uma certa data, ou em todo o histórico
![Page 58: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/58.jpg)
Pode-se utilizar mais de um banco em uma query;
![Page 59: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/59.jpg)
Arquitetura
Imagem retirada de http://docs.datomic.com/architecture.html
![Page 60: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/60.jpg)
Serviço de "storage"
![Page 61: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/61.jpg)
Peers
![Page 62: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/62.jpg)
Processo que manipula o banco usando a biblioteca “Datomic Peer"
![Page 63: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/63.jpg)
API para Clojure e Java
![Page 64: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/64.jpg)
Cada Peer possui um cache com o serviço de Storage
![Page 65: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/65.jpg)
Qualquer processo pode ser um Peer • Web Server • Aplicação GUI • Aplicação de linha de comando
![Page 66: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/66.jpg)
Mas eu não uso uma linguagem JVM-Hosted, e agora?
![Page 67: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/67.jpg)
REST API
Um PEER pode ser iniciado como um serviço HTTP standalone.
![Page 68: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/68.jpg)
Transactor
![Page 69: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/69.jpg)
Responsável por toda escrita no banco de dados
![Page 70: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/70.jpg)
Notifica todos os PEERS sobre novos fatos.
![Page 71: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/71.jpg)
E quando o Datomic não é uma boa escolha ?
![Page 72: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/72.jpg)
ACID
![Page 73: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/73.jpg)
Atômico
![Page 74: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/74.jpg)
Transação
![Page 75: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/75.jpg)
Ou faz tudo, ou aborta
![Page 76: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/76.jpg)
Consistente
![Page 77: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/77.jpg)
Validação de tipos e NULL
![Page 78: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/78.jpg)
Transações só são vistas por completo
![Page 79: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/79.jpg)
Isolamento
![Page 80: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/80.jpg)
Uma escrita por vez
![Page 81: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/81.jpg)
Durável
![Page 82: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/82.jpg)
Só dá o OK depois de escrever no storage
![Page 83: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/83.jpg)
ACID
![Page 84: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/84.jpg)
Funções com regras de negócio
![Page 85: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/85.jpg)
Funções a nível de transação.
![Page 86: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/86.jpg)
Escopo limitado / Banco filtrado
![Page 87: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/87.jpg)
Excision - Apagar dados de maneira definitiva
![Page 88: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/88.jpg)
Conclusão
![Page 89: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/89.jpg)
Dados são importantes
![Page 90: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/90.jpg)
Auditoria de informação
![Page 91: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/91.jpg)
Bancos históricos
![Page 92: Datomic - Lidando com dados de maneira versionada](https://reader030.vdocuments.pub/reader030/viewer/2022033013/55d19647bb61eb8a7d8b4695/html5/thumbnails/92.jpg)
Facilidade de deploy