我有一個NoSQL數據庫用於數據處理,因爲它可以比SQL更快地用於我的應用程序。我把我們的NoSQL數據庫看成是一個緩存的信息,SQL是數據的權威,而NoSQL存儲正在隨着變化而更新。現在這是通過我們的應用程序完成的,所以當請求進入更改時,它將在SQL數據庫和NoSQL數據庫中完成。有時NoSQL更新失敗或其他情況會導致NoSQL數據庫不同步,這有時會失敗。保持單獨數據庫同步的策略
我可以每X分鐘進行一次批量更新,但是這是數據存儲中的大量信息,需要幾個小時才能確保它們同步。我們有一些時間戳來改變已經改變的內容,但這並不總是準確的。
我在想什麼一些推薦的策略來保持數據存儲(輔助數據庫緩存)與我的主要商店同步?
您提到的日期字段,您是否在消息和NoSQL實體級別執行此操作?你做了有狀態更新(追加)還是無狀態更新(JMS消息中的整個狀態)?對於你的日期字段,如果你的NoSQL實體更新了,是否忽略了任何「較老的」JMS消息?我正在爲我的CRUD使用Web服務,您是否在排隊的CRUD中使用了類似的概念? – Nicholas
我們把日期字段放在SQL中的記錄級別。 CreateDate,UpdateDate。然後,您可以針對這些差異運行差異併發布已更改/新增內容。在應用程序級別,我們將一個對象寫入SQL,然後將其序列化爲JSON並通過JMS發送它。對於所有對NoSQL的寫入,我們做了插入操作。這避免了必須知道更新的問題。例如:有人在CMS中撰寫新文章。我們將它寫入SQL併發送JMS消息,並將對象序列化爲JSON。 NoSQL寫入會插入(如果不存在則寫入新的,如果存在則更新)。這有幫助嗎? – ryan1234
如果有人刪除了一篇文章,是刪除一個單獨的隊列,還是您使用了一個隊列,並且它有一個用於操作(ADD,DELETE)的字段,或者您有一個隊列用於添加,一個用於刪除? – Nicholas