《一种集群数据库测点的访问方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种集群数据库测点的访问方法及装置.pdf(19页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104021223 A (43)申请公布日 2014.09.03 C N 1 0 4 0 2 1 2 2 3 A (21)申请号 201410290134.1 (22)申请日 2014.06.25 G06F 17/30(2006.01) (71)申请人国家电网公司 地址 100031 北京市西城区西长安街86号 申请人北京中电普华信息技术有限公司 (72)发明人李玉凯 欧阳红 戎修凯 董艺 (74)专利代理机构北京集佳知识产权代理有限 公司 11227 代理人王宝筠 (54) 发明名称 一种集群数据库测点的访问方法及装置 (57) 摘要 本申请公开了一种集群数据库测点。
2、访问方法 及装置,应用于在内存中建立的Treap树,Treap 树节点存储索引块包含的测点标识范围及访问次 数,节点访问次数依据预设节点查找顺序依次降 低,且内存中还存储依据访问次数的高低排序从 磁盘读取的预设数量索引块,方法包括:在预设 周期内,接收测点访问请求,依据请求中的目标测 点标识及所述预设节点查找顺序,在树中查找到 目标节点,增加目标节点的访问次数,在内存中查 找是否存在目标节点对应的索引块,若是,在该索 引块中确定目标测点标识对应的测点地址,进而 依据测点地址访问测点,当预设周期结束时,调整 目标节点在Treap树中的位置,以使各个节点的 访问次数依据节点查找顺序依次降低。 (5。
3、1)Int.Cl. 权利要求书3页 说明书11页 附图4页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书11页 附图4页 (10)申请公布号 CN 104021223 A CN 104021223 A 1/3页 2 1.一种集群数据库测点的访问方法,其特征在于,应用于在内存中建立的Treap树,所 述Treap树的每个节点存储预设索引块的块信息,每个所述索引块包含多个测点的标识及 每个测点标识对应的测点地址,每个所述块信息包括各自索引块的测点标识范围及访问次 数,各个节点的访问次数依据预设节点查找顺序依次降低,且所述内存中还存储有依据访 问次数的高低排序读。
4、取的预设数量的索引块,该方法包括: 在预设周期内,接收测点访问请求;其中,所述测点访问请求中包含目标测点标识; 依据所述目标测点标识及所述节点查找顺序,在所述Treap树中,查找到目标节点,并 增加所述目标节点在所述预设周期内的访问次数;其中,所述目标节点为测点标识范围内 包含所述目标测点标识的节点; 查找所述内存中是否存在所述目标节点对应的目标索引块; 若是,在所述目标索引块中确定所述目标测点标识对应的测点地址,并依据该测点地 址对测点进行访问; 当所述预设周期结束时,利用所述增加后的访问次数,调整所述目标节点在所述Treap 树中的节点位置,以使所述Treap树中各个节点的访问次数依据所述。
5、预设节点查找顺序依 次降低。 2.根据权利要求1所述的方法,其特征在于,每个所述块信息包括的各自索引块的测 点标识为各自索引块的最大测点标识及最小测点标识, 其中,所述依据所述目标测点标识及所述节点查找顺序,在所述Treap树中,查找到目 标节点,包括: 依据所述节点查找顺序,在所述Treap树中,查找到所述目标测点标识在最大测点标 识及最小测点标识范围内的目标节点。 3.根据权利要求1所述的方法,其特征在于,所述依据所述增加后的访问次数,调整所 述目标节点在所述Treap树中的节点位置,包括: 获得所述预设周期内目标节点增加后的访问次数,并获得该预设周期内所有节点的访 问总次数; 将所述增加。
6、后的访问次数与所述访问总次数的比值,确定为所述目标节点的访问优先 级; 当所述目标节点的访问优先级高于该目标节点父节点的访问优先级且所述目标节点 为左子树时,对所述Treap树进行右旋; 当所述目标节点的访问优先级高于该目标节点父节点的访问优先级且所述目标节点 为右子树时,对所述Treap树进行左旋。 4.根据权利要求1所述的方法,其特征在于,还包括: 当所述内存中不存在所述目标节点对应的目标索引块时,将访问次数最低的索引块置 换出内存,并将所述目标索引块读取至内存。 5.根据权利要求1或4所述的方法,其特征在于,每个所述索引块的容量相同且均未超 过磁盘块容量,其中,所述索引块存储所述多个测点。
7、标识,包括: 所述索引块具有预设个数的分块,且非空分块中的测点标识依次排序; 或, 所述索引块具有预设个数的分块,首个空块中存储新增的测点标识。 权 利 要 求 书CN 104021223 A 2/3页 3 6.一种集群数据库测点的访问装置,其特征在于,应用于在内存中建立的Treap树,所 述Treap树的每个节点存储预设索引块的块信息,每个所述索引块包含多个测点的标识及 每个测点标识对应的测点地址,每个所述块信息包括各自索引块的测点标识范围及访问次 数,各个节点的访问次数依据预设节点查找顺序依次降低,且所述内存中还存储有依据访 问次数的高低排序读取的预设数量的索引块,该装置包括: 访问请求接。
8、收单元,用于在预设周期内,接收测点访问请求;其中,所述测点访问请求 中包含目标测点标识; 目标节点查找单元,用于依据所述目标测点标识及所述节点查找顺序,在所述Treap 树中,查找到目标节点; 访问次数增加单元,用于增加所述目标节点在所述预设周期内的访问次数;其中,所述 目标节点为测点标识范围内包含所述目标测点标识的节点; 目标索引块查找单元,用于查找所述内存中是否存在所述目标节点对应的目标索引 块;若是,触发测点访问单元; 测点访问单元,用于在所述目标索引块中确定所述目标测点标识对应的测点地址,并 依据该测点地址对测点进行访问; 节点位置调整单元,用于当所述预设周期结束时,利用所述增加后的访。
9、问次数,调整所 述目标节点在所述Treap树中的节点位置,以使所述Treap树中各个节点的访问次数依据 所述预设节点查找顺序依次降低。 7.根据权利要求6所述的装置,其特征在于,每个所述块信息包括的各自索引块的测 点标识为各自索引块的最大测点标识及最小测点标识, 其中,所述目标节点查找单元包括: 查找子单元,用于依据所述节点查找顺序,在所述Treap树中,查找到所述目标测点标 识在最大测点标识及最小测点标识范围内的目标节点。 8.根据权利要求6所述的装置,其特征在于,所述节点位置调整单元包括: 访问次数获取子单元,用于获得所述预设周期内目标节点增加后的访问次数,并获得 该预设周期内所有节点的访。
10、问总次数; 访问优先级确定子单元,用于将所述增加后的访问次数与所述访问总次数的比值,确 定为所述目标节点的访问优先级; 右旋子单元,用于当所述目标节点的访问优先级高于该目标节点父节点的访问优先级 且所述目标节点为左子树时,对所述Treap树进行右旋; 左旋子单元,用于当所述目标节点的访问优先级高于该目标节点父节点的访问优先级 且所述目标节点为右子树时,对所述Treap树进行左旋。 9.根据权利要求6所述的装置,其特征在于,还包括: 索引块置换单元,用于当所述内存中不存在所述目标节点对应的目标索引块时,将访 问次数最低的索引块置换出内存,并将所述目标索引块读取至内存。 10.根据权利要求6或9所。
11、述的装置,其特征在于,每个所述索引块的容量相同且均未 超过磁盘块容量,其中,所述索引块存储所述多个测点标识,包括: 所述索引块具有预设个数的分块,且非空分块中的测点标识依次排序; 或, 权 利 要 求 书CN 104021223 A 3/3页 4 所述索引块具有预设个数的分块,首个空块中存储新增的测点标识。 权 利 要 求 书CN 104021223 A 1/11页 5 一种集群数据库测点的访问方法及装置 技术领域 0001 本申请涉及数据库技术领域,尤其是一种集群数据库测点的访问方法及装置。 背景技术 0002 集群数据库,已经成为在工业信息化进程中的基础核心软件系统,是由大量单机 数据库组。
12、成的、在逻辑意义上具有统一性的数据库系统。其中,单机数据库中包含多个测 点,用户通过访问测点实现对集群数据库的访问。集群数据库向用户提供统一的访问接口, 实现测点存储位置对访问接口的透明。也就是说,用户并不需关心测点的存储位置,只是向 访问接口发送测点访问请求,由该接口查找测点的具体存储位置。 0003 目前,访问接口中建立有测点索引,索引结构为B+树形。该树每个结点均存储一 个有序表,该表中包含多个测点标识。当访问接口接收到用户对某个测点的访问请求后,将 该B+树的第一个结点(根节点)从硬盘读取至内存,并查找该结点的有序表中是否包含有 用户访问的测点标识,若是,查找成功,进而可依据该测点标识。
13、获知测点存储位置,否则,从 硬盘读取该结点指向的下一结点并进行查找,重复上述步骤,直至该树的叶子节点。当到达 该树的叶子结点但仍未查找到测点标识时,查找失败。 0004 但是,利用上述B+树结构的索引查找测点时,访问硬盘次数较多,导致测点查找 效率较低。 发明内容 0005 有鉴于此,本发明提供集群数据库测点的访问方法及装置,以解决现有技术中利 用上述B+树结构的索引查找测点时,访问硬盘次数较多,导致测点查找效率较低的技术问 题。本发明提供的技术方案如下: 0006 一种集群数据库测点的访问方法,应用于在内存中建立的Treap树,所述Treap树 的每个节点存储预设索引块的块信息,每个所述索引。
14、块包含多个测点的标识及每个测点标 识对应的测点地址,每个所述块信息包括各自索引块的测点标识范围及访问次数,各个节 点的访问次数依据预设节点查找顺序依次降低,且所述内存中还存储有依据访问次数的高 低排序读取的预设数量的索引块,该方法包括: 0007 在预设周期内,接收测点访问请求;其中,所述测点访问请求中包含目标测点标 识; 0008 依据所述目标测点标识及所述节点查找顺序,在所述Treap树中,查找到目标节 点,并增加所述目标节点在所述预设周期内的访问次数;其中,所述目标节点为测点标识范 围内包含所述目标测点标识的节点; 0009 查找所述内存中是否存在所述目标节点对应的目标索引块; 0010。
15、 若是,在所述目标索引块中确定所述目标测点标识对应的测点地址,并依据该测 点地址对测点进行访问; 0011 当所述预设周期结束时,利用所述增加后的访问次数,调整所述目标节点在所述 说 明 书CN 104021223 A 2/11页 6 Treap树中的节点位置,以使所述Treap树中各个节点的访问次数依据所述预设节点查找 顺序依次降低。 0012 上述方法,优选地,每个所述块信息包括的各自索引块的测点标识为各自索引块 的最大测点标识及最小测点标识, 0013 其中,所述依据所述目标测点标识及所述节点查找顺序,在所述Treap树中,查找 到目标节点,包括: 0014 依据所述节点查找顺序,在所述。
16、Treap树中,查找到所述目标测点标识在最大测 点标识及最小测点标识范围内的目标节点。 0015 上述方法,优选地,所述依据所述增加后的访问次数,调整所述目标节点在所述 Treap树中的节点位置,包括: 0016 获得所述预设周期内目标节点增加后的访问次数,并获得该预设周期内所有节点 的访问总次数; 0017 将所述增加后的访问次数与所述访问总次数的比值,确定为所述目标节点的访问 优先级; 0018 当所述目标节点的访问优先级高于该目标节点父节点的访问优先级且所述目标 节点为左子树时,对所述Treap树进行右旋; 0019 当所述目标节点的访问优先级高于该目标节点父节点的访问优先级且所述目标 。
17、节点为右子树时,对所述Treap树进行左旋。 0020 上述方法,优选地,还包括: 0021 当所述内存中不存在所述目标节点对应的目标索引块时,将访问次数最低的索引 块置换出内存,并将所述目标索引块读取至内存。 0022 上述方法,优选地,每个所述索引块的容量相同且均未超过磁盘块容量,其中,所 述索引块存储所述多个测点标识,包括: 0023 所述索引块具有预设个数的分块,且非空分块中的测点标识依次排序; 0024 或, 0025 所述索引块具有预设个数的分块,首个空块中存储新增的测点标识。 0026 本发明还提供了一种集群数据库测点的访问装置,应用于在内存中建立的Treap 树,所述Treap。
18、树的每个节点存储预设索引块的块信息,每个所述索引块包含多个测点的 标识及每个测点标识对应的测点地址,每个所述块信息包括各自索引块的测点标识范围及 访问次数,各个节点的访问次数依据预设节点查找顺序依次降低,且所述内存中还存储有 依据访问次数的高低排序读取的预设数量的索引块,该装置包括: 0027 访问请求接收单元,用于在预设周期内,接收测点访问请求;其中,所述测点访问 请求中包含目标测点标识; 0028 目标节点查找单元,用于依据所述目标测点标识及所述节点查找顺序,在所述 Treap树中,查找到目标节点; 0029 访问次数增加单元,用于增加所述目标节点在所述预设周期内的访问次数;其中, 所述目。
19、标节点为测点标识范围内包含所述目标测点标识的节点; 0030 目标索引块查找单元,用于查找所述内存中是否存在所述目标节点对应的目标索 引块;若是,触发测点访问单元; 说 明 书CN 104021223 A 3/11页 7 0031 测点访问单元,用于在所述目标索引块中确定所述目标测点标识对应的测点地 址,并依据该测点地址对测点进行访问; 0032 节点位置调整单元,用于当所述预设周期结束时,利用所述增加后的访问次数,调 整所述目标节点在所述Treap树中的节点位置,以使所述Treap树中各个节点的访问次数 依据所述预设节点查找顺序依次降低。 0033 上述装置,优选地,每个所述块信息包括的各自。
20、索引块的测点标识为各自索引块 的最大测点标识及最小测点标识, 0034 其中,所述目标节点查找单元包括: 0035 查找子单元,用于依据所述节点查找顺序,在所述Treap树中,查找到所述目标测 点标识在最大测点标识及最小测点标识范围内的目标节点。 0036 上述装置,优选地,所述节点位置调整单元包括: 0037 访问次数获取子单元,用于获得所述预设周期内目标节点增加后的访问次数,并 获得该预设周期内所有节点的访问总次数; 0038 访问优先级确定子单元,用于将所述增加后的访问次数与所述访问总次数的比 值,确定为所述目标节点的访问优先级; 0039 右旋子单元,用于当所述目标节点的访问优先级高于。
21、该目标节点父节点的访问优 先级且所述目标节点为左子树时,对所述Treap树进行右旋; 0040 左旋子单元,用于当所述目标节点的访问优先级高于该目标节点父节点的访问优 先级且所述目标节点为右子树时,对所述Treap树进行左旋。 0041 上述装置,优选地,还包括: 0042 索引块置换单元,用于当所述内存中不存在所述目标节点对应的目标索引块时, 将访问次数最低的索引块置换出内存,并将所述目标索引块读取至内存。 0043 上述装置,优选地,每个所述索引块的容量相同且均未超过磁盘块容量,其中,所 述索引块存储所述多个测点标识,包括: 0044 所述索引块具有预设个数的分块,且非空分块中的测点标识依。
22、次排序; 0045 或, 0046 所述索引块具有预设个数的分块,首个空块中存储新增的测点标识。 0047 与现有技术相比,本发明具有如下有益效果: 0048 本发明实施例提供的集群数据库测点访问方法及装置,应用于在内存中预先建立 的Treap树,Treap树节点存储访问次数,各个节点的访问次数依据预设节点查找顺序依次 降低。该方法依据预设节点查找顺序,在Treap树中查找到目标节点,增加目标节点的访问 次数,且当预设周期结束时,调整所述目标节点在Treap树中的节点位置,以使该Treap树 中的各个节点的访问次数依据节点查找顺序依次降低。由此可见,本发明实施例能够实现 依据用户对测点的访问次。
23、数对索引树进行调整,以使经常被访问的测点对应的节点位置更 靠近根节点,由于节点查找顺序是从根节点开始的,因此,所述方法可缩短对应索引块的查 找路径,进而查找到目标节点的速度更快,测点的访问效率更高。同时,索引Treap树是建 立在内存中的,且内存中还存储有依据访问次数的高低排序从磁盘中读取的预设数量的索 引块,首先在内存中查找目标节点对应的索引块,若存在,进而在查找的索引块中确定测点 地址。与现有技术相比,本发明实施例可在内存直接确定出测点地址,减少了对磁盘的读写 说 明 书CN 104021223 A 4/11页 8 次数,因此,进一步了提高测点访问效率。 附图说明 0049 为了更清楚地说。
24、明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 提供的附图获得其他的附图。 0050 图1为本发明实施例公开的集群数据库的架构图; 0051 图2为现有技术中B+树结构形式的测点索引示意图; 0052 图3为本发明实施例公开的一种集群数据库测点访问方法的流程图; 0053 图4为本发明实施例公开的Treap树形式的测点索引示意图; 0054 图5为本发明实施例公开的Treap树左旋及右旋示意图; 0055 图6为本发明实施例。
25、公开的一种集群数据库测点访问方法又一实施例的流程图; 0056 图7为本发明实施例公开的一种集群数据库测点访问装置的结构示意图; 0057 图8为本发明实施例公开的一种集群数据库测点访问装置的部分结构示意图; 0058 图9为本发明实施例公开的一种集群数据库测点访问装置又一结构示意图。 具体实施方式 0059 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。 0060 参见图1,。
26、其示出了集群数据库的一个架构示例图,如图所示,集群数据库包括多 个单机数据库,每个单机数据库中管理有多个数据库测点,每个测点具有唯一标识,用户可 以发送包含测点标识的访问请求,以实现对测点的访问。 0061 需要说明的是,集群数据库向用户提供统一的测点访问接口,可选地,所述测点访 问接口如图1所示的目录服务器,用户不需要关心测点具体在哪一单机数据库中,只需向 目录服务器发送访问请求即可。当目录服务器节点到用户的访问请求后,依据所述访问请 求中测点标识与测点地址间的映射关系,查找到访问请求中测点的具体地址,从而实现用 户对该测点的透明访问。其中,访问接口维护有测点标识与测点地址之间的索引结构,以。
27、实 现测点标识到测点物理存储位置的快速映射。 0062 目前,数据库测点数量巨大,访问接口保存所有的测点索引,但由于内存容量的限 制,无法将整个测点索引都放入内存中,因此,需要将部分测点索引放入磁盘中,每次选择 一部分测点索引读取至内存,对访问请求中的测点标识进行查找。当测点标识并不在内存 时,再从磁盘中将新的一部分测定索引读取至内存,同时将内存中的测点索引从内存调出 至磁盘。 0063 应用上述查找思想的一种现有技术是以B+树结构建立测点索引的,如图2所示, B+树的每个节点存储有一个多关键码的有序表,有序表中包含有多个依据大小进行排序的 关键码,关键码代表测点索引数据子集,例如,关键码为5。
28、、10及20的节点,表示大于等于5 说 明 书CN 104021223 A 5/11页 9 小于10、大于等于10小于20、大于等于20小于下一节点中关键码28的三个索引数据子 集,在所述各个索引子集中查找是否包含有所述测点标识。具体地,将所述B+树测点索引 结构保存在磁盘上,当接收到测点标识时,读取B+树的一部分节点(可以是一个或多个节 点)至内存,查找所述内存中是否包含有所述测点标识,当不包含有时,再选取一部分节点 读取至内存进行新的查找。 0064 但是,上述现有技术中,需要多次进行磁盘的读取,磁盘的访问速度相较于内存而 言慢的多,测点的查找效率较低,本发明实施例提供一种集群数据库测点访。
29、问方法,以实现 较高的测点查找效率。 0065 参见图3,其示出了本发明实施例提供的一种集群数据库测点访问方法的流程,该 方法应用于在内存中建立的Treap树,所述Treap树的每个节点存储预设索引块的块信息, 每个所述索引块包含多个测点的标识及每个测点标识对应的测点地址,每个所述块信息包 括各自索引块的测点标识范围及访问次数,各个节点的访问次数依据预设节点查找顺序依 次降低,且所述内存中还存储有依据访问次数的高低排序读取的预设数量的索引块。 0066 简单而言,本方法需要预先建立两级索引,其中第一级索引为Treap树,第二级索 引为索引块。其中,所述第一级索引Treap树的每个节点对应一个索。
30、引块,每个索引块中包 含多个测点标识与测点地址的键值对。需要说明的是,Treap树是一种平衡二叉树,Treap Tree(树)+Heap(堆),其结合有平衡二叉树及堆两个方面的特性。在二叉树的基础上, 每个Treap树节点还包含有访问次数节点域,该节点域用于记录在一个预设时间周期内该 节点被访问的次数。该方法包括: 0067 步骤101:在预设周期内,接收测点访问请求;其中,所述测点访问请求中包含目 标测点标识。 0068 其中,所述预设周期为时间段,周期的大小可以是根据访问接口接收到访问请求 的频率设定,访问频率较高时,设定相对较短的时间段,访问频率较低时,设定相对较长的 时间段。可选地,所。
31、述预设周期控制在20秒内,例如,相对较长的时间段选取20秒,相对应 较短的时间段选取10秒。 0069 步骤102:依据所述目标测点标识及所述节点查找顺序,在所述Treap树中,查找 到目标节点,并增加所述目标节点在所述预设周期内的访问次数;其中,所述目标节点为测 点标识范围内包含所述目标测点标识的节点。 0070 其中,所述节点查找顺序为在Treap树中查找目标节点的顺序,Treap树是一种平 衡二叉树,所述查找顺序为一种二分查找法。具体地,从根节点开始,先查找左子树,再查 找右子树,当查找的节点不是目标节点,接着查找该节点的左子树,然后查找该节点的右子 树,执行上述步骤,直至查找到叶子节点。
32、。需要说明的是,二分查找过程中需要将目标测点 标识与节点存储块信息中的测点标识范围进行比较。当目标测点标识在该范围内时,该节 点为目标节点,并且结束查找过程;当目标测点标识小于该范围的最小值时,则查找节点左 子树,否则,查找节点右子树。 0071 需要说明的是,预先建立的Treap树中,各个节点的访问次数依据预设节点查找 顺序依次降低,也就是说,访问次数越高的节点越接近于根节点,因此,依据上述查找顺序 查找节点时,访问次数越高的节点越早地被查找到。需要说明的是,访问次数指的是同一个 预设周期内的访问次数。依据上述节点查找顺序,查找到目标节点后,增加目标节点的访问 说 明 书CN 1040212。
33、23 A 6/11页 10 次数,具体地,将访问次数加1。 0072 步骤103:查找所述内存中是否存在所述目标节点对应的目标索引块;若是,执行 步骤104。 0073 需要说明的是,在Treap树中查找到目标节点后,进而需要找到该目标节点对应 的索引块。内存中预先存储预设数量的索引块,所述索引块为从磁盘读取的访问次数靠前 的索引块。因此,首先在内存中,查找该目标节点对应的索引块。查找到后,执行后续步骤 104。 0074 步骤104:在所述目标索引块中确定所述目标测点标识对应的测点地址,并依据 该测点地址对测点进行访问。 0075 需要说明的是,上述步骤101至步骤104可以是多次重复执行的。
34、。也就是说,步 骤101只要在一个预设周期内,接收到测点访问请求后,即可触发执行后续步骤102至步骤 104的动作。 0076 步骤105:当所述预设周期结束时,利用所述增加后的访问次数,调整所述目标节 点在所述Treap树中的节点位置,以使所述Treap树中各个节点的访问次数依据所述预设 节点查找顺序依次降低。 0077 其中,步骤102增加了目标节点的访问次数,在预设周期结束时,需要对目标节点 在Treap树中的节点位置进行调整,以使各个节点的访问次数依据节点查找顺序依次降 低,也就是说,提高了目标访问节点被查找到的速度。 0078 由以上的技术方案可知,本发明实施例提供的集群数据库测点访。
35、问方法,应用于 在内存中预先建立的Treap树,Treap树节点存储访问次数,各个节点的访问次数依据预设 节点查找顺序依次降低。该方法依据预设节点查找顺序,在Treap树中查找到目标节点,增 加目标节点的访问次数,且当预设周期结束时,调整所述目标节点在Treap树中的节点位 置,以使该Treap树中的各个节点的访问次数依据节点查找顺序依次降低。由此可见,本发 明实施例能够实现依据用户对测点的访问次数对索引树进行调整,以使经常被访问的测点 对应的节点位置更靠近根节点,由于节点查找顺序是从根节点开始的,因此,所述方法可缩 短对应索引块的查找路径,进而查找到目标节点的速度更快,测点的访问效率更高。 。
36、0079 同时,索引Treap树是建立在内存中的,且内存中还存储有依据访问次数的高低 排序从磁盘中读取的预设数量的索引块,内存利用率较高。并且,首先在内存中查找目标节 点对应的索引块,若存在,进而在查找的索引块中确定测点地址。与现有技术相比,本发明 实施例可在内存直接确定出测点地址,减少了对磁盘的读写次数,因此,进一步了提高测点 访问效率。 0080 上述方法实施例中,Treap树节点存储的块信息中包括索引块的测点标识范围,可 选地,所述测点标识范围为各自索引块对应的最大测点标识及最小测点标识。如图4所示, Treap树每个节点包括六个节点域,其中,MaxValue为索引块包含的测点标识中的最。
37、大值; MinValue为索引块包含的测点标识中的最小值;Pri为节点的访问次数(或者认为是节点 对应的索引块的访问次数);IndexPtr为索引块的存储位置,用以表明节点对应的索引块 是否在内存中,当该索引块在内存中时,该节点域的值为内存位置指针,否则,该节点域的 值为空;LPtr为该节点的左子树;RPtr为该节点的右子树。 0081 与现有技术相比,Treap树节点中只存储索引块中的最大测点标识及最小测点标 说 明 书CN 104021223 A 10 7/11页 11 识,用两个标识即可表明节点对应索引块包含的测点标识范围,简化了索引树的节点结构, 降低了单个节点的内存占用量,提高了内存。
38、的利用率。 0082 其中,上述方法实施例中依据所述增加后的访问次数,调整所述目标节点在所述 Treap树中的节点位置,可以通过下述方式实现: 0083 依据所述节点查找顺序,在所述Treap树中,查找到所述目标测点标识在最大测 点标识及最小测点标识范围内的目标节点。 0084 如图4所示,假设用户发送的测点访问请求中包含的目标测点标识为555,根节点 的右子树第一个节点对应的索引块为索引块3,索引块3预设的存储容量为200,即可存储 的测点标识包400-599,因此,该节点存储的最小测点标识为400,最大测点标识为599。依 据节点查找顺序,在Treap树中,从根节点开始,首先查找左子树的第。
39、一个节点,再查找右 子树的第一个节点,当查找到目标测点标识555包含在400至599范围内,进而,确定该节 点为目标节点。 0085 可选的,上述方法实施例中依据所述增加后的访问次数,调整所述目标节点在所 述Treap树中的节点位置,可以通过下述方式实现: 0086 获得所述预设周期内目标节点增加后的访问次数,并获得该预设周期内所有节点 的访问总次数;将所述增加后的访问次数与所述访问总次数的比值,确定为所述目标节点 的访问优先级;当所述目标节点的访问优先级高于该目标节点父节点的优先级且所述目标 节点为左子树时,对所述Treap树进行右旋;当所述目标节点的访问优先级高于该目标节 点父节点的优先级。
40、且所述目标节点为右子树时,对所述Treap树进行左旋。 0087 需要说明的是,每个节点的节点域中包含访问次数节点域,该节点域中的值可以 表示一个预设周期内的访问次数,也可以表示系统自运行开始后的总时长内节点的访问次 数。 0088 若节点域中的值为第二种形式时,则需要在每一轮的周期内,维持一个全局值,即 系统当前周期数,系统当前周期数为系统运行时长与预设周期之间的比值。相应地,每个节 点存储的块信息中包含有一个节点域,即当前周期数。当依据用户的访问请求查找到目标 节点时,增加目标节点的访问次数前,需要首先判断该节点的当前周期数是否与系统当前 周期数相同,若是,则将该节点的访问次数直接加1,否。
41、则,用所述系统的当前周期数更新该 节点的当前周期数,然后再将该节点的访问次数加1。 0089 同时,系统需维持另一全局值,即系统访问次数,用以表示一个预设周期内所有节 点的访问次数,也就是用户发送的测点访问请求的总数。当预设周期结束时,获取系统访问 次数的值,该值作为该预设周期内所有节点的访问总次数,同时,将访问到的目标节点的访 问次数与所述访问总次数的比值确定为各个目标节点的访问优先级,同时,也是索引块驻 留在内存的优先级。 0090 对目标节点位置的调整需要依据目标节点的访问优先级,因此,判断目标节点的 访问优先级与其父节点的访问优先级的大小关系,且需要判断该目标节点为父节点的左子 树还是。
42、右子树,从而决定对目标节点进行左旋还是右旋。 0091 需要说明的是,对目标节点的调整,为了使Treap树同时满足平衡二叉树及最小 堆的性质,也就是说,以使所述Treap树中各个节点的访问次数依据所述预设节点查找顺 序依次降低。调整的方式包括左旋及右旋,其中: 说 明 书CN 104021223 A 11 8/11页 12 0092 左旋:左旋一个子树,会把它的根节点旋转到根的左子树位置,同时根节点的右子 节点成为子树的根。 0093 右旋:右旋一个子树,会把它的根节点旋转到根的右子树位置,同时根节点的左子 节点成为子树的根。 0094 如图5所示,其示出了两颗Treap树的模型,其中,圆圈表。
43、示Treap树的节点,圆圈 外的数值表明该节点的优先级。从左边的Treap树转向右边的Treap树为右旋,从右边的 Treap转向左边的Treap为左旋。旋转具有如下性质: 0095 性质1:左旋一个子树,会把它的根节点旋转到根的左子树位置,同时根节点的右 子节点成为子树的根;右旋一个子树,会把它的根节点旋转到根的右子树位置,同时根节点 的左子节点成为子树的根。 0096 性质2:对子树旋转后,子树仍然满足平衡二叉树性质。 0097 旋转可以使不满足堆序的两个节点通过调整位置,重新满足堆序,而不改变平衡 二叉树性质。 0098 可选地,参见图6,其其示出了本发明实施例提供的集群数据库测点访问方。
44、法又一 实施例的流程,在上述方法实施例一的基础上还包括: 0099 步骤106:当所述内存中不存在所述目标节点对应的目标索引块时,将访问次数 最低的索引块置换出内存,并将所述目标索引块读取至内存。 0100 需要说明的是,内存中存储的是依据同一周期内访问次数靠前的节点对应的索引 块,该访问次数可体现用户的访问兴趣。当步骤103的判断结果为否时,将访问次数最低的 索引块置换出内存,并将目标索引块从磁盘读取至内存,且触发步骤104的执行,从而实现 对测点的访问。 0101 由以上的技术方案可知,该访问方法可以基于用户的访问兴趣管理内存中缓存的 索引块,将每次一段时间内被访问次数最少的索引块置换出内。
45、存,从而在内存中查找目标 索引块的命中几率较大,可提高测点的访问效率。 0102 需要说明的是,上述各个方法实施例中,每个索引块的容量是相同的,即每个索引 块可存储的测点标识与测点地址的键值对的数量是相同的,并且,每个索引块的容量未超 过磁盘的块容量,以保证通过Treap树查找到目标节点后,且该目标节点并未在内存中时, 可通过对磁盘的一次读取完成索引块到内存的装载,因此,有效减少磁盘的读写次数。 0103 每个索引块中存储有多个测点标识,具体地,存储的方式可以通过以下两种方式 中的任意一种实现:所述索引块具有预设个数的分块,且非空分块中的测点标识依次排序; 或,所述索引块具有预设个数的分块,首。
46、个空块中存储新增的测点标识。具体地, 0104 第一种实现方式中,索引块由块控制信息和n个键值对(即测点标识-存储地 址)组成。其中控制信息的大小固定,表明本索引块包含的键值对个数n。所有的二级索引 块可放入到一个较大的文件中,只有需要时才将对应的索引块调入到内存。每个索引块的 空间按其预设容量(键值对个数n)预先分配,而每个新加入的键值对会插入到本索引块中 为自己预留的位置。这样索引块中的键值对依据测点标识有序排列。 0105 第二种实现方式中,索引块块首的块控制信息中保存了本索引块最大容量n、当前 包含的键值对个数N及首个预留的空位置FirstArea。每个索引块的空间按其预订最大容 量n。
47、预先分配。与第一种实现方式的关键不同点是,每个新加入的键值对无需按测点标识 说 明 书CN 104021223 A 12 9/11页 13 排列,只需插入到本索引块中FirstArea指示的空位置,即随机插入无需排序。需要说明的 是,这样索引块中的键值对并不是有序排列的,为了提高在索引块中查找键值对的速度,在 索引块调入内存过程中,对该索引块中的测点标识排序。 0106 可选地,当集群数据库中增加新的测点标识时,系统会为其分配测点标识,并将其 依据测点标识的大小,需要将其对应的键值对存入索引块中,若索引块已经存在,将该键值 对直接存入索引块,若索引块不存在,创建新的索引块,并在Treap树中创。
48、建对应节点,因 此,需要在Treap树中插入节点元素。 0107 在Treap树中插入节点元素,与在平衡二叉树中插入方法相似。首先找到合适的 插入位置,然后建立新的节点元素,存储节点元素。但是要注意建立新的节点的过程中,新 节点的访问次数可能会破坏堆序,因此要根据需要进行恰当的旋转。具体方法如下: 0108 1.)从根节点开始插入; 0109 2.)如果要插入的值小于等于当前节点的值,在当前节点的左子树中插入,插入后 如果左子节点的访问次数高于当前节点的访问次数,对当前节点进行右旋; 0110 3.)如果要插入的值大于当前节点的值,在当前节点的右子树中插入,插入后如果 右子节点的访问次数高于当。
49、前节点的访问次数,对当前节点进行左旋; 0111 4.)如果当前节点为空节点,在此建立新的节点,该节点的值为要插入的值。 0112 另外,集群数据库集中删除一批测点,若这些测点被包含于同一索引块中,该索引 块会被删除,Treap树中存储该索引块块信息的节点也将被删除,以提高空间的利用率。首 先,在Treap树中查找到待删除的节点,然后依据下述不同情况分别进行相应处理。 0113 情况一:该节点为叶节点或链节点,则该节点是可以直接删除的节点。若该节点有 非空子节点,用非空子节点代替该节点的,否则用空节点代替该节点,然后删除该节点。 0114 情况二:该节点有两个非空子节点,通过旋转,使该节点变为可以直接删除的节 点。如果该节点的左子节点的访问次数高于右子节点的访问次数,右旋该节点,使该节点降 为右子树的根节点,然后访问右子树的根节点。