2017-06-16 35 views
5

最近我聽說Datomic作爲一個現代數據庫,可以在數據建模和可伸縮性方面表現出色。但我對此知之甚少。 Datomic數據庫是否遵循CAP定理?Datomic在CAP Triangle中位於哪個位置?

如果是這樣,它位於CAP三角形的哪個位置?

enter image description here

+0

你可能想要閱讀:https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html –

+0

優秀的文章!感謝那。 @ValentinWaeselynck – cmal

回答

6

Datomic提供ACID語義和爲寫入CP。關於Datomic的不尋常之處在於,它不會將讀取服務與交易服務共同定位。您不需要通過交易者 進行閱讀,並且您不需要閱讀內部交易即可查看 的一致數據。這使Datomic能夠水平擴展讀取,並讓您獨立決定讀取可用性。

值得一讀http://docs.datomic.com/acid.html,特別是 的含義部分。

+0

Stu,我認爲這應該比'CP for write'更爲詳細。也許可以添加一個更詳細的解釋,說明爲什麼Datomic不完全符合CAP對數據庫系統的假設定義,以及Datomic系統*作爲一個整體如何避免一致性違規(Phantom Reads,Stale Reads,Dirty Reads等)的描述。 )使用例如'conn.sync()'。我很高興自己嘗試一下,但它會更加權威性地來自作者:) –

+0

當然,Datomic通過使用單個寫入器來避免這些一致性違規(因此可以自動線性化)?根據我的理解,'conn.sync()'實際上只是解決了陳舊的讀取問題,並且只有在您從不同的對等讀取新的寫入寫入的情況下。 (因爲那個同伴會寫) –

+0

實際上,在閱讀了關於線性化的更多內容之後,我會說Datomic在默認情況下具有順序一致性。要作爲一個整體進行線性化,需要每個對等方在寫入後立即看到每個事務的結果。我認爲這是可以通過'conn.sync()'來實現的,這是以額外的延遲爲代價的。 –

相關問題