解剖SQLSERVER 第七篇 ?OrcaMDF 特性概述(譯)
http://improve.dk/orcamdf-feature-recap/
時間過得真快,這已經過了大概四個月了自從我最初介紹我的寵物項目OrcaMDF。
自從項目開始到現在,OrcaMDF發生了很多變化,功能更強了,因此我想提供一個概述對目前OrcaMDF的功能的概述以及我對OrcaMDF未來的計劃
?
頁面類型
OrcaMDF 當前支持以下頁面的數據完整解析:Data, Index, TextMix(lob), TextTree(lob), GAM, SGAM, IAM, and PFS
也支持最小限度的解析bootpage,bootpage是用戶表元數據查找的啟動點
剩下的是排序,文件頭,DCM,BCM頁面,DCM和BCM頁面跟IAM, GAM and SGAM 頁面使用相同的位圖格式,解析他們也很簡單。
文件頭有一些tricky 并且一些DBCC PAGE解析。排序頁面跟其他頁面很少有關系,他們只用于在SQLSERVER運行時候臨時使用并且不會
存放在你的MDF文件里面
關于排序頁: http://tech.it168.com/a2010/0916/1104/000001104500_1.shtml
?
?
數據類型
我已經添加了盡可能多的數據類型到OrcaMDF里面,稍后我會添加對LOB類型的解析支持,對XML不支持
當前支持的數據類型包括
bigint
binary
bit
char
datetime
decimal
image
int
nchar
ntext
nvarchar(x)
nvarchar(MAX)
smallint
sysname
text
tinyint
varbinary(x)
varbinary(MAX)
varchar(x)
varchar(MAX)
在以后添加新的數據類型相對來說比較容易,只需要分析存儲格式并且實現ISqlType 接口
表和索引結構
使用DataScanner 類,OrcaMDF 能掃描聚集索引表和堆表。使用IndexScanner 類能掃描非聚集索引,無論他們是建立在堆表上還是在聚集索引表上
?
元數據
OrcaMDF 當前能暴露出來唯一已經公開暴露出來的元數據包括一系列的表名,OrcaMDF 能解析索引,表,分區,分配單元,列并提供他們的名字
這讓你能掃描聚集索引表/堆表/索引。OrcaMDF 會自動解析對象的架構和搜索IAM鏈表頭(堆)或者索引的root page
?
?
余下的關注點
OrcaMDF 當前只支持單個數據文件的數據庫,那就是沒有NDF文件的數據庫。添加對NDF文件支持是很簡單的,不過我的主要關注點是
對數據文件里核心數據結構的支持,所以,NDF文件不會改變太大。對于損壞的文件或者損壞檢測,OrcaMDF 假設MDF文件是完好無損的。
有幾個地方是能檢測到數據庫損壞的,但是我把檢測數據庫損壞的功能推遲到直到我認為OrcaMDF 能正確解析數據庫的大部分功能的時候
OrcaMDF 這個項目從一開始到現在一直是深入研究SQLSERVER內部的一個很好的項目,因此,數據庫損壞檢測在現階段并不是很重要
盡管數據庫損壞檢測是我最終想要添加的一個功能
?
?
下一步計劃
我想擴展當前元數據解析的能力,特別關注公用的暴露出來的元數據。通過OrcaMDF能夠生成像SSMS左邊那樣的樹狀的數據庫/對象/列的圖形界面
以為會添加表名,索引名,架構名,鍵等。我也會研究一下數據頁面壓縮,先從行壓縮開始。壓縮格式的文檔有很多(相比起LOB結構),
壓縮不會帶來太多問題。
如果你有任何建議或特性你想看到的,請與我聯系
許多人要求我介紹如何使用OrcaMDF并列出例子。我將會創建一個博客文章系列通過代碼來展示如何使用OrcaMDF 提供的特性。
我還計劃創建一篇博客來說明如何獲取源代碼和編譯源代碼,最后如何運行軟件
?
第七篇完
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
