本发明专利技术公开了一种海量数据库记录的归档和查询方法,归档记录包括对海量数据库记录进行分组,利用倒排索引技术建立索引文件,对需要模糊查询的字段进行分词;采用压缩算法对记录分组压缩并写入数据文件;将索引文件和数据文件保存到文件系统中。查询归档记录的时候先对查询条件做预处理和分词,根据查询条件在索引中找到匹配的记录在数据文件中的文件指针信息;解压对应的记录并将记录的详细信息返回给用户或其他系统。本发明专利技术能够高效的对数据库海量记录的归档和查询,克服归档记录有限,查询复杂和性能低下,用户掌握困难等缺点;独立于数据库系统,对原有系统不造成任何影响;同时能够和第三方系统良好的集成和整合。
【技术实现步骤摘要】
本专利技术涉及一种数据库记录的归档和查询方法,具体涉及一种海量数 据库记录的归档和查询方法。
技术介绍
在数据库系统中,对于数据量会不断增长的数据库表,当数据量积累 到一定规模以后,往往使得系统的性能下降非常明显,不管是査询、新增、 修改还是删除,数据量增大以后,对数据库系统的日常维护,如备份等会 造成很多麻烦。对于这种数据会不停增长的表,如操作日志,超过一定时 间以后其中的记录会被修改的几率就会很小,形成历史记录,对这些记录 的处理一个比较好的方式就是执行归档。目前对大量历史记录的归档的处理虽然有多种方式,但是均不是很理想;要么实现效果不好,要么太复杂 成本太高。本专利技术的目的就是为了提供一种对海量数据的归档方式,能够 简单、高效的存储和访问这些数据。其基本思路是在归档的时候,对不同 的数据进行分别处理,建立索引和压縮的数据文件,将归档文件(索引文 件和数据文件)存储在文件系统中,并对归档以后的记录提供独立高效的 查询支持。现有解决数据库表中历史数据的问题,通常有以下几种方案,将逐一 分析其应用的局限和不足(1)在原有表的基础上,增加归档表这种方案将超过一定时间的历史记录转移到归档表中进行保存。查询的时候,如果在当前的数据表中没有查到,就转到归档表中进行査询。这种方案能够在比较短的时间或者数据量增长不是很迅速的时候,基本能够满足需求。但是如果数据量增长很快,那么归档表中的记录也会增加很庞大,严重影响性能;同时这种方案也不能无限制的保留归档记录。(2) 多个归档表加删除记录在单个归档表的基础上,再增加一定数量的归档表,归档表进行循环使用,当归档表使用到最后一个规定表的时候,将记录删除。这种方式能够保留更多的归档数据,但是同样存在问题。首先是查询问题,如果归档表以时间来进行分割的,按照时间的范围进行查询的时候,可以只在相应的表中进行查询;但是不以时间范围査询,需要遍历所有归档表的时候,由于归档表中有大量的数据,查询的时候性能很难忍受。其次是保留的记录还是有限,因为最终数据还是会被从系统中清除。(3) 归档到文件,査询的时候恢复这种方式是将记录执行归档的时候保存到文件系统中,需要査询的时候将保存的文件的记录恢复到数据库系统中。这种方式能够满足归档记录长期保存的需要,但是查询的时候复杂,不管是恢复到原有系统还是新的系统中,都要执行恢复的操作和过程。(4) 归档到其他数据库系统将需要归档的记录转移到其他数据库系统中,査询的时候,在各个数据库系统中并行査询或者将查询的结果组合。这种方式增加了软硬件投资的成本,同时也增大了实现的复杂度。
技术实现思路
本专利技术所要解决的技术问题是提供一种海量数据库记录的归档方法,它能够高效的对数据库海量记录的归档和査询,克服归档记录有限,査询复杂和性能低下,用户掌握困难等缺点。为此,本专利技术还要提供一种海量数据库记录的査询方法。为了解决上述技术问题,本专利技术的海量数据库记录的归档方法,包括如下步骤(1) 在数据库中获取一个需要归档的表中的记录;(2) 将步骤(1)获取的记录进行分组;(3) 对分组后的各组记录建立索引文件;(4) 对建立好索引文件的组进行数据压縮后归档;(5) 重复步步骤(3)和步骤(4)直至步骤(1)获取的记录全部归档;(6) 若数据库中还有未归档的表,则返回步骤(1)。基于上述归档方法,本专利技术的海量数据库记录的查询方法,包括如下步骤(1) 解析用户输入的査询条件,去掉无意义的査询条件和影响系统正常运行的特殊字符;(2) 在索引文件中找到含有关键字的记录索引,根据记录的文件指针确定记录所在数据块在存档文件中的位置及记录在其所在数据块中的位置;(3) 根据记录所在数据块在存档文件中的位置査找并解压縮相应数据块文档,进一步根据记录在数据块中的位置查询到完整的数据记录。本专利技术的具有以下优点1)、可以满足对归档文件的压縮存储和高效查询的需要,归档记录的文件(索引文件+数据文件)的大小只有原始记录的l/2或者更少;记录在百万级别的时候,査询的响应时间也在毫秒级,大大高于数据库查询的速度;2)、归档文件和数据库完全独立,不对数据库系统的正常运行造成任何影响;3)、归档文件存放在文件系统中,很容易备份和恢复;方案稍加改良就可以实现对多个归档文件的联合査询。附图说明下面结合附图和具体实施方式对本专利技术作进一步详细说明。图1是本专利技术的海量数据库记录的归档方法流程示意图2是本专利技术的海量数据库记录的査询方法和数据库査询性能对比。具体实施例方式本专利技术的海量数据库记录的归档方法,如图1所示,根据不同的需求执行不同的处理方式,基本步骤如下1、 在数据库中获取一个需要归档的表中的记录,将该表中的记录进行分组,分组可以是将所述海量数据库记录按照每组固定记录数量的方式进行分组,例如图1所示为M条记录归为一组。实际操作中,满足归档性能的条件下可以经过试验确定M的最佳取值,如果每条被归档记录的大小比较平均可以以一个固定值M对海量数据库记录分组,如果记录的大小差异比较大,也可以按照每组数据大小为定值对海量数据库记录分组。2、 对分组后的各组记录建立索引文件2. 1 、对每条记录需要查询的每个字段建立相应的倒排索引(InvertedIndex)。2.2、 对需要支持模糊查询或全文搜索的字段,对该字段的文本进行分词(这里的模糊査询不同于SQL语句的like查询;表示的是,不输入完整的句子也能够査询到结果,但英文单词必须是完整的。如输入"北京"能够査询到"北京2008"的结果,但输入"Bei"是查询不到"Beijing2008")。2.3、 同一个表中需要归档的记录建立一个索引文件,对该表分组后,对各组中的每条记录分别建立索引,如图1中当前记录分词后包括k个字段,分别对字段i、 i+l.....i+k建立索引,在索引文件中,不同的字段对应了不同的域(Field,域是存储索引数据的结构),同一个字段的索引属于同一个域中;如图1中所示,字段i的索引信息是放在索引文件中字段i的域中。建立索引时,还要将具体每一条记录在数据文件中的确切位置作为记录的文件指针,写入索引文件中;记录的文件指针只保留在索引文件中,不进行索引。如图1所示,记录的文件指针包括包含当前记录的压縮块在数据文件中的位置(压縮块P0S),记录压縮块的压縮前后大小(压縮块SIZE),记录在压縮块中的序号(记录SN)。3、 对建立好索引文件的一组记录进行数据压縮后归档,同样同一个表的记录写入同一个归档文件,如图1所示,将M条记录作为一组进行压縮,压縮以后作为一个整体的数据块写入归档数据文件中。当记录中存在时间和IP地址等可以转换为数字类型的数据记录时,这样处理能够节省存储空间且便于后续的査询。4、将一个表中的各组记录归档处理后,判断若数据库中是否还有未归档的表,是则返回步骤(1),直至将数据库中所有需要归档的记录全部归档。当一个归档文件保留的记录数量达到一定数量或者超过一定时间以后,可以建立新的索引文件和数据文件,提高数据的安全性。本专利技术对海量数据库记录的归档文件的查询,其基本步骤如下1、 解析用户输入的査询条件,去掉无意义的査询条件和影响系统正常运行的特殊字符。2、 在索引文件中找到含有关键字的记录索引,根据记录的文件指针确定记录所在数据块在存档文件中本文档来自技高网...
【技术保护点】
一种海量数据库记录的归档方法;其特征在于,包括如下步骤: (1)在数据库中获取一个需要归档的表中的记录; (2)将步骤(1)获取的记录进行分组; (3)对分组后的各组记录建立索引文件; (4)对建立好索引文件的组进行数据压缩后归档; (5)重复步骤(3)和步骤(4)直至步骤(1)获取的记录全部归档; (6)若所述数据库中还有未归档的表,则返回步骤(1)。
【技术特征摘要】
【专利技术属性】
技术研发人员:王新春,代真虎,徐培杰,
申请(专利权)人:上海宝信软件股份有限公司,
类型:发明
国别省市:31[中国|上海]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。