首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監(jiān)理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復習資料 > 網(wǎng)絡工程師 > 正文

軟考:數(shù)據(jù)庫設計中的方法

引言

    過去幾年中,我們將敏捷方法應用于數(shù)據(jù)庫設計,總結出一些技巧,使得當應用程序發(fā)展時,數(shù)據(jù)庫也能夠進化,這是敏捷方法的一個重要屬性。我們的方法是通過持續(xù)集成以及自動重構,通過數(shù)據(jù)庫管理人員(DBA)和應用開發(fā)人員的緊密合作來設計數(shù)據(jù)庫。這些技巧在應用開發(fā)的各個時期都有效。

1 敏捷方法學

    近年來,出現(xiàn)了一種新的軟件開發(fā)方法學——敏捷方法學。這給數(shù)據(jù)庫設計提出了一些新的、巨大的需求。這些需求的一個中心就是進化設計。在一個敏捷項目中,需要假定我們并不能事先確定系統(tǒng)的需求,因此在項目的初期有一個詳細設計階段的想法是不現(xiàn)實的。系統(tǒng)的設計必須隨著軟件的變化而進化。敏捷方法,尤其是極限編程(XP),通過一些實踐使這種進化設計成為可能。在數(shù)據(jù)庫設計采用敏捷方法,反復迭代。

    許多人會懷疑敏捷方法能否用于有大型數(shù)據(jù)庫組件的系統(tǒng),但我們的確使用了許多敏捷和XP技巧,用于解決基于大型數(shù)據(jù)庫的項目中的進化與迭代問題。

3.5 所有的變化應該數(shù)據(jù)庫重構

    重構技術就是應用所有可控技術來改變現(xiàn)有的代碼基礎,與此類似我們定義了數(shù)據(jù)庫重構也給數(shù)據(jù)庫的改變提供了類似的控制。

    數(shù)據(jù)庫重構的不同之處在于它必須將三種不同的變化同時完成:

(1) 改變數(shù)據(jù)庫計劃

(2) 進行數(shù)據(jù)遷移

(3) 改變數(shù)據(jù)庫存取代碼

    于是當描述數(shù)據(jù)庫重構時,我們必須描述變化的三個方面,并確保在應用另一個重構之前完成了這三種變化。

    我們必須文檔化不同的數(shù)據(jù)庫重構,因此我們還不能詳細描述他們。然而這里有幾點需要指出:像代碼重構一樣,數(shù)據(jù)庫重構非常微;概念鏈一系列微小的變化,數(shù)據(jù)庫和代碼很相似;變化的三個屬性使保持小的變化更加重要。

    許多數(shù)據(jù)庫重構,如增加一個字段,可以不必更新所有存取系統(tǒng)的代碼來完成。但是如果在使用新計劃之前并不了解它,該字段將會無用,因為新計劃不知道其變化之處。許多變化,沒有考慮整個系統(tǒng)計劃,我們稱之為破壞性變化,如將一個已經存在的空值列設置為非空。破壞性變化需要多加留心,留心的程度依賴于包含破壞性的程度。一個小破壞性的例子是將一個已經存在的空值列設置為非空,在這種情況下你可以蒙著頭做。

    而重構將考慮數(shù)據(jù)庫中空值數(shù)據(jù),開發(fā)人員將更新數(shù)據(jù)庫映射代碼,因此更新不會破壞其它人的代碼;如果偶然會破壞,開發(fā)人員將在建立和使用測試時發(fā)現(xiàn)問題。

    將一個經常使用的表分成兩個是一種更復雜的破壞。在這種情況中提前讓所有人知道變化到來很重要,這樣他們可以有所準備。此外應該在一個更安全的時刻來實施變化。這里面很重要的一點是選擇適用于你做出的變化的過程。

3.6 自動重構

    在代碼世界中許多語言能夠實現(xiàn)自動重構。在計劃變化和數(shù)據(jù)遷移過程中,這種自動化對于數(shù)據(jù)庫也非常重要。因此每個數(shù)據(jù)庫重構都可以通過編寫SQL DDL(對于計劃變化)和DML(對于數(shù)據(jù)遷移)來完成。這些變化不是通過手工實現(xiàn),而是通過一些SQL語句來自動實現(xiàn)變化。

    一旦完成代碼,我們保存這些代碼文件來產生數(shù)據(jù)庫變化的完整的變化記錄,作為數(shù)據(jù)庫重構的結果。我們于是可以更新任何實例到最新的主數(shù)據(jù)庫,通過運行在我們拷貝主數(shù)據(jù)庫來產生更早的數(shù)據(jù)庫實例的變化記錄。

    自動化變化的序列化是對于持續(xù)集成和遷移產品數(shù)據(jù)庫的一個基本功能。

    為了最后產品數(shù)據(jù)庫我們并不在常規(guī)迭代周期中實施變化,我們在每一個發(fā)布之間建立完整的數(shù)據(jù)庫重構變化日志。毫無疑問,這是一個巨大的變化,我們必須離線實施該變化,在實際應用之前先測試遷移計劃絕對是明智之舉。迄今為止,這項技術相當管用,通過將大變化分解為小的簡單的變化,我們可以對產品數(shù)據(jù)進行大的變化,同時又不會給我們太多的麻煩。套用兵法中的一句話,就是“化整為零”。

    除了自動化向前的變化,我們也要考慮重構時向后的變化,如果能夠做到這樣就可以回到以前的數(shù)據(jù)庫狀態(tài)。在我們的項目中并沒有這樣做,因為沒有這個需求,但這同樣是很重要的基本原則。

3.7 自動地更新所有開發(fā)人員的數(shù)據(jù)庫

    人們變化和更新主數(shù)據(jù)庫,但是如何發(fā)現(xiàn)主數(shù)據(jù)庫已經發(fā)生變化?在傳統(tǒng)的持續(xù)集成有源代碼的環(huán)境中,開發(fā)人員在提交變化之前先更新主數(shù)據(jù)庫。這樣他們就可以在提交變化給共享主數(shù)據(jù)庫之前,解決他們自己的機器上的問題。

    每次主數(shù)據(jù)庫發(fā)生改變時,我們都要更新開發(fā)人員的數(shù)據(jù)庫。當主數(shù)據(jù)庫發(fā)生變化時,我們自動化更新所有項目成員的數(shù)據(jù)庫。相同的重構代碼更新主數(shù)據(jù)庫上的同時,自動更新成員數(shù)據(jù)庫。也許有人認為在開發(fā)人員不知情的情況下,更新開發(fā)人員數(shù)據(jù)庫會產生很多問題,但在實踐中我們沒發(fā)現(xiàn)什么問題。當然,這只在人們聯(lián)網(wǎng)時管用。所以當開發(fā)人員離線時,必須盡快與主數(shù)據(jù)庫重新保持同步。

3.8 清晰地分離所有的數(shù)據(jù)庫獲取代碼

    為了理解數(shù)據(jù)庫重構的結果,了解應用程序如何使用數(shù)據(jù)庫也非常重要。如果SQL語句分布在代碼基礎周圍,則很難這樣去做。因此一個清晰的數(shù)據(jù)庫獲取層很重要,它用來顯示數(shù)據(jù)庫如何被使用,在哪里被使用。

    清晰的數(shù)據(jù)庫層有很多好處。它減少了開發(fā)人員操縱數(shù)據(jù)庫時需要使用SQL知識的地方,這樣使對SQL語句不太熟悉的開發(fā)人員更易開發(fā)。對于DBA來說,給他提供了清晰的代碼,可以清楚地了解數(shù)據(jù)庫將如何使用。這也幫助準備索引、數(shù)據(jù)庫優(yōu)化,優(yōu)化SQL語句,使DBA更好地理解數(shù)據(jù)庫如何被使用。

上一頁  1 2 3 4 5 下一頁
文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。