IBM solidDB 物理结构研究

来源:互联网 发布:淘宝刷单清洗技巧 编辑:程序博客网 时间:2024/05/22 08:23
solidDB 中表的存储方式分为两种 内存表(M表),磁盘表(D表)。
        D表中的 INTEGER INT两数据类型的存储方式有点特别。一字节有8位,最高位是符号位,如果是1则为正,是0则为负。小于120大于等于0的正数的最高位为1,其他位不变,则是他存储的数值,如 0的存储值是0x80,1的存储值是0x81。
        如果大于等于120小于375,存储的时候则需要2个字节,第一字节为F8,就是120的最高位为1,第二个字节则是这个值减去120所剩下的值。比如120的存储值为F8 00 ,121的存储值为 F8 01 ,130的存储值为 F8 0A, 375的存储值为 F8 FF;
        如果大于等于376小于65656,存储的时候需要3个字节,第一字节为F9,就是121的最高位为1,121比120多1,(领会精神,表达的可能不准确)这里的1代表的是第二个字节的单位256。比如376的存储值为F9 01 00,01*256+120=376. 第三个字节代表个位,原始值-01*256-120=第三个字节。比如377才存储值为F9 01 01,378的存储值为F9 01 02;65655的存储值为F9 FF FF. 
        如果大于等于65656,存储要4个字节,第一个字节FA,就是122最高位为1,122比120多2,也就是说第二个字节的单位是256*256,第三个字节的单位是256,第四字节的单位是1. 如,65656 存储值为FA010000,65657的存储值为FA010001,65658的存储值为FA010008;
        负数的存储方法还没看,只知-1存储值为0x7F,也就是0的存储值0x80-1;
        
        D表 一条记录的存储结构。第一个字节,整条记录的长度,如果是FF或FE,紧接着4个字节是整条记录的长度
                                                    第二个字节,字段值的长度,如果是FF或FE,紧接着4个字节是字段值 的长度
                                                    然后字段值,
                                                    然后再是字段值的长度,字段值。
                                                一般一条记录的第一个字段是ROWID.