人大金仓数据库KingbaseES Numeric介绍(3)

关键字:

KingbaseES、SQL、数据类型、Numeric、人大金仓

NumericCompress

列存的优势之一是,相似的(同一列)的数据在物理上具有存储的局部性,因此方便进行数据压缩,在引入前两篇文章中介绍的NumericBi64以及NumericBi128的基础上,可以采用同样的思想对Numeric的存储进行压缩

NumericCompress基本原理

Numeric压缩的基本原理是对不同的numeric进行编码,通过记录该批numeric的最大最小值以及某一个numeric的编码就可以解压缩出该numeric的具体值,这种方法在压缩与解压缩时需要额外的开销。

NumericCompress具体方法

Numeric在系统中传入并进行压缩时,一共有多种不同类型,主要为一般的Numeric(short,long,nan等)以及使用Bi存储具体值的NumericBi(64/128),NumericCompress将试图把Numeric的具体值转换为具有相同scale的整型,int32或int64,对于无法转换为int32或int64的,在压缩中另做处理。

对于值部分能够使用int32或int64表示的,具体压缩方法如下:

  1. 首先使用DELTA_COMPRESS,即对numeric表示的数进行重新编码为该numeric与numeric最小值的和(或差)

  2. 使用RLE_COMPRESS(optional)对重新编码后的表示numeric的整型进行RLE编码

对于值部分不能使用int32或int64表示的,具体压缩方法如下:

  1. 使用LZ4_COMPRESS进行压缩

NumericCompress压缩单元结构

压缩结束以后,产生一个压缩单元,其中有其中存储压缩的元数据以及压缩后的Numeric数据。

压缩后的数据主要由以下三部分组成:

Header:存放Numeric压缩元数据,包括压缩使用的方式,压缩后的数据中包含的数据类型等

Dscales:存放不同bitmap表示压缩后数据中各个变量的具体数据类型,如在同时有int32以及int64表示的numeric的情况下,使用bitmap,并用1代表int32,用0代表int64

Values:压缩后的具体值,顺序为int32、int64、其他numeric

更多信息,参见https://help.kingbase.com.cn/v8/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值