SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Venturing into
Datomic
Kirill Salykin
Former .NET, Ruby developer

Now happy clojurist at AdGoji :)
Adgoji is a media agency. 

We help advertisers find value on mobile.

From our offices in Amsterdam, we connect
advertisers with the right* mobile users
worldwide. To do so, we have built a Clojure
based real-time bidding platform that buys
targeted mobile advertisement from the largest
market places in the world.

• and by “right”, we mean users willing to see
and/or interact with (click, install, purchase)
Kudos to Carlo
For organising meetup every month
What is Datomic?
According to Wikipedia: Datomic is a distributed
database and implementation of Datalog.It
has ACID transactions, joins, and a logical query language,
Datalog.



Designed by Rich Hickey
Architecture
Datomic (on-prem):

- Peer

- Transactor

- Storage
Peer
- Lives in the app

- Does query

- Persistent index + Live index

- Receives updates from transactor
Transactor
- Handles transactions

- Commits results to the Storage

- Single threaded

- Transmit changes to connected peers 

- Live index

- Index in background, place index to the storage
Storage
- Stores the data :)

- Supported storages: DynamoDB, SQL, 

Cassandra
Information model
Datomic uses Triple to describe data - Datom
Entity Attribute Value
1 :likes “pizza”
1 :likes “lasagna”
1 :first-name “Kirill”
Information model 2
Datomic extends triple to include operation 

Add or Retract

Entity Attribute Value Op (Add?)
1 :likes “pizza” True
1 :likes “lasagna” True
1 :first-name “Kirill” True
1 :likes “lasagna” False
Information model 3
Every added/retracted Datum also references 

transaction 

Entity Attribute Value Op (Add?) Transaction
1 :likes “pizza” True 2
1 :likes “lasagna” True 2
1 :first-name “Kirill” True 2
1 :likes “lasagna” False 3
Information model 4
Schema

{:db/ident :person/name
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
valueType:
- keyword
- string
- boolean
- long
- bigint
- float
- double
- bigdec
- ref
- instant
- uuid
- uri
- bytes
cardinality: one or many
Transactions
- Serialised

- No `begin transaction` `commit/rollback` 

- Updates indices in the background

- Sends updates to the connected peers

- String tempids (references)

- Returns db-before, db-after and tempids 

resolution
Transactions 2
- Indexes are B-tree-like structures: sorted, immutable, persistent,
1,000+ branching factor, custom sort order, fast lookup and range
scans, able to be efficiently merged (details unknown). 

- Index trees are shallow, no more than three level deep: root node,
directories and segments as leafs.
Transactions 3
- Constraints via transaction functions

- Runs during transaction

- On exception - transaction rollbacks
Query
- Directly via indices

- Query API + Entity API

- Pull API
Query 2
- Indicies:

- Covering (contains data, not reference)

- Element of index is not datom, but segment

- Segment is from 1,000 to 20,000 datoms (~50 Kb)

- EAVT 

- AEVT

- VAET

- AVET

- Log index

- Keeps fetched segments in the memory
Features
- No query planner (you responsible for optimal query)

- Query result must feet in the memory (no dump to file, 

as sql does)

- Schema alteration can be tricky (even not possible sometimes)

- No compound indices

- Sort done manually

- Pagination done manually (no offset/limit in query defined)

- Cant add `nil` attribute value - retract only

- RetractEntity to retract all attributes of entity

- Stu’s 10 billion datoms (soft limit)

- Huge heap - may influence GC?

- GC is a manual operation (garbage segments may still be used?
 run rarely, e.g. once a week)

- Memcache support out-of-the-box

- Segments easy to cache - immutable

- Excision - not to correct, but because forced (for instance GDPR)

Resources
- Rich Hickey: Deconstructing the Database

https://www.youtube.com/watch?v=Cym4TZwTCNU

- Nitika Prokopov: Unofficial guide to Datomic internals

http://tonsky.me/blog/unofficial-guide-to-datomic-internals



- Stu Halloway: Day of Datomic

https://docs.datomic.com/on-prem/day-of-datomic.html

- http://www.learndatalogtoday.org

- Official docs: https://docs.datomic.com/on-prem/index.html




Contenu connexe

Similaire à Venturing into-datomic

Web Oriented Architecture at Oracle
Web Oriented Architecture at OracleWeb Oriented Architecture at Oracle
Web Oriented Architecture at OracleEmiliano Pecis
 
Steering Away from Bolted-On Analytics
Steering Away from Bolted-On AnalyticsSteering Away from Bolted-On Analytics
Steering Away from Bolted-On AnalyticsConnexica
 
Informatica Interview Questions & Answers
Informatica Interview Questions & AnswersInformatica Interview Questions & Answers
Informatica Interview Questions & AnswersZaranTech LLC
 
Technology Overview
Technology OverviewTechnology Overview
Technology OverviewLiran Zelkha
 
Mobile agents in a distributed multimedia dabase system(synopsis)
Mobile agents in a distributed multimedia dabase system(synopsis)Mobile agents in a distributed multimedia dabase system(synopsis)
Mobile agents in a distributed multimedia dabase system(synopsis)Mumbai Academisc
 
N - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologiesN - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologiesMartin A
 
Data Infrastructure at LinkedIn
Data Infrastructure at LinkedIn Data Infrastructure at LinkedIn
Data Infrastructure at LinkedIn Amy W. Tang
 
Data Mesh Part 4 Monolith to Mesh
Data Mesh Part 4 Monolith to MeshData Mesh Part 4 Monolith to Mesh
Data Mesh Part 4 Monolith to MeshJeffrey T. Pollock
 
1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.ppt1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.pptKalsoomTahir2
 
--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppt--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppteddielyndacanay0
 
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWSAmazon Web Services
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaborationJulien Pivotto
 
L'architettura di classe enterprise di nuova generazione - Massimo Brignoli
L'architettura di classe enterprise di nuova generazione - Massimo BrignoliL'architettura di classe enterprise di nuova generazione - Massimo Brignoli
L'architettura di classe enterprise di nuova generazione - Massimo BrignoliData Driven Innovation
 
The Lyft data platform: Now and in the future
The Lyft data platform: Now and in the futureThe Lyft data platform: Now and in the future
The Lyft data platform: Now and in the futuremarkgrover
 

Similaire à Venturing into-datomic (20)

Web Oriented Architecture at Oracle
Web Oriented Architecture at OracleWeb Oriented Architecture at Oracle
Web Oriented Architecture at Oracle
 
Steering Away from Bolted-On Analytics
Steering Away from Bolted-On AnalyticsSteering Away from Bolted-On Analytics
Steering Away from Bolted-On Analytics
 
Informatica Interview Questions & Answers
Informatica Interview Questions & AnswersInformatica Interview Questions & Answers
Informatica Interview Questions & Answers
 
Archonnex at ICPSR
Archonnex at ICPSRArchonnex at ICPSR
Archonnex at ICPSR
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
 
Mobile agents in a distributed multimedia dabase system(synopsis)
Mobile agents in a distributed multimedia dabase system(synopsis)Mobile agents in a distributed multimedia dabase system(synopsis)
Mobile agents in a distributed multimedia dabase system(synopsis)
 
N - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologiesN - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologies
 
Data Infrastructure at LinkedIn
Data Infrastructure at LinkedIn Data Infrastructure at LinkedIn
Data Infrastructure at LinkedIn
 
Data Mesh Part 4 Monolith to Mesh
Data Mesh Part 4 Monolith to MeshData Mesh Part 4 Monolith to Mesh
Data Mesh Part 4 Monolith to Mesh
 
Kafka internals
Kafka internalsKafka internals
Kafka internals
 
1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.ppt1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.ppt
 
--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppt--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppt
 
RavenDB overview
RavenDB overviewRavenDB overview
RavenDB overview
 
Oracle bi ee architecture
Oracle bi ee architectureOracle bi ee architecture
Oracle bi ee architecture
 
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
(ARC346) Scaling To 25 Billion Daily Requests Within 3 Months On AWS
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
 
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
Javantura v3 - Real-time BigData ingestion and querying of aggregated data – ...
 
L'architettura di classe enterprise di nuova generazione - Massimo Brignoli
L'architettura di classe enterprise di nuova generazione - Massimo BrignoliL'architettura di classe enterprise di nuova generazione - Massimo Brignoli
L'architettura di classe enterprise di nuova generazione - Massimo Brignoli
 
L19 Application Architecture
L19 Application ArchitectureL19 Application Architecture
L19 Application Architecture
 
The Lyft data platform: Now and in the future
The Lyft data platform: Now and in the futureThe Lyft data platform: Now and in the future
The Lyft data platform: Now and in the future
 

Dernier

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 

Dernier (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 

Venturing into-datomic

  • 2. Kirill Salykin Former .NET, Ruby developer
 Now happy clojurist at AdGoji :)
  • 3. Adgoji is a media agency. 
 We help advertisers find value on mobile. From our offices in Amsterdam, we connect advertisers with the right* mobile users worldwide. To do so, we have built a Clojure based real-time bidding platform that buys targeted mobile advertisement from the largest market places in the world. • and by “right”, we mean users willing to see and/or interact with (click, install, purchase)
  • 4. Kudos to Carlo For organising meetup every month
  • 5. What is Datomic? According to Wikipedia: Datomic is a distributed database and implementation of Datalog.It has ACID transactions, joins, and a logical query language, Datalog.
 
 Designed by Rich Hickey
  • 7.
  • 8. Peer - Lives in the app - Does query - Persistent index + Live index - Receives updates from transactor
  • 9. Transactor - Handles transactions - Commits results to the Storage - Single threaded - Transmit changes to connected peers - Live index - Index in background, place index to the storage
  • 10. Storage - Stores the data :) - Supported storages: DynamoDB, SQL, Cassandra
  • 11. Information model Datomic uses Triple to describe data - Datom Entity Attribute Value 1 :likes “pizza” 1 :likes “lasagna” 1 :first-name “Kirill”
  • 12. Information model 2 Datomic extends triple to include operation Add or Retract Entity Attribute Value Op (Add?) 1 :likes “pizza” True 1 :likes “lasagna” True 1 :first-name “Kirill” True 1 :likes “lasagna” False
  • 13. Information model 3 Every added/retracted Datum also references transaction Entity Attribute Value Op (Add?) Transaction 1 :likes “pizza” True 2 1 :likes “lasagna” True 2 1 :first-name “Kirill” True 2 1 :likes “lasagna” False 3
  • 14. Information model 4 Schema {:db/ident :person/name :db/valueType :db.type/string :db/cardinality :db.cardinality/one} valueType: - keyword - string - boolean - long - bigint - float - double - bigdec - ref - instant - uuid - uri - bytes cardinality: one or many
  • 15. Transactions - Serialised - No `begin transaction` `commit/rollback` - Updates indices in the background - Sends updates to the connected peers - String tempids (references) - Returns db-before, db-after and tempids 
 resolution
  • 16. Transactions 2 - Indexes are B-tree-like structures: sorted, immutable, persistent, 1,000+ branching factor, custom sort order, fast lookup and range scans, able to be efficiently merged (details unknown). - Index trees are shallow, no more than three level deep: root node, directories and segments as leafs.
  • 17. Transactions 3 - Constraints via transaction functions
 - Runs during transaction
 - On exception - transaction rollbacks
  • 18. Query - Directly via indices
 - Query API + Entity API
 - Pull API
  • 19. Query 2 - Indicies:
 - Covering (contains data, not reference)
 - Element of index is not datom, but segment
 - Segment is from 1,000 to 20,000 datoms (~50 Kb)
 - EAVT 
 - AEVT
 - VAET
 - AVET
 - Log index
 - Keeps fetched segments in the memory
  • 20. Features - No query planner (you responsible for optimal query)
 - Query result must feet in the memory (no dump to file, 
 as sql does)
 - Schema alteration can be tricky (even not possible sometimes)
 - No compound indices
 - Sort done manually
 - Pagination done manually (no offset/limit in query defined)
 - Cant add `nil` attribute value - retract only
 - RetractEntity to retract all attributes of entity
 - Stu’s 10 billion datoms (soft limit)
 - Huge heap - may influence GC?
 - GC is a manual operation (garbage segments may still be used?  run rarely, e.g. once a week)
 - Memcache support out-of-the-box
 - Segments easy to cache - immutable
 - Excision - not to correct, but because forced (for instance GDPR)

  • 21. Resources - Rich Hickey: Deconstructing the Database
 https://www.youtube.com/watch?v=Cym4TZwTCNU - Nitika Prokopov: Unofficial guide to Datomic internals
 http://tonsky.me/blog/unofficial-guide-to-datomic-internals
 
 - Stu Halloway: Day of Datomic
 https://docs.datomic.com/on-prem/day-of-datomic.html - http://www.learndatalogtoday.org - Official docs: https://docs.datomic.com/on-prem/index.html