最近我聽說Datomic作爲一個現代數據庫,可以在數據建模和可伸縮性方面表現出色。但我對此知之甚少。 Datomic數據庫是否遵循CAP定理?Datomic在CAP Triangle中位於哪個位置?
如果是這樣,它位於CAP三角形的哪個位置?
最近我聽說Datomic作爲一個現代數據庫,可以在數據建模和可伸縮性方面表現出色。但我對此知之甚少。 Datomic數據庫是否遵循CAP定理?Datomic在CAP Triangle中位於哪個位置?
如果是這樣,它位於CAP三角形的哪個位置?
Datomic提供ACID語義和爲寫入CP。關於Datomic的不尋常之處在於,它不會將讀取服務與交易服務共同定位。您不需要通過交易者 進行閱讀,並且您不需要閱讀內部交易即可查看 的一致數據。這使Datomic能夠水平擴展讀取,並讓您獨立決定讀取可用性。
值得一讀http://docs.datomic.com/acid.html,特別是 的含義部分。
Stu,我認爲這應該比'CP for write'更爲詳細。也許可以添加一個更詳細的解釋,說明爲什麼Datomic不完全符合CAP對數據庫系統的假設定義,以及Datomic系統*作爲一個整體如何避免一致性違規(Phantom Reads,Stale Reads,Dirty Reads等)的描述。 )使用例如'conn.sync()'。我很高興自己嘗試一下,但它會更加權威性地來自作者:) –
當然,Datomic通過使用單個寫入器來避免這些一致性違規(因此可以自動線性化)?根據我的理解,'conn.sync()'實際上只是解決了陳舊的讀取問題,並且只有在您從不同的對等讀取新的寫入寫入的情況下。 (因爲那個同伴會寫) –
實際上,在閱讀了關於線性化的更多內容之後,我會說Datomic在默認情況下具有順序一致性。要作爲一個整體進行線性化,需要每個對等方在寫入後立即看到每個事務的結果。我認爲這是可以通過'conn.sync()'來實現的,這是以額外的延遲爲代價的。 –
你可能想要閱讀:https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html –
優秀的文章!感謝那。 @ValentinWaeselynck – cmal