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

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

引言

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

1 敏捷方法學(xué)

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

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

3 實(shí)踐

    我們有關(guān)于數(shù)據(jù)庫(kù)進(jìn)化設(shè)計(jì)的方法依賴于一些重要的實(shí)踐。

3.1 數(shù)據(jù)庫(kù)管理人員與開發(fā)人員緊密合作

    敏捷方法的一個(gè)重要原則就是擁有不同技能和背景的人能夠緊密合作。正式的會(huì)議和文檔不能達(dá)到充分交流的效果,因此他們需要一直一起工作、親密合作。所有的項(xiàng)目組成員都需要緊密合作:系統(tǒng)分析人員、項(xiàng)目經(jīng)理、行業(yè)專家、開發(fā)人員以及數(shù)據(jù)庫(kù)管理人員(DBA)。

    開發(fā)人員的每項(xiàng)工作可能都需要DBA的幫助,開發(fā)人員和DBA需要考慮是否需要對(duì)數(shù)據(jù)庫(kù)計(jì)劃做很大的改變。開發(fā)人員向DBA咨詢?nèi)绾螒?yīng)對(duì)變化:開發(fā)人員知道需要什么新的功能,而DBA對(duì)應(yīng)用中的數(shù)據(jù)有全局的觀念。

    為了達(dá)到親密合作的效果,DBA必須使自己易于接近。DBA需要留出幾分鐘的時(shí)間,讓開發(fā)人員來提問。必須確保DBA和開發(fā)人員坐在一起,這樣他們就很容易溝通。同時(shí)必須確保應(yīng)用設(shè)計(jì)會(huì)議是公開的,這樣DBA可以隨時(shí)加入進(jìn)來。在很多情況下我們發(fā)現(xiàn)人們?cè)贒BA和應(yīng)用開發(fā)人員之間建立屏障,這些屏障必須去除,這樣進(jìn)化數(shù)據(jù)庫(kù)設(shè)計(jì)才有可能。

3.2 每個(gè)項(xiàng)目組成員都有自己的數(shù)據(jù)庫(kù)實(shí)例

    進(jìn)化設(shè)計(jì)認(rèn)為人們通過嘗試來進(jìn)行學(xué)習(xí),在編程期間開發(fā)人員在如何實(shí)施某個(gè)特征,應(yīng)用某個(gè)首選的方案之前做一些試驗(yàn),數(shù)據(jù)庫(kù)設(shè)計(jì)也是如此。因此,每個(gè)開發(fā)人員都有自己用來試驗(yàn)的實(shí)例,而不必影響其它人,這一點(diǎn)很重要,這樣每個(gè)人都可以根據(jù)自己的需要進(jìn)行試驗(yàn)。

    許多DBA專家認(rèn)為多個(gè)數(shù)據(jù)庫(kù)是一種麻煩,不易于實(shí)際應(yīng)用,但我們發(fā)現(xiàn)操作一百個(gè)左右的數(shù)據(jù)庫(kù)是很容易的。當(dāng)然其中很重要的是擁有便利的工具,使你像操作文件一樣操作數(shù)據(jù)庫(kù)。

3.3 開發(fā)人員數(shù)據(jù)庫(kù)經(jīng)常集成到共享主數(shù)據(jù)庫(kù)

    盡管開發(fā)人員可以在他們自己的空間頻繁試驗(yàn),但是將不同的工作定期匯合也是很重要的。應(yīng)用開發(fā)需要一個(gè)共享主數(shù)據(jù)庫(kù),所有的工作都匯集于此。當(dāng)開發(fā)人員開始工作時(shí)他們從主數(shù)據(jù)庫(kù)獲取拷貝到自己的工作空間,進(jìn)行操作和修改,然后將變化反饋進(jìn)入主數(shù)據(jù)庫(kù)。我們的規(guī)定是每個(gè)開發(fā)人員要每天提交匯合一次。

    假設(shè)開發(fā)人員上午10點(diǎn)開始一項(xiàng)開發(fā)任務(wù),這項(xiàng)任務(wù)的一部分是改變數(shù)據(jù)庫(kù)計(jì)劃。如果這種改變很簡(jiǎn)單,如增加一個(gè)字段,他就可以自己決定。通過數(shù)據(jù)字典的幫助,開發(fā)人員還必須確保他想增加的字段數(shù)據(jù)庫(kù)中沒有,但是如果他與DBA討論這種可能的變化,那么工作就要簡(jiǎn)單的多。

    當(dāng)他準(zhǔn)備開始時(shí),先從主數(shù)據(jù)庫(kù)中獲取一份拷貝,這樣就可以自由地改變數(shù)據(jù)庫(kù)計(jì)劃和代碼。因?yàn)樗褂玫氖亲约旱臄?shù)據(jù)庫(kù)實(shí)例,所以不會(huì)影響別人。在某個(gè)時(shí)候,如下午3點(diǎn),他很清楚需要什么樣的數(shù)據(jù)庫(kù)變化,甚至此時(shí)他還沒有完全做完他的編碼工作。這時(shí)他找到DBA,告訴他想要的變化,這時(shí)DBA可以提出開發(fā)人員沒有考慮到的問題。當(dāng)然大多數(shù)時(shí)候都很好,DBA同意這種變化(通過一個(gè)或多個(gè)數(shù)據(jù)庫(kù)重構(gòu))。DBA使變化馬上發(fā)生(除非他們是破壞性的變化),這樣開發(fā)人員可以繼續(xù)他的工作,在任何時(shí)候提交代碼,因?yàn)镈BA已經(jīng)將這些變化發(fā)送給主數(shù)據(jù)庫(kù)。

    可以將這個(gè)原則看作類似于持續(xù)集成,持續(xù)集成常用于源碼管理。實(shí)際上這就是將數(shù)據(jù)庫(kù)看作是另一種源代碼,因?yàn)榕渲霉芾硐到y(tǒng)象控制源代碼一樣控制主數(shù)據(jù)庫(kù)。只要我們構(gòu)建成功,數(shù)據(jù)庫(kù)和源代碼一起被送入配置管理系統(tǒng),這樣我們就有兩者完整和同步的版本歷史。

    對(duì)于源代碼來說,集成中的問題被源代碼控制系統(tǒng)處理。對(duì)于數(shù)據(jù)庫(kù)來說,要做的工作稍微多一些,所有數(shù)據(jù)庫(kù)的變化都需要妥善處理,如自動(dòng)化數(shù)據(jù)庫(kù)重構(gòu)。此外DBA需要審視任何數(shù)據(jù)庫(kù)變化,保證其符合整個(gè)數(shù)據(jù)庫(kù)的計(jì)劃。為了使這項(xiàng)工作做的比較平穩(wěn),在集成的過程中不應(yīng)該出現(xiàn)大的變化——因此需要DBA與開發(fā)人員緊密合作。

    我們強(qiáng)調(diào)經(jīng)常性的小集成,因?yàn)樗确墙?jīng)常性的大集成容易得多。集成的復(fù)雜度會(huì)隨著集成的規(guī)模呈幾何級(jí)度增加,因此做許多小的變化在實(shí)踐中更易于實(shí)現(xiàn),當(dāng)然這看上去與直覺相抵觸。

3.4 數(shù)據(jù)庫(kù)包含計(jì)劃和測(cè)試數(shù)據(jù)

    當(dāng)提到數(shù)據(jù)庫(kù)的時(shí)候,我們并不僅僅指數(shù)據(jù)庫(kù)計(jì)劃,而且還包括相當(dāng)規(guī)模的數(shù)據(jù)。這些數(shù)據(jù)包括應(yīng)用所需的標(biāo)準(zhǔn)數(shù)據(jù),如全國(guó)所有的省份名,以及一些樣本客戶的樣本數(shù)據(jù)。

數(shù)據(jù)的作用:

(1) 易于測(cè)試

    使用大量的自動(dòng)化測(cè)試可以幫助穩(wěn)定應(yīng)用的發(fā)展,這樣的測(cè)試在敏捷方法里是常用的方法。為了使這些測(cè)試有效進(jìn)行,很理智的方法是在一個(gè)有樣本測(cè)試數(shù)據(jù)的基礎(chǔ)上工作,這樣所有的測(cè)試可以在程序正式進(jìn)行之前完成。

(2) 測(cè)試數(shù)據(jù)庫(kù)的遷移

    除了測(cè)試代碼之外,樣本測(cè)試數(shù)據(jù)允許我們測(cè)試數(shù)據(jù)庫(kù)的遷移,當(dāng)改變了數(shù)據(jù)庫(kù)的計(jì)劃后,我們還必須保證所有的計(jì)劃變更也能夠處理樣本數(shù)據(jù)。

    在大多數(shù)項(xiàng)目中這些樣本數(shù)據(jù)是虛構(gòu)的,然而在某些項(xiàng)目中人們使用實(shí)際數(shù)據(jù)作為例子,在這些情況下,數(shù)據(jù)從先前由自動(dòng)化數(shù)據(jù)遷移代碼的系統(tǒng)中提取出來。很明顯不能馬上遷移所有的數(shù)據(jù),因?yàn)樵谠缙诘袛?shù)據(jù)庫(kù)只有小部分建立起來。但是我們希望當(dāng)應(yīng)用和數(shù)據(jù)庫(kù)發(fā)展時(shí),改變遷移代碼。這樣不僅能夠盡早解決遷移問題,也使行業(yè)專家易于處理這個(gè)正在開發(fā)的系統(tǒng)。因?yàn)橛兴麄兪煜さ臄?shù)據(jù),所以他們會(huì)指出可能給數(shù)據(jù)庫(kù)和應(yīng)用設(shè)計(jì)帶來問題的地方,因此我們建議在項(xiàng)目的早期迭代中引入實(shí)際數(shù)據(jù)。

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。