iT邦幫忙

鐵人檔案

2024 iThome 鐵人賽
回列表
Software Development

Datomic,內建事件溯源的資料庫。 系列

有一回,我看到某位在教 DDD (domain-driven design) 的老師寫到類似的內容,他開的事件溯源的課程,學員上完課之後,跟他表示,「老師,這個事件溯源,好像不知道要如何應用?」

類似的故事還有其它的,我曾經在某社服務過,也曾問過那邊的同事,他們是否曾經應用過事件溯源 (event sourcing) 。我的同事回答:「有,但是那個專案後來慘敗,還有人生氣就把工作辭了。」

奇怪,怎麼「事件溯源」我用起來就好好的,一點困難也沒有?

大家可能以為我要告訴你們,我是什麼 10x 工程師,不是,我是跟大家講,我的秘訣是直接使用一個內建事件溯源的資料庫:Datomic

參賽天數 25 天 | 共 25 篇文章 | 2 人訂閱 訂閱系列文 RSS系列文
DAY 1

序:客戶說我是個異端邪說

大多數的思想領袖都曾經被認為是異端邪說。 -- Alan Weiss (Million Dollar Consulting 作者) 我是 IT 顧問,通常在...

2024-08-20 ‧ 由 Laurence Chen 分享
DAY 2

事件溯源

事件溯源 (event sourcing) 是一種保存應用程式狀態的方法:不同於傳統的 RDBMS 資料庫只儲存表格當下的狀態,事件溯源則是將每個對應用程式造成...

2024-08-21 ‧ 由 Laurence Chen 分享
DAY 3

一些 SQL 資料庫共同的缺陷

之前,我跟朋友介紹 Datomic 時,有一些朋友會在第一時間反問: 你講的這個資料庫是 SQL 還是 noSQL ? 我通常是這樣子回答: 不是 SQL...

2024-08-22 ‧ 由 Laurence Chen 分享
DAY 4

一些 SQL 資料庫共同的缺陷 - 續

鎖與隔離的問題 SQL 資料庫的寫入,必須要加上鎖 (lock) 才能確保一致性。 參考下方的示意圖,A 與 B 是兩條執行緒,如果它們同時對同一筆資料做更新的...

2024-08-23 ‧ 由 Laurence Chen 分享
DAY 5

Datomic 所屬的資料庫類別

多年前,有一本 Martin Fowler 寫的書,NoSQL Distilled,它將 NoSQL 資料分成四大類別: 鍵值資料庫 文件資料庫 欄式資料庫...

2024-08-24 ‧ 由 Laurence Chen 分享
DAY 6

先從 Datalog 談起 -- part 1 (edn)

對資料庫有點經驗的讀者應該會心想:「資料庫有這麼多的細節,還是先看看 Datalog 語言如何吧?如果看起來沒有什麼道理而且很難寫,還要花時間繼續研究下去嗎?」...

2024-08-25 ‧ 由 Laurence Chen 分享
DAY 7

先從 Datalog 談起 -- part 2 (basic queries)

在 part 1 裡,有舉出一個 Datalog 查詢的例子: [:find ?title :where [_ :movie/title ?title]]...

2024-08-26 ‧ 由 Laurence Chen 分享
DAY 8

先從 Datalog 談起 -- part 3 (data patterns)

之前在解釋基本查詢的運作時,提到了 用 [?e :person/name "Ridley Scott"] 這個條件比對整個資料庫的內容,:...

2024-08-27 ‧ 由 Laurence Chen 分享
DAY 9

先從 Datalog 談起 -- part 4 (parameterized queries)

使用 SQL 資料庫時,我們有時候會需要用到參數化查詢,比方說,為了阻擋 SQL injection 的時候。下方是一段 Postgres 的範例: 準備 S...

2024-08-28 ‧ 由 Laurence Chen 分享
DAY 10

先從 Datalog 談起 -- part 5 (parameterized queries)

之前我們討論過,傳遞單一參數進入查詢的作法了,但是,有時候我們需要傳遞進入查詢的資料並非單一變數,而是陣列 (array)、甚至是數組 (tuple) 的陣列。...

2024-08-29 ‧ 由 Laurence Chen 分享