2010-08-31 73 views
0

我認爲這是一個長鏡頭,但這裏有雲:修復數據完整性

的基本問題是:如何開發團隊開始在大,損壞的數據集修復數據的完整性?

我正在幫忙的公司有一個巨大的MySQL/PHP5系統,有幾年的無用數據,無效數據,引用錯誤等等。最重要的是,這些數據引用了一些在線服務的數據,例如作爲Google AdWords。

因此,本地數據庫存在問題,本地和遠程(例如AdWords)之間的關係也存在問題,導致問題複雜化。

有沒有人有提示,技巧或最佳做法,他們可以分享開始修復數據完整性?並保持系統中的數據完整性,該系統可以快速不斷地添加和更新?

+0

您需要更多地指定在這種情況下「受損」的含義 - 您是在談論損壞的引用,而不是物理損壞的數據,是正確的?在線服務在哪裏?...?那些引用如何? – 2010-08-31 22:30:28

+0

對在線服務的引用是通過將在線數據的ID存儲在本地數據庫中來處理的。我們有一行代表了本地數據與一列,例如存儲該實體的AdWords ID的「Advertiser_Id」。 是的,通過「損壞」我的意思是它是破碎的引用和不同步的數據,從而「打破」使用它的系統。再次以AdWords爲例,人們使用在線界面添加/刪除/更新一些數據,從而導致本地副本不同步。 – bejonbee 2010-09-01 16:36:27

回答

0

的一個大問題是確定你打算做有關該問題的資料中看到:

  • 沒有
  • 重構從數據通過代碼的其他地方和方便舉行
  • 重建數據手動
  • 將其刪除(或者優選存檔它)

而爲了做到這一點,你需要建立如何問題數據影響系統/組織以及決議如何影響系統/組織。

這是您的第一級分類。一旦你有了這個,你需要開始識別具體的問題,並由此推導出一組定義錯誤模式的語義規則。

然後,這應該允許您定義所需的修復程序,有效地確定工作的優先順序並規劃資源利用率。它還應該允許您優先考慮,計劃和部分識別根本原因消除。

我不確定你對'巨大'的定義是什麼 - 但我會推斷這意味着有很多程序員對它做出貢獻 - 在這種情況下,你肯定需要建立管理數據的標準和程序誠信前進,就像你應該在性能和安全方面做的一樣。

您定義的規則是正在進行數據管理的起點,但您應該考慮將來如何應用這些規則 - 爲每個表添加時間戳字段/維護引用違反特定規則的行的表您不需要在每次檢查數據時都處理所有數據 - 只是自上次檢查以來已更改的內容 - 最好跟蹤從違規列表中刪除的案例,以及正在添加的那些。

是否保留應用修復和相應規則違規的記錄 - 並分析數據以識別重新分解可能導致更易維護的代碼的熱點。

0

根據需求和存在多少「損害」,創建新數據庫並修改應用程序以並行更新可能會更加謹慎。

有效的數據可以導入到新的d/b中,然後逐步提取一系列提取可以添加有效數據並導入這些數據,直到努力增加到不再有意義嘗試恢復的程度損壞的數據。當然,一個未損壞的不完整數據庫比腐敗數據庫更好更有用 - 只要它損壞了,就不能稱之爲「完整」。