我正在考慮使用cockroachdb以ACID保證的方式在第三範式中寫入數據。所以所有的寫作都會被轉移到cockroachdb。CQRS與polyglot設置中的cockroachdb
這些讀取可能都是基於rowkey到Cassandra的點查找。我相信這樣的讀取設置將消除對Redis緩存的需要,因爲Cassandra會自行快速讀取。所以Cassandra表將根據訪問路徑進行非規範化。
可能存在基於事件的同步插入/更新/刪除內部cockroachdb規範化模式插入/更新/刪除cassandra denormalzied模式。
問題1:
這是否讀/寫分離成適合使用cockroachdb有效的用例?其目的是減少連接並快速讀取以及寫入。蟑螂數據庫也成爲單一的事實源頭,攝取事件源類數據。而像cassandra和elasticsearch這樣的其他數據庫就成爲最終保持同步的查詢投影。
問題2:
此安裝配合,其中N報表需要進行自動完成的金融交易?根據我的理解,讓我們假設在cockroachdb 3NF模式中有事務性地執行了N個SQL語句。在此之後,讀取從Cassandra/ElasticSearch發生,由於同步延遲,這些讀取將不會同步。在這種最終的一致性方案中,如果用戶發送另一個命令以並行地從其他機器獲得相同的結果,則將轉到將在cockroachdb中查找的命令處理程序。我認爲既然CockroachDb符合ACID標準,那麼在查找cockroachdb後,在命令驗證步驟期間,我們將確保無效命令。我相信這個cockroachdb會拋出樂觀鎖定異常,因爲寫入同一個表的一個事務已經在進行中。所以問題是 - 在這種情況下,我們是否應該閱讀CockroachDB而不是Cassandra/ElasticSearch?
問題3
最後用例我腦子裏想的是讓cockroachdb起什麼火花集羣將做卡桑德拉相對於聚合作用。我們可以在cockroachdb中進行聚合,這個聚合包含所有的數據並存儲在cassandra的預聚合表中。雖然ElasticSearch也能夠進行聚合,但這裏有個問題 - 這個用例是否聽起來正確w.r.t使用cockroachdb而不是elasticsearch進行聚合?
感謝您的詳細回覆。我仍然有關於全文搜索的問題,請問cockroachdb中的當前選項是什麼? – fortm
CockroachDB目前沒有任何種類的全文索引。它在[本期]中進行了追蹤(https://github.com/cockroachdb/cockroach/issues/7821)。我們希望有一天能做到,但還沒有安排。 –