Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Datomic JFall 2012
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Daan van Berkel
November 07, 2012
Technology
34
0
Share
Datomic JFall 2012
Introduction to Datomic for JFall 2012
Daan van Berkel
November 07, 2012
More Decks by Daan van Berkel
See All by Daan van Berkel
Liquibase JFall 2011
dvb
0
50
Other Decks in Technology
See All in Technology
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
3.5k
AIが盛んな時代に 技術記事を書き始めて起きた私の中での小さな変化
peintangos
0
360
GKE Agent SandboxでAIが生成したコードを 安全に実行してみた
lamaglama39
0
200
GitHub Copilot CLI と VS Code Agent Mode の使い分け
tomokusaba
0
140
エージェント時代の UIとAPI、CLI戦略
coincheck_recruit
0
150
フロントエンドの相手が変わった - AIが加わったWebの新しいインターフェース設計
azukiazusa1
33
11k
20260513_生成AIを専属DSに_AI分析結果の検品テクニック_ハンズオン_交通事故データ
doradora09
PRO
0
200
生成AIはソフトウェア開発の革命か、ソフトウェア工学の宿題再提出なのか -ソフトウェア品質特性の追加提案-
kyonmm
PRO
2
850
独断と偏見で試してみる、 シングル or マルチエージェント どっちがいいの?
shichijoyuhi
1
240
The 7 pitfalls of AI
ufried
0
200
雑談は、センサーだった
bitkey
PRO
2
200
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
290
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
500
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
770
The Curse of the Amulet
leimatthew05
1
12k
Designing for humans not robots
tammielis
254
26k
Mind Mapping
helmedeiros
PRO
1
180
Google's AI Overviews - The New Search
badams
0
1k
Designing Experiences People Love
moore
143
24k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Believing is Seeing
oripsolob
1
120
Are puppies a ranking factor?
jonoalderson
1
3.4k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Transcript
Datomic a time-aware NoSQL database Daan van Berkel
Agenda •Agenda •Background •Introduction •Demonstration •Exploration •Conclusion
Background A people without the knowledge of their past history,
origin and culture is like a tree without roots. - Marcus Garvey
Background http://en.wikipedia.org/wiki/Moore%27s_law Moore's Law: the number of transitors on integrated
circuits doubles approximately every two years
Background http://en.wikipedia.org/wiki/Moore%27s_law
Background http://www.jcmit.com/memoryprice.htm
Background http://www.jcmit.com/memoryprice.htm
Background Cost drives design if memory is expensive update in
place this loses information http://en.wikipedia.org/wiki/Relational_database
Background Properties of RDBS ACID •Atomic •Consistent •Isolated •Durable
Background Properties of RDBS ACID •Atomic •Consistent •Isolated •Durable "All
or nothing" if one part fails, it should fails entirely
Background Properties of RDBS ACID •Atomic •Consistent •Isolated •Durable "I
am the law" data should always meet the constraints set out by the design
Background Properties of RDBS ACID •Atomic •Consistent •Isolated •Durable "Play
nice" concurrent executions should not be aware of each other presence
Background Properties of RDBS ACID •Atomic •Consistent •Isolated •Durable "Stay
put" Changes once made should be permanent
Background A lot of responsibility for RDBMS •Query •Storage •ACID
Background
Background NoSQL •Distributed •Not Relational ◦Document ◦Key-Value
Background NoSQL •Distributed •Not Relational ◦Document ◦Key-Value Loses ACID principle
http://localhost:8080
Introduction
Introduction •Clojure ◦Functional ▪Lisp ▪Scheme ◦JVM ▪Integration •Datomic ◦NoSQL ◦Time
aware
Introduction http://www.datomic.com/
Introduction http://www.datomic.com/
Introduction http://www.datomic.com/
Introduction http://www.datomic.com/
Introduction Datomic stores Datoms Representation of a fact •entity •attribute
•value •transaction
Introduction Datomic stores Datoms Representation of a fact •entity •attribute
•value •transaction Examples [Daan ate pancakes T37] [Daan drank milk T37] [Daan ate pizza T51] [Daan wentTo gym T79] [Mink wentTo gym T79]
Introduction Change database by •Adding •Retracting in a transaction Preserve
history [:db/id 37 :likes "fish"] [:db/retract 37 :likes "fish"]
Introduction Query by [:find ... in ... where ...] •Variables
•Inputs •Clauses [:find ?e :in $ :where [?e :likes "fish"]]
Demonstration •BeanShell •Seattle Communities Community - name - url -
neighbourhood - category - org type - com type Org Type - community - commercial - nonprofit - personal Com Type - email-list - twitter - facebook-page - blog - website - wiki Neighbourhood - name - district District - name - region
Exploration Transaction •Query over time [ :find ?v ?t :in
$, ?a :where [?a :account/balance ?v ?t] ]
Exploration Invoking functions all community names with a name less
than "C" [ :find ?n :where [?e :community/name ?n] [(.compareTo ?n "C") ?res] [(< ?res 0)] ]
Exploration Full Text Search [ :find ?e ?n :in $,
?k :where [(fulltext $ :community/name ?k) [[ ?e ?n ]]] ]
Exploration Custom rules [[:twitter ?c] [?c :community/type :community.type/twitter]] [ :find
?n :in $ % :where [?c :community/name ?n](:twitter ?c)] ]
Exploration Time awareness db.asOf(date) db.since(date) db.with(transaction)
Conclusion Datomic •NoSQL •Time Aware •State of the Art •Accessible
API •Optimized reads •Highly Concurrent
Questions Contact
[email protected]
@daan_van_berkel dvberkel https://github.com/dvberkel/jfall2012-datomic http://goo.gl/4ENKb