97
DATOMIC Jordan Leigh - @AlwaysBCoding

Datomic

Embed Size (px)

DESCRIPTION

Intro to Datomic talk at the DC Graph Database meetup group. November 11th 2014.

Citation preview

Page 1: Datomic

DATOMICJordan Leigh - @AlwaysBCoding

Page 2: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

STACKS

2

Page 3: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

STACKS

3

Ruby

Rails

jQuery

PostgreSQL

Page 4: Datomic

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

Page 5: Datomic

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

Page 6: Datomic

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

Page 7: Datomic

THE DATABASE AS A VALUE

Page 8: Datomic

WHAT IS A VALUE

Page 9: Datomic

VALUE

42

Page 10: Datomic

VALUE

[1, 2, 3]

Page 11: Datomic

VALUE

{

}

:name “John Wall”:age 24

Page 12: Datomic

NOT A VALUE

<0x00000101a958d8>

Page 13: Datomic

NOT A VALUE

person = Person.new(“John Wall”, 24)

Page 14: Datomic

NOT A VALUE

Postgres Database

Page 15: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

ADVANTAGES OF VALUES

15

Page 16: Datomic

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

Page 17: Datomic

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

Page 18: Datomic

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

Page 19: Datomic

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

Page 20: Datomic

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

Page 21: Datomic

WHAT IS A FACT

Page 22: Datomic

WHAT IS A FACT

John Wall plays for the Wizards

Page 23: Datomic

WHAT IS A FACT

John Wall played for the Wizards

on November 8th 2014

Page 24: Datomic

WHAT IS A FACT

Theodore Roosevelt

on March 5th 1905

held the position

President of the United States

Page 25: Datomic

WHAT IS A FACT

Theodore Roosevelt

March 5th 1905

position

president

Page 26: Datomic

WHAT IS A FACT

Theodore Roosevelt

March 5th 1905

position

president

entity

Page 27: Datomic

WHAT IS A FACT

Theodore Roosevelt

March 5th 1905

position

president

attribute

Page 28: Datomic

WHAT IS A FACT

Theodore Roosevelt

March 5th 1905

position

president value

Page 29: Datomic

WHAT IS A FACT

Theodore Roosevelt

March 5th 1905

position

president

timestamp

Page 30: Datomic

OO MODEL

Page 31: Datomic

OO MODEL

Page 32: Datomic

OO MODEL

Page 33: Datomic

FACT BASED MODEL

Page 34: Datomic

FACT BASED MODEL

Timestamp

Page 35: Datomic

FACT BASED MODEL

Timestamp Timestamp

Page 36: Datomic

FACT BASED MODEL

Timestamp TimestampTimestamp

Page 37: Datomic

GIT

Timestamp TimestampTimestamp

A B C

Page 38: Datomic

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

Page 39: Datomic

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

Page 40: Datomic

ONE FACT

{…}

timestamp

Page 41: Datomic

A SERIES OF FACTS OVER TIME

[{…}, {…}, {…}, {…}, {…}, {…}]

time

Page 42: Datomic

STRUCTURE OF A FACT

[entity, attribute, value, timestamp]

Page 43: Datomic

STRUCTURE OF A FACT

[entity, attribute, value, timestamp]

[Wizards Ticket, price, $60, 11-11-2014 12:00pm]

Page 44: Datomic

STRUCTURE OF A FACT

[entity, attribute, value, timestamp]

[Wizards Ticket, price, $60, 11-11-2014 12:00pm]

DATOM

Page 45: Datomic

A SERIES OF DATOMS OVER TIME

[DATOM, DATOM, DATOM, DATOM, DATOM]

time

Page 46: Datomic

A SERIES OF DATOMS OVER TIME

[DATOM, DATOM, DATOM, DATOM, DATOM]

time

DATOMIC

Page 47: Datomic

QUERY

Page 48: Datomic

HOW ARE WE DOING THIS NOW

APP

Page 49: Datomic

HOW ARE WE DOING THIS NOW

APP

Page 50: Datomic

HOW ARE WE DOING THIS NOW

APP

“…”

Page 51: Datomic

HOW ARE WE DOING THIS NOW

APP

“…”

Page 52: Datomic

HOW ARE WE DOING THIS NOW

APP

“…”

value

Page 53: Datomic

HOW ARE WE DOING THIS NOW

APP

“…”

value

Page 54: Datomic

HOW ARE WE DOING THIS NOW

APP

“…”

value

manipulate with code

Page 55: Datomic

DATOMIC

APP

Page 56: Datomic

DATOMIC

APP

Page 57: Datomic

DATOMIC

APP

value

Page 58: Datomic

DATOMIC

APP

value

db

Page 59: Datomic

DATOMIC

APP

value

db

value

Page 60: Datomic

DATOMIC

APP

value

db

value

manipulate with code

Page 61: Datomic

A SERIES OF FACTS OVER TIME

[{…}, {…}, {…}, {…}, {…}, {…}]

time

Page 62: Datomic

PATTERN MATCHING

[{…}, {…}, {…}, {…}, {…}, {…}]

[{…}, {…}, {…}]

PATTERN

Page 63: Datomic

DATALOG

datomic.db.Db@4163cc8b

#{[“wizards”]}

[:find ?name :where

[?eid :nba.team/city “washington”]

[?eid :nba.team/name ?name]]

Page 64: Datomic

HOW ARE WE DOING THIS NOW

APP

“…”

value

Page 65: Datomic

PATTERN MATCHING

[{…}, {…}, {…}, {…}, {…}, {…}]

RESULT

QUERY

Page 66: Datomic

PATTERN MATCHING

[{…}, {…}, {…}, {…}, {…}, {…}]

RESULT

QUERY

Page 67: Datomic

PATTERN MATCHING

[{…}, {…}, {…}, {…}, {…}, {…}]

RESULT

QUERY

Page 68: Datomic

PATTERN MATCHING

[{…}, {…}, {…}, {…}, {…}, {…}]

RESULT

QUERY

Page 69: Datomic

SCHEMA

Page 70: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

SCHEMA CONCEPTS

70

Page 71: Datomic

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

Page 72: Datomic

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

Page 73: Datomic

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

Page 74: Datomic

SCHEMA CONCEPTS

Entity

Page 75: Datomic

SCHEMA CONCEPTS

NBA Team

Page 76: Datomic

SCHEMA CONCEPTS

NBA Team

Name: STRING

City: STRING

Logo: URI

Page 77: Datomic

SCHEMA CONCEPTS

NBA Team

Name: “wizards”

City: “washington”

Logo: http://cdn.something.com/nba/logos/wizards.svg

Page 78: Datomic

SCHEMA CONCEPTS

NBA Player

Page 79: Datomic

SCHEMA CONCEPTS

NBA Player

Birthdate: INSTANT

Name: STRING

CurrentTeam: REF

Page 80: Datomic

SCHEMA CONCEPTS

NBA Player

Birthdate: #inst September 6 1990

Name: “John Wall”

CurrentTeam: 176523498213

Page 81: Datomic

SCHEMA CONCEPTS

John

Wall

Wizards

CurrentTeam

Page 82: Datomic

SCHEMA CONCEPTS

John

Wall

WizardsPLAYER

TEAM

Page 83: Datomic

SCHEMA CONCEPTS

John

Wall

Wizards

wizards

vs.

nets

PLAYERTEAM

GAME

Page 84: Datomic

SCHEMA CONCEPTS

John

Wall

Wizards

wizards

vs.

nets

PLAYERTEAM

GAME

Dunk @

7:00 1Q

GAME EVENT

Page 85: Datomic

SCHEMA CONCEPTS

John

Wall

Wizards

wizards

vs.

nets

PLAYERTEAM

GAME

Dunk @

7:00 1Q

GAME EVENT

scored by

Page 86: Datomic

SCHEMA CONCEPTS

John

Wall

Wizards

wizards

vs.

nets

PLAYERTEAM

GAME

Dunk @

7:00 1Q

GAME EVENT

Otto

PorterPLAYER

scored by

assisted by

Page 87: Datomic

SCHEMA CONCEPTS

John

Wall

Wizards

wizards

vs.

nets

PLAYERTEAM

GAME

Dunk @

7:00 1Q

GAME EVENT

Otto

PorterPLAYER

scored by

assisted by

Page 88: Datomic

OTHER NOTES

Page 89: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

THE GOOD

89

Page 90: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

THE GOOD

90

Decoupled from Storage

Page 91: Datomic

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

Page 92: Datomic

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

Page 93: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

THE BAD

93

Page 94: Datomic

><LOGO HERESlogan line here www.website.com │ [email protected] ><LOGO HERESlogan line here www.website.com │ [email protected]

THE BAD

94

Not open source

Page 95: Datomic

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

Page 96: Datomic

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

Page 97: Datomic

CODE