MCITP: Database Developer - SQL Server 2005 開發人員的資料庫認證

發佈日期: 2007 年 12 月 3 日

**作者:**朱明中

MCITP 是微軟 SQL Server 2005 資料庫專業人員的認證,屬於高級認證,地位與 MCDBA 相同,但考試的架構與內容可是大大不同,尤其是在基礎操作技能與規劃設計技能分開考試後,MCITP 的難度比 MCDBA 的考試又升高了一些,本文針對 MCITP: Database Developer 做介紹,未來會再針對 MCITP: Database Administrator 及 MCITP: Business Intelligence Developer 撰寫專文介紹。

本頁內容

資料庫的重要性
資料庫設計:應該做的事
資料庫開發:應該做的事
資料庫存取:應該做的事
資料庫開發人員 (Database Developer)
MCITP: Database Developer 認證
準備方法
參考資料

資料庫的重要性

不管是商業應用程式 (Business Application),或者是工業級的應用程式,都會產生或者輸入一些數據與資料,這些資料會供未來的分析或者參考計算時使用,所以會集中儲存在一個地方,這個地方就是資料庫。現在幾乎絕大多數的應用程式都會使用到資料庫,開發人員不能對這塊區域陌生,否則對於應用程式的發展可能會有相當的阻礙。

資料庫的發展已經有數十年,隨著技術的演進與多變的技術需求,資料庫也已經有相當長足的進步,目前的資料庫能力已經可以儲存到 TB 級 (1TB=1,024GB) 的資料庫,以及大型資料物件與XML的處理能力等等,而這些資料儲存的規格,都影響到應用程式的資料處理與規格,所以開發人員不能夠輕忽這個部份,資料庫的設計夠好時,應用程式才會有充份的能力來做想要做的事。

資料庫設計:應該做的事

在資料庫應用程式 (Database Application) 發展時,開發人員首先要針對企業的資料需求 (data requirements) 做分析,這個需求可能來自一張表格、一份會議記錄,或者是一份報表,開發人員要由這些資料中找出企業的資料需求,把它化成實體關聯圖 (ER 圖),這個圖會在資料庫建立時做為定義參考完整性限制 (Reference Integrity Constraints) 的標準。

ER 圖完成後,即可進行正規化程序 (database normalization process),將資料表內的欄位做整理,以滿足消除重覆資料 (redundant data) 的需求,然而並不是每個資料庫都要做到高度正規化,開發人員必須要在資料存取效能和重覆資料的消除中間取得平衡。

正規化作業完成後,就可以選擇使用的資料庫,像 Access、SQL Server 或者是 Oracle,是要用 Express、Standard 還是 Enterprise 版本,應用程式的平台為何、資料的實際儲存類型等等都會影響到資料庫的選擇,以 SQL Server 2005 為例,若要儲存大型二進位資料 (例如檔案) 時,可以使用 varchar(max),而要儲存 XML 文件時,可以使用 xml 資料型別等,而 SQL Server 2005 有適用於小型應用程式的 Express 版本,也有大型應用程式適合的 Enterprise Edition,這就要看應用程式的平台與需求來決定。

資料庫開發:應該做的事

當資料庫進入了實體開發階段 (Physical Development Phrase) 時,開發人員要開始撰寫資料庫的存取程式碼,其中很重要的一項就是 SQL 指令,不會 SQL 指令等於不會開發資料庫應用程式一樣,這也是許多初學者容易忽略的地方,以 SQL Server 2005 為例,雖然 Visual Studio 2005 提供了許多資料庫開發的精靈工具,但它的本質卻都是 SQL 指令,當應用程式逐漸發展,在許多資料存取方式開始有變化時,對 SQL 指令不熟悉反而會變成一種阻礙,因為SQL指令不只是負責資料存取,也會直接影響到存取的效能。

例如資料庫中有一個 Customers 資料表用來儲存客戶資料,在查詢客戶資料時,大家最常下的指令一定是:

SELECT * FROM Customers

但若在一個有一百萬筆客戶資料的 Customers 資料表,若用這種查詢字串,反而會使資料庫必須輸出一百萬筆資料,假設一筆資料輸出要 0.005 秒,一百萬筆資料則要 5,000 秒才能完全輸出,相當於要等上 84 分鐘左右的時間,無形中會讓應用程式效能低落許多,所以開發人員必須要能夠有效的使用SQL指令,除了要滿足查詢資料的需求外,也必須要兼顧效能才可以。

除了 SQL 指令以外,選用適合的資料庫物件,可以有效的降低應用程式開發時的程式處理,說明白一點,就是可以減少程式碼的數量J。例如檢視表 (View) 與使用者函數 (User-defined function, UDF) 可以讓開發人員使用JOIN或子查詢 (sub-query) 方法,整理出所需的查詢資料。同時,適合的資料庫物件可以增加存取的效能,例如使用預存程序 (stored procedure) 可以讓資料庫快取預存程序指令,以及最佳化資料存取的執行計畫 (execution plan),如此可讓資料庫引擎得以快速存取資料,也可省去編譯 SQL 指令並產生執行計畫所需要的時間。

在大型應用程式環境,通常都會有數以千計以上使用者同時存取資料庫,此時並行處理 (Concurrency process) 就是很重要的課題,例如設計出良好的鎖定策略 (locking strategy) 讓應用程式可以取得必要的資料,以及交易處理 (transaction process) 以控制資料儲存的完整性,這些都是開發人員必須要考量的。

資料庫存取:應該做的事

在資料庫之外,應用程式對於資料庫的存取策略也會有相當程度的影響到應用程式與資料庫的效能,開發人員對於資料存取的程式處理也需要注意,以 .NET 與 SQL Server 2005 來說,物件的使用就很重要,例如MARS (Multiple Active Result Set) 可允許 .NET 使用單一連線物件下,開啟多個 SqlDataReader 物件,以減少連線資源的浪費,而資料存取指令與存取資料時使用的鎖定策略也會影響到資料存取的效能。

另外,使用參數化查詢 (Parameterized query),可以避免受到資料隱碼 (SQL Injection) 的攻擊,以及更有效的輸入查詢指令所需的參數資料 (例如 BLOB 或二進位資料)。

資料庫開發人員 (Database Developer)

前面所提的,都是一位資料庫開發人員,在資料庫應用程式發展階段必須要具備的能力,其實不只是資料庫開發人員,一般的應用程式開發人員只要是用到資料庫,就必須要注意這些事情,所以應用程式開發人員不能不會資料庫的發展技能。

資料庫開發人員應該要具備的技能有:

  • 熟悉資料庫的開發方法,包括企業資料需求的分析、資料的實體關聯圖的建構、正規化技術以及選擇適合的資料庫。

  • 熟悉 SQL 指令與存取方法,包括 JOIN、子查詢、UNION、CURSOR、系統程序 (system stored procedure)、系統檢視 system views) 等的存取方法。

  • 熟悉資料庫物件的使用,包括檢視表、預存程序、使用者函數、使用者型別、限制等等。

  • 熟悉資料庫保全與最佳化方法,例如使用者存取權限、物件權限、索引調整、資料庫最佳化、效能調整與監控等。

  • 熟悉資料存取最佳化方法,例如交易處理、鎖定策略、外部程式最佳化等。

  • 部署能力,包括資料庫檔案與指令化部署等。

MCITP: Database Developer 認證

微軟的新認證架構對於 SQL Server 2005,設計了 MCTS: SQL Server 2005 與 MCITP 三種技能的認證,對於資料庫開發人員的認證,則是 MCITP: Database Developer 認證。

要取得 MCITP: Database Developer,考生必須要先通過 MCTS: SQL Server 2005 認證,驗證 SQL Server 2005 的基本使用能力後,才可以報考 CITP: Database Developer的 二項考試:

  1. Exam 70-441: Designing Database Solutions by using SQL Server 2005

  2. Exam 70-442: Designing and Optimizing Data Access by using SQL Server 2005

70-441 是以個案為主 (Case Study) 的考試,考生需要經歷數個個案,並回答個案所提出的問題 (大約 5-13 個左右,每個個案的題目數量不相同),測驗考生對資料庫設計的相關能力,包括資料庫、資料庫物件、資料庫的相關服務等等,這個考試比較像 MCDBA 時代的 Exam 70-229: Designing and Implementing Databases with Microsoft SQL Server 2000, Enterprise Edition,但是它更有針對性,而不像 70-229 只考指令應用和操作方式 (這在 MCTS 考試已經考過了)。

70-442 則是資料存取方式設計與最佳化的考試,關注的焦點是外部應用程式存取資料庫的方法、效能調整、ADO.NET、Transact-SQL、CURSOR、交易處理等等,也就是說,若現有 MCDBA 想要考取 MCITP: Database Developer 的話,就必須要對外部應用程式存取 SQL Server 2005 資料庫的部份要熟悉。

因為 MCITP: Database Developer 並沒有升級考試,所以現有的 MCDBA 仍然要通過 70-431, 70-441 及 70-442 等三科考試,才能取得 MCITP: Database Developer 的認證。

準備方法

若是一個新考生,建議閱讀一本資料庫理論的書籍,例如 Fundamentals of Database Systems 或是 Modern Database Management,熟悉資料庫的設計程序與方法,然後勤練 Transact-SQL,以及實作資料庫的物件,包括 View, Stored Procedure, SQL CLR, UDFs 等等,並且思考並模擬設計企業級資料庫的架構,例如 SQL Server 2005 的 Adventure Works 資料庫就是一個模擬的案例。若是不熟悉資料庫存取最佳化的MCDBA,則必須要加強這個部份,才能夠應付 70-442 考試,包括交易處理、效能監控、並行控制以及 ADO.NET 等。

SQL Server 產品文件,以及 MSDN SQL Server Developer Center 上所提供的技術文件與資訊,對考試多少都有些幫助,但實務經驗會很重要,尤其是在臨場判斷時。

祝各位考生考試順利

參考資料

Microsoft Learning 官方網站 https://www.microsoft.com/learning

MCITP 準備指南 https://www.microsoft.com/learning/mcp/mcitp/default.mspx

筆者的考試經驗