1 .一种特大LOB数据高并发低延迟的更新访问方法,其特征在于,包括如下内容:
1)创建用户表时,为每个LOB列创建至少一个HDFS文件 ,用于存储LOB数据;
2)针对每个LOB列,创建一个SQL分区表;
3)当LOB值小于等于预设的第一阀值时,分割成多行的LOB数据和相关元信息都直接存
储到SQL分区表中;当LOB值大于第一阀值时则存储到HDFS文件中,SQL分区表则用于保存
LOB数据存储在HDFS文件中产生的元数据;其中,
针对插入的LOB数据写入HDFS文件后,其作为基准数据,后续的局部Update和Append操
作只产生Delta数据并存储在SQL分区表中;对基准数据进行分片和编号,SQL分区表通过编
号记录对应分片的Delta数据,且数据在HDFS文件中是连续存储。
2.根据权利要求1所述的方法,其特征在于:所述SQL分区表的字段包括:data_inline
字段 ,用于存储数据;flag字段 ,用于标记此记录是元数据、缓存数据或者Delta数据;
COLUMNS系统表中data_inline_size字段值表示data_inline字段的大小。
当LOB值小于等于预设的第一阀值时,以data_inline_size字段值的大小为基准分割
成多行直接存储到SQL分区表的data_inline字段中;
对基准数据以data_inline_size字段值的大小为基准进行分片和逻辑编号,Delta数
据存储在data_inline字段中。
3 .根据权利要求1所述的方法,其特征在于:当更新操作结束后,检测Delta数据是否过
多,或者末尾片段追加数据是否过多,若超过预设的阈值后,产生一个Compact操作的任务
请求,后台线程安排进行Compact操作。
4 .根据权利要求1所述的方法,其特征在于:当SQL分区表的大小超过一定范围时,开启
后台线程或进程,对LOB数据进行Compact操作:
对基准数据和Delta数据进行合并后生成新的基准数据,然后删除和失效SQL分区表中
的Delta数据和缓冲数据,并更新SQL分区表中元数据从而指向HDFS文件中新的基准数据;
当整个HDFS文件本身大小未影响性能或小于预定阀值时,新的基准数据追加到HDFS文
件末尾,旧基准数据并未从HDFS文件中删除;
当HDFS文件中的垃圾数据占比过半时或超过预定阀值时,Compact整个HDFS文件,把新
的基准数据写入新的HDFS文件中,重制SQL分区表中的元数据,当旧HDFS文件中保存的所有
有效的LOB列值都Compact结束后即可删除;此过程中,新插入的数据需保存到新HDFS文件
中。
5 .根据权利要求1所述的方法,其特征在于:接收到Update请求后:
首先从SQL分区表获取元数据信息,判断LOB值大小是否超过第一阈值:
若小于则从SQL分区表中读取LOB数据,然后根据更新请求生成新数据并覆盖旧数据;
若大于则计算该数据所在分片,再判断分片是否存在Delta数据,若无则根据HDFS文件
中数据生成Delta数据并插入SQL分区表中;若有,则根据基准数据和Delta数据生成新的
Delta数据并覆盖旧的Delta数据。
6 .根据权利要求5所述的方法,其特征在于:Compact整个HDFS文件时采用对每个LOB列
值开启不同的事务逐一进行Compact操作。
7 .根据权利要求1所述的方法,其特征在于:SQL分区表按需设置是否常住内存。
8.根据权利要求2所述的方法,其特征在于:当LOB值超过第一阀值存储到HDFS文件中
权 利 要 求 书
1/2 页
2
评论