博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译)
阅读量:7238 次
发布时间:2019-06-29

本文共 1321 字,大约阅读时间需要 4 分钟。

原文:

解剖SQLSERVER 第十二篇   OrcaMDF 行压缩支持(译)

在这两个月的断断续续的开发工作中,我终于将OrcaMDF 压缩功能分支合并到主分支
这意味着OrcaMDF 现在正式支持数据行压缩功能

支持的数据类型
实现行压缩需要我修改几乎所有已实现的数据类型以将他们作为压缩存储。被压缩了,
变成可变长度,而可变长度类型基本上都被截断了进而用0来填补。所有先前OrcaMDF已经实现的数据类型都支持行压缩,并且在先前已经支持的数据类型的基础上又添加了一些新支持的数据类型
当前的数据类型支持列表如下:

bigintbinarybitchardatedatetimemal/numeric (including vardecimal, both with and without row compression)imageintmoneyncharntextnvarcharsmallintsmallmoneytexttimeuniqueidentifiervarbinaryvarchar

 

Unicode压缩

Nchar和nvarchar被证明是比其他类型还要棘手,因为他们使用 unicode压缩格式。
我发现了在.NET里有一个对,但是当我将他的代码嵌入到OrcaMDF里面他弹出了一个license 窗口
需要我购买license。
另外 有很多开源的java工具实现但是都不是我想要的。我选择自己实现SCSU 解压缩根据给出的参考实现。

我只实现解压缩并最终完成了一个非常苗条和简单的SCSU解压缩器。

我将会单独写一篇博客来介绍decompressor 并且从OrcaMDF里独立出来作为一个单独的类并带有一些默认值

 

 

体系结构更改

我想我应该可以在一到两周时间内完成解压缩功能,毕竟,解压缩有很好的文档记录。我需要想一下
为了实现压缩需要改多少东西。行记录解析器必需要知道页面是否被压缩。但是行记录解析器从哪里可以知道
页面被压缩过的?先前获得的都是页面指针,现在我必须查询元数据(partition表)确保所有的数据传递路径是从DataScanner 传到page parser再传到 record parser最后到data type parsers

我不得不在规则解析器上实现多种抽象以对压缩的记录和非压缩的记录进行抽象。
整体而言,这会是一个更好的体系结构,但是可能比预期需要多花更多时间。事实上解析被压缩的数据格式只是磨难的一小部分 --因为有文档而且格式比较简单。然后数据类型 在我把他们研究出来为止需要更多的工作量

 

预览
像往常一样,代码放在上,你可以下载下来进行研究!如果你不是程序员,我也上传了可执行的OrcaMDF Studio二进制文件(日期为2012-02-06)

 

统计数据
作为一个数字情人,我喜欢看统计数据。这里有一组数据是对OrcaMDF的随机统计:

123提交  第一个在2011年4月15日——这几乎是一年前!

11700行 C#代码(不含空格)。
1000行注释。
35%的代码是用于测试的,使用测试套件包含超过200个测试。
估计OrcaMDF开发成本为144090美元

 

第十二篇完

转载地址:http://ivrfm.baihongyu.com/

你可能感兴趣的文章
Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象...
查看>>
加密PDF为只读模式
查看>>
让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀...
查看>>
MySQL数据库的锁详解【转】
查看>>
ip route 解释
查看>>
【转】Android中保持Service的存活
查看>>
Consul功能简介
查看>>
IdentityServer4实战 - API与IdentityServer的交互过程解析
查看>>
Delphi编程 -- 使用CPUID指令获取CPU信息(转自大富翁)
查看>>
Android setRequestedOrientation用法
查看>>
面向对象三大基本特性,五大基本原则
查看>>
更改窗口图标并将其显示在任务栏
查看>>
包含的语句
查看>>
正则表达式-匹配标点符号
查看>>
osworkflow descriptor 解析 重要概念
查看>>
Edmonds_Karp 算法 (转)
查看>>
第一节 接口概述 [转贴]
查看>>
C# Attribute 用法备忘
查看>>
数据结构学习笔记(5.线性表之双向循环链表)
查看>>
智能家居趋势
查看>>