




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、大型項目中如何開展數(shù)據(jù)庫設(shè)計工作本文基于我在上海證券交易所第三代監(jiān)察系統(tǒng)項目的實踐描述如何在大型項目中開展數(shù)據(jù)庫設(shè)計工作,本文避免過多的描述具體實現(xiàn)的技術(shù)細節(jié),側(cè)重于從軟件工程角度描述數(shù)據(jù)庫設(shè)計的整體流程以及項目各個階段的工作側(cè)重點。1. 開展數(shù)據(jù)庫設(shè)計工作所需條件對于基于數(shù)據(jù)信息處理的大型行業(yè)解決方案項目來說,數(shù)據(jù)庫設(shè)計是整個系統(tǒng)設(shè)計工作中最為重要、最為基礎(chǔ)的環(huán)節(jié)之一,具備什么樣的條件才能順利開展數(shù)據(jù)庫設(shè)計工作呢?本章主要從資源配置角度描述如何確保數(shù)據(jù)庫設(shè)計工作能夠順利進行。1.1. 獨立的數(shù)據(jù)庫設(shè)計小組對于一個軟件合同額數(shù)千萬,前后參與項目的人員數(shù)量數(shù)百人的大型軟件工程項目來說,項目管理的
2、重要程度要遠比幾十個人月、幾個人完成的小項目要重要的多,而成功進行項目管理的基礎(chǔ)之一便是完備的組織機構(gòu)。對于一個基于數(shù)據(jù)處理的大型核心業(yè)務(wù)應(yīng)用系統(tǒng)來說,數(shù)據(jù)庫設(shè)計是整個應(yīng)用系統(tǒng)實現(xiàn)的基礎(chǔ),可以說其設(shè)計質(zhì)量的好壞直接影響到整個項目的成敗,應(yīng)當(dāng)有專門的組織機構(gòu)負責(zé)其設(shè)計。教訓(xùn):在3GSS項目中數(shù)據(jù)庫規(guī)劃組成立時間過晚,只是在開發(fā)工作過半的時候才組建起來,在這之前我個人也是在需求工作、架構(gòu)工作都已基本結(jié)束的時間點進入項目組,這對于順利的進行數(shù)據(jù)庫設(shè)計造成了很大的困難。1.1.1 職責(zé)數(shù)據(jù)庫設(shè)計小組的職責(zé)主要體現(xiàn)在以下方面:l 參與項目總體架構(gòu)設(shè)計,對于涉及到數(shù)據(jù)庫應(yīng)用的架構(gòu)問題主要負責(zé)。l 保證在項
3、目進行過程中數(shù)據(jù)庫設(shè)計的穩(wěn)定,為各個應(yīng)用子系統(tǒng)的開發(fā)提供穩(wěn)定的數(shù)據(jù)平臺,從而保證項目計劃的正常執(zhí)行。l 在數(shù)據(jù)庫性能優(yōu)化工作起到主導(dǎo)作用,并對數(shù)據(jù)庫性能優(yōu)化的結(jié)果負責(zé)。l 對于數(shù)據(jù)庫版本的管理和發(fā)布以及變更負責(zé)。l 做好需求與開發(fā)之間的橋梁。1.1.2 在項目組中的地位和作用數(shù)據(jù)庫設(shè)計小組在整個項目組的組織機構(gòu)配置中應(yīng)當(dāng)與架構(gòu)組、需求組、測試組等平級,直接對項目組PM、PSM負責(zé),因為數(shù)據(jù)庫設(shè)計的工作需要各個小組的積極配合才能夠順利完成,所以項目小組之間的溝通協(xié)調(diào)工作顯得尤其重要,如果不能做到從組織機構(gòu)上將數(shù)據(jù)庫設(shè)計小組提到項目組中一個相對較高的位置上,那么在一個大型項目組中,溝通協(xié)調(diào)工作將會
4、很難進行。教訓(xùn):3GSS項目中,數(shù)據(jù)庫規(guī)劃組在項目進入到編碼階段之前并沒有單獨獨立出來,只是隸屬于核心預(yù)警系統(tǒng)組,因此在與其他組的溝通協(xié)調(diào)方面增加了一定的困難。1.2. 如何組建數(shù)據(jù)庫設(shè)計小組描述數(shù)據(jù)庫設(shè)計小組的組建過程和資源角色配置。1.2.1. 角色配置一個數(shù)據(jù)庫設(shè)計小組主要應(yīng)當(dāng)包括以下角色:角色名稱職責(zé)組長對數(shù)據(jù)庫設(shè)計工作負全責(zé)數(shù)據(jù)庫架構(gòu)師負責(zé)搭建數(shù)據(jù)庫系統(tǒng)環(huán)境,對于數(shù)據(jù)庫硬件選型方案、數(shù)據(jù)存儲方案、數(shù)據(jù)備份恢復(fù)方案、數(shù)據(jù)庫物理設(shè)計以及整體性能優(yōu)化工作負責(zé)數(shù)據(jù)建模員從需求入手對各個子系統(tǒng)進行數(shù)據(jù)建模工作,由淺入深得出各個子系統(tǒng)的數(shù)據(jù)庫邏輯模型版本控制員負責(zé)控制數(shù)據(jù)庫設(shè)計的版本技術(shù)咨詢師負
5、責(zé)對數(shù)據(jù)庫設(shè)計工作中遇到的具體技術(shù)難題進行咨詢,協(xié)助進行相關(guān)工作1.2.2. 資源使用可以這樣說,數(shù)據(jù)庫設(shè)計工作沒有太多的開發(fā)工作量,但是對人員素質(zhì)的要求很高,因此數(shù)據(jù)庫設(shè)計小組的組建要按照“外科手術(shù)”的標準進行,貴在精而不在多:角色名稱所需技能使用情況組長1、 豐富的數(shù)據(jù)庫設(shè)計項目實踐經(jīng)驗2、 較強的溝通協(xié)調(diào)、組織能力1人,專職使用數(shù)據(jù)庫架構(gòu)師1、 豐富的數(shù)據(jù)庫架構(gòu)經(jīng)驗2、 良好的問題分析、解決能力2-3人,確保1人專職使用數(shù)據(jù)建模員1、 較強的業(yè)務(wù)理解能力2、 較強的溝通能力3、 熟悉數(shù)據(jù)庫邏輯設(shè)計的基本方法原則上在需求分析階段應(yīng)當(dāng)每一個子系統(tǒng)設(shè)置一名數(shù)據(jù)建模員,數(shù)據(jù)庫邏輯設(shè)計結(jié)束后可以釋
6、放一部分人員,但應(yīng)當(dāng)保證2-3人專職使用,負責(zé)維護數(shù)據(jù)庫邏輯設(shè)計版本控制員1、 具有嚴謹?shù)墓ぷ鲬B(tài)度2、 良好的溝通協(xié)調(diào)能力1人,專職使用技術(shù)咨詢師1、 數(shù)據(jù)庫應(yīng)用技術(shù)方面的技術(shù)專家2、 良好的溝通能力若干,兼職使用,這些人員都屬于公司一級的技術(shù)專家,不可能長時間駐場,在使用上應(yīng)當(dāng)事先作出計劃,提前向上級組織提出申請1.3. 硬件資源數(shù)據(jù)庫設(shè)計工作順利開展的一個重要條件是擁有既定硬件方案所規(guī)定型號的主機以及配套的存儲設(shè)備,并且網(wǎng)絡(luò)通訊能力要和真實上線條件一致,總之?dāng)?shù)據(jù)庫設(shè)計工作需要一整套真實上線環(huán)境下的硬件設(shè)備,這不僅僅是數(shù)據(jù)庫設(shè)計的需要,同時也是整個項目開發(fā)工作的一個重要基礎(chǔ)條件,因為沒有經(jīng)過
7、真實上線環(huán)境的檢驗,誰也不敢說我們用PC機和低檔服務(wù)器開發(fā)出來的系統(tǒng)能否在上線的時候穩(wěn)定運行。必需要保證在編碼工作開始前準備好硬件方案所規(guī)定型號的主機以及配套的存儲設(shè)備。教訓(xùn):3GSS項目在7月進入開發(fā)編碼階段,而硬件環(huán)境直到9月份才到位,在這之前我們只能使用PC機來作數(shù)據(jù)庫服務(wù)器,根本沒有辦法模擬大數(shù)據(jù)量存儲,致使數(shù)據(jù)庫物理設(shè)計的優(yōu)化調(diào)整只能延后,如果我們能夠在這寶貴的2個月時間內(nèi)仔細驗證、優(yōu)化我們的數(shù)據(jù)庫物理設(shè)計方案,我們完全可以規(guī)避很多實現(xiàn)風(fēng)險,也不會造成后來開發(fā)階段數(shù)據(jù)庫存儲性能的瓶頸問題。1.4. 設(shè)計工具工欲善其事,必先利其器,現(xiàn)在有很多數(shù)據(jù)庫設(shè)計工具可供選擇,3GSS項目選擇Sy
8、base公司的PowerDesigner9.5作為設(shè)計工具,我認為這個工具主要有以下好處:1、 可以方便地進行數(shù)據(jù)庫的物理設(shè)計、邏輯設(shè)計2、 有很強的文檔生成能力,可以定制生成各種數(shù)據(jù)庫設(shè)計文檔3、 擁有數(shù)據(jù)庫反向工程能力2. 數(shù)據(jù)庫設(shè)計工作的流程與方法首先提出一個問題:在一個項目中數(shù)據(jù)庫設(shè)計工作什么時候開始啟動?什么時候結(jié)束?我認為,從需求工作啟動的那一刻起,數(shù)據(jù)庫設(shè)計工作就正式開始了,直到項目交付完畢、正式上線運行方才告一段落!其中工作重心主要放在需求階段、架構(gòu)設(shè)計階段、詳細設(shè)計階段。2.1. 需求階段數(shù)據(jù)庫的設(shè)計,特別是大型核心業(yè)務(wù)應(yīng)用系統(tǒng)的數(shù)據(jù)庫設(shè)計,遠非建幾張數(shù)據(jù)庫表那么簡單,在數(shù)據(jù)
9、庫設(shè)計工作的初時階段,就其本質(zhì)來講,是對客戶核心業(yè)務(wù)的一次數(shù)據(jù)建模,出色完成該階段數(shù)據(jù)庫設(shè)計任務(wù)的關(guān)鍵條件是對用戶核心業(yè)務(wù)的業(yè)務(wù)模式、處理流程、數(shù)據(jù)構(gòu)成充分理解,可以說在這一階段的數(shù)據(jù)庫設(shè)計工作中,并沒有涉及多少數(shù)據(jù)庫技術(shù)方面的工作,更多的工作集中在對于客戶核心業(yè)務(wù)的理解和學(xué)習(xí)上,為在后續(xù)階段對數(shù)據(jù)庫進行邏輯設(shè)計打好基礎(chǔ)。而在這一方面,無疑需求組的同事是處于主導(dǎo)地位的,我們必須和需求組的同事合作,獲取它們的幫助,同時,我們的參與也會促進需求組的同事進一步和客戶溝通、明確很多業(yè)務(wù)方面的細節(jié)問題,從某種意義上講也是間接推動了客戶需求的細化工作。數(shù)據(jù)庫設(shè)計小組需要在需求階段投入最大的精力和資源。這一
10、階段數(shù)據(jù)庫設(shè)計小組(以數(shù)據(jù)建模員為主)主要從事以下方面的工作:l 對于客戶需求的分析、理解、細化有人可能會說:這是需求組來作的事,干嗎讓我來做?這種觀點是不正確的,因為需求人員的工作是站在偏業(yè)務(wù)的方面與客戶進行溝通,而數(shù)據(jù)庫設(shè)計人員是站在設(shè)計實現(xiàn)的角度去作,可以說數(shù)據(jù)庫設(shè)計人員對于客戶的數(shù)據(jù)需求比需求組的同事更加敏銳。這段時間的工作是數(shù)據(jù)庫設(shè)計工作中最困難也是最重要的工作,因為對于客戶業(yè)務(wù)需求的理解是整個數(shù)據(jù)庫設(shè)計工作的基礎(chǔ),磨刀不誤砍柴工,在需求階段將客戶業(yè)務(wù)需求理解透徹將會在后續(xù)的設(shè)計工作中節(jié)省大量的時間。l 數(shù)據(jù)概念模型建模在對客戶的需求用例有了比較透徹的理解之后,就應(yīng)當(dāng)著手針對需求用例
11、進行數(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ù)庫的人都明確如何從數(shù)據(jù)庫中獲得數(shù)據(jù)。ER圖對表明表之間關(guān)系很有用,而數(shù)據(jù)字典則說明了每個字段的用途以及任何可能存在的別名。對后續(xù)開發(fā)SQL來說這是完全必要的。2、 確定數(shù)據(jù)依賴,識別數(shù)據(jù)實體之間的關(guān)系,對數(shù)據(jù)實體間的關(guān)系作規(guī)范化處理。數(shù)據(jù)庫實體之間關(guān)系規(guī)范化的范式有很多專門的技術(shù)文檔可供參考,這里不加詳細描述,但是需要指出一點,在實際項目實踐過程中,并不一定完全按照范式的要求實現(xiàn)就是最好的設(shè)計,需要根據(jù)實際情況適當(dāng)?shù)淖鞒鲆欢ǖ哪娣妒皆O(shè)
12、計。例如,一個股票訂單信息的數(shù)據(jù)實體,包括投資者帳號、投資者名稱等投資人信息;訂單號、交易價格、交易數(shù)量等交易信息;按照標準的范式設(shè)計應(yīng)當(dāng)將該數(shù)據(jù)模型劃分為兩個實體,既主從關(guān)系的投資人實體和交易信息實體,使用訂單號關(guān)聯(lián),但是實際情況是,每日的訂單信息數(shù)量達到了5000萬筆,而投資人信息也將達到8000萬條,如果仍然按照范式設(shè)計,那么在查詢訂單信息時將會人為的在兩張超大表之間進行關(guān)聯(lián),那將嚴重影響查詢速度,所以只能反規(guī)范化,將投資人信息和交易信息融合在一個數(shù)據(jù)實體中。3、 對數(shù)據(jù)概念模型進行優(yōu)化調(diào)整。針對數(shù)據(jù)庫概念模型中的不足和缺陷,要及時作出修正和調(diào)整,在這期間要與需求組的同事配合,充分和客戶
13、溝通,數(shù)據(jù)庫設(shè)計的調(diào)整在概念模型上進行調(diào)整代價是最小的。4、 制定數(shù)據(jù)對象命名規(guī)范。對于一個大型行業(yè)業(yè)務(wù)解決方案來說,需要建模的數(shù)據(jù)項可能會有成千上萬個,如果沒有一個統(tǒng)一的命名規(guī)范將會給后續(xù)的設(shè)計開發(fā)工作造成不必要的麻煩。這一工作一般由數(shù)據(jù)庫設(shè)計小組組長完成,完成后要經(jīng)過項目組一級的評審。經(jīng)驗:在概念模型的建立過程中,對于那些有著明確數(shù)據(jù)接口格式定義的外部輸入數(shù)據(jù),建模工作相對容易一些,對于用戶需求用例中數(shù)據(jù)的流轉(zhuǎn)過程建模,從而得出數(shù)據(jù)流圖相對來說要困難一些,數(shù)據(jù)建模員切忌只看輸入輸出,不看數(shù)據(jù)流轉(zhuǎn)、處理過程。數(shù)據(jù)的流轉(zhuǎn)處理過程是建立數(shù)據(jù)庫概念模型的重要依據(jù),我們只有搞清楚了數(shù)據(jù)是如何流轉(zhuǎn)的,
14、如何被使用的才能夠設(shè)計出盡可能貼近客戶業(yè)務(wù)需求的數(shù)據(jù)模型。l 做好需求與開發(fā)之間的橋梁。為什么呢?因為數(shù)據(jù)庫作為整個應(yīng)用系統(tǒng)的運行基礎(chǔ),可以說整個系統(tǒng)的設(shè)計工作都將或多或少的與數(shù)據(jù)庫系統(tǒng)的設(shè)計工作產(chǎn)生交叉,而數(shù)據(jù)庫設(shè)計人員出于完成數(shù)據(jù)庫邏輯設(shè)計的目的,必須對整個項目的需求用例以及業(yè)務(wù)背景有著全面的了解和掌握,可以這么說,在整個項目組中,只有數(shù)據(jù)庫設(shè)計人員才能站在開發(fā)設(shè)計角度掌握整個系統(tǒng)完整的需求細節(jié),可以說數(shù)據(jù)庫設(shè)計人員在以后的設(shè)計、開發(fā)階段是一個寶貴的資源,數(shù)據(jù)庫設(shè)計人員應(yīng)當(dāng)對應(yīng)用系統(tǒng)的設(shè)計人員提供咨詢上的幫助,并且對應(yīng)用系統(tǒng)設(shè)計進行評審,確定其設(shè)計是否與數(shù)據(jù)庫設(shè)計相契合。2.2. 系統(tǒng)架構(gòu)
15、階段在系統(tǒng)架構(gòu)階段,數(shù)據(jù)庫設(shè)計小組的主要工作是:l 確定數(shù)據(jù)庫服務(wù)器所使用的硬件配置方案這項工作需要數(shù)據(jù)庫設(shè)計小組和系統(tǒng)集成組的同事合作完成,數(shù)據(jù)庫設(shè)計小組主要從客戶對于數(shù)據(jù)庫的性能指標入手,得出對于數(shù)據(jù)庫服務(wù)器的硬件要求,系統(tǒng)集成組的同事負責(zé)具體的硬件選型。在確定硬件配置方案的時候,數(shù)據(jù)庫設(shè)計小組主要從以下幾個方面入手:1、 滿足數(shù)據(jù)的存儲容量需求。以需求階段所得出的數(shù)據(jù)庫概念模型和數(shù)據(jù)字典為基礎(chǔ),按照客戶給出的未來一段時間內(nèi)業(yè)務(wù)數(shù)據(jù)的增長速度預(yù)估出數(shù)據(jù)存儲空間,在這里應(yīng)當(dāng)注意:需要為索引預(yù)留出存儲空間,一般經(jīng)驗性的做法,索引的存儲空間與數(shù)據(jù)存儲空間按照1:1來預(yù)估。2、 滿足數(shù)據(jù)庫交易處理
16、能力的需求。我們要考慮高峰時的處理器的能力,并適當(dāng)保留一些緩沖,確保在業(yè)務(wù)增長時,系統(tǒng)有擴展的余地。如果要保持快速的響應(yīng)能力,應(yīng)當(dāng)為CPU保留20%至40%的富余量。要為運行在此服務(wù)器的所有應(yīng)用軟件考慮內(nèi)存,所需要的內(nèi)存主要依賴于用戶數(shù)、應(yīng)用程序類型、進程的方式、和應(yīng)用程序處理的數(shù)據(jù)量決定。在評估數(shù)據(jù)庫服務(wù)器性能時,最困難的事情是如何把握準確度問題,到底考慮哪些因素等。理想情況下,應(yīng)考慮下列要素:Ø 交易的復(fù)雜性Ø 交易頻率Ø 數(shù)據(jù)讀/寫比例Ø 并發(fā)連接數(shù)目Ø 并發(fā)交易數(shù)目Ø 數(shù)據(jù)庫最大表的大小Ø 性能度量的目標教訓(xùn):在3G
17、SS項目架構(gòu)設(shè)計階段硬件方案選型的時候,沒有考慮到會在每天的交易時間內(nèi)在數(shù)據(jù)庫服務(wù)器上并發(fā)運行數(shù)據(jù)預(yù)處理存儲過程,只為數(shù)據(jù)庫服務(wù)器配置了4CPU,結(jié)果導(dǎo)致在項目后期出現(xiàn)了嚴重的數(shù)據(jù)庫服務(wù)器處理性能不足問題。l 規(guī)劃數(shù)據(jù)庫的物理設(shè)計數(shù)據(jù)庫最終是要存儲在物理設(shè)備上的。為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(存儲結(jié)構(gòu)與存取方法)的過程,就是數(shù)據(jù)庫的物理設(shè)計。物理結(jié)構(gòu)依賴于給定的DBMS和和硬件系統(tǒng),因此設(shè)計人員必須充分了解所用DBMS的內(nèi)部特征,特別是存儲結(jié)構(gòu)和存取方法;充分了解應(yīng)用環(huán)境,特別是應(yīng)用的處理頻率和響應(yīng)時間要求;并充分了解外存設(shè)備的特性。數(shù)據(jù)庫的物理設(shè)計通常分為兩步:第
18、一步:確定數(shù)據(jù)庫的物理結(jié)構(gòu)在這里數(shù)據(jù)庫設(shè)計小組主要從事以下方面的工作:1、 確定數(shù)據(jù)的存儲結(jié)構(gòu)。確定數(shù)據(jù)庫存儲結(jié)構(gòu)時要綜合考慮存取時間、存儲空間利用率和維護代價三方面的因素。這三個方面常常是相互矛盾的,例如消除一切冗余數(shù)據(jù)雖然能夠節(jié)約存儲空間,但往往會導(dǎo)致檢索代價的增加,因此必須進行權(quán)衡,選擇一個折中方案。2、 設(shè)計數(shù)據(jù)的存取路徑。在關(guān)系數(shù)據(jù)庫中,選擇存取路徑主要是指確定如何建立索引。例如,應(yīng)把哪些域作為次碼建立次索引,建立單碼索引還是組合索引,建立多少個為合適,是否建立聚集索引等。3、 確定數(shù)據(jù)的存放位置。為了提高系統(tǒng)性能,數(shù)據(jù)應(yīng)該根據(jù)應(yīng)用情況將易變部分與穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低
19、部分分開存放。例如,目前許多計算機都有多個磁盤,因此進行物理設(shè)計時可以考慮將表和索引分別放在不同的磁盤上,在查詢時,由于兩個磁盤驅(qū)動器分別在工作,因而可以保證物理讀寫速度比較快。也可以將比較大的表分別放在兩個磁盤上,以加快存取速度,這在多用戶環(huán)境下特別有效。此外還可以將日志文件與數(shù)據(jù)庫對象(表、索引等)放在不同的磁盤以改進系統(tǒng)的性能。4、 確定系統(tǒng)配置。DBMS產(chǎn)品一般都提供了一些存儲分配參數(shù),供設(shè)計人員和DBA對數(shù)據(jù)庫進行物理優(yōu)化。初始情況下,系統(tǒng)都為這些變量賦予了合理的缺省值。但是這些值不一定適合每一種應(yīng)用環(huán)境,在進行物理設(shè)計時,需要重新對這些變量賦值以改善系統(tǒng)的性能。通常情況下,這些配置
20、變量包括:同時使用數(shù)據(jù)庫的用戶數(shù),同時打開的數(shù)據(jù)庫對象數(shù),使用的緩沖區(qū)長度、個數(shù),時間片大小、數(shù)據(jù)庫的大小,裝填因子,鎖的數(shù)目等等,這些參數(shù)值影響存取時間和存儲空間的分配,在物理設(shè)計時就要根據(jù)應(yīng)用環(huán)境確定這些參數(shù)值,以使系統(tǒng)性能最優(yōu)。在物理設(shè)計時對系統(tǒng)配置變量的調(diào)整只是初步的,在系統(tǒng)運行時還要根據(jù)系統(tǒng)實際運行情況做進一步的調(diào)整,以期切實改進系統(tǒng)性能。第二步:對數(shù)據(jù)庫物理結(jié)構(gòu)優(yōu)化數(shù)據(jù)庫物理設(shè)計過程中需要對時間效率、空間效率、維護代價和各種用戶要求進行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案,數(shù)據(jù)庫設(shè)計人員必須對這些方案進行細致的評價,從中選擇一個較優(yōu)的方案作為數(shù)據(jù)庫的物理結(jié)構(gòu)。評價物理數(shù)據(jù)庫的方法完全依賴于
21、所選用的DBMS,主要是從定量估算各種方案的存儲空間、存取時間和維護代價入手,對估算結(jié)果進行權(quán)衡、比較,選擇出一個較優(yōu)的合理的物理結(jié)構(gòu)。如果該結(jié)構(gòu)不符合用戶需求,則需要修改設(shè)計。l 完成數(shù)據(jù)庫概念模型到邏輯模型的轉(zhuǎn)換邏輯結(jié)構(gòu)設(shè)計的任務(wù):就是把概念結(jié)構(gòu)設(shè)計階段設(shè)計好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。因此設(shè)計邏輯結(jié)構(gòu)首先應(yīng)該選擇最適于描述與表達相應(yīng)概念結(jié)構(gòu)的數(shù)據(jù)模型,然后選擇最合適的DBMS。設(shè)計邏輯結(jié)構(gòu)時一般要分兩步進行:1、 將概念結(jié)構(gòu)轉(zhuǎn)換為特定DBMS支持下的數(shù)據(jù)模型。2、 數(shù)據(jù)模型進行優(yōu)化。這些工作基本上都可以使用PowerDesigner設(shè)計工具開完
22、成。2.3. 詳細設(shè)計階段有一點是要明確的,就是數(shù)據(jù)庫設(shè)計要走在各個子系統(tǒng)應(yīng)用程序設(shè)計的前面,原因是明顯的,因為各個子系統(tǒng)需要在數(shù)據(jù)庫支撐環(huán)境已經(jīng)明確的情況下才可以開展設(shè)計、開發(fā)工作。數(shù)據(jù)庫設(shè)計小組這一階段的主要工作有兩點:1、 支持各個子系統(tǒng)應(yīng)用程序的設(shè)計。特別是查詢、報表模塊的設(shè)計,這是與數(shù)據(jù)庫關(guān)聯(lián)最為密切的模塊,可以說沒有數(shù)據(jù)庫的良好支持,根本不可能設(shè)計出性能優(yōu)良的查詢、報表程序。2、 對數(shù)據(jù)庫模型進行優(yōu)化調(diào)整。在各個子系統(tǒng)設(shè)計的深入過程中我們會不斷發(fā)現(xiàn)原有數(shù)據(jù)庫模型設(shè)計上的一些不足,主要集中在以下方面:Ø 庫表結(jié)構(gòu)設(shè)計不合理。Ø 不能夠提供所需要的數(shù)據(jù)。Ø
23、 數(shù)據(jù)庫表的主鍵、索引設(shè)置不合理。Ø 數(shù)據(jù)庫的物理存儲空間分配不足。2.4. 編碼階段如果之前階段的工作順利完成,那么進入到編碼階段,可以說數(shù)據(jù)庫設(shè)計工作已經(jīng)完成大半了,編碼階段數(shù)據(jù)庫設(shè)計小組的工作重心應(yīng)當(dāng)轉(zhuǎn)移到性能驗證、性能測試工作上。此外,在編碼階段數(shù)據(jù)庫設(shè)計小組應(yīng)當(dāng)對于開發(fā)人員的PL/SQL編程提供技術(shù)支持和代碼檢查,以保證PL/SQL編碼的質(zhì)量。2.5. 測試階段隨著開發(fā)工作的逐步推進,測試組的同事會對各個階段獲取的系統(tǒng)版本進行系統(tǒng)測試,數(shù)據(jù)庫設(shè)計小組要做好數(shù)據(jù)庫的版本控制工作,全力配合測試組的同事進行系統(tǒng)測試。另外,數(shù)據(jù)庫設(shè)計小組還應(yīng)當(dāng)積極協(xié)助測試組的同事準備數(shù)據(jù)庫性能驗證
24、測試的測試案例、測試數(shù)據(jù)。2.6. 系統(tǒng)交付階段如果能夠順利進行到系統(tǒng)最終交付階段,也可以說我們的數(shù)據(jù)庫設(shè)計工作已經(jīng)功德圓滿了。這一階段要做好數(shù)據(jù)庫設(shè)計的最終封版工作,對數(shù)據(jù)庫設(shè)計的各種工作成果物進行整理,對數(shù)據(jù)庫設(shè)計個個階段產(chǎn)生的設(shè)計文檔進行歸納總結(jié)。3. 數(shù)據(jù)庫設(shè)計工作中的版本控制由于大型項目的開發(fā)周期很長,出于配置管理的需要,在大型項目的開發(fā)階段,需要設(shè)置若干個里程碑,在每個里程碑都需要對軟件系統(tǒng)進行封版,形成配置基線,這些配置基線對于開發(fā)工作的延承和最終系統(tǒng)的按時交付有著重要意義,與此相對應(yīng),作為應(yīng)用系統(tǒng)基礎(chǔ)的數(shù)據(jù)庫也需要在相應(yīng)的里程碑得到對應(yīng)的設(shè)計版本,數(shù)據(jù)庫設(shè)計的版本控制與配置管理
25、是整個項目組版本控制與配置管理的一部分,但是與應(yīng)用系統(tǒng)開發(fā)過程的版本控制與配置管理又有所區(qū)別,我們在3GSS項目的實踐中摸索出了一套數(shù)據(jù)庫設(shè)計版本控制的工作流程與方法。3.1. 版本控制數(shù)據(jù)庫設(shè)計的工作成果主要包括數(shù)據(jù)庫建庫腳本、初始化數(shù)據(jù)、PL/SQL腳本等內(nèi)容,其特點在于數(shù)據(jù)庫設(shè)計的版本與應(yīng)用系統(tǒng)的開發(fā)版本之間存在很強的相互依賴性,一個開發(fā)版本通常情況下只能在與該開發(fā)版本對應(yīng)的數(shù)據(jù)庫設(shè)計基礎(chǔ)之上才能夠正常運行,這是由于在項目開發(fā)工作的不斷推進過程中,數(shù)據(jù)庫設(shè)計工作也在不斷的細化、完善。這種依賴性在測試組的同事針對某一開發(fā)版本進行測試的時候表現(xiàn)的最為明顯。教訓(xùn):在3GSS開發(fā)工作的初始階段,
26、數(shù)據(jù)庫設(shè)計的版本控制沒有形成規(guī)范化,與開發(fā)版本的控制脫節(jié),因此曾經(jīng)一度造成數(shù)據(jù)庫版本的混亂,測試組在進行系統(tǒng)測試的時候取得開發(fā)版本后不知道應(yīng)該使用什么版本的數(shù)據(jù)庫。經(jīng)驗:在后續(xù)的開發(fā)工作中,數(shù)據(jù)庫設(shè)計的版本控制嚴格跟隨應(yīng)用系統(tǒng)開發(fā)版本的版本控制進程進行,在應(yīng)用系統(tǒng)發(fā)布每一個開發(fā)版本的時候,我們都會發(fā)布一個與之對應(yīng)的數(shù)據(jù)庫設(shè)計版本,并且在交付測試組進行系統(tǒng)測試前明確指出開發(fā)版本與數(shù)據(jù)庫設(shè)計版本的對應(yīng)關(guān)系,從而避免了開發(fā)版本與數(shù)據(jù)庫設(shè)計版本的脫節(jié)問題,開發(fā)、測試工作也得以穩(wěn)定、順利的進行下去。3.2. 配置管理數(shù)據(jù)庫設(shè)計的配置管理工作應(yīng)當(dāng)緊跟應(yīng)用系統(tǒng)開發(fā)的階段性封版工作,要與應(yīng)用系統(tǒng)形成統(tǒng)一的配置
27、基線。數(shù)據(jù)庫設(shè)計工作成果物的目錄組織形式可以參照下圖所示:但是并不一定拘泥于此,只要能夠清晰、簡便的體現(xiàn)出數(shù)據(jù)庫設(shè)計的各個配置基線,能夠方便地獲取各個時期各個時期的不同版本即可。配置管理工具可以選用微軟的SourceSafe。經(jīng)驗:在開發(fā)階段,數(shù)據(jù)庫的結(jié)構(gòu)細微變動較為頻繁,數(shù)據(jù)庫的變動通過補丁方式維護數(shù)據(jù)庫,在一個開發(fā)階段結(jié)束,數(shù)據(jù)庫版本穩(wěn)定后,根據(jù)數(shù)據(jù)庫的變動情況形成數(shù)據(jù)庫設(shè)計的配置基線。3.3. 變更流程在項目的編碼開發(fā)階段,隨著編碼工作的逐漸深入,原有系統(tǒng)設(shè)計中的不足和一些沒有考慮到的設(shè)計細節(jié)問題開始逐漸暴露出來,隨之就要進行設(shè)計的調(diào)整,數(shù)據(jù)庫設(shè)計也是如此。但是數(shù)據(jù)庫設(shè)計是整個應(yīng)用系統(tǒng)運
28、行的基礎(chǔ),對于數(shù)據(jù)庫系統(tǒng)的設(shè)計調(diào)整將有可能影響到整個系統(tǒng)的正常運行,因此對于數(shù)據(jù)庫設(shè)計的調(diào)整應(yīng)當(dāng)十分謹慎,在數(shù)據(jù)庫設(shè)計的變更工作中應(yīng)當(dāng)注意以下方面:l 數(shù)據(jù)庫設(shè)計變更的要求只能由各個子系統(tǒng)的開發(fā)組長提出,并且經(jīng)過項目組開發(fā)負責(zé)人同意。這樣做是為了保證數(shù)據(jù)庫設(shè)計的穩(wěn)定性,因為在一個大型項目中,編碼人員非常多,而且編碼人員看待設(shè)計問題的方法和角度往往和系統(tǒng)設(shè)計人員、架構(gòu)師的角度不同,有可能提出一些不切合實際的變更要求,因此就需要有人對變更要求進行評審和把關(guān)。l 數(shù)據(jù)庫設(shè)計小組在接到變更要求后絕對不可以隨意變更數(shù)據(jù)庫設(shè)計,必須經(jīng)過數(shù)據(jù)庫設(shè)計小組組長評審?fù)ㄟ^后方可進行相應(yīng)修改。這樣做同樣是為了保證數(shù)據(jù)
29、庫設(shè)計的穩(wěn)定性,避免設(shè)計工作的反復(fù)。如果數(shù)據(jù)庫設(shè)計小組組長評審后認為不適宜修改應(yīng)當(dāng)立即和項目組開發(fā)負責(zé)人進行溝通協(xié)商,如果仍然沒能達成一致就需要召開項目組級別的架構(gòu)評審會議進行評審。l 數(shù)據(jù)庫設(shè)計的變更需要做好修改記錄。這樣做是為了清楚地記錄下整個數(shù)據(jù)庫設(shè)計過程中所發(fā)生的設(shè)計變動過程,有了這份記錄,我們在將來就可以很容易對數(shù)據(jù)庫設(shè)計的依據(jù)進行回溯,有助于我們更好的理解數(shù)據(jù)庫設(shè)計的歷史延承。l 數(shù)據(jù)庫設(shè)計變更完畢后一定要將變更結(jié)果通知項目組中所有涉及到該項變更的開發(fā)小組組長。在一個大型項目組中,由于開發(fā)小組很多,再加上溝通不暢,很容易造成這樣一種結(jié)果:某張表已經(jīng)作出了變更,但是某些開發(fā)小組并不知
30、道,仍然依據(jù)老的表結(jié)構(gòu)進行開發(fā),這樣就人為的制造了系統(tǒng)BUG。因此務(wù)必要將數(shù)據(jù)庫設(shè)計的變更結(jié)果傳達到每一個相關(guān)的開發(fā)人員,而開發(fā)人員數(shù)量較多,因此我們只將變更結(jié)果傳達到開發(fā)小組長,再由開發(fā)小組長傳達到每一個開發(fā)人員。教訓(xùn):3GSS項目中在開發(fā)階段的初期,數(shù)據(jù)庫設(shè)計調(diào)整之后,數(shù)據(jù)庫設(shè)計小組作了版本控制,也做了修改記錄,但是沒有將變更結(jié)果通知到涉及該次變更的開發(fā)人員,結(jié)果造成了數(shù)據(jù)庫版本已經(jīng)升級而開發(fā)人員還在使用老版本的數(shù)據(jù)庫設(shè)計進行開發(fā)的情況經(jīng)驗:我們采取了變更后對開發(fā)小組組長進行郵件通知的做法,一定程度上避免了該問題,但是有一些開發(fā)小組組長對于郵件通知不敏感,沒有將變更通知繼續(xù)向組員傳達,所以
31、數(shù)據(jù)庫設(shè)計小組就在每次發(fā)送變更通知郵件后再口頭通知一遍各個開發(fā)小組組長。l 每一次數(shù)據(jù)庫設(shè)計變更后應(yīng)當(dāng)做好相應(yīng)的版本控制和配置管理工作。l 發(fā)布每一次數(shù)據(jù)庫設(shè)計的變更之前都應(yīng)當(dāng)對所發(fā)布的內(nèi)容在專用的數(shù)據(jù)庫服務(wù)器上進行發(fā)布測試,以保證所發(fā)布設(shè)計的可用性。l 開發(fā)用數(shù)據(jù)庫服務(wù)器由數(shù)據(jù)庫設(shè)計小組負責(zé)管理和維護,此外任何人不得對數(shù)據(jù)庫服務(wù)器作出任何變更。開發(fā)用數(shù)據(jù)庫服務(wù)器是系統(tǒng)開發(fā)過程中全項目組公用的開發(fā)環(huán)境,任何人對于數(shù)據(jù)庫服務(wù)器的私自改變都將會影響到其他開發(fā)人員的正常開發(fā),應(yīng)當(dāng)予以嚴厲禁止。經(jīng)驗:破壞性最大的是對數(shù)據(jù)庫表結(jié)構(gòu)的私自變更,在3GSS項目中,我們采取了設(shè)置不同數(shù)據(jù)庫用戶,分別授權(quán)的方法
32、來規(guī)避該問題。具體做法是,設(shè)置管理員用戶,賦予數(shù)據(jù)庫DBA權(quán)限,可以對數(shù)據(jù)庫服務(wù)器作出任何變更,這個用戶只有數(shù)據(jù)庫設(shè)計小組相關(guān)成員擁有密碼;設(shè)置開發(fā)用戶,只賦予數(shù)據(jù)增刪改查權(quán)限以及其他必要的權(quán)限,該用戶供所有開發(fā)人員開發(fā)使用。4. 數(shù)據(jù)庫設(shè)計中的性能優(yōu)化問題說到數(shù)據(jù)庫性能優(yōu)化,在我接觸到的同事中持以下兩種觀點的人居多:l 性能優(yōu)化太復(fù)雜了,根本無從下手!l 不就是優(yōu)化嘛,等開發(fā)完了找個高手過來優(yōu)化一下就可以了!如果說持以上觀點的只是普通開發(fā)人員還有可以挽回的余地,如果在一個大型的項目組中,負責(zé)數(shù)據(jù)庫設(shè)計工作的負責(zé)人也持有以上觀點,那么注定將會出現(xiàn)一個失敗的數(shù)據(jù)庫設(shè)計!數(shù)據(jù)庫性能優(yōu)化并不是獨立于
33、數(shù)據(jù)庫設(shè)計和實現(xiàn)之外,而是自始至終貫徹于數(shù)據(jù)庫設(shè)計的工作之中,可以說從數(shù)據(jù)庫設(shè)計工作啟動的哪一刻起,我們就應(yīng)當(dāng)將性能優(yōu)化作為我們的一個工作重點。也可以說數(shù)據(jù)庫設(shè)計的過程就是一個數(shù)據(jù)庫性能優(yōu)化的過程。性能優(yōu)化也不是洪水猛獸,也是有一定的工作方法可循的,只要我們按照正確的方法來做,相信一定會順利的完成,下面我們來著重談一下性能優(yōu)化這個話題。4.1. 什么是數(shù)據(jù)庫性能?這個問題如果問100個人,可能會得到101種答案,例如:SQL語句的執(zhí)行時間長短、每秒鐘能夠插入數(shù)據(jù)庫的記錄條數(shù)、數(shù)據(jù)導(dǎo)入導(dǎo)出數(shù)據(jù)庫的時間長短等等,這些答案都對,但是并不完全。我認為,以技術(shù)的角度來看,數(shù)據(jù)庫的性能就是以最少的時間獲取
34、所需要的數(shù)據(jù)的能力;以軟件工程的角度來看,性能就是滿足客戶需求的能力。許多人都喜歡說這么一句話:“沒有最好,只有更好。”我很欣賞這句話,作工作需要這種積極向上的態(tài)度,但是這句話如果放在數(shù)據(jù)庫性能優(yōu)化這件事情上則不盡然,應(yīng)當(dāng)加上一個限制條件:“如果不計成本,那么數(shù)據(jù)庫性能沒有最好,只有更好?!?作軟件,特別是象我們這種行業(yè)解決方案提供商,如何平衡質(zhì)量(Quality)、成本(Cost)及交付(Delivery)的關(guān)系,從而利益最大化是每一個軟件從業(yè)人員都必須考慮的事情,從客戶角度來講,客戶花錢讓我們來做解決方案,是為了能夠在實際應(yīng)用中體現(xiàn)出該解決方案的價值,能夠滿足其特定的應(yīng)用需求,因此我們只要
35、滿足了客戶需求即可,性能優(yōu)化不需要畫蛇添足!4.2. 什么時間優(yōu)化?有很多人認為數(shù)據(jù)庫性能優(yōu)化在編碼結(jié)束、系統(tǒng)穩(wěn)定后再進行,理由是:應(yīng)當(dāng)首先保證項目的開發(fā)進度和交付能力,優(yōu)化工作必須等到開發(fā)結(jié)束并且系統(tǒng)已經(jīng)穩(wěn)定之后進行,并且要保證優(yōu)化后的系統(tǒng)依然是穩(wěn)定的、可交付的系統(tǒng)。可以肯定的說,這種看法是錯誤的,試問一個不能滿足客戶性能指標的穩(wěn)定的系統(tǒng)何談交付能力?數(shù)據(jù)庫是應(yīng)用系統(tǒng)運行的基礎(chǔ),數(shù)據(jù)庫的性能優(yōu)化、調(diào)整可以說是牽一發(fā)而動全身,是一件應(yīng)當(dāng)慎重對待的事情,如果等到系統(tǒng)開發(fā)完畢再想到進行性能優(yōu)化,那么我們已經(jīng)錯過了性能優(yōu)化的最佳時期,如果此時再去勉為其難的去作優(yōu)化工作,那么數(shù)據(jù)庫設(shè)計小組的成員就只能
36、雙掌合十,心中默念從釋迦牟尼一直到圣母瑪利亞等諸多中外神佛保佑,祈禱之后我們會發(fā)現(xiàn)他們都不站在我們這邊。數(shù)據(jù)庫的性能優(yōu)化工作在項目的需求分析階段就已經(jīng)開始了,并且一直伴隨著數(shù)據(jù)庫設(shè)計工作的開展而進行,可以說數(shù)據(jù)庫的性能優(yōu)化工作是貫穿數(shù)據(jù)庫設(shè)計全過程的,數(shù)據(jù)庫設(shè)計小組成員心中需要牢記一條準則:數(shù)據(jù)庫性能優(yōu)化無處不在,我們所作的一切都是為了性能的優(yōu)化。解決問題的最高境界是將問題消滅在萌芽階段,同樣性能優(yōu)化的最佳時期是在需求分析階段和系統(tǒng)架構(gòu)設(shè)計階段。4.3. 優(yōu)化些什么?l 首先需要優(yōu)化需求這里所指的優(yōu)化并非是指數(shù)據(jù)庫技術(shù)方面的優(yōu)化,而是在項目的需求分析階段對客戶的性能需求本身進行優(yōu)化,目的只有一個:得出切實可行的數(shù)據(jù)庫性能指標!數(shù)據(jù)庫設(shè)計所作的一切可以說都是在圍繞著如何滿足數(shù)據(jù)庫性能指標在作。可以說在性能指標面前成王敗寇,沒有任何回旋的余地,性能指標對于數(shù)據(jù)庫設(shè)計工作的順利進行有著無比重要的意義,因此在項目的需求分析階段,數(shù)據(jù)庫設(shè)計小組必須和需求組的同事合作,與客戶反復(fù)協(xié)商,最終確定切實可行的數(shù)據(jù)庫性能指標,在這期間客戶很可能會提出一些不可能實現(xiàn)或者實現(xiàn)起來很困難的性能需求,這些性能需求都將會在后續(xù)的數(shù)據(jù)庫設(shè)計工作中產(chǎn)生極大的實現(xiàn)風(fēng)險,數(shù)據(jù)庫設(shè)計小則必須識別出這類需求并且和需求組密切配合與客戶溝通協(xié)商,爭取將風(fēng)險降到最小,之所以強調(diào)數(shù)據(jù)庫設(shè)計小組需要作這部分工
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工業(yè)環(huán)保項目規(guī)劃申請報告
- 2025年電子商務(wù)師(中級)職業(yè)技能鑒定試卷:電子商務(wù)平臺數(shù)據(jù)分析與客戶價值評估試題
- 2025年車工(技師)綜合技能鑒定重點難點解析試卷
- 2025年消防安全培訓(xùn)考試案例分析:火災(zāi)現(xiàn)場勘查與調(diào)查試題
- 我的語文老師您的形象永存我心寫人類作文14篇
- 2025年消防執(zhí)業(yè)資格考試消防應(yīng)急通信保障通信設(shè)備操作規(guī)范試題庫
- 2025年P(guān)ETS四級英語試卷:口語實戰(zhàn)與詞匯積累提升試題
- 綜合出生與工作信息證明書(8篇)
- 工作微信號維護操作試題
- 財務(wù)會計準則及實務(wù)操作模擬試題
- 四川省南充市2023-2024學(xué)年七年級下學(xué)期期末考試道德與法治試卷(含答案)
- 2025至2030中國汽車散熱器行業(yè)市場發(fā)展分析及商業(yè)模式與投融資發(fā)展報告
- 2025至2030年中國金剛石繩鋸行業(yè)市場運行格局及前景戰(zhàn)略分析報告
- 統(tǒng)編版語文二下園地三+單元復(fù)習(xí)課 課件
- 云南省昆明市五華區(qū)2023-2024學(xué)年八年級下學(xué)期7月期末物理試題(含答案)
- 2025年上海市研發(fā)公共服務(wù)平臺管理中心招聘題庫帶答案分析
- 2025年輕人情緒消費趨勢報告-抖音商城xsocialbeta-202506
- 工程保險課件
- 培訓(xùn)中心項目管理制度
- 承包企業(yè)食堂管理制度
- 高中教科研課題:《新課程背景下高中語文情境教學(xué)改革研究》課題工作匯報
評論
0/150
提交評論