Upload
jordan-leigh
View
159
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Intro to Datomic talk at the DC Graph Database meetup group. November 11th 2014.
Citation preview
DATOMICJordan Leigh - @AlwaysBCoding
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
STACKS
2
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
STACKS
3
Ruby
Rails
jQuery
PostgreSQL
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
STACKS
4
Ruby MongoDB
Rails Express
jQuery AngularJS
NodeJSPostgreSQL
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
STACKS
5
Ruby MongoDB Clojure
Rails Express ClojureScript
ReactJS
Datomic
jQuery AngularJS
NodeJSPostgreSQL
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
DATOMIC
6
Ruby MongoDB Clojure
Rails Express ClojureScript
ReactJS
Datomic
jQuery AngularJS
NodeJSPostgreSQL
THE DATABASE AS A VALUE
WHAT IS A VALUE
VALUE
42
VALUE
[1, 2, 3]
VALUE
{
}
:name “John Wall”:age 24
NOT A VALUE
<0x00000101a958d8>
NOT A VALUE
person = Person.new(“John Wall”, 24)
NOT A VALUE
Postgres Database
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
15
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
16
Easy to Share
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
17
Easy to Share
Reproducible Results
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
18
Easy to Share
Easy to Fabricate
Reproducible Results
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
19
Easy to Share
Easy to Fabricate
Reproducible Results
Language Independent
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
20
Easy to Share
Easy to Fabricate
Aggregate to Values
Reproducible Results
Language Independent
WHAT IS A FACT
WHAT IS A FACT
John Wall plays for the Wizards
WHAT IS A FACT
John Wall played for the Wizards
on November 8th 2014
WHAT IS A FACT
Theodore Roosevelt
on March 5th 1905
held the position
President of the United States
WHAT IS A FACT
Theodore Roosevelt
March 5th 1905
position
president
WHAT IS A FACT
Theodore Roosevelt
March 5th 1905
position
president
entity
WHAT IS A FACT
Theodore Roosevelt
March 5th 1905
position
president
attribute
WHAT IS A FACT
Theodore Roosevelt
March 5th 1905
position
president value
WHAT IS A FACT
Theodore Roosevelt
March 5th 1905
position
president
timestamp
OO MODEL
OO MODEL
OO MODEL
FACT BASED MODEL
FACT BASED MODEL
Timestamp
FACT BASED MODEL
Timestamp Timestamp
FACT BASED MODEL
Timestamp TimestampTimestamp
GIT
Timestamp TimestampTimestamp
A B C
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
38
Easy to Share
Easy to Fabricate
Aggregate to Values
Reproducible Results
Language Independent
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
ADVANTAGES OF VALUES
39
Easy to Share
Easy to Fabricate
Aggregate to Values
Reproducible Results
Language Independent
ONE FACT
{…}
timestamp
A SERIES OF FACTS OVER TIME
[{…}, {…}, {…}, {…}, {…}, {…}]
time
STRUCTURE OF A FACT
[entity, attribute, value, timestamp]
STRUCTURE OF A FACT
[entity, attribute, value, timestamp]
[Wizards Ticket, price, $60, 11-11-2014 12:00pm]
STRUCTURE OF A FACT
[entity, attribute, value, timestamp]
[Wizards Ticket, price, $60, 11-11-2014 12:00pm]
DATOM
A SERIES OF DATOMS OVER TIME
[DATOM, DATOM, DATOM, DATOM, DATOM]
time
A SERIES OF DATOMS OVER TIME
[DATOM, DATOM, DATOM, DATOM, DATOM]
time
DATOMIC
QUERY
HOW ARE WE DOING THIS NOW
APP
HOW ARE WE DOING THIS NOW
APP
HOW ARE WE DOING THIS NOW
APP
“…”
HOW ARE WE DOING THIS NOW
APP
“…”
HOW ARE WE DOING THIS NOW
APP
“…”
value
HOW ARE WE DOING THIS NOW
APP
“…”
value
HOW ARE WE DOING THIS NOW
APP
“…”
value
manipulate with code
DATOMIC
APP
DATOMIC
APP
DATOMIC
APP
value
DATOMIC
APP
value
db
DATOMIC
APP
value
db
value
DATOMIC
APP
value
db
value
manipulate with code
A SERIES OF FACTS OVER TIME
[{…}, {…}, {…}, {…}, {…}, {…}]
time
PATTERN MATCHING
[{…}, {…}, {…}, {…}, {…}, {…}]
[{…}, {…}, {…}]
PATTERN
DATALOG
datomic.db.Db@4163cc8b
#{[“wizards”]}
[:find ?name :where
[?eid :nba.team/city “washington”]
[?eid :nba.team/name ?name]]
HOW ARE WE DOING THIS NOW
APP
“…”
value
PATTERN MATCHING
[{…}, {…}, {…}, {…}, {…}, {…}]
RESULT
QUERY
PATTERN MATCHING
[{…}, {…}, {…}, {…}, {…}, {…}]
RESULT
QUERY
PATTERN MATCHING
[{…}, {…}, {…}, {…}, {…}, {…}]
RESULT
QUERY
PATTERN MATCHING
[{…}, {…}, {…}, {…}, {…}, {…}]
RESULT
QUERY
SCHEMA
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
SCHEMA CONCEPTS
70
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
SCHEMA CONCEPTS
71
Declaration of Entity Types
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
SCHEMA CONCEPTS
72
Declaration of Entity Types
Whitelist of Attributes by
Entity Type
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
SCHEMA CONCEPTS
73
Declaration of Entity Types
Declaration of which
attributes are references
Whitelist of Attributes by
Entity Type
SCHEMA CONCEPTS
Entity
SCHEMA CONCEPTS
NBA Team
SCHEMA CONCEPTS
NBA Team
Name: STRING
City: STRING
Logo: URI
SCHEMA CONCEPTS
NBA Team
Name: “wizards”
City: “washington”
Logo: http://cdn.something.com/nba/logos/wizards.svg
SCHEMA CONCEPTS
NBA Player
SCHEMA CONCEPTS
NBA Player
Birthdate: INSTANT
Name: STRING
CurrentTeam: REF
SCHEMA CONCEPTS
NBA Player
Birthdate: #inst September 6 1990
Name: “John Wall”
CurrentTeam: 176523498213
SCHEMA CONCEPTS
John
Wall
Wizards
CurrentTeam
SCHEMA CONCEPTS
John
Wall
WizardsPLAYER
TEAM
SCHEMA CONCEPTS
John
Wall
Wizards
wizards
vs.
nets
PLAYERTEAM
GAME
SCHEMA CONCEPTS
John
Wall
Wizards
wizards
vs.
nets
PLAYERTEAM
GAME
Dunk @
7:00 1Q
GAME EVENT
SCHEMA CONCEPTS
John
Wall
Wizards
wizards
vs.
nets
PLAYERTEAM
GAME
Dunk @
7:00 1Q
GAME EVENT
scored by
SCHEMA CONCEPTS
John
Wall
Wizards
wizards
vs.
nets
PLAYERTEAM
GAME
Dunk @
7:00 1Q
GAME EVENT
Otto
PorterPLAYER
scored by
assisted by
SCHEMA CONCEPTS
John
Wall
Wizards
wizards
vs.
nets
PLAYERTEAM
GAME
Dunk @
7:00 1Q
GAME EVENT
Otto
PorterPLAYER
scored by
assisted by
OTHER NOTES
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE GOOD
89
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE GOOD
90
Decoupled from Storage
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE GOOD
91
Decoupled from Storage
Functions in the Database
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE GOOD
92
Decoupled from Storage
TX Report Queue
Functions in the Database
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE BAD
93
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE BAD
94
Not open source
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE BAD
95
Not open source
Paid license to use in
production
><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]
THE BAD
96
Not open source
Documentation around
deployment is rough
Paid license to use in
production
CODE