大多數的思想領袖都曾經被認為是異端邪說。
-- Alan Weiss (Million Dollar Consulting 作者)
我是 IT 顧問,通常在協助客戶完成專案的時候,也有機會得到客戶的一些評語,今年得到了客戶如下的評論:
老師,你居然做得到我們銀行的生意,這簡直是不可能的事。我們這邊整間銀行都充滿了保守的主流思想,相較之下,你簡直就是個邪教教主…。
聽到客戶這樣子誇獎我,「桃李不言,下自成蹊」這句屁到曾經被我的前主管怒斥不已的幹話,又熊熊差點說出口。唉,我只不過是建議銀行使用現代資料棧 (modern data stack) 來取代 shell script 與 stored procedure 而已。
由於已經是第三次得到這種評語,我決定來跟大家談談異端的極致 --- Datomic 資料庫。
2024 年,Datomic 在 db-engine 網站上,總排名 143, 關係型資料庫排名 67 (註1)。不過,其實 db-engine 網站上有一些特殊類別,比方說,Event Stores, Graph DBMS, Time Series DBMS 等。不知道什麼原因,Datomic 並沒有被 db-engine 網站視為是 Event Stores 資料庫,但是,如果有列入的話,我認為,Datomic 很有機會在這個 Event Stores 的類別排名第 1 位。
既然我主張 Datomic 可以被歸類為事件儲存 (Event Stores) 的資料庫,它當然是支援事件溯源 (event sourcing) 這種特殊功能了。
讀者可能以為我的建議是:「如果需要建構大規模的分散式系統、要實作事件溯源時,可以考慮 Datomic。」並不是。我的建議是:「要不要考慮下一個專案就用 Datomic 來取代傳統的關係型資料庫?如果下一個專案只是一般的 OLTP 應用的話。」(註2)
更換資料庫是很難的事情。許多公司都是等到系統已經大致建立了,才設法要做出事件溯源之類的功能,以做到水平擴展 (scale out)。如果最初就有考慮到,日後可能要建構分散式系統的話,要不要在專案的最初就把基礎打好呢?
當然,要做技術選型,有許多重要的考量:
我們會在之後的文章一一探討。
註:
其它資源: