System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种多版本数据的存储方法,更具体的说,本专利技术主要涉及一种多版本数据下基于lsm tree的存储组织结构及其存储方法。
技术介绍
1、lsm tree(log-structured merge tree)是一个分层、有序、针对块存储设备特点而设计的数据存储结构。它的核心理论基础是磁盘的顺序写速度比随机写速度快非常多,即使是ssd,由于块擦除和垃圾回收的影响,顺序写速度比随机写速度也快很多。在lsmtree的存储结构中,一个sstable内同一个key的多版本数据在data block中按照版本号从大到小的顺序存储。一个key最大版本号的数据是最新的数据,当一个key含有多版本的数据时,我们通常只读取最新版本的数据。当进行key的范围查询时,需要跳过key的旧版本数据。因此当前的data block的存储方式有如下缺点:1)当进行scan范围查询时,每个key的每个版本数据都需要比较key一次,来确定是否是key的最新版本数据。例如进行范围查询输出结果为(key1, val3), (key2, val3), 但是key的比较会有6次,严重降低性能。2)当key 存在多版本数据的时候,最新版本数据为有效数据,旧版本数据为无效数据。当key 存在多版本数据,并且每条记录的value 部分比key部分大的时候,同样大小的data block内有效的记录数会比较小。因为cache是按照data block缓存的,data block内有效的记录数会比较小会严重降低cache的命中率。因而有必要针对lsm tree的存储方法
技术实现思路
1、本专利技术的目的之一在于针对上述不足,提供一种多版本数据下基于lsm tree的存储组织结构及其存储方法,以期望解决现有技术中lsm tree存储因需要对各版本数据需要比较key,降低读取性能;或因data block内有效的记录数较小而降低cache的命中率等技术问题。
2、为解决上述的技术问题,本专利技术采用以下技术方案:
3、本专利技术一方面提供了一种多版本数据下基于lsm tree的存储组织结构,包括数据区域、元数据区域与索引区域,所述数据区域用于按照key的顺序存放sstable数据,所述元数据区域用于存储所述数据区域的描述信息,所述索引区域用于存储所述数据区域中sstable数据的索引信息,还包括value数据区域,所述value数据区域中包括至少一个vdata block,所述vdata block用于存储所述key旧版本的value值;所述索引区域中还包括value索引模块,所述value索引模块用于存储所述vdata block的索引信息。所述vdatablock中存储每条记录的value值前,均具有value prefix标识;在所述value prefix标识中通过前两个bit区分每条记录的value值是否与对应的key存储在一起;在所述valueprefix标识中还通过第三个bit标识当前key是否为前一个key的旧版本。
4、更进一步的技术方案是:所述每条记录的value值是否与对应的key存储在一起为:当记录的value值与对应的key存储在一起时,则所述value prefix后面为所述记录的value值;当记录的value值与对应的key分开存储时,则所述value prefix后面为valuehandle,所述value handle包括由value值的长度、vdata block的块号以及块内偏移量,所述value handle用于指引系统在其所在的vdata block中读取对应的value值。
5、本专利技术另一方面还提供了一种使用上述存储组织结构的存储方法,所述的方法包括如下步骤:当写入新的sstable数据时,如同一key的多个版本,此时当前key的最新版本的key和value值存储在数据区域的data block中,并将其他版本的value值存储至所述value数据区域中的vdata block中。
6、作为优选,进一步的技术方案是:所述的方法还包括如下步骤:在读取sstable数据时,首先在数据区域的data block中查询所需读取的数据,如当前key对应的value值不存在,则在value数据区域中的vdata block中继续查询当前key对应的value值;在datablock中进行key的范围查询时,首先根据key的value值的value prefix标识判断其是否为当前key的其他版本的value值数据;所述value prefix标识位于每条记录的value值之前。
7、与现有技术相比,本专利技术的有益效果之一是:通过将同一key旧版本的value值数据单独存储在同一个sstable中单独的vdata block,从而能提高数据区域中data block中数据量,也能提高data block中有效数据量,以block为单位加载到cache中,进而提高cache的命中率。
8、同时通过使用value prefix来标记value和 key一起存储与分开存储的状态。并且在进行范围查询时并通过value prefix标识判断当前key是否是前一个key的旧版本,无需再通过比较key来判断数据版本,进而可有效提高scan时的范围查询性能。
本文档来自技高网...【技术保护点】
1.一种多版本数据下基于LSM Tree的存储组织结构,包括数据区域、元数据区域与索引区域,所述数据区域用于按照key的顺序存放SSTable数据,所述元数据区域用于存储所述数据区域的描述信息,所述索引区域用于存储所述数据区域中SSTable数据的索引信息,其特征在于:
2.根据权利要求1所述的多版本数据下基于LSM Tree的存储组织结构,其特征在于所述每条记录的Value值是否与对应的key存储在一起为:当记录的Value值与对应的key存储在一起时,则所述Value prefix后面为所述记录的Value值;
3.一种使用权利要求1或2所述存储组织结构的存储方法,其特征在于所述的方法包括如下步骤:
4.根据权利要求3所述的方法,其特征在于所述的方法还包括如下步骤:
【技术特征摘要】
1.一种多版本数据下基于lsm tree的存储组织结构,包括数据区域、元数据区域与索引区域,所述数据区域用于按照key的顺序存放sstable数据,所述元数据区域用于存储所述数据区域的描述信息,所述索引区域用于存储所述数据区域中sstable数据的索引信息,其特征在于:
2.根据权利要求1所述的多版本数据下基于lsm tree的存储组织结构,其...
【专利技术属性】
技术研发人员:汤波,刘佳星,岳通,于伟,范振勇,张学,武新,李建衡,
申请(专利权)人:贵州易鲸捷信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。