1.一种基于集群内存计算下的时态数据索引方法,其特征在于,采用双层索引方法,先将数据进行分区,对分区建立轻量级索引,然后在其内部的Array数据集建立时态索引,其具体实现包括如下索引建立和查询索引两部分:
1.索引建立
(1)获取集群的最大并发数,存入配置信息表中;
(2)对数据进行分区,判断整个数据集下的最高区分单位,然后将同一单位的数据根据比重划分分区数量,使相邻时间数据分到相同的分区中;
(3)将分区内部整个数据集分成表示事件将要开始的索引表ST,事件将要结束的索引表ED,事件已经存在的索引表ID三类;
(4)建立ST、ED与ID索引表,取数据集中的最小开始时间点作为基准点basetime,把数据集中其他开始时间点与此基准点的差值作为key值,表中事件记录所在数组的下标作为value值建立索引;
(5)ID表的建立,采用时间间断方法,首先获取整个数据集的时间段范围N,选取 个点作为实际存储点, 各点之间的距离单位,根据时间段中存在某个存储点,则在ID表中添加到相应位置即可,故该算法相比不进行数据压缩的空间极限压缩比
2.索引查询:
接收查询指令,先通过与分区时返回的所有最大时间点进行索引查询,对整体数据集进行剪枝操作,快速找到结果所在分区,然后进入分区内部根据本发明的时态索引方法进行二次查询,得出结果。
2.根据权利要求1所述的基于集群内存计算下的时态数据索引方法,其特征在于,所述步骤2的索引查询,其具体实现包括:(1)接收查询指令,首先根据查询开始时间点与分区边界数组进行对比,获取结果数据集所在分区,然后根据时态数据间的关系进行计算,其中,时态数据间的关系如下:当前时间点处存在的事件=前一时间点处存在的事件-前一时间点处结束的时间+当前时间点处开始的事件;
(2)进行时间点或者时间范围查询时,取出ST表,并将查询时间点与ID表中记录的时间间隔 取余,获取ID表中最近的存储点,根据公式ID(i+1)=ID(i)+ST(i+1)-ED(i+1)计算出该点的ID值,时间点查询下再获取ST索引表中该点值,相加即为结果数据集;
(3)时间范围查询时,在ST表取(start,end)范围内的值相加即为结果数据集;
(4)进行时间段查询时,将时间段的开始时间点根据基准时间点转换成key值,与ID表的存储值间隔大小取余,获取所查时间段开始时间戳处最近的存储点,根据推导公式ID(i+
1)=ID(i)+ST(i+1)-ED(i+1)计算得该开始时间点处的ID表值A,然后获取ST表中(start,end)时间范围内的所有值B,最终查询结果集即为A与B的合集。
3.根据权利要求1所述的基于集群内存计算下的时态数据索引方法,其特征在于,在前述步骤对数据进行分区过程中,对时态数据集进行相应分区,使相邻的时间数据放到同一分区中,便于压缩建立时态索引时的空间消耗,并采集该分区的一系列值作为表征数据,选择其中的最大时间点作为该分区的索引唯一值,分区数量设置为集群最大并发数的倍数。
4.根据权利要求3所述的基于集群内存计算下的时态数据索引方法,其特征在于,在前述步骤对数据进行分区过程中,采用当前集群的最大并发数*5的数量作为总分区数量,并遵从尽量保持相邻数据存在同一分区的原则对数据进行分区,在数据重分区时,首先判断整个数据集的最高分区单位,依据各单位的数量总量对分区总数进行相应划分,将同单位的相邻时间数据分到同一分区中。