发明名称 应用于时序历史数据库的索引方法
摘要 本发明公开了一种应用于时序历史数据库的索引方法,以实现时序历史数据库数据的高效存储和检索。本发明通过以时间点为关键字建立多叉树索引,让索引能够按照时间顺序有序地存放在磁盘上索引文件中,时序历史数据也能够按照时间顺序有序地存放在磁盘上数据文件中。在进行数据访问时,通过批量的内存映射文件机制,减少文件访问的频率,保证时序历史数据库数据存储和检索的效率,并且对内存资源的消耗也较小。
申请公布号 CN102890722B 申请公布日期 2015.03.11
申请号 CN201210413154.4 申请日期 2012.10.25
申请人 国家电网公司;江苏瑞中数据股份有限公司 发明人 郑晓露;陈静
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 汪旭东
主权项 一种应用于时序历史数据库的索引方法,其特征在于,包括如下步骤:(1)建立索引:时序历史数据库中的测点文件、索引文件和数据文件三种文件串联,通过二元组结构形式的文件指针进行访问;对测点文件中的每个测点单独建立索引,所述索引采用多叉树的层级结构;以时间点为关键字,索引节点的每个子指针指向下一级的索引节点,最顶层的索引节点为索引根节点,最下一层的索引节点为索引叶子节点,索引节点的每个时间点关键字左边的子指针指向的下一级索引节点中的时间点关键字都小于此时间点关键字,同样每个时间点关键字右边的子指针指向的下一级索引节点中的时间点关键字都大于此时间点关键字;索引叶子节点指向数据文件中的数据块在数据文件中的存储位置,所述索引叶子节点的每个子指针指向一个数据块,所述索引叶子节点中的每个时间点关键字左边的子指针指向的数据块中数据的时间都小于此时间点关键字,同样每个时间点关键字右边的子指针指向的数据块中数据的时间都大于此时间点关键字;每个所述索引叶子节点指向的所有数据块都有前指针和后指针,按照时间的顺序和逆序构建成双向链表,相邻索引叶子节点中的首位数据块也互相串联;(2)数据存储:采用内存映射文件的方式进行文件操作,历史数据在写入时,先将一定长度的文件内容映射到数据缓存中,然后在该数据缓存中填入数据块,并将数据缓存中的内容和数据文件进行同步;按照上述方式将索引节点内容写入索引缓存中,索引节点的子指针指向所述数据块,并将索引缓存中的内容和索引文件进行同步;在写入下一个数据块和索引时,直接对缓存进行操作,直到映射到缓存中的文件空间用完,则进行下一次文件映射;(3)数据检索:在查询某个测点的一段历史数据时,根据查询时间的起点查询索引;查询索引时,首先找到该测点索引的起点位置,然后进行内存映射文件操作,将文件中一定空间范围内的所有索引节点映射到缓存中,通过查询的起始时间点和索引中的时间点关键字来进行索引定位,若该索引节点非索引叶子节点,则继续搜索子节点;找到索引叶子节点之后,根据查询时间段的起点定位该历史数据的起始数据块位置;通过同样的内存映射文件方式读取这个数据块,然后利用数据块之间的双向链表一直向后遍历,直到查询到终止时间,中间不需要再去索引进行查询。
地址 100031 北京市西城区西长安街86号