解剖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 提供的特性。

我还计划创建一篇博客来说明如何获取源代码和编译源代码,最后如何运行软件

第七篇完

解剖SQLSERVER 第七篇 OrcaMDF 特性概述(译)的更多相关文章

  1. 解剖SQLSERVER 第十篇 OrcaMDF Studio 发布+ 特性重温(译)

    解剖SQLSERVER 第十篇  OrcaMDF Studio 发布+ 特性重温(译) http://improve.dk/orcamdf-studio-release-feature-recap/ ...

  2. 解剖SQLSERVER 第八篇 OrcaMDF 现在支持多数据文件的数据库(译)

    解剖SQLSERVER 第八篇  OrcaMDF 现在支持多数据文件的数据库(译) http://improve.dk/orcamdf-now-supports-databases-with-mult ...

  3. 解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译)

    解剖SQLSERVER 第四篇  OrcaMDF里对dates类型数据的解析(译) http://improve.dk/parsing-dates-in-orcamdf/ 在SQLSERVER里面有几 ...

  4. 解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译)

    解剖SQLSERVER 第五篇  OrcaMDF里读取Bits类型数据(译) http://improve.dk/reading-bits-in-orcamdf/ Bits类型的存储跟SQLSERVE ...

  5. 解剖SQLSERVER 第十七篇 使用 OrcaMDF Corruptor 故意损坏数据库(译)

    解剖SQLSERVER 第十七篇 使用 OrcaMDF Corruptor 故意损坏数据库(译) http://improve.dk/corrupting-databases-purpose-usin ...

  6. 解剖SQLSERVER 第六篇 对OrcaMDF的系统测试里避免regressions(译)

    解剖SQLSERVER 第六篇  对OrcaMDF的系统测试里避免regressions (译) http://improve.dk/avoiding-regressions-in-orcamdf-b ...

  7. 解剖SQLSERVER 第十一篇 对SQLSERVER的多个版本进行自动化测试(译)

    解剖SQLSERVER 第十一篇    对SQLSERVER的多个版本进行自动化测试(译) http://improve.dk/automated-testing-of-orcamdf-against ...

  8. 解剖SQLSERVER 第十三篇 Integers在行压缩和页压缩里的存储格式揭秘(译)

    解剖SQLSERVER 第十三篇    Integers在行压缩和页压缩里的存储格式揭秘(译) http://improve.dk/the-anatomy-of-row-amp-page-compre ...

  9. 解剖SQLSERVER 第三篇 数据类型的实现(译)

    解剖SQLSERVER 第三篇  数据类型的实现(译) http://improve.dk/implementing-data-types-in-orcamdf/ 实现对SQLSERVER数据类型的解 ...

随机推荐

  1. h5页面唤起app(iOS和Android),没有安装则跳转下载页面

    浏览器和app没有通信协议,所以h5不知道用户的手机释放安装了app.因此只能是h5去尝试唤起app,若不能唤起,引导用户去下载我们的app. 微信里屏蔽了 schema 协议,如果在微信中打开h5, ...

  2. Windows XP SP3 VC6环境下成功编译openssl-0.9.8zh

    1.下载openssl-0.9.8zh解压到f:\openssl-0.9.8zh 下载nasm-2.12.03rc1解压到D:\develop\nasm-2.12.03rc1并把添加到系统环境变量PA ...

  3. (二)catalina.bat

    startup.bat在最后调用catalina.bat,并且传递了start参数,设置了CATALINA_HOME和CURRENT_DIR俩个临时环境变量.那么catalina.bat都做了什么? ...

  4. .NET使用Com组件的一点点教训笔记~

    中控IFACE系列的产品,二次开发包 zkemkeeper.dll 在system32 ,SySWoW64都注册了,就是他妈的用不了. 最后,在 system32 ,SySWoW64 注册了,然后把需 ...

  5. HibernateTemplate的一些常用方法总结

    1:get/load存取单条数据 public Teacher getTeacherById(Long id) { return (Teacher)this.hibernateTemplate.get ...

  6. 實際案例: 已知要獲取臨時票証 (JsApi Ticket) 才能調用的接口

    需獲取票証才能調用的接口,簡單列示如下: 一.基礎類 1. wx.checkJsApi (當前客戶端是否支持指定JS) 二.分享類 1.wx.onMenuShareTimeline (分享到朋友圈)2 ...

  7. CyclicBarrier在多线程同步运行后相互访问的问题。

    CyclicBarrier的介绍 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相 ...

  8. Http协议的常见参数

    Requests部分 Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏览器可以接受的字 ...

  9. dictionaryWithContentsOfFile:方法

    dictionaryWithContentsOfFile:方法的功能是创建一个字典,将字典中的内容设置为指定文件中的所有内容, 语法:(id)dictionaryWithContentsOffilE. ...

  10. 【转】怎样查出SQLServer的性能瓶颈

    怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...