
重構資料庫
演化式資料庫設計
2006
十年前,「重構」這個詞彙僅為少數人所知,主要是在 Smalltalk 社群中。看到越來越多的人學習如何使用重構以有條理且有效率的方式修改工作中的程式碼,真是太棒了。因此,許多人現在將程式碼重構視為軟體開發中不可或缺的一部分。
我身處企業應用程式的世界,而企業應用程式開發的很大一部分就是與資料庫合作。在我最初關於重構的著作中,我挑出資料庫作為重構中的主要問題領域,因為重構資料庫會引發一組新的問題。這些問題會因企業軟體世界中令人遺憾的分歧而惡化,在這個世界中,資料庫專業人員和軟體開發人員被相互的不理解和輕視所隔開。
我喜歡 Scott 和 Pramod 的其中一件事是,他們以不同的方式努力嘗試跨越這個分歧。Scott 關於資料庫的著作一直試圖彌合鴻溝,他關於物件關聯對應的工作對我自己的企業應用程式架構著作有很大的影響。Pramod 可能較不為人所知,但他的影響對我來說同樣巨大。當他開始在 Thoughtworks 與我合作一個專案時,我們被告知資料庫重構是不可能的。Pramod 拒絕了這個觀念,他採用了一些粗略的想法,並將它們轉變為一個有條理的程式,使資料庫結構保持在持續但受控的變動中。這讓應用程式開發人員也能在程式碼中使用演化式設計。從那以後,Pramod 已將這些技術帶給我們的許多客戶,將它們傳播給我們的 Thoughtworks 同事,至少對我們來說,永遠將資料庫從持續設計的障礙清單中移除。
這本書彙整了兩個生活在應用程式與資料之間的無人地帶的人的經驗,並提供了一個關於如何使用資料庫重構技術的指南。如果您熟悉重構,您會注意到最大的改變在於,您不僅必須變更程式和資料結構,還必須管理資料本身的持續遷移。這本書告訴您如何做到這一點,並由這兩位累積的專案經驗(和傷疤)提供支援。
儘管我很高興這本書的出現,但我希望這只是一個開始。在我重構書籍出現後,我很高興地發現有精密的工具出現,並自動執行許多重構任務。我希望資料庫也會發生同樣的事情,我們開始看到供應商提供工具,讓所有人都能更輕鬆地持續遷移架構和資料。在發生這種情況之前,這本書將幫助您建立自己的流程和工具來協助;之後,這本書將作為成功使用此類工具的基礎,具有持久的價值。