SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a 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 baumannDeltares
 
Rewriting the Drupal Theme layer
Rewriting the Drupal Theme layerRewriting the Drupal Theme layer
Rewriting the Drupal Theme layerc4rl
 
Scala in hulu's data platform
Scala in hulu's data platformScala in hulu's data platform
Scala in hulu's data platformPrasan 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 NewbiesDave 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 LayerIBM 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 accessDirk 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_onFEG
 
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 RxSumant Tambe
 
テスト用のプレゼンテーション
テスト用のプレゼンテーションテスト用のプレゼンテーション
テスト用のプレゼンテーションgooseboi
 
Blunt Umbrellas Website Showcase
Blunt Umbrellas Website ShowcaseBlunt Umbrellas Website Showcase
Blunt Umbrellas Website ShowcaseGareth 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 TerraformShapeBlue
 
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 2011Steven Francia
 

Semelhante a 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
 

Mais de 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 electionsdatablend
 
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 Datadatablend
 
Introduction to Graph Databases @ SAI
Introduction to Graph Databases @ SAIIntroduction to Graph Databases @ SAI
Introduction to Graph Databases @ SAIdatablend
 
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 datadatablend
 
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
 

Mais de 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
 

Último

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Último (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

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