有一回,我看到某位在教 DDD (domain-driven design) 的老師寫到類似的內容,他開的事件溯源的課程,學員上完課之後,跟他表示,「老師,這個事件溯源,好像不知道要如何應用?」
類似的故事還有其它的,我曾經在某社服務過,也曾問過那邊的同事,他們是否曾經應用過事件溯源 (event sourcing) 。我的同事回答:「有,但是那個專案後來慘敗,還有人生氣就把工作辭了。」
奇怪,怎麼「事件溯源」我用起來就好好的,一點困難也沒有?
大家可能以為我要告訴你們,我是什麼 10x 工程師,不是,我是跟大家講,我的秘訣是直接使用一個內建事件溯源的資料庫:Datomic
在 day 4 的時候,我們談到了阻抗不匹配問題,並且提到了阻抗不匹配常見的兩個形式: N+1 查詢造成大量 I/O,拖慢效能。 N+1 查詢可能因為查詢之間...
先來解說圖: 綠色的圓圈部分:代表「改變資料庫狀態的事件」,是一個又一個資料原子 (Datom)。資料原子是用 E/A/V/T/op 的形式記著真實世界的資...
Datomic 的 schema 比 SQL 資料庫靈活得多,這邊從三個不同的面向來探討靈活性: 不需要 NULL 值 共用欄位綱要 不需要使用橋接表 (b...
在開始之前,我們要再做一些詞彙的釐清: 在 Datomic 的官方文件裡,對資料庫寫入稱之為交易 (transaction)。 在 Datomic 的官方文件...
不知道大家有沒有跟我一樣,曾經為了該如何設計 SQL 資料表的主鍵 (primary key) 而困擾不已? 每次遇到這種問題,第一個要考慮的就是: 要用自然...
在 Day25 我們談到了列舉類型 (enum),某種程度來講,列舉類型也算是一種條件限制,它限制了填入特定欄位的值只能是某個固定的集合。 條件限制在 SQL...
之前在 Day25 討論主鍵的設定有談到:可以視 Datomic 是一種高階資料庫,因為它讓使用者可以不用花心力去思考主鍵如何設計,把心力專注於業務邏輯 (bu...
Datomic 就像許多的資料庫一樣,資料量大了之後,就算是一般的查詢也很容易變慢。要改進 Datomic 的效能時,可以應用的方法有兩種: 指導原則 量測工...
在之前的好幾篇文章,談論主鍵 (prirmary key)、條件限制 (constraints)、索引 (index),我都主張 Datomic 是一種高階資料...
參考這張圖,我們從三個不同的面向切入來探討 Datomc 帶來的價值。 事件溯源 Datomic 的事件溯源模型讓每次的交易 (transaction) 都被...