SB tree——A temporal aggregation data structure
来源:互联网 发布:excel筛选重复数据 编辑:程序博客网 时间:2024/05/17 06:18
refer to Incremental computation and maintenance of temporal aggregates ,Jun Yang1, JenniferWidom2 ,VLDBJ 2003
SB树是用来实现 时间聚集 的一种数据结构,不同于Size Balanced Tree。
接下来将以一个例子来讲述SB树的插入、删除、查找,以及其他一些操作。
Table1 表示了 病人的药剂用量,元组属性分别为 病人名字,药剂用量,有效时间(时间粒度为 1天) ,Fig.1 是Table1的坐标表示。
Table 2 表示 在某一时间段中,使用药剂的总量,这实际上是一个 SUM 的集函数操作。
SB-tree的数据结构介绍:
每一颗SB-tree都有两个参数:最大分支系数 b 和 最大叶子容量 l
每个中间节点最多能够容纳b个连续的时间区间,以Fig.2为例,节点N能够表示 j 个 时间区间,分别为N.I1, N.I2,……,N.Ij.而节点N中存放的是j-1个不同的瞬时时间点(按升序排列),第i个时间点用N.ti表示。第i个时间区间从 N,t(i-1)开始,到N.ti结束。N.vi表示 N.Ii的某一时间聚集函数的值,N.ci表示指向下一子节点的指针。
每个叶子节点与中间节点类似吗,除了没有指向下一节点的指针,最多能够表示l个时间区间,如Fig.3所示。
对于根节点的描述不是很懂,所以就不提出来了- -
对于任何非叶子节点N,其N.ci的子树中的时间一定小于N.ti,N.ci+1的子树的时间一定大于N,ti
Fig.4就是针对于Table2建立的一棵SB-tree
考虑 i-th 时间区间,N.Ii的开始时间是这样子定义的:
结束时间是这样定义的:
SB-tree 的具体操作
查找: lookup(N,t)表示搜索节点N以及节点N为根的子树,具体是:
范围查询:结果返回与要查询的时间区间I重叠的元组,range(N,I,v)I表示要查询的时间区间,v表示当前查询到的aggregate value,用来递归调用
插入:假设插入时间t,t是在区间I中的,aggregated attribute是 Vbase,那么可以记为<V,I>。Insert(N,<V,I>) 的具体操作为:
删除:插入的反操作,比如删除元组<"Ida",1,[17,47)>,相当于插入<"Ida",-1,[17,47)>,在Fig.5的基础上进行删除,结果如Fig.6所示
节点分裂:当向SB-tree插入一个元组时,可能会导致某一个节点溢出,溢出是指该节点的时间区间超过它能表示的最多区间数量,此时应该进行节点分裂。
区间合并:当完成插入或者删除操作后,可能存在两个相邻的区间的value是相同的(如Fig.6),这个时候就要进行区间的合并。
- SB tree——A temporal aggregation data structure
- Data Structure: Tree
- data structure -- tree
- Data Structure:Binary Tree
- Basic Tree--Data Structure
- AVL tree--Data Structure
- Data Structure -Tree
- Data structure of tree
- Data Structure: Binary Index Tree
- Binary Search Tree--Data Structure
- 【Data Structures】 5. Stack—A limited data structure and LIFO
- 数据结构之图 Data Structure — graph
- Perl implement Tree data structure (1)
- Perl implement Tree data structure (2)
- JavaScript Build Tree Data Structure Using Array
- C#数据结构-树 data Structure Tree
- [数据结构]tree-form data structure summary
- Data Structure: Segment Tree 线段树
- JNI/NDK开发指南(十一)——JNI异常处理
- Java移位运算符
- 老公老婆开玩笑。。。哈哈,笑死你
- 汉诺塔VI
- Linux--进程组、会话、守护进程
- SB tree——A temporal aggregation data structure
- hdu 5299 ZCC loves strings
- .Net中的早期绑定和后期绑定(二)
- 局部变量在编译时就确定地址吗
- leetcode_Rotate Array
- 学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(五)
- LintCode-木材加工
- git-基本知识
- Json转换利器Gson之实例二-Gson注解和GsonBuilder