解剖SQLSERVER 第七篇 OrcaMDF 特性概述(译)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 原文:解剖SQLSERVER 第七篇 OrcaMDF 特性概述(译)解剖SQLSERVER 第七篇  OrcaMDF 特性概述(译) http://improve.dk/orcamdf-feature-recap/ 时间过得真快,这已经过了大概四个月了自从我最初介绍我的宠物项目OrcaMDF。
原文: 解剖SQLSERVER 第七篇 OrcaMDF 特性概述(译)

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

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

 

第七篇完

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
7月前
|
SQL 存储 关系型数据库
MSSQL之一 数据库系统简介 与SQL Server 2008概述
MSSQL之一 数据库系统简介 与SQL Server 2008概述
83 0
|
2月前
|
SQL 存储 算法
【数据库SQL server】数据库系统概述与DBS结构
【数据库SQL server】数据库系统概述与DBS结构
68 0
【数据库SQL server】数据库系统概述与DBS结构
|
SQL 存储 安全
|
SQL 监控 数据库
sql server 备份与恢复系列二 事务日志概述
原文:sql server 备份与恢复系列二 事务日志概述   1.1  日志文件与数据文件一致性  在上一章备份与恢复里了解到事务日志的重要性,这篇重点来了解事务日志。 事务日志记录了数据库所有的改变,能恢复该数据库到改变之前的任意状态。
1083 0
|
SQL 数据库 索引
|
SQL 存储 监控