• Like
8 things I like about Datomic
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

8 things I like about Datomic

  • 3,063 views
Published

Introduction to Datomic that highlights its core feature set. …

Introduction to Datomic that highlights its core feature set.
Intorudction to FluxGraph, a temporal Graph Database implemented on top of Datomic.

Published in Technology , News & Politics
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,063
On SlideShare
0
From Embeds
0
Number of Embeds
8

Actions

Shares
Downloads
37
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tuesday BIGDATA.BE28.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 valueDatom [ 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 valueDatom [ 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 valueDatom [ 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
  • 30. Questions?
  • 31. Contact usFollow us E-MAILtwitter.com/data_blend info@datablend.bewww.datablend.be www.datablend.be info@datablend.be 0499/05.00.89 Diepestraat 23 - heist-op-den-berg