天天看點

《DBA修煉之道:資料庫管理者的第一本書》——2.4節資料庫标準與過程

本節書摘來自華章社群《dba修煉之道:資料庫管理者的第一本書》一書中的第2章,第2.4節資料庫标準與過程,作者(美)craig s. mullins,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

2.4 資料庫标準與過程

想要有效地使用新安裝的dbms,必須開發使用資料庫的标準和過程。研究表明,相比标準化較低的公司,那些高标準化的公司可以将用于支援終端使用者的成本降低35%甚至更多。

必須開發使用資料庫的标準和過程。

标準是用于確定資料庫環境的一緻性和有效性的常見做法,如資料庫命名約定。程式是定義好的、步進式的訓示,用于指導處理具體事件的事務,如災難恢複計劃。未能實作資料庫标準和過程會使資料庫環境變得混亂且難以管理。

dba應當開發資料庫标準和過程,以此作為企業範圍内it标準和過程的組成部分。它們要麼以紙質檔案的形式集中存放,要麼以電子格式存儲于網上,或者兩種形式都有。針對特定的dbms産品,一些供應商還提供了“罐裝的”标準和過程。

2.4.1 資料庫命名約定

即将部署的首要标準之一是一組資料庫對象命名的指南。沒有标準的資料庫對象命名約定,就難以正确識别資料庫對象,并進行适當的管理任務。

資料庫對象命名标準的制訂應結合企業的所有其他it命名标準。在所有情況下,資料庫命名标準的制訂應與資料管理部門(如果存在)合作,并且,隻要可能,它應與其他的it标準和平共存,但不能以危害資料庫環境為代價。許多企業有命名檔案的實踐約定,但協調資料庫對象可能需要特定格式的資料庫檔案名,卻與實踐标準不符(詳見圖2-7)。是以,命名資料庫檔案對于現有的實踐标準來說是個例外。

確定建立并釋出适用于所有資料庫對象(在企業所使用的每個dbms内都可以建立)的命名标準。多數dbms支援的資料庫對象的一個基本清單包括資料庫、表、列、視圖、索引、限制、程式、使用者自定義資料類型、使用者自定義函數、觸發器和存儲過程。然而,這個清單還不完整,因為每個dbms針對具體的操作還會使用其他的資料庫對象。例如,db2使用計劃和存儲組;oracle使用資料庫連結和叢集;sql server使用檔案組和規則(詳見“非标準資料庫對象執行個體”)。

確定建立适用于所有資料庫對象的命名約定。

資料庫命名标準的設計應盡量減少跨環境的名稱變更。例如,将“t”嵌入名稱“test”和将“p”嵌入“production”都是不明智的。尤其重要的是對使用者可見的資料庫對象如列、表、視圖更要避免使用此種做法。名稱變更最小化使資料庫從一個環境到另一個環境的遷移變得簡單。有種情況也是可能的,即所有的資料庫對象具有相同的名稱,隻是将每個環境配置設定到不同的執行個體或子系統。該執行個體或子系統的名稱(而不是資料庫對象的名稱)将用于區分環境。

減少跨環境的名稱變更。

非标準資料庫對象執行個體

除非你使用所有三種資料庫:db2、oracle和sql server,否則你可能對那些針對某一種資料庫系統的資料庫對象不熟悉。鑒于此,這裡給本章提到的資料庫對象進行了簡單的定義。

db2:

計劃與db2的應用程式相關,是指在該程式中包含sql的綁定通路路徑詳細資訊的資料包。

存儲組是一個資料庫對象,用于關聯磁盤存儲和db2表空間。

oracle:

資料庫連結是一個資料庫中的模式對象,使你可以通路另一個資料庫中的對象。

叢集由一組共享相同的資料塊的表組成。這些表組合在一起因為它 們有着共同的列,且它們常一起使用。

sql server:

為便于配置設定和管理,資料庫對象和檔案可以在檔案組中組合在一起。

規則是一種獨立的、可以附加到列的資料庫限制。microsoft公司已經表示,在未來的sql server版本中将會删除規則。

《DBA修煉之道:資料庫管理者的第一本書》——2.4節資料庫标準與過程

在大多數情況下,對于那些沒有被典型終端使用者通路的對象,可以提供一種方法來區分資料庫對象的類型。例如,索引以“i”或“x”開頭,而資料庫以“d”開頭。但是,正如前面所提到的,這種做法對于表和類似的對象是不合适的。

一般情況下,不要對終端使用者通路的對象名稱施加不必要的限制。關系資料庫講究的是使用者友好。一個嚴格的資料庫命名約定(如果制定的不合乎邏輯)可能與有用且有效的資料庫環境背道而馳。一些企業對資料庫表的長度任意限制,比如,限制為8位元組,而dbms可以支援多達128位元組的表名。對資料庫表名的長度施加限制沒有任何實際的原因。

在合理的範圍内,表名應盡可能具有描述性。此外,隻要dbms支援所有dbms支援的“類表”對象都應使用相同的命名約定,如視圖、同義詞、别名。每個對象基本上都與行和列一樣,是可存取的資料集。是以,對每個對象制定單獨的命名約定沒有什麼實際價值。使用這種方法,那些操作與表類似的資料庫對象,将同樣具有描述性的名稱。對象的類型通常可以通過查詢dbms的系統目錄或資料字典确定。

避免對表名進行編碼使其變短。

另外一種應避免的任意命名約定是對表名進行編碼使其變短。表的名稱應包括2~3位元組的應用識别字首,後跟一個下劃線,然後是一個明确的、對使用者友好的名字。例如,人力資源系統中,一個好的表名需要包含雇員的資訊hr_employee。有多個應用程式用到該表時,也不應将應用識别字首從表的名稱中删除。

還需要注意的是,有些資料庫對象的名稱在某些情況下将會外部化。例如,一旦限制被違反,大多數的dbms都會選擇将限制名稱外部化。限制的類型多種多樣(觸發器、唯一限制、參照限制、檢查限制),每一種都可以命名。跨環境保持名稱一緻可以使得錯誤資訊也一緻,如果dbms在開發、測試、內建、生産環境中都報了同樣的錯誤資訊,那麼調試和修正錯誤就比較容易。

标準縮寫

盡管應盡可能使資料庫對象的名稱為英語,但是也不可避免地會遇到需要使用縮寫的情況。隻有當完整的名稱太長,對象名稱看起來很笨拙或比較難記時,才可以使用縮寫。例如,如果“org”是“organization”的标準縮寫,就不要使用變體“orgz”。使用标準的縮寫将最大程度地減少拼寫錯誤,并且使使用者更容易記住資料庫對象的名稱。長期于此,可以使資料庫的對象更容易了解。

建立标準縮寫清單。

2.4.2 其他資料庫标準和過程

資料庫命名标準雖然重要,也需要制定和維護其他類型的資料庫标準。要為企業所使用的每個dbms都制定一套綜合的标準和過程。資料庫标準雖然可以從頭做起,但還有其他潛在的、更簡單的方法來建構标準庫。那些可以根據使用者需求進行修改的基本标準,可以從出版商或軟體供應商那裡購買,或者可以通過使用者組和會議,在社群收集大家所建議的标準。

這些标準無論是購買的、自己想出來的,還是從使用者組或委員會得到的,都應涵蓋以下幾個方面。

角色和職責

dbms的成功運作需要多名熟練的技術人員和業務專家的共同協調管理工作。應該制定出資料庫管理及管理職能的矩陣檔案,詳細列出每一種支援任務以及分别由誰來提供支援。矩陣檔案可以是部門級别的、工作描述級别的,甚至是個人名義的。表2-4給出了執行個體矩陣,其中“x”表示參與這一過程,而“p”表示主要的職責。

《DBA修煉之道:資料庫管理者的第一本書》——2.4節資料庫标準與過程
《DBA修煉之道:資料庫管理者的第一本書》——2.4節資料庫标準與過程

當然,你可以建立任何任務,隻要你認為它有必要出現在角色與職責矩陣中。你所需的任務可能比示例中的多,也可能少。例如,你可能希望将存儲過程的開發、測試、管理進行區分,是以分别為這三者建立不同的任務種類,并相應地将支援需求進行分解。

不管角色與職責矩陣的最終格式如何,一定要保證它的準确性并包含最新的dbms功能和任務。最新的矩陣可以更容易地定義企業内的角色,并能有效地配置設定資料庫相關的工作量。

溝通标準

你也可以選擇為團隊或具體人員之間制定具體的标準。例如,在新的dbms版本安裝過程中,你可能想記錄dba團隊如何以及何時與系統程式設計團隊溝通。

制定強大的溝通标準可以簡化dba在不可避免的停機時間的工作,停機由于系統、應用程式,甚至硬體錯誤而導緻。例如,考慮采用一種标準,在故障排除和緊急修複過程中dba可僅與經理溝通。既讓經理知曉,同時也讓dba可以避開憤怒的使用者、幫助服務台等的電話騷擾。經理可以随時給外部通報狀态,而dba可以專注于故障排除并使系統恢複正常運作。

資料管理标準

如果你的企業有da團隊,他們應制定出一套基本的資料管理标準指南來概述他們的工作職責範圍。如果沒有da團隊,則一定要在dba标準中适當地包含da标準。

在dba标準中适當地包含da标準。

資料管理标準應包含以下幾項:

清晰地描述企業整體的資料政策,包括其對企業的重要性。

建立資料所有權和管理權的準則。

資料建立、資料所有權和資料管理權的規則。

中繼資料管理政策。

概念和邏輯資料模組化指南。

有關建立企業資料模型的企業目标。

建立并維護邏輯資料模型的職責。

工具使用指南以及資料模型建立、存儲、維護的說明。

企業的資料共享政策。

實體資料庫偏離邏輯資料庫時的記錄說明。

資料管理與資料庫管理的溝通指南,以確定資料庫的有效建立與使用。

資料庫管理标準

應建立一套基本的資料庫管理标準用以確定dba的工作可以不斷獲得成功。該标準要作為dba提供服務和用于支援資料庫環境的具體方法的指導。例如,制定的标準可以概述說明建立一個新的資料庫或更改已有的資料庫需要如何提出申請,并指定哪些類型的資料庫對象和dbms功能更受青睐,以及在何種情況下要避免使用它們。标準還可以建立備份和恢複程式(包括災難恢複計劃)并交流用于将邏輯資料模型轉換為實體資料庫的方法。另外一套涵蓋資料庫性能監控和調優的dba标準可能對記錄解決性能問題的過程很有用。

dba标準要作為支援資料庫環境具體方法的指導。

雖然該dba标準對dba人員将是最有用的,但是應用程式開發人員也需要通過它們學習如何更好地與dba人員一起工作。此外,dba标準所記錄的任何性能調優的技巧都應與程式設計人員共享。了解dbms細微差别和dba角色的應用程式程式設計人員越多,dba與開發人員之間的工作關系将更融洽(最終導緻資料庫環境更高效)。

系統管理标準

再次說明,隻有當你的企業将sa與dba的工作分離時,才需要系統管理标準或系統程式設計标準。需要系統管理标準與需要dba标準的許多理由都是相同的。sa标準可能包括:

dbms安裝和測試程式。

更新政策和程式。

錯誤修複和維護實踐。

變更即将發生時,要通知的部門清單。

接口的考慮。

dbms存儲、使用和監控程式。

資料庫應用程式開發标準

資料庫應用程式的開發與典型的程式開發有所不同,編寫通路資料庫的程式時,你應記錄下有關開發的那些特殊考慮。資料應用程式開發的标準應作為企業任何标準應用程式開發過程的附屬。該套标準應包括:

描述出資料庫通路與平面檔案通路的不同之處。

sql編碼标準。

sql性能技巧與技術。

程式的準備過程和将sql嵌入應用程式的方式指南。

sql語句與錯誤代碼的解釋。

參考其他有用的有關遠端處理監控程式、程式設計語言以及一般的應用程式開發标準的程式設計材料。

資料庫安全标準

dba團隊通常申請并管理dbms的安全。然而,在一些企業中,企業資料安全單元掌握着dbms的安全。用于概述必要的标準和管理資料庫安全過程的資源應包括以下資訊:

在一些特定類型的情況下應授予何種權利的詳細說明,例如,如果一個程式正遷移到生産環境,那麼必須授予該程式何種dbms權力,它才能在生産環境成功運作。

有關任何特殊過程的文檔或治理(與合規性)相關的請求所需的文檔。

有關誰可以準許何種類型的資料庫授權請求的明确清單。

任何用于連接配接dbms安全和作業系統安全産品的接口資訊。

使用sql grant語句的with grant option子句以及級聯revokes如何處理的政策。

通知請求者資料庫安全已授予的過程。

解除那些退休、調動、解雇的雇員的授權的過程。

概括用于管理資料庫安全的一些必要标準和過程。

概述必要的标準和管理資料庫安全過程。

應用程式的遷移與調整過程

正如前面所讨論的,支援資料庫應用程式最少也需要兩種環境:測試環境和生産環境。而一些企業還會建立多種環境用以支援開發生命周期的不同階段,包括:

單元測試,用以開發和測試個人程式。

內建測試,用以測試個人程式如何互操作。

使用者接受性測試,在生産環境之前的終端使用者測試。

品質保證,用以發現程式錯誤。

教育,用以教育訓練終端使用者該應用程式系統的工作方式。

當存在多個環境時,就需要将資料庫對象和程式從一個環境遷移到另一個環境。還需要具體的指南以有利于各個環境使用的方式來實作遷移。例如,每個環境所需的資料容量是多少?測試時如何保證資料的完整性?到底應遷移資料,還是僅調整資料庫結構?目标環境中已有的資料該如何處理(應保持,還是用新資料覆寫)?應制定綜合的遷移過程才可能解決這些問題。

需要将資料庫對象和程式從一個環境遷移到另一個環境。

該遷移和調整過程應記錄任何的資料庫對象或程式從一個環境遷移到下一個環境所需的資訊。至少是遷移的請求者會需要這些資訊,如對象何時以及為何要進行遷移,遷移需要得到誰的準許?為確定遷移的成功,dba應記錄用于遷移的方法和驗證遷移的步驟。

設計審查指南

所有的資料庫應用程式在開發的各個階段都應經受得起設計審查。設計審查非常重要,它可以保證應用程式的設計、結構和性能的正确性。它可以采取的方式也是多種多樣的,第6章提供了綜合讨論。

操作支援标準

操作支援被視為it企業的一部分,用于監視資料庫環境并確定應用程式都按照預定計劃運作。要想有效地管理資料庫環境,必須提供足夠的操作支援。提供操作支援的人員通常處于抵禦系統問題的最前線,程式失敗、硬體失敗以及其他問題都是由操作支援人員首先發現,然後才讓專家來解決的。

操作支援確定應用程式按照預定計劃運作。

應制定标準用以確定那些提供操作支援的人員能夠了解資料庫應用程式的特殊需求。隻要有可能,提供操作支援的全體人員應進行教育訓練,以求在不需要dba的情況下也可以解決簡單的資料庫相關的問題,因為通常使用dba的代價是比較昂貴的。