編輯推薦
Amazon全五星圖書,眾多專家盛譽推薦,深入揭示SQL Server開發思想,改變你對資料庫開發的看法。
內容簡介
書中前4 章著重介紹SQL Server 所涉及的軟體開發方法學、測試、異常處理和安全;第5 章至第7 章深入研究SQL Server 獨具的高級特性,主要介紹加密、SQLCLR 和動態SQL;第8 章至第11 章從資料庫體系結構的角度分析問題,深入研究具體的設計和實現問題,包括應用程式並發、空間數據、時態數據和圖,這是本書最為複雜的內容,也是最有實際意義的內容。
本書可以作為軟體開發人員,特別是資料庫設計人員的參考手冊,也可供計算機專業、信息系統專業的高年級本科生、研究生作為資料庫課程的教材或者參考書。
作者簡介
Adam Machanic,微軟SQL Server MVP,著名的SQL Server專家。長期活躍於技術社區,是SQL Server Professional和TechNET等行業雜誌的撰稿人,經常在各種技術會議上開設技術講座、發表演講。除本書外,他還是Pro SQL Server 2005的作者之一。
目錄
第1章 資料庫領域的軟體開發方法學
1.1 架構回顧
1.1.1 耦合、內聚和封裝
1.1.2 接口
1.2 核心問題:集成資料庫和面向對象系統
1.2.1 該何去何從
1.2.2 對象—關係失配
1.3 ORM:一個問題多多的解決方案
1.4 把資料庫操作設計為API
1.5 全面權衡
1.5.1可測試性
1.5.2 可維護性
1.5.3 安全性
1.5.4 性能
1.5.5 步履蹣跚的遠期功能
1.6 小結
第2章 資料庫例程測試
第3章 錯誤和異常
3.1 異常和錯誤
3.2 SQL Server中異常的工作原理
3.2.1 語句級異常
3.2.2批處理程式級異常
3.2.3 語法分析和作用域解析異常
3.2.4 連線和伺服器級異常
3.2.5 XACT_ABORT設定
3.2.6 分析錯誤信息
3.2.7 SQL Server的RAISERROE函式
3.2.8 跟蹤監控異常事件
3.3 異常處理
3.3.1 為什麼要在T-SQL中處理異常
3.3.2 使用@@ERROR“處理”異常
3.3.3 SQL Server的TRY/CATCH語法
3.4 事務與異常
3.4.1 事務退出的神話
3.4.2 XACT_ABORT:神話(半)成真
3.4.3 TRY/CATCH和被詛咒事務
3.5 小結
第4章 特權與授權
4.1 最低特權原則
4.1.1 在SQL Server中創建代理
4.1.2 層級數據安全:洋蔥模型
4.2 使用Schema組織數據
4.3 使用EXECUTE AS實現基本模擬
4.4 所有權鏈
4.5 非鏈式特權提升
4.5.1 存儲過程與EXECUTE AS
4.5.2 使用證書對存儲過程進行簽名
4.6 小結
第5章 加密
5.1 要保護什麼
5.2 加密術語:我們需要知道的部分
5.3 SQL Server 2005加密密鑰體系
5.3.1 服務主密鑰
5.3.2 資料庫主密鑰
5.4 SQL Server 2005數據保護
5.4.1 HashBytes()
5.4.2 非對稱密鑰加密和證書加密
5.4.3 對稱密鑰加密
5.4.4 EncryptByPassphrase
5.5 隔離數據與DBA
5.6 性能最佳化設計
5.6.1 設計解決方案、定義問題
5.6.2 搜尋加密數據
5.7 小結
第6章 SQLCLR:架構和設計注意事項
6.1 填充SQL/CLR鴻溝:SqlTypes庫
6.2 包裝代碼以提高跨層重用性
6.3 SQLCLR的安全性特徵和可靠性特徵
6.3.1 代碼安全性需求
6.3.2 通過程式集引用有選擇地提升特權
6.3.3 授予交叉程式集特權
6.4 利用SQLCLR加強Servicebroker可擴展性功能
6.5 擴展用戶自定義聚合
6.6 小結
第7章 動態T-SQL
7.1 動態T-SQL與ad hoc T-SQL
7.2 為什麼要使用動態SQL
7.2.1 編譯與參數化
7.2.2 自動參數化
7.2.3 應用程式級參數化
7.2.4 參數化與高速快取的性能暗示
7.3 支持可選參數
7.3.1 通過靜態T-SQL實現可選參數
7.3.2 實現動態化:使用EXECUTE
7.3.3 SQL注入
7.3.4 sp_executesql:一個更好的EXECUTE
7.4 動態SQL在安全方面的考慮
7.4.1 被引用對象的許可權
7.4.2 接口規則
7.5 小結
第8章 應用程式並發系統的設計
第9章 空間數據處理
第10章 時態數據處理
第11章 樹、層次結構和圖
媒體評論
“罕見的深度,書中的所有內容都值得反覆咀嚼並實際演練。我向所有想探索SQL Server的讀者推薦本書。”
——Bob Beauchemin,微軟SQL Server MVP
“資料庫方面的書太多了。可是沒有一本像本書這樣討論了軟體工程、測試等諸多重要主題,包括我自己的收!許多內容對我來說也是全新的,強烈推薦!”
——JoeCelko,SQL標準委員會成員。世界頂尖SQL專家,《SQL解惑》等經典著作的作者
市面上充斥著大量入門性質的SQL Server 2005圖書,而許多重要的主題卻很少涉及。
本書由幾位世界級SQL Server專家撰寫而成,他們從親身開發經驗出發,針對實際開發中會一再遇到的問題,討論了包括微軟公司在線上文檔在內的其他資料中都難以找到的一些重要主題。作者將資料庫視為軟體開發生態系統中的一個有機組成部分,引導讀者對SQL Server開發進行思考。達到從未企及的深度。
通過書中的最佳實踐和大量示例,讀者可以掌握如何設計高性能、高可維護性的應用程式,從而大大提升自己的資料庫開發水平。
書摘插圖
第1章 資料庫領域的軟體開發方法學
資料庫應用程式開發是一種軟體開發形式,人們應該以軟體開發的方式看待資料庫應用程式開發。但是在開發小組討論架構及測試計畫時,往往把資料庫部分當做次要部分來考慮——似乎很多資料庫開發人員都認為,標準的軟體開發最佳實踐並不適用於資料庫應用程式開發。
事實上,幾乎每種應用程式都需要某種形式的數據存儲,開發社區中的許多人都不只是持久化套用數據,還要創建數據驅動(data driven)的應用程式。所謂數據驅動就是應用程式的行為根據數據的變化而動態變化,事實上可以用一個更好的術語來表達這個概念,即數據依賴(data dependent)。
由於應用程式與數據和資料庫如此的密切相關,軟體開發高手不僅僅要是能幹的軟體開發人員,毫無疑問還得是數據訪問和管理方面的專家。數據是應用程式中處於中心位置的、控制性的因素,它決定了應用程式對用戶的價值。沒有數據,也就無需此應用程式。
本書的主要目的正是為了把Microsoft SQL Server開發人員重新拉回軟體開發的範疇。本書強調嚴格的測試、深思熟慮的架構設計,以及對數據彼此依賴性的謹慎考慮。對這些方面的完美駕馭是軟體開發專家的重要標誌,而作為任何軟體開發團隊的核心,資料庫專家當然不能缺少這個方面的專業技能。
本章將重點介紹軟體開發概念和架構相關知識,因為它們完全適用於資料庫套用領域。其中有些主題在開發者社區中尚有極大爭議,本書將儘量對各種觀點並舉,即使有些問題似乎已經有了權威答案。不過我建議你認真思考這些問題,而不是把我或者其他人的觀點照搬照抄,因為軟體架構領域於變萬化,只有在對各種案例反覆揣摩之後我們才可能奢望找到或許存在的“最佳”答案。
1.1 架構回顧
軟體架構是一個龐大、複雜的話題,主要是因為很多軟體架構設計師往往喜歡把系統弄得儘可能的複雜。而事實在於,編寫一個優秀的軟體,並不需要像很多系統設計師提倡的那樣使用太多複雜的結構設計,真正高質量的設計往往只需理解並套用其中很少的基本原理就夠了。