Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Datomic JFall 2012
Search
Daan van Berkel
November 07, 2012
Technology
37
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
53
Other Decks in Technology
See All in Technology
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
170
Local CI × GitHub Actions
gogutan
2
190
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
その Valkey 使いこなしていますか?
onk
PRO
5
1.5k
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
170
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
130
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
re:Invent初参加で変わったこと、2回目にやってみたいこと(JAWS-UG彩の国埼玉 #12)
mhrtech
2
220
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
4
1.1k
Featured
See All Featured
For a Future-Friendly Web
brad_frost
184
10k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Chasing Engaging Ingredients in Design
codingconduct
0
360
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
4 Signs Your Business is Dying
shpigford
187
23k
Leo the Paperboy
mayatellez
10
2.4k
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