Best-Practices

避免因不同步而導致損壞的最佳實踐的數據集成名稱?

  • June 5, 2017

我在系統設計中發現了一個問題,我正在嘗試找到正確的語言來描述問題的原因,以便我可以將其報告給經理,並解決問題。

問題是我們有一個 Web 服務通過將學生系統資料庫中的更改(基於上次編輯列的日期時間)從一個系統複製到另一個系統來同步數據。但是,由於源系統會在學生放棄科目時刪除行,因此不會同步刪除的行。

為了能夠檢測到刪除,系統需要保持已復製到第二個系統的狀態,以便它可以辨識何時刪除行或需要驗證它們的表是否同步,但我不知道如何描述這一點並參考特定的最佳實踐或方法來支持我的論點。

有誰知道可以防止設計中出現此類邏輯錯誤的最佳實踐或數據完整性規則的名稱?

這是數據完整性的問題。您有兩個系統應該反映相同的數據,但它們沒有。

從概念上講,一個系統中的事務在應用於兩個系統之前並不是真正完成的。有幾種方法可以做到這一點:複製可能是最全面的,但會帶來一定的系統和人力成本。

您使用的方法涉及非同步應用事務。您在一個系統中完成,並定期趕上另一個系統。您發現的問題是某種類型的事務沒有被擷取,因此永遠不會應用於遠端系統。

這意味著,就目前而言,數據庫系統作為一個整體(將涉及的兩個系統作為一個系統,至少對於此表而言)不符合 ACID 標準

它不是原子的;主系統中的刪除事務永遠無法完成,因此該事務永遠不會完成,也永遠不會完成。

它不是一致的(上面已充分介紹)。

如果您願意,您可能會提出不孤立或不耐用的論點。

並且,請注意個別系統可能沒問題;事實上,你已經創建了一個混合系統,問題就出在那兒。

有許多修復。我知道一個已經在工作中,但我會提到一個為我的公司工作的:我們使用刪除觸發器來記錄已刪除的記錄,並將刪除已刪除的記錄作為同步過程的一部分。

關鍵在於您擁有一個混合的本土數據庫系統。這沒有什麼問題(對於少量數據,複製或日誌傳送整個數據庫以獲得一個表是多餘的),但是在建構這樣一個系統時可能會錯過一個方面,並且您的系統將更少關注它比 Oracle、MS SQL Server 或 MySQL。

希望這會有所幫助。

引用自:https://dba.stackexchange.com/questions/174790