CN101551807A - 文件数据库多级索引技术 - Google Patents
文件数据库多级索引技术 Download PDFInfo
- Publication number
- CN101551807A CN101551807A CNA2009100151034A CN200910015103A CN101551807A CN 101551807 A CN101551807 A CN 101551807A CN A2009100151034 A CNA2009100151034 A CN A2009100151034A CN 200910015103 A CN200910015103 A CN 200910015103A CN 101551807 A CN101551807 A CN 101551807A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- key
- file
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明是一种文件数据库多级索引技术,即InforGuard水印模块采用的水印存取机制。它包括数据存储和数据查询两个步骤,通过建立独立的索引文件并按照HASH算法存储索引,通过两阶段快速定位的多级索引技术,克服传统文件数据库效率低下的弱点,显著提高了文件数据库查询数据的性能。
Description
技术领域
本发明涉及一种文件数据库多级索引技术,即InforGuard水印模块采用的水印存取机制。
背景技术
在功能上,InforGuard为验证网页文件的合法性,必须存储网页文件的原始水印(水印即文件的摘要信息),以便比对。每个网页都对应自己的水印,水印总数量与网站上网页的总数量成正比,网站规模很大时,就必须存储大量的水印数据。为保证水印存储和查询的高效率,InforGuard产品中设计了一个基于多级索引技术的文件数据库来存储水印信息。
文件数据库区别于各种商业数据库(如Oracle等),特点是轻便、专用性强,许多产品都会实现自己的文件数据库来存储数据。
目前,在此领域采用的方案为:
存储数据的文件由定长的记录组成,记录是固定结构,包含key和data两部分,key即数据的键信息,而data存储数据内容信息。记录之间紧凑存储。查询记录时,需要遍历整个文件对key进行匹配,找到需要的data。
该方法的特点是实现简单,易于控制,稳定性和可靠性较高。但是查询效率是该项技术使用的主要限制。虽然通过内存缓冲技术(即cache技术)可以提高查询的效率,但是受实际环境的限制,当需要存储大量数据时,仍然很难满足效率上的要求。
发明内容
本发明的目的就是针对上述的不足,提供了一种基于文件数据库的多级索引技术,能够有效提高文件数据库的查询性能,从而扩展文件数据库的可用范围。
多级索引技术,主要采用了以下技术手段:
1.建立独立的索引文件
当在数据文件中存储数据记录(包含key和data)时,将key和该记录的存储偏移值作为索引另存在一个独立的文件中,称为索引文件。当根据key查询数据时,先从索引文件中找到索引,然后再依据其中包含的偏移值,直接从数据文件中定位到目标记录。
2.按照HASH算法存储索引
索引文件中对索引的存储不是按照顺序紧凑的方法,而是通过HASH算法把记录的key转化为数值,作为存储该索引的位置偏移量。任何HASH算法都存在冲突的问题,即不同的key可能会转化出相同的位置偏移量,因此本次索引要存储的位置可能已被以前的索引占据。可以采取最简单的策略解决,即从该冲突位置向后查找第一个空白位置,进行存储。实现时不限于该策略。
根据上述技术,本发明提供的文件数据库多级索引技术包括数据存储和数据查询两个步骤,其中,
数据存储包括如下步骤:
1-1)查找数据文件空白位置存储数据,数据包括键(key)和值(data)两部分,键是查询数据的关键字,将键和值组成名值对结构,作为存储记录,将记录存入数据文件中的空白位置,该位置标记为data_position;
1-2)HASH转换产生索引存储位置,以数据的键(key)为参数,调用HASH函数,转换为一个数值,作为索引存储位置,该位置标记为index_position;
1-3)在索引文件中存储索引,索引包括两部分:,数据的键(key)以及1-1)步中获得的data_position,打开索引文件,以1-2)步产生的index_position为偏移量,将索引存储到该位置;如果该位置已经被占用,则从该位置起向后查找第一个空白位置进行存储;
数据查询包括如下步骤:
2-1)HASH转换计算出索引的存储位置,以数据的键(key)为参数,调用HASH函数,转换结果即为索引存储位置;
2-2)从索引文件取出索引,打开索引文件,从2-1)步获得的存储位置开始,向后逐个匹配key,查找目标索引(多数情况下,首个就是匹配的索引);
2-3)从数据文件中取出数据,2-2)步获得的索引信息,包含查询数据在数据文件中的存储位置,故打开数据文件,按上述位置直接取出数据。
本发明提供的文件数据库多级索引技术具有如下优点:
1.显著提高查询性能
通过HASH算法,可以从索引文件中快速定位到索引信息,进而通过索引信息直接获得数据的存储位置。因此,相对于传统的文件数据库的遍历查找机制,本机制定位目标数据的速度明显提高。
2.保证数据文件存储空间的利用率
本机制把索引信息和数据信息分开存储。用于存储数据信息的数据文件,仍然按传统方法紧凑存储,因此数据文件的内部空间可以充分利用;用于存储索引信息的索引文件,各索引存储的位置是用HASH函数产生的,虽然不是紧凑存储,中间存在一定的空白记录区,但是索引的长度相对较小,因此空白区的消耗相对不明显。索引文件在存储利用率上付出一定的代价,换取了查询的高效率。
附图说明
图1为本发明实施例中数据存储的流程图;
图2为本发明实施例中数据查询的流程图;
图3为本发明实施例中文件数据库多级索引示意图;
图4为本发明实施例中多级索引文件数据库实施例流程图。
具体实施方式
一种文件数据库多级索引技术,其过程如图3所示,包括数据存储和数据查询两个步骤,其中,
如图1所示,数据存储包括如下步骤:
步骤开始于101:存储过程开始。
然后进入步骤102:查找数据文件空白位置存储数据,数据包括键(key)和值(data)两部分,键是查询数据的关键字,将键和值组成名值对结构,作为存储记录,将记录存入数据文件中的空白位置,该位置标记为data_position。
再进入步骤103:HASH转换产生索引存储位置,以数据的键(key)为参数,调用HASH函数,转换为一个数值,作为索引存储位置,该位置标记为index_position。
然后再进入步骤104:在索引文件中存储索引,索引包括两部分:,数据的键(key)以及步骤102步中获得的data_position,打开索引文件,以步骤103中产生的index_position为偏移量,将索引存储到该位置;如果该位置已经被占用,则从该位置起向后查找第一个空白位置进行存储。
然后为步骤105:存储过程结束。
如图2所示,数据查询包括如下步骤:
步骤开始于201:查询过程开始。
然后进入步骤202:HASH转换计算出索引的存储位置,以数据的键(key)为参数,调用HASH函数,转换结果即为索引存储位置;
然后进入步骤203:从索引文件取出索引,打开索引文件,从步骤202中获得的存储位置开始,向后逐个匹配key,查找目标索引(多数情况下,首个就是匹配的索引)。
然后进入步骤204:从数据文件中取出数据,步骤203获得的索引信息,包含查询数据在数据文件中的存储位置,故打开数据文件,按上述位置直接取出数据。
最后为步骤205:查询过程结束。
为了更清晰的描述上述多级索引文件数据库的实现,如图4所示,以下用一个简单的人员信息数据库为例说明:存储人员名字(key)和地址(data)信息,可以方便的按名字查出他的地址。本例中假定人名不重复。
名字用8字节固定长度存储,地址用128字节固定长度存储,名字和地址组成数据记录,存储到数据文件中,因而数据文件中存储的记录长度是136字节(名字+地址)。
相应的,索引文件中的记录由名字和偏移量组成,偏移量是4字节整数型,因此索引记录长度12字节(名字+偏移量)。
存储“张三”及他的地址“长安街44号”这条信息时,
(1)从数据文件中找到第一个空白记录位置,假定该空白位置相对于数据文件开头的距离是3条记录的长度。偏移以数据记录长度为单位,偏移量标记为3。
(2)打开数据文件,把名字“张三”和地址“长安街44号”组成的数据记录存入第3条记录处。
(3)以名字“张三”和偏移量3,作为索引记录。
(4)以名字“张三”作为参数,调用HASH函数,假定返回值为25,就以25作为索引记录在索引文件中存储的位置。以索引文件开头为基准,向后偏移25条索引记录的长度。如果找到的位置尚未使用,把第(3)步的索引记录直接存储到该位置;如果该位置已经使用,从该位置开始向后顺序找到第一个空白位置,对索引记录进行存储。
查询“张三”的地址信息时,
(1)把名字“张三”作为参数,调用HASH函数,可以得到返回值25,25可以定位索引记录在索引文件中存储的起始位置。
(2)以索引文件开头为基准,向后偏移25条索引记录的长度。偏移后地址不一定就是索引记录的直接存储位置,应当从该位置开始,逐个查找名字是“张三”的索引记录。找到后,取出其中的偏移量,值是3。
(3)打开数据文件,定位数据记录的直接存储地址。由(2)可知,该地址距离数据文件开头3条记录长度。
(4)从第(3)步得到的地址中取出数据记录,该记录的数据部分存储的就是“张三”的地址。
Claims (1)
1.一种文件数据库多级索引技术,其特征在于:包括数据存储和数据查询两个步骤,其中,
数据存储包括如下步骤:
1-1)查找数据文件空白位置存储数据,数据包括键(key)和值(data)两部分,键是查询数据的关键字,将键和值组成名值对结构,作为存储记录,将记录存入数据文件中的空白位置,该位置标记为data_position;
1-2)HASH转换产生索引存储位置,以数据的键(key)为参数,调用HASH函数,转换为一个数值,作为索引存储位置,该位置标记为index_position;
1-3)在索引文件中存储索引,索引包括两部分:数据的键(key)以及1-1)步中获得的data_position,打开索引文件,以1-2)步产生的index_position为偏移量,将索引存储到该位置;如果该位置已经被占用,则从该位置起向后查找第一个空白位置进行存储;
数据查询包括如下步骤:
2-1)HASH转换计算出索引的存储位置,以数据的键(key)为参数,调用HASH函数,转换结果即为索引存储位置;
2-2)从索引文件取出索引,打开索引文件,从2-1)步获得的存储位置开始,向后逐个匹配key,查找目标索引(多数情况下,首个就是匹配的索引);
2-3)从数据文件中取出数据,2-2)步获得的索引信息,包含查询数据在数据文件中的存储位置,故打开数据文件,按上述位置直接取出数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009100151034A CN101551807A (zh) | 2009-05-07 | 2009-05-07 | 文件数据库多级索引技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009100151034A CN101551807A (zh) | 2009-05-07 | 2009-05-07 | 文件数据库多级索引技术 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101551807A true CN101551807A (zh) | 2009-10-07 |
Family
ID=41156054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2009100151034A Pending CN101551807A (zh) | 2009-05-07 | 2009-05-07 | 文件数据库多级索引技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101551807A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467523A (zh) * | 2010-11-03 | 2012-05-23 | 英业达股份有限公司 | 索引文件的建立方法与利用索引文件查询数据区块的方法 |
CN102724061A (zh) * | 2012-04-16 | 2012-10-10 | 成都市广达电子电讯技术开发有限公司 | 一种网络接口管理方法 |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
CN102902814A (zh) * | 2012-10-24 | 2013-01-30 | 厦门市美亚柏科信息股份有限公司 | 一种im删除信息的恢复方法 |
CN103092848A (zh) * | 2011-10-28 | 2013-05-08 | 浙江大华技术股份有限公司 | 一种图片存储与检索方法 |
CN103186617A (zh) * | 2011-12-30 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种存储数据的方法和装置 |
CN103488709A (zh) * | 2013-09-09 | 2014-01-01 | 东软集团股份有限公司 | 一种索引建立方法及系统、检索方法及系统 |
CN103559027A (zh) * | 2013-10-22 | 2014-02-05 | 北京航空航天大学 | 一种key与value分开存储的key-value存储系统设计方法 |
CN103617293A (zh) * | 2013-12-16 | 2014-03-05 | 北京航空航天大学 | 一种面向海量小文件存储系统的Key-Value存储方法 |
CN103631959A (zh) * | 2013-12-17 | 2014-03-12 | 江苏名通信息科技有限公司 | 一种基于Hash算法支持千万用户数据分表方法 |
CN103810246A (zh) * | 2013-12-27 | 2014-05-21 | 北京天融信软件有限公司 | 一种索引创建方法和装置以及索引查询方法和装置 |
CN103838844A (zh) * | 2014-03-03 | 2014-06-04 | 珠海市君天电子科技有限公司 | 一种键值对数据存储、传输方法及装置 |
CN104346347A (zh) * | 2013-07-25 | 2015-02-11 | 深圳市腾讯计算机系统有限公司 | 数据存储方法、装置、服务器及系统 |
CN106656496A (zh) * | 2017-02-22 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种数据加密方法及装置 |
-
2009
- 2009-05-07 CN CNA2009100151034A patent/CN101551807A/zh active Pending
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467523A (zh) * | 2010-11-03 | 2012-05-23 | 英业达股份有限公司 | 索引文件的建立方法与利用索引文件查询数据区块的方法 |
CN103092848B (zh) * | 2011-10-28 | 2016-09-07 | 浙江大华技术股份有限公司 | 一种图片存储与检索方法 |
CN103092848A (zh) * | 2011-10-28 | 2013-05-08 | 浙江大华技术股份有限公司 | 一种图片存储与检索方法 |
CN103186617A (zh) * | 2011-12-30 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种存储数据的方法和装置 |
CN103186617B (zh) * | 2011-12-30 | 2016-04-06 | 北京新媒传信科技有限公司 | 一种存储数据的方法和装置 |
CN102724061B (zh) * | 2012-04-16 | 2016-02-17 | 成都广达新网科技股份有限公司 | 一种网络接口管理方法 |
CN102724061A (zh) * | 2012-04-16 | 2012-10-10 | 成都市广达电子电讯技术开发有限公司 | 一种网络接口管理方法 |
CN102779180B (zh) * | 2012-06-29 | 2015-09-09 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
CN102902814B (zh) * | 2012-10-24 | 2015-09-16 | 厦门市美亚柏科信息股份有限公司 | 一种im删除信息的恢复方法 |
CN102902814A (zh) * | 2012-10-24 | 2013-01-30 | 厦门市美亚柏科信息股份有限公司 | 一种im删除信息的恢复方法 |
CN104346347A (zh) * | 2013-07-25 | 2015-02-11 | 深圳市腾讯计算机系统有限公司 | 数据存储方法、装置、服务器及系统 |
CN103488709A (zh) * | 2013-09-09 | 2014-01-01 | 东软集团股份有限公司 | 一种索引建立方法及系统、检索方法及系统 |
CN103488709B (zh) * | 2013-09-09 | 2017-06-16 | 东软集团股份有限公司 | 一种索引建立方法及系统、检索方法及系统 |
CN103559027A (zh) * | 2013-10-22 | 2014-02-05 | 北京航空航天大学 | 一种key与value分开存储的key-value存储系统设计方法 |
CN103617293A (zh) * | 2013-12-16 | 2014-03-05 | 北京航空航天大学 | 一种面向海量小文件存储系统的Key-Value存储方法 |
CN103631959A (zh) * | 2013-12-17 | 2014-03-12 | 江苏名通信息科技有限公司 | 一种基于Hash算法支持千万用户数据分表方法 |
CN103810246A (zh) * | 2013-12-27 | 2014-05-21 | 北京天融信软件有限公司 | 一种索引创建方法和装置以及索引查询方法和装置 |
CN103810246B (zh) * | 2013-12-27 | 2017-10-13 | 北京天融信软件有限公司 | 一种索引创建方法和装置以及索引查询方法和装置 |
CN103838844A (zh) * | 2014-03-03 | 2014-06-04 | 珠海市君天电子科技有限公司 | 一种键值对数据存储、传输方法及装置 |
CN103838844B (zh) * | 2014-03-03 | 2018-01-19 | 珠海市君天电子科技有限公司 | 一种键值对数据存储、传输方法及装置 |
CN106656496A (zh) * | 2017-02-22 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种数据加密方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101551807A (zh) | 文件数据库多级索引技术 | |
CN102890722B (zh) | 应用于时序历史数据库的索引方法 | |
CN102122285B (zh) | 一种数据缓存系统中的数据查询系统和数据查询方法 | |
CN102024020B (zh) | 一种分布式文件系统中高效的元数据访存方法 | |
CN101782922B (zh) | 一种面向海量数据检索的多级桶哈希索引方法 | |
CN101799783A (zh) | 一种数据存储处理方法、查找方法及其装置 | |
CN103488710B (zh) | 大数据页中高效存储非定长数据方法 | |
CN102332030A (zh) | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN102541985A (zh) | 一种分布式文件系统中客户端目录缓存的组织方法 | |
CN102024047A (zh) | 数据检索方法及装置 | |
US20100146005A1 (en) | Method and apparatus for storing document data in docbase management system | |
CN102880541A (zh) | 日志信息的获取系统和获取方法 | |
CN102479189A (zh) | 一种内存中海量时间戳型数据高速均匀访问的索引方法 | |
CN102456053A (zh) | 一种xml文档到数据库的映射方法 | |
US20150363446A1 (en) | System and Method for Indexing Streams Containing Unstructured Text Data | |
US7464100B2 (en) | Reorganization-free mapping of objects in databases using a mapping chain | |
CN104391908B (zh) | 一种图上基于局部敏感哈希的多关键字索引方法 | |
CN103473314A (zh) | 一种基于共享内存的键值对存储方法及装置 | |
CN100561482C (zh) | 一种嵌入式系统数据库的实现方法 | |
CN101739424B (zh) | 一种关键词及其资源记录的转换存储方法和系统 | |
CN105760457A (zh) | 一种基于MongoDB的数据分页优化方法 | |
Tan et al. | Microsearch: When search engines meet small devices | |
CN111459945A (zh) | 一种基于HBase的分层式索引查询方法 | |
CN101082935B (zh) | 一种内存数据的非唯一索引检索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20091007 |