SlideShare una empresa de Scribd logo
1 de 22
資料庫開發更容易,更寬廣 談SQL Server 2008資料庫開發新知識 胡百敬(http://byronhu.spaces.live.com) 精誠公司 恆逸資訊
大綱 精確地使用日期和時間資訊 以疏鬆資料行有效地存放疏鬆擴展的資料 整合式全文檢索(Full-Text Indexes )提供高效能、擴充性和管理能力 以資料表值參數(Table-Valued Parameters)傳遞大量資料給函數或程序 使用 MERGE 命令執行多個作業 使用 HierarchyID資料類型,將階層式資料模型化 使用空間資料類型(spatial data types)、空間方法(spatial methods)和空間索引(spatial indexes),建立可感知位置的應用程式 提供檔案資料流 (Filestream) 有效管理檔案及文件資料 提供 GROUP BY 加速群組集合的查詢速度 提供篩選的索引 (Filtered Indexes ) 加速資料集的存取速度 對 .NET CLR 進一步支援 異動資料擷取(Change Data Capture(CDC))將資料庫變更追蹤自動化
SQL Server 2008 強化的 T-SQL
使用Sparse Columns 有效地儲存資料 Optimize NULLs White paper
為 ad hoc 負載最佳化 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO
SQL Server 2008:  Wordbreakers Portuguese Punjabi Romanian Russian Serbian Serbian Latin Slovak Slovenian Spanish Swedish Tamil Telugu Thai Turkish Ukrainian Urdu  Vietnamese German Gujarati Hebrew Hindi Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malay Malayalam Marathi Neutral Norwegian Polish Arabic Bengali Brazilian  Bulgarian Canadian Catalan  Chinese (Simplified) Chinese (Traditional) Chinese (Hong Kong) Chinese (Macau) Chinese (Singapore) Croatian Cyrillic Danish Dutch English English UK French Present but disabled New for 2008 In 2005 but replaced in 2008 Unchanged from 2005
使用 TVP 載入大資料集合 批次 White paper
傳遞集合資料給 SQL Server N 筆記錄 = N 句執行語法 N 筆記錄 = 1 句執行語法
傳遞集合資料給 SQL Server N 筆記錄 = N 句執行語法 每執行一句觸發一次使用者端/伺服器端來回
傳遞集合資料給SQL Server N 筆記錄 =1 句執行語法 將資料以逗號分隔字串傳遞 以 XML 傳遞資料 以 Table Valued Parameter 傳遞資料 其他的選項 使用 bulk copy 以多個參數傳遞資料(當下的限制是 2,100)
以逗號分隔字串傳遞資料 // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spDelimitedString";cmd.Parameters.AddWithValue("@Values", @"…|…|… …|…|… …|…|…");cmd.Execute…; -- 伺服器端的作法 EXEC Test.spDelimitedString @Values = '…|…|… …|…|… …|…|…';
Pass the Data as XML // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spXML";cmd.Parameters.AddWithValue("@Values",                                 doc.OuterXml);cmd.Execute…; -- What happens on the server?: EXEC Test.spXML @Values = N'<Orders><Order…
Pass the Data as a Table Valued Parameter // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spTVP";var p = cmd.Parameters.Add("@Values", SqlDbType.Structured);p.TypeName = "Test.OrderTableType";p.Value = dataTable; cmd.Execute…; -- What happens on the server?: DECLARE @Values Test.OrderTableType; INSERT @Values … EXEC Test.spTVP @Values = @Values;
以 Table Valued Parameter 傳遞資料 優點 強型別 沒有 SQL Injection 的危險 效能很好 使用者端與伺服器端都容易使用 缺點 彈性較 XML 小;可能會需要傳遞多個 TVPs,同樣的情形可能一個 XML 參數就夠了
以 Table Valued Parameter 傳遞資料 // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spTVP";var p = cmd.Parameters.Add("@Values", SqlDbType.Structured);p.TypeName = "Test.OrderTableType";p.Value = dataTable; cmd.Execute…; -- What happens on the server?: DECLARE @Values Test.OrderTableType; INSERT @Values … EXEC Test.spTVP @Values = @Values;
使用 MERGE 命令執行多個作業 Events MATCHED NOT MATCHED NOT MATCHED BY SOURCE Type of event $action
使用 MERGE 命令執行多個作業 MERGE Test.Orders AS o 	USING @Values AS v 		ON v.OrderId = o.OrderId 	WHEN MATCHED THEN 	    UPDATE SET  CustomerId = v.CustomerId 		,OrderDate = v.OrderDate 		,DueDate = v.DueDate 	WHEN NOT MATCHED BY SOURCE THEN        	    DELETE          	WHEN NOT MATCHED THEN  	    INSERT (OrderId, CustomerId, OrderDate) 	       VALUES(v.OrderId, v.CustomerId, v.OrderDate);
超越關聯式資料的特色概觀 SQL Server 2008 SQL Server 2005 遠端 BLOB Store API Filestream 整合式的全文檢索 全文檢索 文檔 &  多媒體 完整支援 Geometry 和 Geography  資料類型與功能 XML資料類型與功能 強化 XML Relational  BR Support 大型 UDTs Sparse Columns Wide Tables/Column Set Filtered Indices HierarchyID 空間資料 XML User Defined Types
SQL Server 2008 空間資料歸納 特徵 概觀 ,[object Object]
豐富的空間方法
高效率的空間索引
Management Studio 整合

Más contenido relacionado

Similar a 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

Sql Server2005 Ssi Stranslation
Sql Server2005 Ssi StranslationSql Server2005 Ssi Stranslation
Sql Server2005 Ssi Stranslationkiyuyu6666
 
民间秘方
民间秘方民间秘方
民间秘方dynasty
 
Fast Esp搜索系统
Fast Esp搜索系统Fast Esp搜索系统
Fast Esp搜索系统xiaochawan
 
Hyperion基础架构
Hyperion基础架构Hyperion基础架构
Hyperion基础架构Jack Wong
 
database
databasedatabase
databases06283
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4Cat Chen
 
快速了解PostgreSQL
快速了解PostgreSQL快速了解PostgreSQL
快速了解PostgreSQL正中 周
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
构建高可用数据库监控系统
构建高可用数据库监控系统构建高可用数据库监控系统
构建高可用数据库监控系统haiyuan ning
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程zhaolinjnu
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程Jian Peng
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)vanadies10
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇建興 王
 
SQL 語法入門 - SARG
SQL 語法入門 - SARGSQL 語法入門 - SARG
SQL 語法入門 - SARGStudy4TW
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率Chao Zhu
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境drewz lin
 
Ajax Lucence
Ajax LucenceAjax Lucence
Ajax LucenceRoger Xia
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫建興 王
 

Similar a 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識 (20)

Sql Server2005 Ssi Stranslation
Sql Server2005 Ssi StranslationSql Server2005 Ssi Stranslation
Sql Server2005 Ssi Stranslation
 
民间秘方
民间秘方民间秘方
民间秘方
 
Fast Esp搜索系统
Fast Esp搜索系统Fast Esp搜索系统
Fast Esp搜索系统
 
Hyperion基础架构
Hyperion基础架构Hyperion基础架构
Hyperion基础架构
 
database
databasedatabase
database
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4
 
快速了解PostgreSQL
快速了解PostgreSQL快速了解PostgreSQL
快速了解PostgreSQL
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
构建高可用数据库监控系统
构建高可用数据库监控系统构建高可用数据库监控系统
构建高可用数据库监控系统
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
 
SQL 語法入門 - SARG
SQL 語法入門 - SARGSQL 語法入門 - SARG
SQL 語法入門 - SARG
 
敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3敦群學院-SharePoint精英計畫-系統開發-Day 3
敦群學院-SharePoint精英計畫-系統開發-Day 3
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
 
Ajax Lucence
Ajax LucenceAjax Lucence
Ajax Lucence
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
 

Más de Chui-Wen Chiu

Más de Chui-Wen Chiu (20)

Dynamic Python
Dynamic PythonDynamic Python
Dynamic Python
 
Pythonpresent
PythonpresentPythonpresent
Pythonpresent
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
移動內存算法
移動內存算法移動內存算法
移動內存算法
 
墾丁 更新版
墾丁  更新版墾丁  更新版
墾丁 更新版
 
墾丁 更新版2
墾丁  更新版2墾丁  更新版2
墾丁 更新版2
 
Bw1096
Bw1096Bw1096
Bw1096
 
高雄新地標 統一夢世代
高雄新地標  統一夢世代高雄新地標  統一夢世代
高雄新地標 統一夢世代
 
Borland傳奇
Borland傳奇Borland傳奇
Borland傳奇
 
Python 庫簡介
Python 庫簡介Python 庫簡介
Python 庫簡介
 
Asp.Net Mvc 1.0
Asp.Net Mvc 1.0Asp.Net Mvc 1.0
Asp.Net Mvc 1.0
 
天下第一 夜市總冠軍
天下第一 夜市總冠軍天下第一 夜市總冠軍
天下第一 夜市總冠軍
 
下班就跑是富有哲學道理1
下班就跑是富有哲學道理1下班就跑是富有哲學道理1
下班就跑是富有哲學道理1
 
認識腸病毒
認識腸病毒認識腸病毒
認識腸病毒
 
柬埔寨鄉村婚禮
柬埔寨鄉村婚禮柬埔寨鄉村婚禮
柬埔寨鄉村婚禮
 
新 創 意
新 創 意新 創 意
新 創 意
 
挖好屬於自己的井
挖好屬於自己的井挖好屬於自己的井
挖好屬於自己的井
 
Why The Us Wants War 080702
Why The Us Wants War  080702Why The Us Wants War  080702
Why The Us Wants War 080702
 
你今天的選擇是什麼?
你今天的選擇是什麼?你今天的選擇是什麼?
你今天的選擇是什麼?
 
我的學思歷程 劉兆玄
我的學思歷程 劉兆玄我的學思歷程 劉兆玄
我的學思歷程 劉兆玄
 

資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

  • 1. 資料庫開發更容易,更寬廣 談SQL Server 2008資料庫開發新知識 胡百敬(http://byronhu.spaces.live.com) 精誠公司 恆逸資訊
  • 2. 大綱 精確地使用日期和時間資訊 以疏鬆資料行有效地存放疏鬆擴展的資料 整合式全文檢索(Full-Text Indexes )提供高效能、擴充性和管理能力 以資料表值參數(Table-Valued Parameters)傳遞大量資料給函數或程序 使用 MERGE 命令執行多個作業 使用 HierarchyID資料類型,將階層式資料模型化 使用空間資料類型(spatial data types)、空間方法(spatial methods)和空間索引(spatial indexes),建立可感知位置的應用程式 提供檔案資料流 (Filestream) 有效管理檔案及文件資料 提供 GROUP BY 加速群組集合的查詢速度 提供篩選的索引 (Filtered Indexes ) 加速資料集的存取速度 對 .NET CLR 進一步支援 異動資料擷取(Change Data Capture(CDC))將資料庫變更追蹤自動化
  • 3. SQL Server 2008 強化的 T-SQL
  • 4. 使用Sparse Columns 有效地儲存資料 Optimize NULLs White paper
  • 5. 為 ad hoc 負載最佳化 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO
  • 6. SQL Server 2008: Wordbreakers Portuguese Punjabi Romanian Russian Serbian Serbian Latin Slovak Slovenian Spanish Swedish Tamil Telugu Thai Turkish Ukrainian Urdu Vietnamese German Gujarati Hebrew Hindi Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malay Malayalam Marathi Neutral Norwegian Polish Arabic Bengali Brazilian Bulgarian Canadian Catalan Chinese (Simplified) Chinese (Traditional) Chinese (Hong Kong) Chinese (Macau) Chinese (Singapore) Croatian Cyrillic Danish Dutch English English UK French Present but disabled New for 2008 In 2005 but replaced in 2008 Unchanged from 2005
  • 7. 使用 TVP 載入大資料集合 批次 White paper
  • 8. 傳遞集合資料給 SQL Server N 筆記錄 = N 句執行語法 N 筆記錄 = 1 句執行語法
  • 9. 傳遞集合資料給 SQL Server N 筆記錄 = N 句執行語法 每執行一句觸發一次使用者端/伺服器端來回
  • 10. 傳遞集合資料給SQL Server N 筆記錄 =1 句執行語法 將資料以逗號分隔字串傳遞 以 XML 傳遞資料 以 Table Valued Parameter 傳遞資料 其他的選項 使用 bulk copy 以多個參數傳遞資料(當下的限制是 2,100)
  • 11. 以逗號分隔字串傳遞資料 // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spDelimitedString";cmd.Parameters.AddWithValue("@Values", @"…|…|… …|…|… …|…|…");cmd.Execute…; -- 伺服器端的作法 EXEC Test.spDelimitedString @Values = '…|…|… …|…|… …|…|…';
  • 12. Pass the Data as XML // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spXML";cmd.Parameters.AddWithValue("@Values", doc.OuterXml);cmd.Execute…; -- What happens on the server?: EXEC Test.spXML @Values = N'<Orders><Order…
  • 13. Pass the Data as a Table Valued Parameter // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spTVP";var p = cmd.Parameters.Add("@Values", SqlDbType.Structured);p.TypeName = "Test.OrderTableType";p.Value = dataTable; cmd.Execute…; -- What happens on the server?: DECLARE @Values Test.OrderTableType; INSERT @Values … EXEC Test.spTVP @Values = @Values;
  • 14. 以 Table Valued Parameter 傳遞資料 優點 強型別 沒有 SQL Injection 的危險 效能很好 使用者端與伺服器端都容易使用 缺點 彈性較 XML 小;可能會需要傳遞多個 TVPs,同樣的情形可能一個 XML 參數就夠了
  • 15. 以 Table Valued Parameter 傳遞資料 // C# cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spTVP";var p = cmd.Parameters.Add("@Values", SqlDbType.Structured);p.TypeName = "Test.OrderTableType";p.Value = dataTable; cmd.Execute…; -- What happens on the server?: DECLARE @Values Test.OrderTableType; INSERT @Values … EXEC Test.spTVP @Values = @Values;
  • 16. 使用 MERGE 命令執行多個作業 Events MATCHED NOT MATCHED NOT MATCHED BY SOURCE Type of event $action
  • 17. 使用 MERGE 命令執行多個作業 MERGE Test.Orders AS o USING @Values AS v ON v.OrderId = o.OrderId WHEN MATCHED THEN UPDATE SET CustomerId = v.CustomerId ,OrderDate = v.OrderDate ,DueDate = v.DueDate WHEN NOT MATCHED BY SOURCE THEN DELETE WHEN NOT MATCHED THEN INSERT (OrderId, CustomerId, OrderDate) VALUES(v.OrderId, v.CustomerId, v.OrderDate);
  • 18. 超越關聯式資料的特色概觀 SQL Server 2008 SQL Server 2005 遠端 BLOB Store API Filestream 整合式的全文檢索 全文檢索 文檔 & 多媒體 完整支援 Geometry 和 Geography 資料類型與功能 XML資料類型與功能 強化 XML Relational BR Support 大型 UDTs Sparse Columns Wide Tables/Column Set Filtered Indices HierarchyID 空間資料 XML User Defined Types
  • 19.
  • 24.
  • 26.
  • 27. 對多個 NULL 的資料欄為持唯一 建立唯一過濾索引(unique filtered index),以剃除 NULLs CREATE UNIQUE NONCLUSTERED INDEX idx_col1_notnull ON dbo.T1(col1) WHERE col1 IS NOT NULL; 20
  • 28. Filtered Statistics 資料分佈統計內容更為詳細精確 經由過濾條件傳回的資料可以建立統計(statistics ) 自動為 filtered indexes 建立 可以手動為未建索引的欄位建立 與一般的統計相同,會自動更新
  • 29. 對 .NET CLR 進一步支援 可支援 .NET 的nullable變數型態。 增加可參照的 .NET 組件函式庫,例如System.Core、System.XML.LINQ(也就是LINQ to XML,沒有支援LINQ to SQL) 支援SQL Server新增的資料類型,如Date、HierarchyID、空間資料類型…等 以.NET定義的資料類型與自訂彙總函數之資料量大小;不再受限於8千位元組,最大可到 2G位元組 自訂彙總函數可以傳入多個參數 可以告知自訂資料表函數回傳的順序,以節省SQL Server資料庫引擎執行排序的成本
  • 30. Change Data Capture (CDC) SQL Agent jobs 週期性地掃描交易記錄,關注有啟動 CDC 的資料表之變動 變動資料放置在變更資料表,交易記錄同時提供了時間進程 透過 TVF 並指定交易的 LSN 或時間區段,可以取得變更資料 可以取得變更的經過細節,或是淨變化
  • 31. 參考資料 Introduction to New T-SQL Programmability Features in SQL Server 2008(http://msdn.microsoft.com/en-us/library/cc721270.aspx) Apress Beginning Spatial with SQL Server 2008 Alastair Aitchison

Notas del editor

  1. Self-explanatory.Stress that this can make the statistics more detailed and useful, especially for skewed data sets. Everything about maintaining filtered stats work the same way as for regular stats.
  2. Stress that its asynchronous and works through a log reader.