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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 原文:解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译)解剖SQLSERVER 第十二篇   OrcaMDF 行压缩支持(译) http://improve.dk/orcamdf-row-compression-support/ 在这两个月的断断续续的开发工作中,我终于将OrcaMDF 压缩功能分支合并到主分支这意味着OrcaMDF 现在正式支持数据行压缩功能 支持的数据类型实现行压缩需要我修改几乎所有已实现的数据类型以将他们作为压缩存储。
原文: 解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译)

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

http://improve.dk/orcamdf-row-compression-support/


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


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

bigint
binary
bit
char
date
datetime
mal/numeric (including vardecimal, both with and without row compression)
image
int
money
nchar
ntext
nvarchar
smallint
smallmoney
text
time
uniqueidentifier
varbinary
varchar

 

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

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

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

 

 

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


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

 


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

 


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

123提交  第一个在2011年4月15日——这几乎是一年前!
11700行 C#代码(不含空格)。
1000行注释。
35%的代码是用于测试的,使用测试套件包含超过200个测试。
Ohloh估计OrcaMDF开发成本为144090美元

 

第十二篇完

相关实践学习
使用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
目录
相关文章
|
SQL PHP 数据库
sqlserver数据库查询某个字段 为null的所有行数据
sqlserver数据库查询某个字段 为null的所有行数据
315 0
|
索引
SqlServer性能优化之获取表的数据行数,数据大小,索引大小等
SqlServer性能优化之获取表的数据行数,数据大小,索引大小等
11118 0
|
数据库 SQL 关系型数据库
SQLSERVER 数据库备份脚本-支持多库备份
原文:SQLSERVER 数据库备份脚本-支持多库备份 --变量定义 DECLARE @backupfile VARCHAR(1024) DECLARE @backdesc VARCHAR(1024) DECLARE @filename ...
1095 0
|
SQL 关系型数据库 数据库
|
数据库 数据安全/隐私保护 SQL
SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原
原文:SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原 --作业定时压缩脚本 多库批量操作 DECLARE @DatabaseName NVARCHAR(50) DEC...
1262 0
|
Oracle 关系型数据库 物联网
《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布
19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化 19.1     概述      ServerSuperIO支持设备驱动和OPC Client采集的数据信息按标签集合写入mysql、oracle、sqlserver和sqlite数据库。
1101 0
|
存储 C++ 数据库
解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)
原文:解剖SQLSERVER 第二篇 对数据页面头进行逆向(译) 解剖SQLSERVER 第二篇  对数据页面头进行逆向(译) http://improve.dk/reverse-engineering-sql-server-page-headers/ 在开发OrcaMDF 的时候第一个挑战就...
732 0
|
存储
解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译)
原文:解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译) 解剖SQLSERVER 第四篇  OrcaMDF里对dates类型数据的解析(译) http://improve.
934 0
解剖SQLSERVER 第三篇 数据类型的实现(译)
原文:解剖SQLSERVER 第三篇 数据类型的实现(译) 解剖SQLSERVER 第三篇  数据类型的实现(译)   http://improve.dk/implementing-data-types-in-orcamdf/ 实现对SQLSERVER数据类型的解析在OrcaMDF 软件里面...
629 0

相关实验场景

更多