大型項(xiàng)目中如何開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作_第1頁(yè)
大型項(xiàng)目中如何開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作_第2頁(yè)
大型項(xiàng)目中如何開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作_第3頁(yè)
大型項(xiàng)目中如何開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作_第4頁(yè)
大型項(xiàng)目中如何開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、大型項(xiàng)目中如何開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作本文基于我在上海證券交易所第三代監(jiān)察系統(tǒng)項(xiàng)目的實(shí)踐描述如何在大型項(xiàng)目中開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作,本文避免過(guò)多的描述具體實(shí)現(xiàn)的技術(shù)細(xì)節(jié),側(cè)重于從軟件工程角度描述數(shù)據(jù)庫(kù)設(shè)計(jì)的整體流程以及項(xiàng)目各個(gè)階段的工作側(cè)重點(diǎn)。1. 開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作所需條件對(duì)于基于數(shù)據(jù)信息處理的大型行業(yè)解決方案項(xiàng)目來(lái)說(shuō),數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)工作中最為重要、最為基礎(chǔ)的環(huán)節(jié)之一,具備什么樣的條件才能順利開(kāi)展數(shù)據(jù)庫(kù)設(shè)計(jì)工作呢?本章主要從資源配置角度描述如何確保數(shù)據(jù)庫(kù)設(shè)計(jì)工作能夠順利進(jìn)行。1.1. 獨(dú)立的數(shù)據(jù)庫(kù)設(shè)計(jì)小組對(duì)于一個(gè)軟件合同額數(shù)千萬(wàn),前后參與項(xiàng)目的人員數(shù)量數(shù)百人的大型軟件工程項(xiàng)目來(lái)說(shuō),項(xiàng)目管理的

2、重要程度要遠(yuǎn)比幾十個(gè)人月、幾個(gè)人完成的小項(xiàng)目要重要的多,而成功進(jìn)行項(xiàng)目管理的基礎(chǔ)之一便是完備的組織機(jī)構(gòu)。對(duì)于一個(gè)基于數(shù)據(jù)處理的大型核心業(yè)務(wù)應(yīng)用系統(tǒng)來(lái)說(shuō),數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)應(yīng)用系統(tǒng)實(shí)現(xiàn)的基礎(chǔ),可以說(shuō)其設(shè)計(jì)質(zhì)量的好壞直接影響到整個(gè)項(xiàng)目的成敗,應(yīng)當(dāng)有專門的組織機(jī)構(gòu)負(fù)責(zé)其設(shè)計(jì)。教訓(xùn):在3GSS項(xiàng)目中數(shù)據(jù)庫(kù)規(guī)劃組成立時(shí)間過(guò)晚,只是在開(kāi)發(fā)工作過(guò)半的時(shí)候才組建起來(lái),在這之前我個(gè)人也是在需求工作、架構(gòu)工作都已基本結(jié)束的時(shí)間點(diǎn)進(jìn)入項(xiàng)目組,這對(duì)于順利的進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)造成了很大的困難。1.1.1 職責(zé)數(shù)據(jù)庫(kù)設(shè)計(jì)小組的職責(zé)主要體現(xiàn)在以下方面:l 參與項(xiàng)目總體架構(gòu)設(shè)計(jì),對(duì)于涉及到數(shù)據(jù)庫(kù)應(yīng)用的架構(gòu)問(wèn)題主要負(fù)責(zé)。l 保證在項(xiàng)

3、目進(jìn)行過(guò)程中數(shù)據(jù)庫(kù)設(shè)計(jì)的穩(wěn)定,為各個(gè)應(yīng)用子系統(tǒng)的開(kāi)發(fā)提供穩(wěn)定的數(shù)據(jù)平臺(tái),從而保證項(xiàng)目計(jì)劃的正常執(zhí)行。l 在數(shù)據(jù)庫(kù)性能優(yōu)化工作起到主導(dǎo)作用,并對(duì)數(shù)據(jù)庫(kù)性能優(yōu)化的結(jié)果負(fù)責(zé)。l 對(duì)于數(shù)據(jù)庫(kù)版本的管理和發(fā)布以及變更負(fù)責(zé)。l 做好需求與開(kāi)發(fā)之間的橋梁。1.1.2 在項(xiàng)目組中的地位和作用數(shù)據(jù)庫(kù)設(shè)計(jì)小組在整個(gè)項(xiàng)目組的組織機(jī)構(gòu)配置中應(yīng)當(dāng)與架構(gòu)組、需求組、測(cè)試組等平級(jí),直接對(duì)項(xiàng)目組PM、PSM負(fù)責(zé),因?yàn)閿?shù)據(jù)庫(kù)設(shè)計(jì)的工作需要各個(gè)小組的積極配合才能夠順利完成,所以項(xiàng)目小組之間的溝通協(xié)調(diào)工作顯得尤其重要,如果不能做到從組織機(jī)構(gòu)上將數(shù)據(jù)庫(kù)設(shè)計(jì)小組提到項(xiàng)目組中一個(gè)相對(duì)較高的位置上,那么在一個(gè)大型項(xiàng)目組中,溝通協(xié)調(diào)工作將會(huì)

4、很難進(jìn)行。教訓(xùn):3GSS項(xiàng)目中,數(shù)據(jù)庫(kù)規(guī)劃組在項(xiàng)目進(jìn)入到編碼階段之前并沒(méi)有單獨(dú)獨(dú)立出來(lái),只是隸屬于核心預(yù)警系統(tǒng)組,因此在與其他組的溝通協(xié)調(diào)方面增加了一定的困難。1.2. 如何組建數(shù)據(jù)庫(kù)設(shè)計(jì)小組描述數(shù)據(jù)庫(kù)設(shè)計(jì)小組的組建過(guò)程和資源角色配置。1.2.1. 角色配置一個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)小組主要應(yīng)當(dāng)包括以下角色:角色名稱職責(zé)組長(zhǎng)對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)工作負(fù)全責(zé)數(shù)據(jù)庫(kù)架構(gòu)師負(fù)責(zé)搭建數(shù)據(jù)庫(kù)系統(tǒng)環(huán)境,對(duì)于數(shù)據(jù)庫(kù)硬件選型方案、數(shù)據(jù)存儲(chǔ)方案、數(shù)據(jù)備份恢復(fù)方案、數(shù)據(jù)庫(kù)物理設(shè)計(jì)以及整體性能優(yōu)化工作負(fù)責(zé)數(shù)據(jù)建模員從需求入手對(duì)各個(gè)子系統(tǒng)進(jìn)行數(shù)據(jù)建模工作,由淺入深得出各個(gè)子系統(tǒng)的數(shù)據(jù)庫(kù)邏輯模型版本控制員負(fù)責(zé)控制數(shù)據(jù)庫(kù)設(shè)計(jì)的版本技術(shù)咨詢師負(fù)

5、責(zé)對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)工作中遇到的具體技術(shù)難題進(jìn)行咨詢,協(xié)助進(jìn)行相關(guān)工作1.2.2. 資源使用可以這樣說(shuō),數(shù)據(jù)庫(kù)設(shè)計(jì)工作沒(méi)有太多的開(kāi)發(fā)工作量,但是對(duì)人員素質(zhì)的要求很高,因此數(shù)據(jù)庫(kù)設(shè)計(jì)小組的組建要按照“外科手術(shù)”的標(biāo)準(zhǔn)進(jìn)行,貴在精而不在多:角色名稱所需技能使用情況組長(zhǎng)1、 豐富的數(shù)據(jù)庫(kù)設(shè)計(jì)項(xiàng)目實(shí)踐經(jīng)驗(yàn)2、 較強(qiáng)的溝通協(xié)調(diào)、組織能力1人,專職使用數(shù)據(jù)庫(kù)架構(gòu)師1、 豐富的數(shù)據(jù)庫(kù)架構(gòu)經(jīng)驗(yàn)2、 良好的問(wèn)題分析、解決能力2-3人,確保1人專職使用數(shù)據(jù)建模員1、 較強(qiáng)的業(yè)務(wù)理解能力2、 較強(qiáng)的溝通能力3、 熟悉數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的基本方法原則上在需求分析階段應(yīng)當(dāng)每一個(gè)子系統(tǒng)設(shè)置一名數(shù)據(jù)建模員,數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)結(jié)束后可以釋

6、放一部分人員,但應(yīng)當(dāng)保證2-3人專職使用,負(fù)責(zé)維護(hù)數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)版本控制員1、 具有嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度2、 良好的溝通協(xié)調(diào)能力1人,專職使用技術(shù)咨詢師1、 數(shù)據(jù)庫(kù)應(yīng)用技術(shù)方面的技術(shù)專家2、 良好的溝通能力若干,兼職使用,這些人員都屬于公司一級(jí)的技術(shù)專家,不可能長(zhǎng)時(shí)間駐場(chǎng),在使用上應(yīng)當(dāng)事先作出計(jì)劃,提前向上級(jí)組織提出申請(qǐng)1.3. 硬件資源數(shù)據(jù)庫(kù)設(shè)計(jì)工作順利開(kāi)展的一個(gè)重要條件是擁有既定硬件方案所規(guī)定型號(hào)的主機(jī)以及配套的存儲(chǔ)設(shè)備,并且網(wǎng)絡(luò)通訊能力要和真實(shí)上線條件一致,總之?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)工作需要一整套真實(shí)上線環(huán)境下的硬件設(shè)備,這不僅僅是數(shù)據(jù)庫(kù)設(shè)計(jì)的需要,同時(shí)也是整個(gè)項(xiàng)目開(kāi)發(fā)工作的一個(gè)重要基礎(chǔ)條件,因?yàn)闆](méi)有經(jīng)過(guò)

7、真實(shí)上線環(huán)境的檢驗(yàn),誰(shuí)也不敢說(shuō)我們用PC機(jī)和低檔服務(wù)器開(kāi)發(fā)出來(lái)的系統(tǒng)能否在上線的時(shí)候穩(wěn)定運(yùn)行。必需要保證在編碼工作開(kāi)始前準(zhǔn)備好硬件方案所規(guī)定型號(hào)的主機(jī)以及配套的存儲(chǔ)設(shè)備。教訓(xùn):3GSS項(xiàng)目在7月進(jìn)入開(kāi)發(fā)編碼階段,而硬件環(huán)境直到9月份才到位,在這之前我們只能使用PC機(jī)來(lái)作數(shù)據(jù)庫(kù)服務(wù)器,根本沒(méi)有辦法模擬大數(shù)據(jù)量存儲(chǔ),致使數(shù)據(jù)庫(kù)物理設(shè)計(jì)的優(yōu)化調(diào)整只能延后,如果我們能夠在這寶貴的2個(gè)月時(shí)間內(nèi)仔細(xì)驗(yàn)證、優(yōu)化我們的數(shù)據(jù)庫(kù)物理設(shè)計(jì)方案,我們完全可以規(guī)避很多實(shí)現(xiàn)風(fēng)險(xiǎn),也不會(huì)造成后來(lái)開(kāi)發(fā)階段數(shù)據(jù)庫(kù)存儲(chǔ)性能的瓶頸問(wèn)題。1.4. 設(shè)計(jì)工具工欲善其事,必先利其器,現(xiàn)在有很多數(shù)據(jù)庫(kù)設(shè)計(jì)工具可供選擇,3GSS項(xiàng)目選擇Sy

8、base公司的PowerDesigner9.5作為設(shè)計(jì)工具,我認(rèn)為這個(gè)工具主要有以下好處:1、 可以方便地進(jìn)行數(shù)據(jù)庫(kù)的物理設(shè)計(jì)、邏輯設(shè)計(jì)2、 有很強(qiáng)的文檔生成能力,可以定制生成各種數(shù)據(jù)庫(kù)設(shè)計(jì)文檔3、 擁有數(shù)據(jù)庫(kù)反向工程能力2. 數(shù)據(jù)庫(kù)設(shè)計(jì)工作的流程與方法首先提出一個(gè)問(wèn)題:在一個(gè)項(xiàng)目中數(shù)據(jù)庫(kù)設(shè)計(jì)工作什么時(shí)候開(kāi)始啟動(dòng)?什么時(shí)候結(jié)束?我認(rèn)為,從需求工作啟動(dòng)的那一刻起,數(shù)據(jù)庫(kù)設(shè)計(jì)工作就正式開(kāi)始了,直到項(xiàng)目交付完畢、正式上線運(yùn)行方才告一段落!其中工作重心主要放在需求階段、架構(gòu)設(shè)計(jì)階段、詳細(xì)設(shè)計(jì)階段。2.1. 需求階段數(shù)據(jù)庫(kù)的設(shè)計(jì),特別是大型核心業(yè)務(wù)應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì),遠(yuǎn)非建幾張數(shù)據(jù)庫(kù)表那么簡(jiǎn)單,在數(shù)據(jù)

9、庫(kù)設(shè)計(jì)工作的初時(shí)階段,就其本質(zhì)來(lái)講,是對(duì)客戶核心業(yè)務(wù)的一次數(shù)據(jù)建模,出色完成該階段數(shù)據(jù)庫(kù)設(shè)計(jì)任務(wù)的關(guān)鍵條件是對(duì)用戶核心業(yè)務(wù)的業(yè)務(wù)模式、處理流程、數(shù)據(jù)構(gòu)成充分理解,可以說(shuō)在這一階段的數(shù)據(jù)庫(kù)設(shè)計(jì)工作中,并沒(méi)有涉及多少數(shù)據(jù)庫(kù)技術(shù)方面的工作,更多的工作集中在對(duì)于客戶核心業(yè)務(wù)的理解和學(xué)習(xí)上,為在后續(xù)階段對(duì)數(shù)據(jù)庫(kù)進(jìn)行邏輯設(shè)計(jì)打好基礎(chǔ)。而在這一方面,無(wú)疑需求組的同事是處于主導(dǎo)地位的,我們必須和需求組的同事合作,獲取它們的幫助,同時(shí),我們的參與也會(huì)促進(jìn)需求組的同事進(jìn)一步和客戶溝通、明確很多業(yè)務(wù)方面的細(xì)節(jié)問(wèn)題,從某種意義上講也是間接推動(dòng)了客戶需求的細(xì)化工作。數(shù)據(jù)庫(kù)設(shè)計(jì)小組需要在需求階段投入最大的精力和資源。這一

10、階段數(shù)據(jù)庫(kù)設(shè)計(jì)小組(以數(shù)據(jù)建模員為主)主要從事以下方面的工作:l 對(duì)于客戶需求的分析、理解、細(xì)化有人可能會(huì)說(shuō):這是需求組來(lái)作的事,干嗎讓我來(lái)做?這種觀點(diǎn)是不正確的,因?yàn)樾枨笕藛T的工作是站在偏業(yè)務(wù)的方面與客戶進(jìn)行溝通,而數(shù)據(jù)庫(kù)設(shè)計(jì)人員是站在設(shè)計(jì)實(shí)現(xiàn)的角度去作,可以說(shuō)數(shù)據(jù)庫(kù)設(shè)計(jì)人員對(duì)于客戶的數(shù)據(jù)需求比需求組的同事更加敏銳。這段時(shí)間的工作是數(shù)據(jù)庫(kù)設(shè)計(jì)工作中最困難也是最重要的工作,因?yàn)閷?duì)于客戶業(yè)務(wù)需求的理解是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)工作的基礎(chǔ),磨刀不誤砍柴工,在需求階段將客戶業(yè)務(wù)需求理解透徹將會(huì)在后續(xù)的設(shè)計(jì)工作中節(jié)省大量的時(shí)間。l 數(shù)據(jù)概念模型建模在對(duì)客戶的需求用例有了比較透徹的理解之后,就應(yīng)當(dāng)著手針對(duì)需求用例

11、進(jìn)行數(shù)據(jù)抽象,得出初步的數(shù)據(jù)流圖、E_R模型、數(shù)據(jù)字典。主要應(yīng)當(dāng)考慮以下方面的內(nèi)容:1、 創(chuàng)建數(shù)據(jù)字典和E_R模型圖表。E_R模型圖表和數(shù)據(jù)字典可以讓任何了解數(shù)據(jù)庫(kù)的人都明確如何從數(shù)據(jù)庫(kù)中獲得數(shù)據(jù)。ER圖對(duì)表明表之間關(guān)系很有用,而數(shù)據(jù)字典則說(shuō)明了每個(gè)字段的用途以及任何可能存在的別名。對(duì)后續(xù)開(kāi)發(fā)SQL來(lái)說(shuō)這是完全必要的。2、 確定數(shù)據(jù)依賴,識(shí)別數(shù)據(jù)實(shí)體之間的關(guān)系,對(duì)數(shù)據(jù)實(shí)體間的關(guān)系作規(guī)范化處理。數(shù)據(jù)庫(kù)實(shí)體之間關(guān)系規(guī)范化的范式有很多專門的技術(shù)文檔可供參考,這里不加詳細(xì)描述,但是需要指出一點(diǎn),在實(shí)際項(xiàng)目實(shí)踐過(guò)程中,并不一定完全按照范式的要求實(shí)現(xiàn)就是最好的設(shè)計(jì),需要根據(jù)實(shí)際情況適當(dāng)?shù)淖鞒鲆欢ǖ哪娣妒皆O(shè)

12、計(jì)。例如,一個(gè)股票訂單信息的數(shù)據(jù)實(shí)體,包括投資者帳號(hào)、投資者名稱等投資人信息;訂單號(hào)、交易價(jià)格、交易數(shù)量等交易信息;按照標(biāo)準(zhǔn)的范式設(shè)計(jì)應(yīng)當(dāng)將該數(shù)據(jù)模型劃分為兩個(gè)實(shí)體,既主從關(guān)系的投資人實(shí)體和交易信息實(shí)體,使用訂單號(hào)關(guān)聯(lián),但是實(shí)際情況是,每日的訂單信息數(shù)量達(dá)到了5000萬(wàn)筆,而投資人信息也將達(dá)到8000萬(wàn)條,如果仍然按照范式設(shè)計(jì),那么在查詢訂單信息時(shí)將會(huì)人為的在兩張超大表之間進(jìn)行關(guān)聯(lián),那將嚴(yán)重影響查詢速度,所以只能反規(guī)范化,將投資人信息和交易信息融合在一個(gè)數(shù)據(jù)實(shí)體中。3、 對(duì)數(shù)據(jù)概念模型進(jìn)行優(yōu)化調(diào)整。針對(duì)數(shù)據(jù)庫(kù)概念模型中的不足和缺陷,要及時(shí)作出修正和調(diào)整,在這期間要與需求組的同事配合,充分和客戶

13、溝通,數(shù)據(jù)庫(kù)設(shè)計(jì)的調(diào)整在概念模型上進(jìn)行調(diào)整代價(jià)是最小的。4、 制定數(shù)據(jù)對(duì)象命名規(guī)范。對(duì)于一個(gè)大型行業(yè)業(yè)務(wù)解決方案來(lái)說(shuō),需要建模的數(shù)據(jù)項(xiàng)可能會(huì)有成千上萬(wàn)個(gè),如果沒(méi)有一個(gè)統(tǒng)一的命名規(guī)范將會(huì)給后續(xù)的設(shè)計(jì)開(kāi)發(fā)工作造成不必要的麻煩。這一工作一般由數(shù)據(jù)庫(kù)設(shè)計(jì)小組組長(zhǎng)完成,完成后要經(jīng)過(guò)項(xiàng)目組一級(jí)的評(píng)審。經(jīng)驗(yàn):在概念模型的建立過(guò)程中,對(duì)于那些有著明確數(shù)據(jù)接口格式定義的外部輸入數(shù)據(jù),建模工作相對(duì)容易一些,對(duì)于用戶需求用例中數(shù)據(jù)的流轉(zhuǎn)過(guò)程建模,從而得出數(shù)據(jù)流圖相對(duì)來(lái)說(shuō)要困難一些,數(shù)據(jù)建模員切忌只看輸入輸出,不看數(shù)據(jù)流轉(zhuǎn)、處理過(guò)程。數(shù)據(jù)的流轉(zhuǎn)處理過(guò)程是建立數(shù)據(jù)庫(kù)概念模型的重要依據(jù),我們只有搞清楚了數(shù)據(jù)是如何流轉(zhuǎn)的,

14、如何被使用的才能夠設(shè)計(jì)出盡可能貼近客戶業(yè)務(wù)需求的數(shù)據(jù)模型。l 做好需求與開(kāi)發(fā)之間的橋梁。為什么呢?因?yàn)閿?shù)據(jù)庫(kù)作為整個(gè)應(yīng)用系統(tǒng)的運(yùn)行基礎(chǔ),可以說(shuō)整個(gè)系統(tǒng)的設(shè)計(jì)工作都將或多或少的與數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)工作產(chǎn)生交叉,而數(shù)據(jù)庫(kù)設(shè)計(jì)人員出于完成數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的目的,必須對(duì)整個(gè)項(xiàng)目的需求用例以及業(yè)務(wù)背景有著全面的了解和掌握,可以這么說(shuō),在整個(gè)項(xiàng)目組中,只有數(shù)據(jù)庫(kù)設(shè)計(jì)人員才能站在開(kāi)發(fā)設(shè)計(jì)角度掌握整個(gè)系統(tǒng)完整的需求細(xì)節(jié),可以說(shuō)數(shù)據(jù)庫(kù)設(shè)計(jì)人員在以后的設(shè)計(jì)、開(kāi)發(fā)階段是一個(gè)寶貴的資源,數(shù)據(jù)庫(kù)設(shè)計(jì)人員應(yīng)當(dāng)對(duì)應(yīng)用系統(tǒng)的設(shè)計(jì)人員提供咨詢上的幫助,并且對(duì)應(yīng)用系統(tǒng)設(shè)計(jì)進(jìn)行評(píng)審,確定其設(shè)計(jì)是否與數(shù)據(jù)庫(kù)設(shè)計(jì)相契合。2.2. 系統(tǒng)架構(gòu)

15、階段在系統(tǒng)架構(gòu)階段,數(shù)據(jù)庫(kù)設(shè)計(jì)小組的主要工作是:l 確定數(shù)據(jù)庫(kù)服務(wù)器所使用的硬件配置方案這項(xiàng)工作需要數(shù)據(jù)庫(kù)設(shè)計(jì)小組和系統(tǒng)集成組的同事合作完成,數(shù)據(jù)庫(kù)設(shè)計(jì)小組主要從客戶對(duì)于數(shù)據(jù)庫(kù)的性能指標(biāo)入手,得出對(duì)于數(shù)據(jù)庫(kù)服務(wù)器的硬件要求,系統(tǒng)集成組的同事負(fù)責(zé)具體的硬件選型。在確定硬件配置方案的時(shí)候,數(shù)據(jù)庫(kù)設(shè)計(jì)小組主要從以下幾個(gè)方面入手:1、 滿足數(shù)據(jù)的存儲(chǔ)容量需求。以需求階段所得出的數(shù)據(jù)庫(kù)概念模型和數(shù)據(jù)字典為基礎(chǔ),按照客戶給出的未來(lái)一段時(shí)間內(nèi)業(yè)務(wù)數(shù)據(jù)的增長(zhǎng)速度預(yù)估出數(shù)據(jù)存儲(chǔ)空間,在這里應(yīng)當(dāng)注意:需要為索引預(yù)留出存儲(chǔ)空間,一般經(jīng)驗(yàn)性的做法,索引的存儲(chǔ)空間與數(shù)據(jù)存儲(chǔ)空間按照1:1來(lái)預(yù)估。2、 滿足數(shù)據(jù)庫(kù)交易處理

16、能力的需求。我們要考慮高峰時(shí)的處理器的能力,并適當(dāng)保留一些緩沖,確保在業(yè)務(wù)增長(zhǎng)時(shí),系統(tǒng)有擴(kuò)展的余地。如果要保持快速的響應(yīng)能力,應(yīng)當(dāng)為CPU保留20%至40%的富余量。要為運(yùn)行在此服務(wù)器的所有應(yīng)用軟件考慮內(nèi)存,所需要的內(nèi)存主要依賴于用戶數(shù)、應(yīng)用程序類型、進(jìn)程的方式、和應(yīng)用程序處理的數(shù)據(jù)量決定。在評(píng)估數(shù)據(jù)庫(kù)服務(wù)器性能時(shí),最困難的事情是如何把握準(zhǔn)確度問(wèn)題,到底考慮哪些因素等。理想情況下,應(yīng)考慮下列要素:Ø 交易的復(fù)雜性Ø 交易頻率Ø 數(shù)據(jù)讀/寫比例Ø 并發(fā)連接數(shù)目Ø 并發(fā)交易數(shù)目Ø 數(shù)據(jù)庫(kù)最大表的大小Ø 性能度量的目標(biāo)教訓(xùn):在3G

17、SS項(xiàng)目架構(gòu)設(shè)計(jì)階段硬件方案選型的時(shí)候,沒(méi)有考慮到會(huì)在每天的交易時(shí)間內(nèi)在數(shù)據(jù)庫(kù)服務(wù)器上并發(fā)運(yùn)行數(shù)據(jù)預(yù)處理存儲(chǔ)過(guò)程,只為數(shù)據(jù)庫(kù)服務(wù)器配置了4CPU,結(jié)果導(dǎo)致在項(xiàng)目后期出現(xiàn)了嚴(yán)重的數(shù)據(jù)庫(kù)服務(wù)器處理性能不足問(wèn)題。l 規(guī)劃數(shù)據(jù)庫(kù)的物理設(shè)計(jì)數(shù)據(jù)庫(kù)最終是要存儲(chǔ)在物理設(shè)備上的。為一個(gè)給定的邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)與存取方法)的過(guò)程,就是數(shù)據(jù)庫(kù)的物理設(shè)計(jì)。物理結(jié)構(gòu)依賴于給定的DBMS和和硬件系統(tǒng),因此設(shè)計(jì)人員必須充分了解所用DBMS的內(nèi)部特征,特別是存儲(chǔ)結(jié)構(gòu)和存取方法;充分了解應(yīng)用環(huán)境,特別是應(yīng)用的處理頻率和響應(yīng)時(shí)間要求;并充分了解外存設(shè)備的特性。數(shù)據(jù)庫(kù)的物理設(shè)計(jì)通常分為兩步:第

18、一步:確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)在這里數(shù)據(jù)庫(kù)設(shè)計(jì)小組主要從事以下方面的工作:1、 確定數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。確定數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)時(shí)要綜合考慮存取時(shí)間、存儲(chǔ)空間利用率和維護(hù)代價(jià)三方面的因素。這三個(gè)方面常常是相互矛盾的,例如消除一切冗余數(shù)據(jù)雖然能夠節(jié)約存儲(chǔ)空間,但往往會(huì)導(dǎo)致檢索代價(jià)的增加,因此必須進(jìn)行權(quán)衡,選擇一個(gè)折中方案。2、 設(shè)計(jì)數(shù)據(jù)的存取路徑。在關(guān)系數(shù)據(jù)庫(kù)中,選擇存取路徑主要是指確定如何建立索引。例如,應(yīng)把哪些域作為次碼建立次索引,建立單碼索引還是組合索引,建立多少個(gè)為合適,是否建立聚集索引等。3、 確定數(shù)據(jù)的存放位置。為了提高系統(tǒng)性能,數(shù)據(jù)應(yīng)該根據(jù)應(yīng)用情況將易變部分與穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低

19、部分分開(kāi)存放。例如,目前許多計(jì)算機(jī)都有多個(gè)磁盤,因此進(jìn)行物理設(shè)計(jì)時(shí)可以考慮將表和索引分別放在不同的磁盤上,在查詢時(shí),由于兩個(gè)磁盤驅(qū)動(dòng)器分別在工作,因而可以保證物理讀寫速度比較快。也可以將比較大的表分別放在兩個(gè)磁盤上,以加快存取速度,這在多用戶環(huán)境下特別有效。此外還可以將日志文件與數(shù)據(jù)庫(kù)對(duì)象(表、索引等)放在不同的磁盤以改進(jìn)系統(tǒng)的性能。4、 確定系統(tǒng)配置。DBMS產(chǎn)品一般都提供了一些存儲(chǔ)分配參數(shù),供設(shè)計(jì)人員和DBA對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理優(yōu)化。初始情況下,系統(tǒng)都為這些變量賦予了合理的缺省值。但是這些值不一定適合每一種應(yīng)用環(huán)境,在進(jìn)行物理設(shè)計(jì)時(shí),需要重新對(duì)這些變量賦值以改善系統(tǒng)的性能。通常情況下,這些配置

20、變量包括:同時(shí)使用數(shù)據(jù)庫(kù)的用戶數(shù),同時(shí)打開(kāi)的數(shù)據(jù)庫(kù)對(duì)象數(shù),使用的緩沖區(qū)長(zhǎng)度、個(gè)數(shù),時(shí)間片大小、數(shù)據(jù)庫(kù)的大小,裝填因子,鎖的數(shù)目等等,這些參數(shù)值影響存取時(shí)間和存儲(chǔ)空間的分配,在物理設(shè)計(jì)時(shí)就要根據(jù)應(yīng)用環(huán)境確定這些參數(shù)值,以使系統(tǒng)性能最優(yōu)。在物理設(shè)計(jì)時(shí)對(duì)系統(tǒng)配置變量的調(diào)整只是初步的,在系統(tǒng)運(yùn)行時(shí)還要根據(jù)系統(tǒng)實(shí)際運(yùn)行情況做進(jìn)一步的調(diào)整,以期切實(shí)改進(jìn)系統(tǒng)性能。第二步:對(duì)數(shù)據(jù)庫(kù)物理結(jié)構(gòu)優(yōu)化數(shù)據(jù)庫(kù)物理設(shè)計(jì)過(guò)程中需要對(duì)時(shí)間效率、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案,數(shù)據(jù)庫(kù)設(shè)計(jì)人員必須對(duì)這些方案進(jìn)行細(xì)致的評(píng)價(jià),從中選擇一個(gè)較優(yōu)的方案作為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。評(píng)價(jià)物理數(shù)據(jù)庫(kù)的方法完全依賴于

21、所選用的DBMS,主要是從定量估算各種方案的存儲(chǔ)空間、存取時(shí)間和維護(hù)代價(jià)入手,對(duì)估算結(jié)果進(jìn)行權(quán)衡、比較,選擇出一個(gè)較優(yōu)的合理的物理結(jié)構(gòu)。如果該結(jié)構(gòu)不符合用戶需求,則需要修改設(shè)計(jì)。l 完成數(shù)據(jù)庫(kù)概念模型到邏輯模型的轉(zhuǎn)換邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù):就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。因此設(shè)計(jì)邏輯結(jié)構(gòu)首先應(yīng)該選擇最適于描述與表達(dá)相應(yīng)概念結(jié)構(gòu)的數(shù)據(jù)模型,然后選擇最合適的DBMS。設(shè)計(jì)邏輯結(jié)構(gòu)時(shí)一般要分兩步進(jìn)行:1、 將概念結(jié)構(gòu)轉(zhuǎn)換為特定DBMS支持下的數(shù)據(jù)模型。2、 數(shù)據(jù)模型進(jìn)行優(yōu)化。這些工作基本上都可以使用PowerDesigner設(shè)計(jì)工具開(kāi)完

22、成。2.3. 詳細(xì)設(shè)計(jì)階段有一點(diǎn)是要明確的,就是數(shù)據(jù)庫(kù)設(shè)計(jì)要走在各個(gè)子系統(tǒng)應(yīng)用程序設(shè)計(jì)的前面,原因是明顯的,因?yàn)楦鱾€(gè)子系統(tǒng)需要在數(shù)據(jù)庫(kù)支撐環(huán)境已經(jīng)明確的情況下才可以開(kāi)展設(shè)計(jì)、開(kāi)發(fā)工作。數(shù)據(jù)庫(kù)設(shè)計(jì)小組這一階段的主要工作有兩點(diǎn):1、 支持各個(gè)子系統(tǒng)應(yīng)用程序的設(shè)計(jì)。特別是查詢、報(bào)表模塊的設(shè)計(jì),這是與數(shù)據(jù)庫(kù)關(guān)聯(lián)最為密切的模塊,可以說(shuō)沒(méi)有數(shù)據(jù)庫(kù)的良好支持,根本不可能設(shè)計(jì)出性能優(yōu)良的查詢、報(bào)表程序。2、 對(duì)數(shù)據(jù)庫(kù)模型進(jìn)行優(yōu)化調(diào)整。在各個(gè)子系統(tǒng)設(shè)計(jì)的深入過(guò)程中我們會(huì)不斷發(fā)現(xiàn)原有數(shù)據(jù)庫(kù)模型設(shè)計(jì)上的一些不足,主要集中在以下方面:Ø 庫(kù)表結(jié)構(gòu)設(shè)計(jì)不合理。Ø 不能夠提供所需要的數(shù)據(jù)。Ø

23、 數(shù)據(jù)庫(kù)表的主鍵、索引設(shè)置不合理。Ø 數(shù)據(jù)庫(kù)的物理存儲(chǔ)空間分配不足。2.4. 編碼階段如果之前階段的工作順利完成,那么進(jìn)入到編碼階段,可以說(shuō)數(shù)據(jù)庫(kù)設(shè)計(jì)工作已經(jīng)完成大半了,編碼階段數(shù)據(jù)庫(kù)設(shè)計(jì)小組的工作重心應(yīng)當(dāng)轉(zhuǎn)移到性能驗(yàn)證、性能測(cè)試工作上。此外,在編碼階段數(shù)據(jù)庫(kù)設(shè)計(jì)小組應(yīng)當(dāng)對(duì)于開(kāi)發(fā)人員的PL/SQL編程提供技術(shù)支持和代碼檢查,以保證PL/SQL編碼的質(zhì)量。2.5. 測(cè)試階段隨著開(kāi)發(fā)工作的逐步推進(jìn),測(cè)試組的同事會(huì)對(duì)各個(gè)階段獲取的系統(tǒng)版本進(jìn)行系統(tǒng)測(cè)試,數(shù)據(jù)庫(kù)設(shè)計(jì)小組要做好數(shù)據(jù)庫(kù)的版本控制工作,全力配合測(cè)試組的同事進(jìn)行系統(tǒng)測(cè)試。另外,數(shù)據(jù)庫(kù)設(shè)計(jì)小組還應(yīng)當(dāng)積極協(xié)助測(cè)試組的同事準(zhǔn)備數(shù)據(jù)庫(kù)性能驗(yàn)證

24、測(cè)試的測(cè)試案例、測(cè)試數(shù)據(jù)。2.6. 系統(tǒng)交付階段如果能夠順利進(jìn)行到系統(tǒng)最終交付階段,也可以說(shuō)我們的數(shù)據(jù)庫(kù)設(shè)計(jì)工作已經(jīng)功德圓滿了。這一階段要做好數(shù)據(jù)庫(kù)設(shè)計(jì)的最終封版工作,對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)的各種工作成果物進(jìn)行整理,對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)個(gè)個(gè)階段產(chǎn)生的設(shè)計(jì)文檔進(jìn)行歸納總結(jié)。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)工作中的版本控制由于大型項(xiàng)目的開(kāi)發(fā)周期很長(zhǎng),出于配置管理的需要,在大型項(xiàng)目的開(kāi)發(fā)階段,需要設(shè)置若干個(gè)里程碑,在每個(gè)里程碑都需要對(duì)軟件系統(tǒng)進(jìn)行封版,形成配置基線,這些配置基線對(duì)于開(kāi)發(fā)工作的延承和最終系統(tǒng)的按時(shí)交付有著重要意義,與此相對(duì)應(yīng),作為應(yīng)用系統(tǒng)基礎(chǔ)的數(shù)據(jù)庫(kù)也需要在相應(yīng)的里程碑得到對(duì)應(yīng)的設(shè)計(jì)版本,數(shù)據(jù)庫(kù)設(shè)計(jì)的版本控制與配置管理

25、是整個(gè)項(xiàng)目組版本控制與配置管理的一部分,但是與應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程的版本控制與配置管理又有所區(qū)別,我們?cè)?GSS項(xiàng)目的實(shí)踐中摸索出了一套數(shù)據(jù)庫(kù)設(shè)計(jì)版本控制的工作流程與方法。3.1. 版本控制數(shù)據(jù)庫(kù)設(shè)計(jì)的工作成果主要包括數(shù)據(jù)庫(kù)建庫(kù)腳本、初始化數(shù)據(jù)、PL/SQL腳本等內(nèi)容,其特點(diǎn)在于數(shù)據(jù)庫(kù)設(shè)計(jì)的版本與應(yīng)用系統(tǒng)的開(kāi)發(fā)版本之間存在很強(qiáng)的相互依賴性,一個(gè)開(kāi)發(fā)版本通常情況下只能在與該開(kāi)發(fā)版本對(duì)應(yīng)的數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)之上才能夠正常運(yùn)行,這是由于在項(xiàng)目開(kāi)發(fā)工作的不斷推進(jìn)過(guò)程中,數(shù)據(jù)庫(kù)設(shè)計(jì)工作也在不斷的細(xì)化、完善。這種依賴性在測(cè)試組的同事針對(duì)某一開(kāi)發(fā)版本進(jìn)行測(cè)試的時(shí)候表現(xiàn)的最為明顯。教訓(xùn):在3GSS開(kāi)發(fā)工作的初始階段,

26、數(shù)據(jù)庫(kù)設(shè)計(jì)的版本控制沒(méi)有形成規(guī)范化,與開(kāi)發(fā)版本的控制脫節(jié),因此曾經(jīng)一度造成數(shù)據(jù)庫(kù)版本的混亂,測(cè)試組在進(jìn)行系統(tǒng)測(cè)試的時(shí)候取得開(kāi)發(fā)版本后不知道應(yīng)該使用什么版本的數(shù)據(jù)庫(kù)。經(jīng)驗(yàn):在后續(xù)的開(kāi)發(fā)工作中,數(shù)據(jù)庫(kù)設(shè)計(jì)的版本控制嚴(yán)格跟隨應(yīng)用系統(tǒng)開(kāi)發(fā)版本的版本控制進(jìn)程進(jìn)行,在應(yīng)用系統(tǒng)發(fā)布每一個(gè)開(kāi)發(fā)版本的時(shí)候,我們都會(huì)發(fā)布一個(gè)與之對(duì)應(yīng)的數(shù)據(jù)庫(kù)設(shè)計(jì)版本,并且在交付測(cè)試組進(jìn)行系統(tǒng)測(cè)試前明確指出開(kāi)發(fā)版本與數(shù)據(jù)庫(kù)設(shè)計(jì)版本的對(duì)應(yīng)關(guān)系,從而避免了開(kāi)發(fā)版本與數(shù)據(jù)庫(kù)設(shè)計(jì)版本的脫節(jié)問(wèn)題,開(kāi)發(fā)、測(cè)試工作也得以穩(wěn)定、順利的進(jìn)行下去。3.2. 配置管理數(shù)據(jù)庫(kù)設(shè)計(jì)的配置管理工作應(yīng)當(dāng)緊跟應(yīng)用系統(tǒng)開(kāi)發(fā)的階段性封版工作,要與應(yīng)用系統(tǒng)形成統(tǒng)一的配置

27、基線。數(shù)據(jù)庫(kù)設(shè)計(jì)工作成果物的目錄組織形式可以參照下圖所示:但是并不一定拘泥于此,只要能夠清晰、簡(jiǎn)便的體現(xiàn)出數(shù)據(jù)庫(kù)設(shè)計(jì)的各個(gè)配置基線,能夠方便地獲取各個(gè)時(shí)期各個(gè)時(shí)期的不同版本即可。配置管理工具可以選用微軟的SourceSafe。經(jīng)驗(yàn):在開(kāi)發(fā)階段,數(shù)據(jù)庫(kù)的結(jié)構(gòu)細(xì)微變動(dòng)較為頻繁,數(shù)據(jù)庫(kù)的變動(dòng)通過(guò)補(bǔ)丁方式維護(hù)數(shù)據(jù)庫(kù),在一個(gè)開(kāi)發(fā)階段結(jié)束,數(shù)據(jù)庫(kù)版本穩(wěn)定后,根據(jù)數(shù)據(jù)庫(kù)的變動(dòng)情況形成數(shù)據(jù)庫(kù)設(shè)計(jì)的配置基線。3.3. 變更流程在項(xiàng)目的編碼開(kāi)發(fā)階段,隨著編碼工作的逐漸深入,原有系統(tǒng)設(shè)計(jì)中的不足和一些沒(méi)有考慮到的設(shè)計(jì)細(xì)節(jié)問(wèn)題開(kāi)始逐漸暴露出來(lái),隨之就要進(jìn)行設(shè)計(jì)的調(diào)整,數(shù)據(jù)庫(kù)設(shè)計(jì)也是如此。但是數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)應(yīng)用系統(tǒng)運(yùn)

28、行的基礎(chǔ),對(duì)于數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)調(diào)整將有可能影響到整個(gè)系統(tǒng)的正常運(yùn)行,因此對(duì)于數(shù)據(jù)庫(kù)設(shè)計(jì)的調(diào)整應(yīng)當(dāng)十分謹(jǐn)慎,在數(shù)據(jù)庫(kù)設(shè)計(jì)的變更工作中應(yīng)當(dāng)注意以下方面:l 數(shù)據(jù)庫(kù)設(shè)計(jì)變更的要求只能由各個(gè)子系統(tǒng)的開(kāi)發(fā)組長(zhǎng)提出,并且經(jīng)過(guò)項(xiàng)目組開(kāi)發(fā)負(fù)責(zé)人同意。這樣做是為了保證數(shù)據(jù)庫(kù)設(shè)計(jì)的穩(wěn)定性,因?yàn)樵谝粋€(gè)大型項(xiàng)目中,編碼人員非常多,而且編碼人員看待設(shè)計(jì)問(wèn)題的方法和角度往往和系統(tǒng)設(shè)計(jì)人員、架構(gòu)師的角度不同,有可能提出一些不切合實(shí)際的變更要求,因此就需要有人對(duì)變更要求進(jìn)行評(píng)審和把關(guān)。l 數(shù)據(jù)庫(kù)設(shè)計(jì)小組在接到變更要求后絕對(duì)不可以隨意變更數(shù)據(jù)庫(kù)設(shè)計(jì),必須經(jīng)過(guò)數(shù)據(jù)庫(kù)設(shè)計(jì)小組組長(zhǎng)評(píng)審?fù)ㄟ^(guò)后方可進(jìn)行相應(yīng)修改。這樣做同樣是為了保證數(shù)據(jù)

29、庫(kù)設(shè)計(jì)的穩(wěn)定性,避免設(shè)計(jì)工作的反復(fù)。如果數(shù)據(jù)庫(kù)設(shè)計(jì)小組組長(zhǎng)評(píng)審后認(rèn)為不適宜修改應(yīng)當(dāng)立即和項(xiàng)目組開(kāi)發(fā)負(fù)責(zé)人進(jìn)行溝通協(xié)商,如果仍然沒(méi)能達(dá)成一致就需要召開(kāi)項(xiàng)目組級(jí)別的架構(gòu)評(píng)審會(huì)議進(jìn)行評(píng)審。l 數(shù)據(jù)庫(kù)設(shè)計(jì)的變更需要做好修改記錄。這樣做是為了清楚地記錄下整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中所發(fā)生的設(shè)計(jì)變動(dòng)過(guò)程,有了這份記錄,我們?cè)趯?lái)就可以很容易對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)的依據(jù)進(jìn)行回溯,有助于我們更好的理解數(shù)據(jù)庫(kù)設(shè)計(jì)的歷史延承。l 數(shù)據(jù)庫(kù)設(shè)計(jì)變更完畢后一定要將變更結(jié)果通知項(xiàng)目組中所有涉及到該項(xiàng)變更的開(kāi)發(fā)小組組長(zhǎng)。在一個(gè)大型項(xiàng)目組中,由于開(kāi)發(fā)小組很多,再加上溝通不暢,很容易造成這樣一種結(jié)果:某張表已經(jīng)作出了變更,但是某些開(kāi)發(fā)小組并不知

30、道,仍然依據(jù)老的表結(jié)構(gòu)進(jìn)行開(kāi)發(fā),這樣就人為的制造了系統(tǒng)BUG。因此務(wù)必要將數(shù)據(jù)庫(kù)設(shè)計(jì)的變更結(jié)果傳達(dá)到每一個(gè)相關(guān)的開(kāi)發(fā)人員,而開(kāi)發(fā)人員數(shù)量較多,因此我們只將變更結(jié)果傳達(dá)到開(kāi)發(fā)小組長(zhǎng),再由開(kāi)發(fā)小組長(zhǎng)傳達(dá)到每一個(gè)開(kāi)發(fā)人員。教訓(xùn):3GSS項(xiàng)目中在開(kāi)發(fā)階段的初期,數(shù)據(jù)庫(kù)設(shè)計(jì)調(diào)整之后,數(shù)據(jù)庫(kù)設(shè)計(jì)小組作了版本控制,也做了修改記錄,但是沒(méi)有將變更結(jié)果通知到涉及該次變更的開(kāi)發(fā)人員,結(jié)果造成了數(shù)據(jù)庫(kù)版本已經(jīng)升級(jí)而開(kāi)發(fā)人員還在使用老版本的數(shù)據(jù)庫(kù)設(shè)計(jì)進(jìn)行開(kāi)發(fā)的情況經(jīng)驗(yàn):我們采取了變更后對(duì)開(kāi)發(fā)小組組長(zhǎng)進(jìn)行郵件通知的做法,一定程度上避免了該問(wèn)題,但是有一些開(kāi)發(fā)小組組長(zhǎng)對(duì)于郵件通知不敏感,沒(méi)有將變更通知繼續(xù)向組員傳達(dá),所以

31、數(shù)據(jù)庫(kù)設(shè)計(jì)小組就在每次發(fā)送變更通知郵件后再口頭通知一遍各個(gè)開(kāi)發(fā)小組組長(zhǎng)。l 每一次數(shù)據(jù)庫(kù)設(shè)計(jì)變更后應(yīng)當(dāng)做好相應(yīng)的版本控制和配置管理工作。l 發(fā)布每一次數(shù)據(jù)庫(kù)設(shè)計(jì)的變更之前都應(yīng)當(dāng)對(duì)所發(fā)布的內(nèi)容在專用的數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行發(fā)布測(cè)試,以保證所發(fā)布設(shè)計(jì)的可用性。l 開(kāi)發(fā)用數(shù)據(jù)庫(kù)服務(wù)器由數(shù)據(jù)庫(kù)設(shè)計(jì)小組負(fù)責(zé)管理和維護(hù),此外任何人不得對(duì)數(shù)據(jù)庫(kù)服務(wù)器作出任何變更。開(kāi)發(fā)用數(shù)據(jù)庫(kù)服務(wù)器是系統(tǒng)開(kāi)發(fā)過(guò)程中全項(xiàng)目組公用的開(kāi)發(fā)環(huán)境,任何人對(duì)于數(shù)據(jù)庫(kù)服務(wù)器的私自改變都將會(huì)影響到其他開(kāi)發(fā)人員的正常開(kāi)發(fā),應(yīng)當(dāng)予以嚴(yán)厲禁止。經(jīng)驗(yàn):破壞性最大的是對(duì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的私自變更,在3GSS項(xiàng)目中,我們采取了設(shè)置不同數(shù)據(jù)庫(kù)用戶,分別授權(quán)的方法

32、來(lái)規(guī)避該問(wèn)題。具體做法是,設(shè)置管理員用戶,賦予數(shù)據(jù)庫(kù)DBA權(quán)限,可以對(duì)數(shù)據(jù)庫(kù)服務(wù)器作出任何變更,這個(gè)用戶只有數(shù)據(jù)庫(kù)設(shè)計(jì)小組相關(guān)成員擁有密碼;設(shè)置開(kāi)發(fā)用戶,只賦予數(shù)據(jù)增刪改查權(quán)限以及其他必要的權(quán)限,該用戶供所有開(kāi)發(fā)人員開(kāi)發(fā)使用。4. 數(shù)據(jù)庫(kù)設(shè)計(jì)中的性能優(yōu)化問(wèn)題說(shuō)到數(shù)據(jù)庫(kù)性能優(yōu)化,在我接觸到的同事中持以下兩種觀點(diǎn)的人居多:l 性能優(yōu)化太復(fù)雜了,根本無(wú)從下手!l 不就是優(yōu)化嘛,等開(kāi)發(fā)完了找個(gè)高手過(guò)來(lái)優(yōu)化一下就可以了!如果說(shuō)持以上觀點(diǎn)的只是普通開(kāi)發(fā)人員還有可以挽回的余地,如果在一個(gè)大型的項(xiàng)目組中,負(fù)責(zé)數(shù)據(jù)庫(kù)設(shè)計(jì)工作的負(fù)責(zé)人也持有以上觀點(diǎn),那么注定將會(huì)出現(xiàn)一個(gè)失敗的數(shù)據(jù)庫(kù)設(shè)計(jì)!數(shù)據(jù)庫(kù)性能優(yōu)化并不是獨(dú)立于

33、數(shù)據(jù)庫(kù)設(shè)計(jì)和實(shí)現(xiàn)之外,而是自始至終貫徹于數(shù)據(jù)庫(kù)設(shè)計(jì)的工作之中,可以說(shuō)從數(shù)據(jù)庫(kù)設(shè)計(jì)工作啟動(dòng)的哪一刻起,我們就應(yīng)當(dāng)將性能優(yōu)化作為我們的一個(gè)工作重點(diǎn)。也可以說(shuō)數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程就是一個(gè)數(shù)據(jù)庫(kù)性能優(yōu)化的過(guò)程。性能優(yōu)化也不是洪水猛獸,也是有一定的工作方法可循的,只要我們按照正確的方法來(lái)做,相信一定會(huì)順利的完成,下面我們來(lái)著重談一下性能優(yōu)化這個(gè)話題。4.1. 什么是數(shù)據(jù)庫(kù)性能?這個(gè)問(wèn)題如果問(wèn)100個(gè)人,可能會(huì)得到101種答案,例如:SQL語(yǔ)句的執(zhí)行時(shí)間長(zhǎng)短、每秒鐘能夠插入數(shù)據(jù)庫(kù)的記錄條數(shù)、數(shù)據(jù)導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的時(shí)間長(zhǎng)短等等,這些答案都對(duì),但是并不完全。我認(rèn)為,以技術(shù)的角度來(lái)看,數(shù)據(jù)庫(kù)的性能就是以最少的時(shí)間獲取

34、所需要的數(shù)據(jù)的能力;以軟件工程的角度來(lái)看,性能就是滿足客戶需求的能力。許多人都喜歡說(shuō)這么一句話:“沒(méi)有最好,只有更好。”我很欣賞這句話,作工作需要這種積極向上的態(tài)度,但是這句話如果放在數(shù)據(jù)庫(kù)性能優(yōu)化這件事情上則不盡然,應(yīng)當(dāng)加上一個(gè)限制條件:“如果不計(jì)成本,那么數(shù)據(jù)庫(kù)性能沒(méi)有最好,只有更好?!?作軟件,特別是象我們這種行業(yè)解決方案提供商,如何平衡質(zhì)量(Quality)、成本(Cost)及交付(Delivery)的關(guān)系,從而利益最大化是每一個(gè)軟件從業(yè)人員都必須考慮的事情,從客戶角度來(lái)講,客戶花錢讓我們來(lái)做解決方案,是為了能夠在實(shí)際應(yīng)用中體現(xiàn)出該解決方案的價(jià)值,能夠滿足其特定的應(yīng)用需求,因此我們只要

35、滿足了客戶需求即可,性能優(yōu)化不需要畫蛇添足!4.2. 什么時(shí)間優(yōu)化?有很多人認(rèn)為數(shù)據(jù)庫(kù)性能優(yōu)化在編碼結(jié)束、系統(tǒng)穩(wěn)定后再進(jìn)行,理由是:應(yīng)當(dāng)首先保證項(xiàng)目的開(kāi)發(fā)進(jìn)度和交付能力,優(yōu)化工作必須等到開(kāi)發(fā)結(jié)束并且系統(tǒng)已經(jīng)穩(wěn)定之后進(jìn)行,并且要保證優(yōu)化后的系統(tǒng)依然是穩(wěn)定的、可交付的系統(tǒng)??梢钥隙ǖ恼f(shuō),這種看法是錯(cuò)誤的,試問(wèn)一個(gè)不能滿足客戶性能指標(biāo)的穩(wěn)定的系統(tǒng)何談交付能力?數(shù)據(jù)庫(kù)是應(yīng)用系統(tǒng)運(yùn)行的基礎(chǔ),數(shù)據(jù)庫(kù)的性能優(yōu)化、調(diào)整可以說(shuō)是牽一發(fā)而動(dòng)全身,是一件應(yīng)當(dāng)慎重對(duì)待的事情,如果等到系統(tǒng)開(kāi)發(fā)完畢再想到進(jìn)行性能優(yōu)化,那么我們已經(jīng)錯(cuò)過(guò)了性能優(yōu)化的最佳時(shí)期,如果此時(shí)再去勉為其難的去作優(yōu)化工作,那么數(shù)據(jù)庫(kù)設(shè)計(jì)小組的成員就只能

36、雙掌合十,心中默念從釋迦牟尼一直到圣母瑪利亞等諸多中外神佛保佑,祈禱之后我們會(huì)發(fā)現(xiàn)他們都不站在我們這邊。數(shù)據(jù)庫(kù)的性能優(yōu)化工作在項(xiàng)目的需求分析階段就已經(jīng)開(kāi)始了,并且一直伴隨著數(shù)據(jù)庫(kù)設(shè)計(jì)工作的開(kāi)展而進(jìn)行,可以說(shuō)數(shù)據(jù)庫(kù)的性能優(yōu)化工作是貫穿數(shù)據(jù)庫(kù)設(shè)計(jì)全過(guò)程的,數(shù)據(jù)庫(kù)設(shè)計(jì)小組成員心中需要牢記一條準(zhǔn)則:數(shù)據(jù)庫(kù)性能優(yōu)化無(wú)處不在,我們所作的一切都是為了性能的優(yōu)化。解決問(wèn)題的最高境界是將問(wèn)題消滅在萌芽階段,同樣性能優(yōu)化的最佳時(shí)期是在需求分析階段和系統(tǒng)架構(gòu)設(shè)計(jì)階段。4.3. 優(yōu)化些什么?l 首先需要優(yōu)化需求這里所指的優(yōu)化并非是指數(shù)據(jù)庫(kù)技術(shù)方面的優(yōu)化,而是在項(xiàng)目的需求分析階段對(duì)客戶的性能需求本身進(jìn)行優(yōu)化,目的只有一個(gè):得出切實(shí)可行的數(shù)據(jù)庫(kù)性能指標(biāo)!數(shù)據(jù)庫(kù)設(shè)計(jì)所作的一切可以說(shuō)都是在圍繞著如何滿足數(shù)據(jù)庫(kù)性能指標(biāo)在作??梢哉f(shuō)在性能指標(biāo)面前成王敗寇,沒(méi)有任何回旋的余地,性能指標(biāo)對(duì)于數(shù)據(jù)庫(kù)設(shè)計(jì)工作的順利進(jìn)行有著無(wú)比重要的意義,因此在項(xiàng)目的需求分析階段,數(shù)據(jù)庫(kù)設(shè)計(jì)小組必須和需求組的同事合作,與客戶反復(fù)協(xié)商,最終確定切實(shí)可行的數(shù)據(jù)庫(kù)性能指標(biāo),在這期間客戶很可能會(huì)提出一些不可能實(shí)現(xiàn)或者實(shí)現(xiàn)起來(lái)很困難的性能需求,這些性能需求都將會(huì)在后續(xù)的數(shù)據(jù)庫(kù)設(shè)計(jì)工作中產(chǎn)生極大的實(shí)現(xiàn)風(fēng)險(xiǎn),數(shù)據(jù)庫(kù)設(shè)計(jì)小則必須識(shí)別出這類需求并且和需求組密切配合與客戶溝通協(xié)商,爭(zhēng)取將風(fēng)險(xiǎn)降到最小,之所以強(qiáng)調(diào)數(shù)據(jù)庫(kù)設(shè)計(jì)小組需要作這部分工

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論