SlideShare a Scribd company logo
Tuesday




          BIGDATA.BE
28.08
8 Things I like about Datomic
     + something about temporal graph databases




       www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
About me
                                           Who am I ...
                                           ➡ Working as an it lead / software architect @ Janssen Diagnostics
                                                  • Dealing with big scientific data sets
                                                  • Hands-on expertise in Big Data and NoSQL technologies




                                           ➡ Founder of datablend
                                                  • Provide Big Data and NoSQL consultancy
    Davy Suvee                                    • Share practical knowledge and Big Data use cases via blog
      @DSUVEE




           www.datablend.be   info@datablend.be       0499/05.00.89     Diepestraat 23 - heist-op-den-berg
1 - Data Immutability
                               entity                      attribute                                    value



Datom                                      [ 10 ‘:name’ ‘datablend’ ]



            www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
1 - Data Immutability
                               entity                      attribute                                    value



Datom                                      [ 10 ‘:name’ ‘datablend’ ]
                                                                                       ‘dataother’

            www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
1 - Data Immutability
                               entity                      attribute                                    value



Datom                                      [ 10 ‘:name’ ‘datablend‘ tx1 ]
                                           [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ]
                                                                                          defines time


            www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
2 - Schema-Less                         kind of ...



Util.map(":db/id", Peer.tempid(":db.part/db"),
         ":db/ident", ":name",
         ":db/valueType", ":db.type/string",
         ":db/cardinality", ":db.cardinality/one",
         ":db/doc", "The name of an entity",
         ":db.install/_attribute", ":db.part/db"));

                                                                                                              attribute definition

                  www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
3 - Everything is a Datom

[ 10 ‘:name’ ‘datablend‘ ]
[ 10 ‘:tel’ ‘01234566789‘ ]                               [ 99 ‘:db/ident’ ‘:name’ ]
                                                          [ 99 ‘:db/valueType’ ‘:db.type/string’ ]
[ 11 ‘:name’ ‘Davy Suvee‘ ]                               [ 99 ‘:db/cardinality’ ‘:db.cardinality/one’ ]
[ 11 ‘:knows’ ‘java‘ ]                                    [ 99 ‘:db/doc’ ‘The name of an entity’ ]
[ 11 ‘:knows’ ‘NoSQL‘ ]                                   [ 99 ‘:db.install/_attribute’ ‘:db.part/db’ ]
[ 11 ‘:founded’ 10 ]


                        www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
3 - Everything Is A Datom
                                                                                          transaction

             [ 10 ‘:name’ ‘datablend‘ 251]




         www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
3 - Everything Is A Datom
                                                                                           transaction

              [ 10 ‘:name’ ‘datablend‘ 251]

       [ 251 ‘:db/txInstant’ ‘35454920495’ ] timestamp




          www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
3 - Everything Is A Datom
                                                                                           transaction

              [ 10 ‘:name’ ‘datablend‘ 251]

       [ 251 ‘:db/txInstant’ ‘35454920495’ ] timestamp

                [ 251 ‘:source’ ‘:external’ ] meta-data
                 [ 251 ‘:url’ ‘bigdata.be’ ]


          www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
4 - Datalog                                 logic programming for your datoms


[ 10 ‘:name’ ‘datablend‘ ]
[ 10 ‘:tel’ ‘01234566789‘ ]
                                                               [:find ?entity ?name
[ 11 ‘:name’ ‘Davy Suvee‘ ]                                     :where [?entity :name ?name]]
[ 11 ‘:knows’ ‘java‘ ]
[ 11 ‘:knows’ ‘NoSQL‘ ]                                                            (10 ‘datablend‘)
[ 11 ‘:founded’ 10 ]                                                               (11 ‘Davy Suvee‘)



                        www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
4 - Datalog                                 logic programming for your datoms


[ 10 ‘:name’ ‘datablend‘ ]
[ 10 ‘:tel’ ‘01234566789‘ ]
                                                               [:find ?name
[ 11 ‘:name’ ‘Davy Suvee‘ ]                                     :where [?person :name ?name]
                                                                       [?person :knows ‘java’]]
[ 11 ‘:knows’ ‘java‘ ]
[ 11 ‘:knows’ ‘NoSQL‘ ]
[ 11 ‘:founded’ 10 ]                                                                (‘Davy Suvee‘)




                        www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
4 - Datalog                                 logic programming for your datoms


[ 10 ‘:name’ ‘datablend‘ ]
[ 10 ‘:tel’ ‘01234566789‘ ]                                    [:find ?name
                                                                :where [?com :name ?name]
[ 11 ‘:name’ ‘Davy Suvee‘ ]                                            [?person :knows ‘java’]
[ 11 ‘:knows’ ‘java‘ ]                                                 [?person :founded ?com]]
[ 11 ‘:knows’ ‘NoSQL‘ ]
[ 11 ‘:founded’ 10 ]                                                                           (‘datablend‘)



                        www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
4 - Datalog                             ... and as everything is a datom ...


[:find ?attribute
 :where [?attribute :db/valueType :db.type/string]]




            www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
4 - Datalog                             ... and as everything is a datom ...


[:find ?attribute
 :where [?attribute :db/valueType :db.type/string]]



      [:find ?entity ?url
       :where [?entity :name “datablend” ?tx]
              [?tx :source :external]
              [?tx :url ?url]]




            www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
5 - Power your queries
[:find ?tech
 :where [_ :knows ?tech]                                            any valid Java expression
        [(.startsWith ?tech “J”)]]




                     www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
5 - Power your queries
[:find ?tech
 :where [_ :knows ?tech]                                            any valid Java expression
        [(.startsWith ?tech “J”)]]




[[(ancestor ?person ?ancestor) [?person :person/parent ?ancestor]]
 [(ancestor ?person ?ancestor) [?person :person/parent ?parent]
                               (ancestor ?parent ?ancestor)]]]

                                                                     recursive rules

                     www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
6 - Travel through time
                                                                                [ 10 ‘:name’ ‘datablend‘ tx 1 ]
                                                                                [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ]
String query = “[:find ?name
                 :where [10 :name ?name]]”;



Peer.q(query, conn.db());                                                                                   (‘dataother’)




                     www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
6 - Travel through time
                                                                                [ 10 ‘:name’ ‘datablend‘ tx 1 ]
                                                                                [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ]
String query = “[:find ?name
                 :where [10 :name ?name]]”;



Peer.q(query, conn.db());                                                                                   (‘dataother’)

Peer.q(query, conn.db().asOf(tx1));                                                                         (‘datablend’)




                     www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
6 - Travel through time
                                                                                  [ 10 ‘:name’ ‘datablend‘ tx 1 ]
                                                                                  [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ]
String query = “[:find ?name
                 :where [10 :name ?name]]”;



Peer.q(query, conn.db());                                                                                     (‘dataother’)

Peer.q(query, conn.db().asOf(tx1));                                                                           (‘datablend’)

Peer.q(query, conn.db().with(futuretx));                                                                           (‘datamix’)

              [ 10 ‘:name’ ‘datamix‘ ]

                       www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
7 - Scalability reversed




         www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
8 - Pluggable data stores

➡ In memory (dev mode)
➡ SQL Database
➡ DYNAMO DB
➡ INFINISPAN


➡ Switch transparently and migration tools available


                   www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
FluxGraph:
Tinkerpop on top of Datomic
     (http://github.com/datablend/blueprints)



        www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
FluxGraph
➡ Blueprints implementation on top of Datomic




                     www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
FluxGraph
➡ Blueprints implementation on top of Datomic


➡ Graph Time Travel
       public void setTime(Date checkpoint);




                      www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
FluxGraph
➡ Blueprints implementation on top of Datomic


➡ Graph Time Travel
        public void setTime(Date checkpoint);


➡ Time-scoped iteration of vertices and edges
        public Vertex getPreviousVersion();
        public Iterable<Edge> getNextVersions();
        public Iterable<Edge> getNextVersions(Filter filter);

                      www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
Time-aware social graph




        www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
GraphConnect


       “The use of Temporal Graph Databases to
        ease the analysis of longitudinal patient
        data”


       www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg
Questions?
Contact us


Follow us                                                                                                            E-MAIL
twitter.com/data_blend                                                                                               info@datablend.be
www.datablend.be




                         www.datablend.be   info@datablend.be   0499/05.00.89   Diepestraat 23 - heist-op-den-berg

More Related Content

Similar to 8 things I like about Datomic

Play With Theschwartz
Play With TheschwartzPlay With Theschwartz
Play With TheschwartzHideo Kimura
 
DSD-INT 2015 - Datacubes understanding big eo data better - Peter baumann
DSD-INT 2015 - Datacubes understanding big eo data better - Peter baumannDSD-INT 2015 - Datacubes understanding big eo data better - Peter baumann
DSD-INT 2015 - Datacubes understanding big eo data better - Peter baumann
Deltares
 
Rewriting the Drupal Theme layer
Rewriting the Drupal Theme layerRewriting the Drupal Theme layer
Rewriting the Drupal Theme layer
c4rl
 
Scala in hulu's data platform
Scala in hulu's data platformScala in hulu's data platform
Scala in hulu's data platform
Prasan Samtani
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for Newbies
Dave Stokes
 
Webinar: The Anatomy of the Cloudant Data Layer
Webinar: The Anatomy of the Cloudant Data LayerWebinar: The Anatomy of the Cloudant Data Layer
Webinar: The Anatomy of the Cloudant Data Layer
IBM Cloud Data Services
 
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
NETWAYS
 
Web it support and consulting - link many files in ms access
Web it support and consulting - link many files in ms accessWeb it support and consulting - link many files in ms access
Web it support and consulting - link many files in ms access
Dirk Cludts
 
5 docker data_etl and visualization_hands_on
5 docker data_etl and visualization_hands_on5 docker data_etl and visualization_hands_on
5 docker data_etl and visualization_hands_on
FEG
 
SQLBits XI - ETL with Hadoop
SQLBits XI - ETL with HadoopSQLBits XI - ETL with Hadoop
SQLBits XI - ETL with Hadoop
Jan Pieter Posthuma
 
Reactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and RxReactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and Rx
Sumant Tambe
 
テスト用のプレゼンテーション
テスト用のプレゼンテーションテスト用のプレゼンテーション
テスト用のプレゼンテーション
gooseboi
 
Blunt Umbrellas Website Showcase
Blunt Umbrellas Website ShowcaseBlunt Umbrellas Website Showcase
Blunt Umbrellas Website Showcase
Gareth Hall
 
MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011Steven Francia
 
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis
 
Robert Sander: CloudStack and Terraform
Robert Sander: CloudStack and TerraformRobert Sander: CloudStack and Terraform
Robert Sander: CloudStack and Terraform
ShapeBlue
 
MongoDB, PHP and the cloud - php cloud summit 2011
MongoDB, PHP and the cloud - php cloud summit 2011MongoDB, PHP and the cloud - php cloud summit 2011
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 

Similar to 8 things I like about Datomic (17)

Play With Theschwartz
Play With TheschwartzPlay With Theschwartz
Play With Theschwartz
 
DSD-INT 2015 - Datacubes understanding big eo data better - Peter baumann
DSD-INT 2015 - Datacubes understanding big eo data better - Peter baumannDSD-INT 2015 - Datacubes understanding big eo data better - Peter baumann
DSD-INT 2015 - Datacubes understanding big eo data better - Peter baumann
 
Rewriting the Drupal Theme layer
Rewriting the Drupal Theme layerRewriting the Drupal Theme layer
Rewriting the Drupal Theme layer
 
Scala in hulu's data platform
Scala in hulu's data platformScala in hulu's data platform
Scala in hulu's data platform
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for Newbies
 
Webinar: The Anatomy of the Cloudant Data Layer
Webinar: The Anatomy of the Cloudant Data LayerWebinar: The Anatomy of the Cloudant Data Layer
Webinar: The Anatomy of the Cloudant Data Layer
 
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
 
Web it support and consulting - link many files in ms access
Web it support and consulting - link many files in ms accessWeb it support and consulting - link many files in ms access
Web it support and consulting - link many files in ms access
 
5 docker data_etl and visualization_hands_on
5 docker data_etl and visualization_hands_on5 docker data_etl and visualization_hands_on
5 docker data_etl and visualization_hands_on
 
SQLBits XI - ETL with Hadoop
SQLBits XI - ETL with HadoopSQLBits XI - ETL with Hadoop
SQLBits XI - ETL with Hadoop
 
Reactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and RxReactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and Rx
 
テスト用のプレゼンテーション
テスト用のプレゼンテーションテスト用のプレゼンテーション
テスト用のプレゼンテーション
 
Blunt Umbrellas Website Showcase
Blunt Umbrellas Website ShowcaseBlunt Umbrellas Website Showcase
Blunt Umbrellas Website Showcase
 
MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011MongoDB and PHP ZendCon 2011
MongoDB and PHP ZendCon 2011
 
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
 
Robert Sander: CloudStack and Terraform
Robert Sander: CloudStack and TerraformRobert Sander: CloudStack and Terraform
Robert Sander: CloudStack and Terraform
 
MongoDB, PHP and the cloud - php cloud summit 2011
MongoDB, PHP and the cloud - php cloud summit 2011MongoDB, PHP and the cloud - php cloud summit 2011
MongoDB, PHP and the cloud - php cloud summit 2011
 

More from datablend

MongoDB Analytics
MongoDB AnalyticsMongoDB Analytics
MongoDB Analyticsdatablend
 
Coalition cocktail - hack the elections
Coalition cocktail - hack the electionsCoalition cocktail - hack the elections
Coalition cocktail - hack the elections
datablend
 
The Power of Graphs to Analyze Biological Data
The Power of Graphs to Analyze Biological DataThe Power of Graphs to Analyze Biological Data
The Power of Graphs to Analyze Biological Data
datablend
 
Introduction to Graph Databases @ SAI
Introduction to Graph Databases @ SAIIntroduction to Graph Databases @ SAI
Introduction to Graph Databases @ SAI
datablend
 
FluxGraph @ GraphDevRoom
FluxGraph @ GraphDevRoomFluxGraph @ GraphDevRoom
FluxGraph @ GraphDevRoomdatablend
 
The power of graphs to analyze biological data
The power of graphs to analyze biological dataThe power of graphs to analyze biological data
The power of graphs to analyze biological data
datablend
 
FluxGraph: a time-machine for your graphs
FluxGraph: a time-machine for your graphsFluxGraph: a time-machine for your graphs
FluxGraph: a time-machine for your graphsdatablend
 

More from datablend (7)

MongoDB Analytics
MongoDB AnalyticsMongoDB Analytics
MongoDB Analytics
 
Coalition cocktail - hack the elections
Coalition cocktail - hack the electionsCoalition cocktail - hack the elections
Coalition cocktail - hack the elections
 
The Power of Graphs to Analyze Biological Data
The Power of Graphs to Analyze Biological DataThe Power of Graphs to Analyze Biological Data
The Power of Graphs to Analyze Biological Data
 
Introduction to Graph Databases @ SAI
Introduction to Graph Databases @ SAIIntroduction to Graph Databases @ SAI
Introduction to Graph Databases @ SAI
 
FluxGraph @ GraphDevRoom
FluxGraph @ GraphDevRoomFluxGraph @ GraphDevRoom
FluxGraph @ GraphDevRoom
 
The power of graphs to analyze biological data
The power of graphs to analyze biological dataThe power of graphs to analyze biological data
The power of graphs to analyze biological data
 
FluxGraph: a time-machine for your graphs
FluxGraph: a time-machine for your graphsFluxGraph: a time-machine for your graphs
FluxGraph: a time-machine for your graphs
 

Recently uploaded

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 

Recently uploaded (20)

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 

8 things I like about Datomic

  • 1. Tuesday BIGDATA.BE 28.08
  • 2. 8 Things I like about Datomic + something about temporal graph databases www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 3. About me Who am I ... ➡ Working as an it lead / software architect @ Janssen Diagnostics • Dealing with big scientific data sets • Hands-on expertise in Big Data and NoSQL technologies ➡ Founder of datablend • Provide Big Data and NoSQL consultancy Davy Suvee • Share practical knowledge and Big Data use cases via blog @DSUVEE www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 4. 1 - Data Immutability entity attribute value Datom [ 10 ‘:name’ ‘datablend’ ] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 5. 1 - Data Immutability entity attribute value Datom [ 10 ‘:name’ ‘datablend’ ] ‘dataother’ www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 6. 1 - Data Immutability entity attribute value Datom [ 10 ‘:name’ ‘datablend‘ tx1 ] [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ] defines time www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 7. 2 - Schema-Less kind of ... Util.map(":db/id", Peer.tempid(":db.part/db"),          ":db/ident", ":name",          ":db/valueType", ":db.type/string",          ":db/cardinality", ":db.cardinality/one",          ":db/doc", "The name of an entity",          ":db.install/_attribute", ":db.part/db")); attribute definition www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 8. 3 - Everything is a Datom [ 10 ‘:name’ ‘datablend‘ ] [ 10 ‘:tel’ ‘01234566789‘ ] [ 99 ‘:db/ident’ ‘:name’ ] [ 99 ‘:db/valueType’ ‘:db.type/string’ ] [ 11 ‘:name’ ‘Davy Suvee‘ ] [ 99 ‘:db/cardinality’ ‘:db.cardinality/one’ ] [ 11 ‘:knows’ ‘java‘ ] [ 99 ‘:db/doc’ ‘The name of an entity’ ] [ 11 ‘:knows’ ‘NoSQL‘ ] [ 99 ‘:db.install/_attribute’ ‘:db.part/db’ ] [ 11 ‘:founded’ 10 ] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 9. 3 - Everything Is A Datom transaction [ 10 ‘:name’ ‘datablend‘ 251] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 10. 3 - Everything Is A Datom transaction [ 10 ‘:name’ ‘datablend‘ 251] [ 251 ‘:db/txInstant’ ‘35454920495’ ] timestamp www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 11. 3 - Everything Is A Datom transaction [ 10 ‘:name’ ‘datablend‘ 251] [ 251 ‘:db/txInstant’ ‘35454920495’ ] timestamp [ 251 ‘:source’ ‘:external’ ] meta-data [ 251 ‘:url’ ‘bigdata.be’ ] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 12. 4 - Datalog logic programming for your datoms [ 10 ‘:name’ ‘datablend‘ ] [ 10 ‘:tel’ ‘01234566789‘ ] [:find ?entity ?name [ 11 ‘:name’ ‘Davy Suvee‘ ] :where [?entity :name ?name]] [ 11 ‘:knows’ ‘java‘ ] [ 11 ‘:knows’ ‘NoSQL‘ ] (10 ‘datablend‘) [ 11 ‘:founded’ 10 ] (11 ‘Davy Suvee‘) www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 13. 4 - Datalog logic programming for your datoms [ 10 ‘:name’ ‘datablend‘ ] [ 10 ‘:tel’ ‘01234566789‘ ] [:find ?name [ 11 ‘:name’ ‘Davy Suvee‘ ] :where [?person :name ?name] [?person :knows ‘java’]] [ 11 ‘:knows’ ‘java‘ ] [ 11 ‘:knows’ ‘NoSQL‘ ] [ 11 ‘:founded’ 10 ] (‘Davy Suvee‘) www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 14. 4 - Datalog logic programming for your datoms [ 10 ‘:name’ ‘datablend‘ ] [ 10 ‘:tel’ ‘01234566789‘ ] [:find ?name :where [?com :name ?name] [ 11 ‘:name’ ‘Davy Suvee‘ ] [?person :knows ‘java’] [ 11 ‘:knows’ ‘java‘ ] [?person :founded ?com]] [ 11 ‘:knows’ ‘NoSQL‘ ] [ 11 ‘:founded’ 10 ] (‘datablend‘) www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 15. 4 - Datalog ... and as everything is a datom ... [:find ?attribute :where [?attribute :db/valueType :db.type/string]] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 16. 4 - Datalog ... and as everything is a datom ... [:find ?attribute :where [?attribute :db/valueType :db.type/string]] [:find ?entity ?url :where [?entity :name “datablend” ?tx] [?tx :source :external] [?tx :url ?url]] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 17. 5 - Power your queries [:find ?tech :where [_ :knows ?tech] any valid Java expression [(.startsWith ?tech “J”)]] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 18. 5 - Power your queries [:find ?tech :where [_ :knows ?tech] any valid Java expression [(.startsWith ?tech “J”)]] [[(ancestor ?person ?ancestor) [?person :person/parent ?ancestor]] [(ancestor ?person ?ancestor) [?person :person/parent ?parent]                                (ancestor ?parent ?ancestor)]]] recursive rules www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 19. 6 - Travel through time [ 10 ‘:name’ ‘datablend‘ tx 1 ] [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ] String query = “[:find ?name :where [10 :name ?name]]”; Peer.q(query, conn.db()); (‘dataother’) www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 20. 6 - Travel through time [ 10 ‘:name’ ‘datablend‘ tx 1 ] [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ] String query = “[:find ?name :where [10 :name ?name]]”; Peer.q(query, conn.db()); (‘dataother’) Peer.q(query, conn.db().asOf(tx1)); (‘datablend’) www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 21. 6 - Travel through time [ 10 ‘:name’ ‘datablend‘ tx 1 ] [ 10 ‘:name’ ‘DATAOTHER‘ tx2 ] String query = “[:find ?name :where [10 :name ?name]]”; Peer.q(query, conn.db()); (‘dataother’) Peer.q(query, conn.db().asOf(tx1)); (‘datablend’) Peer.q(query, conn.db().with(futuretx)); (‘datamix’) [ 10 ‘:name’ ‘datamix‘ ] www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 22. 7 - Scalability reversed www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 23. 8 - Pluggable data stores ➡ In memory (dev mode) ➡ SQL Database ➡ DYNAMO DB ➡ INFINISPAN ➡ Switch transparently and migration tools available www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 24. FluxGraph: Tinkerpop on top of Datomic (http://github.com/datablend/blueprints) www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 25. FluxGraph ➡ Blueprints implementation on top of Datomic www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 26. FluxGraph ➡ Blueprints implementation on top of Datomic ➡ Graph Time Travel public void setTime(Date checkpoint); www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 27. FluxGraph ➡ Blueprints implementation on top of Datomic ➡ Graph Time Travel public void setTime(Date checkpoint); ➡ Time-scoped iteration of vertices and edges public Vertex getPreviousVersion(); public Iterable<Edge> getNextVersions(); public Iterable<Edge> getNextVersions(Filter filter); www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 28. Time-aware social graph www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 29. GraphConnect “The use of Temporal Graph Databases to ease the analysis of longitudinal patient data” www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg
  • 31. Contact us Follow us E-MAIL twitter.com/data_blend info@datablend.be www.datablend.be www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg