CN104657513A - 嵌入式***中档案操作与快速检索方法 - Google Patents

嵌入式***中档案操作与快速检索方法 Download PDF

Info

Publication number
CN104657513A
CN104657513A CN201510124194.0A CN201510124194A CN104657513A CN 104657513 A CN104657513 A CN 104657513A CN 201510124194 A CN201510124194 A CN 201510124194A CN 104657513 A CN104657513 A CN 104657513A
Authority
CN
China
Prior art keywords
index
archives
line
row
search
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.)
Granted
Application number
CN201510124194.0A
Other languages
English (en)
Other versions
CN104657513B (zh
Inventor
李绍辉
娄晓艳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WELL DATA SYSTEM (YAN TAI) CO Ltd
Original Assignee
WELL DATA SYSTEM (YAN TAI) CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WELL DATA SYSTEM (YAN TAI) CO Ltd filed Critical WELL DATA SYSTEM (YAN TAI) CO Ltd
Priority to CN201510124194.0A priority Critical patent/CN104657513B/zh
Publication of CN104657513A publication Critical patent/CN104657513A/zh
Application granted granted Critical
Publication of CN104657513B publication Critical patent/CN104657513B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种嵌入式***中档案操作与快速检索方法,使用建立行索引、关键列索引、动态分配内存、二分查找等方法,实现了嵌入式***中大数据量档案,针对某一列关键字精确和模糊快速检索功能。经过测试,在20万条档案的情况下,该方法比档案全部加载顺序查找的方法效率提升150倍。

Description

嵌入式***中档案操作与快速检索方法
技术领域
本发明涉及一种嵌入式***中的档案操作与检索方法。
背景技术
嵌入式***是以应用为中心,以计算机技术为基础,软硬件可裁剪,功能、可靠性、成本、体积、功耗要求相对严格的专用计算机***。嵌入式***特点是:***内核小,专用性强,***精简,***与应用软件同步升级,***中的软件一般都固化在存储器芯片中。
目前,随着物联网的迅猛发展,嵌入式***在物联网身份识别领域的应用愈来愈广泛。在嵌入式身份识别应用中,内存空间小,CPU主频低,没有数据库引擎等条件限制,造成大数据量的档案检索,成了程序员头疼的问题。档案检索通常方法是:将档案整体加载到内存,在内存中顺序查找关键字,找到后返回该行的档案。在CPU主频400MHz,内存128M的嵌入式***和同等级的***中,做10万条档案通常检索方法测试,最长检索时间是2秒。检索速度超过1秒用户是不能接受的,因此,多数厂家给出档案最大容量是5万条。
发明内容
本发明所要解决的技术问题是,提供一种嵌入式***中档案操作与快速检索方法,在快速遍历算法基础上,完成档案加载,快速检索、增加、删除、过滤等操作;同时,尽量降低
内存消耗,提高***运行效率。
本发明的技术方案如下:
一种嵌入式***中档案操作与快速检索方法,其特征在于按照以下步骤进行加载与检索:
(1) 、将档案文件的行信息按序加载到内存中,形成“行索引”,用于建立列索引和文件的对应关系,便于档案内容的快速定位;
(2) 、将档案中的查询列按关键字排序后加载到内存中,形成“列索引”,为了减少内存占用,只加载查询列;
(3) 、包括关键字检索、档案加载、增加档案、删除档案、设置过滤条件以及取某行档案数据在内的档案操作:首先在列索引中查找关键字,找到所在行号后,在文件中定位相应的行,然后操作档案数据。其中关键字检索采用二分查找算法检索关键字,增加档案和删除档案在检索的基础上做文件操作,条件过滤在检索的基础上读取数据。
关键字检索方法是:在列索引中采用二分法查找关键字,找到后取档案行号,在行索引中二分查找行号,找到后取行位置和长度,在文件中找到位置后,按照有效数据长度取出数据。
所述档案加载方法是:从档案文件中逐行读出档案数据,将行号、起始位置和长度依次存储在行索引内存块中;将行数据分割得出关键列值,将其与行号一起形成列索引信息,顺序存储在列索引内存块中;文件读取完毕后,将列索引信息按照关键字先后顺序排序,生成档案的列索引。
所述增加档案方法是:将要增加的档案信息写入档案文件,获得档案的行号、起始位置、长度和关键字,生成行索引,检索关键字找到列索引***位置,将关键字和行号***列索引内存块中。
删除档案的方法是:在列索引块中找到删除档案的关键字的行号,删除列索引块中的关键字索引信息,检索行索引位置,删除档案内容和行索引块中的行索引信息。
所述设置过滤条件的方法是:在档案的列索引块中查找满足条件的索引集合的首尾索引号,将这两个值保存到档案信息结构中,标识下次执行按行取档案数据的起始和终止索引号。
所述取某行档案数据的方法是:如果没有设置过滤条件,自第0行开始,从行索引块中查找相应的行索引信息,然后从文件中取出该行档案数据;如果设置了过滤条件,从起始索引号位置起,顺序查找某行的索引值,在行索引块中找到该行的行索引信息,然后从文件中取出该行档案数据。
二分查找,又称为折半查找,当数据量很大时适宜采用该方法。二分查找只适用于有序表,且限于顺序存储结构 。假设有序表是递增排列的,首先确定区间的中间位置,待查值与中间位置的数值比较,如果相等,则查找成功并返回该位置。否则需重新确定查找区间,继续二分查找。重新确定查找区间的办法如下:如果中间位置的值大于待查值,则新区间为当前中间值的前半部分;如果中间位置的值小于待查值,则新区建为当前中间值的后半部分。这样,每次经过中间值与待查值的比较,就可以确定是否查找成功,不成功则查找区间减半,直至找到关键字或者当前区间为空为止。标准二分法适用于查找单个元素。
在标准二分法查找的基础上,扩展后可以实现数据块查找。如图2所示,某块数据中有多个数据与所要查找的数据相等,在排好序的基础上,利用标准二分法,查找成功后,继续遍历数据,直到查找到所需元素在数据块中最顶端的位置,然后将找到的最顶端位置作为新的搜索区域的起始位置,按照上述步骤,查找到所需元素在数据块中最底端的位置。这样便可实现数据块的定位。按照类似的方法,单独查找数据块最顶端位置和最底端位置,可以查
找任意满足某一区间(==、>、≥、<、≤)的数据块的定位。
本发明的积极效果在于:
顺序检索和快速检索的时间和空间复杂度对比。
(1) 、顺序检索方法时间复杂度和空间复杂度:
时间复杂度:T(n)=O(n);
空间复杂度:S(n)=O(n)。
(2)、本发明快速检索方法时间复杂度和空间复杂度:
时间复杂度:T(n)=O(log2n);
空间复杂度:S(n)=O(n)。
显而易见,在档案数相同情况下,相对于顺序检索方法,本发明快速检索方法时间复杂度优势明显,极大提高了检索效率;同时,快速检索方法只加载索引内容,降低了内存损耗。
经过测试,在CPU主频400MHz,内存128M的嵌入式***和同等级的***中,做20
万条档案两种检索方法对比测试,快速检索比顺序检索效率提高150倍左右。
档案检索功能虽然简单,但在身份识别领域中是一个重要环节,它的工作效率直接影响整个***的性能。本发明档案快速检索方案,在处理速度和内存使用上,充分考虑到了嵌入式***的特点,在性能上模糊了嵌入式***的局限性,成功解决了顺序检索方案速度慢,耗用内存大的问题。本发明档案快速检索的实现,对于身份识别领域应用开发具有深远的现实意义,给于嵌入式***应用开发以深刻启迪。
附图说明
图1是本发明关键字检索示意图。
图2是本发明本发明所采用的二分法扩展示意图。
具体实施方式
下面结合附图和具体实施方式进一步说明本发明。
本发明方案制定考虑了以下几点。首先,档案检索不能每次在文件中查找,因为每次在文件中查找速度会很慢,要在内存中查找;其次,应用占用内存不能太大,要预留一些空间给其他程序使用;最后,大数据量的档案(10万条以上)检索时间在1秒之内完成。
本发明的方法如下:
(1) 、将档案文件的行信息按序加载到内存中,形成“行索引”,用于建立列索引和文件的对应关系,便于档案内容的快速定位;
(2) 、将档案中的查询列按关键字排序后加载到内存中,形成“列索引”;为了减少内存占用,只加载查询列,而不是加载档案的全部内容;
(3) 、档案检索、档案加载、增加档案、删除档案、条件过滤以及取某行档案数据操作:首先在列索引中查找关键字,找到所在行号后,在文件中定位相应的行,然后操作档案数据;其中档案检索采用二分查找算法检索关键字,增加档案和删除档案在检索的基础上做文件操作,条件过滤在检索的基础上读取数据。
本发明检索过程如下:
档案快速检索的实现:检索关键字keyword,在列索引中采用二分法查找关键字,找到后取档案行号,在行索引中二分查找行号,找到后取行位置和长度,在文件中找到位置后,按照有效数据长度取出数据。
结合图1,检索方法举例如下。
文件信息:FileInfo(Filepath,  max_rowid, query_index, query_begin_row, query_end_row,RowIndexBlock, ColumnIndexBlock …)。
其中:Filepath-文件路径,  max_rowid-最大行号, query_index-检索列, query_begin_row-查询到起始行,query_end_row-查找到终止行,RowIndexBlock-行索引空间, ColumnIndexBlock-列索引空间。
列索引结构:ColumnIndexUnit(Keyword,  RowID)。
其中:Keyword-关键字,  RowID-行号。
行索引结构:RowIndexUnit(RowID,  Position,  Length)。
其中:RowID-行号,  Position-行起始位置,  Length-行长度。
档案操作除了关键字检索还有档案加载、增加档案、删除档案、设置过滤条件以及取某行档案数据等功能,下面逐一介绍各功能的实现方法。
(1) 、档案加载:从档案文件中逐行读出档案数据,将行号、起始位置和长度依次存储在行索引内存块中;将行数据分割得出关键列值,将其与行号一起形成列索引信息,顺序存储在列索引内存块中;文件读取完毕后,将列索引信息按照关键字先后顺序排序,生成档案的列索引。
(2) 、增加档案:将要增加的档案信息写入档案文件,获得档案的行号、起始位置、长度和关键字,生成行索引,检索关键字找到列索引***位置,将关键字和行号***列索引内存块中。
(3) 、删除档案:在列索引块中找到删除档案的关键字的行号,删除列索引块中的关键字索引信息,检索行索引位置,删除档案内容和行索引块中的行索引信息。
(4) 、设置过滤条件:在档案的列索引块中查找满足条件[索引列(==、>、≥、<、≤)关键字]的索引集合的首尾索引号,将这两个值保存到档案信息结构中,标识下次执行按行取档案数据的起始和终止索引号。
(5)、 取某行档案数据:在没有设置过滤条件的情况下,从第0行开始,从行索引块中查找相应的行索引信息,然后从文件中取出该行档案数据;如果设置了过滤条件,从起始索引号位置起,顺序查找某行的索引值,在行索引块中找到该行的行索引信息,然后从文件中取出该行档案数据。多行数据读取方法与此方法相同。

Claims (8)

1.一种嵌入式***中档案操作与快速检索方法,其特征在于按照以下步骤进行加载与检索:
(1) 、将档案文件的行信息按序加载到内存中,形成“行索引”,用于建立列索引和文件的对应关系,便于档案内容的快速定位;
(2) 、将档案中的查询列按关键字排序后加载到内存中,形成“列索引”,为了减少内存占用,只加载查询列;
(3) 、包括关键字检索、档案加载、增加档案、删除档案、设置过滤条件以及取某行档案数据在内的档案操作:首先在列索引中查找关键字,找到所在行号后,在文件中定位相应的行,然后操作档案数据。
2.其中关键字检索采用二分查找算法检索关键字,增加档案和删除档案在检索的基础上做文件操作,条件过滤在检索的基础上读取数据。
3.根据权利要求1所述的嵌入式***中档案操作与快速检索方法,其特征在于关键字检索方法是:在列索引中采用二分法查找关键字,找到后取档案行号,在行索引中二分查找行号,找到后取行位置和长度,在文件中找到位置后,按照有效数据长度取出数据。
4.根据权利要求1所述的嵌入式***中档案操作与快速检索方法,其特征在于所述档案加载方法是:从档案文件中逐行读出档案数据,将行号、起始位置和长度依次存储在行索引内存块中;将行数据分割得出关键列值,将其与行号一起形成列索引信息,顺序存储在列索引内存块中;文件读取完毕后,将列索引信息按照关键字先后顺序排序,生成档案的列索引。
5.根据权利要求1所述的嵌入式***中档案操作与快速检索方法,其特征在于所述增加档案方法是:将要增加的档案信息写入档案文件,获得档案的行号、起始位置、长度和关键字,生成行索引,检索关键字找到列索引***位置,将关键字和行号***列索引内存块中。
6.根据权利要求1所述的嵌入式***中档案操作与快速检索方法,其特征在于所述删除档案的方法是:在列索引块中找到删除档案的关键字的行号,删除列索引块中的关键字索引信息,检索行索引位置,删除档案内容和行索引块中的行索引信息。
7.根据权利要求1所述的嵌入式***中档案操作与快速检索方法,其特征在于所述设置过滤条件的方法是:在档案的列索引块中查找满足条件的索引集合的首尾索引号,将这两个值保存到档案信息结构中,标识下次执行按行取档案数据的起始和终止索引号。
8.根据权利要求1所述的嵌入式***中档案操作与快速检索方法,其特征在于所述取某行档案数据的方法是:如果没有设置过滤条件,自第0行开始,从行索引块中查找相应的行索引信息,然后从文件中取出该行档案数据;如果设置了过滤条件,从起始索引号位置起,顺序查找某行的索引值,在行索引块中找到该行的行索引信息,然后从文件中取出该行档案数据。
CN201510124194.0A 2015-03-20 2015-03-20 嵌入式***中档案操作与快速检索方法 Active CN104657513B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510124194.0A CN104657513B (zh) 2015-03-20 2015-03-20 嵌入式***中档案操作与快速检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510124194.0A CN104657513B (zh) 2015-03-20 2015-03-20 嵌入式***中档案操作与快速检索方法

Publications (2)

Publication Number Publication Date
CN104657513A true CN104657513A (zh) 2015-05-27
CN104657513B CN104657513B (zh) 2018-02-09

Family

ID=53248640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510124194.0A Active CN104657513B (zh) 2015-03-20 2015-03-20 嵌入式***中档案操作与快速检索方法

Country Status (1)

Country Link
CN (1) CN104657513B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598875A (zh) * 2015-10-19 2017-04-26 深圳市华百安智能技术有限公司 嵌入式***中快速处理nor flash记录的方法
CN107239454A (zh) * 2016-03-28 2017-10-10 福建天晴数码有限公司 基于文本数据库的检索方法及***
CN111680198A (zh) * 2020-04-29 2020-09-18 浙江海洋大学 基于文件分割与特征提取的档案管理***及方法
CN112017375A (zh) * 2020-08-24 2020-12-01 深圳市智莱科技股份有限公司 指示储物空间位置的方法及装置
CN114706849A (zh) * 2022-03-24 2022-07-05 深圳大学 一种数据检索方法、装置及电子设备
CN115484515A (zh) * 2022-08-26 2022-12-16 四川九州电子科技股份有限公司 跑流测试中误码率的统计方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129458A (zh) * 2011-03-09 2011-07-20 胡劲松 关系型数据库的存储方法及装置
US20120271862A1 (en) * 2006-11-01 2012-10-25 Ab Initio Software Llc Managing storage of individually accessible data units
CN103514201A (zh) * 2012-06-27 2014-01-15 阿里巴巴集团控股有限公司 一种非关系型数据库的数据查询方法和装置
CN103530378A (zh) * 2013-10-15 2014-01-22 福建榕基软件股份有限公司 数据分页查询与数据库的构建的方法与装置
CN103914462A (zh) * 2012-12-31 2014-07-09 ***通信集团公司 一种数据存储和查询方法以及装置
CN104133867A (zh) * 2014-07-18 2014-11-05 中国科学院计算技术研究所 分布式顺序表片内二级索引方法及***

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120271862A1 (en) * 2006-11-01 2012-10-25 Ab Initio Software Llc Managing storage of individually accessible data units
CN102129458A (zh) * 2011-03-09 2011-07-20 胡劲松 关系型数据库的存储方法及装置
CN103514201A (zh) * 2012-06-27 2014-01-15 阿里巴巴集团控股有限公司 一种非关系型数据库的数据查询方法和装置
CN103914462A (zh) * 2012-12-31 2014-07-09 ***通信集团公司 一种数据存储和查询方法以及装置
CN103530378A (zh) * 2013-10-15 2014-01-22 福建榕基软件股份有限公司 数据分页查询与数据库的构建的方法与装置
CN104133867A (zh) * 2014-07-18 2014-11-05 中国科学院计算技术研究所 分布式顺序表片内二级索引方法及***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒲卫等: "《SQL Server2005开发者指南》", 1 June 2008 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598875A (zh) * 2015-10-19 2017-04-26 深圳市华百安智能技术有限公司 嵌入式***中快速处理nor flash记录的方法
CN107239454A (zh) * 2016-03-28 2017-10-10 福建天晴数码有限公司 基于文本数据库的检索方法及***
CN111680198A (zh) * 2020-04-29 2020-09-18 浙江海洋大学 基于文件分割与特征提取的档案管理***及方法
CN111680198B (zh) * 2020-04-29 2021-05-11 浙江海洋大学 基于文件分割与特征提取的档案管理***及方法
CN112017375A (zh) * 2020-08-24 2020-12-01 深圳市智莱科技股份有限公司 指示储物空间位置的方法及装置
CN114706849A (zh) * 2022-03-24 2022-07-05 深圳大学 一种数据检索方法、装置及电子设备
CN114706849B (zh) * 2022-03-24 2023-03-14 深圳大学 一种数据检索方法、装置及电子设备
CN115484515A (zh) * 2022-08-26 2022-12-16 四川九州电子科技股份有限公司 跑流测试中误码率的统计方法

Also Published As

Publication number Publication date
CN104657513B (zh) 2018-02-09

Similar Documents

Publication Publication Date Title
CN104657513A (zh) 嵌入式***中档案操作与快速检索方法
KR101938953B1 (ko) 빅 데이터 질의 엔진을 위한 플래시 최적화된 열 데이터 배치 및 데이터 액세스 처리 알고리즘
CN102890722B (zh) 应用于时序历史数据库的索引方法
US20040205044A1 (en) Method for storing inverted index, method for on-line updating the same and inverted index mechanism
US11221999B2 (en) Database key compression
US10963440B2 (en) Fast incremental column store data loading
CN102024047A (zh) 数据检索方法及装置
CN110515957A (zh) 一种区块链数据存储的方法、***、设备及可读存储介质
CN102231168A (zh) 一种从简历库中快速检索简历的方法
CN113918535A (zh) 一种数据读取方法、装置、设备及存储介质
CN110532228A (zh) 一种区块链数据读取的方法、***、设备及可读存储介质
US20240220470A1 (en) Data storage device and storage control method based on log-structured merge tree
CN103425802B (zh) 一种磁盘文件的快速检索方法
CN109299143A (zh) 基于Redis缓存的数据互操作测试知识库的知识快速索引方法
CN101493824A (zh) 数据库的数据检索方法和装置
US20240220460A1 (en) Data storage device and storage control method based on log-structured merge tree
WO2008085358A1 (en) Accelerating queries using temporary enumeration representation
JP3653333B2 (ja) データベース管理方法およびシステム
WO2008085359A1 (en) Accelerating queries using delayed value projection of enumerated storage
CN113536047A (zh) 一种图数据库数据删除方法、***、电子设备及存储介质
KR101311409B1 (ko) 부분적인 인덱스 rid 정렬을 통한 파티션 스캔 방법 및 장치, 메모리 시스템, 및 데이터 정렬 방법
KR20000041817A (ko) 음절 단위 패턴으로 구성한 패턴 테이블을 이용한 문자열 부분검색 시스템 및 그 방법
CN101127052A (zh) 一种有序链表节点的快速搜索方法及装置
Fenk et al. Improving multidimensional range queries of non rectangular volumes specified by a query box set
CN117785889B (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
CB02 Change of applicant information

Address after: 264003, 12, Mingda West Road, Laishan District, Shandong, Yantai

Applicant after: SHANDONG WELL DATA CO., LTD.

Address before: 264003, 12, Mingda West Road, Laishan District, Shandong, Yantai

Applicant before: Well Data System (Yan Tai) Co., Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Li Shaohui

Inventor after: Lou Xiaoyan

Inventor after: Wang Guannan

Inventor after: Teng Xiaodong

Inventor after: Yin Menglei

Inventor after: Liu Xun

Inventor before: Li Shaohui

Inventor before: Lou Xiaoyan