CN104657513B - 嵌入式系统中档案操作与快速检索方法 - Google Patents

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

Info

Publication number
CN104657513B
CN104657513B CN201510124194.0A CN201510124194A CN104657513B CN 104657513 B CN104657513 B CN 104657513B CN 201510124194 A CN201510124194 A CN 201510124194A CN 104657513 B CN104657513 B CN 104657513B
Authority
CN
China
Prior art keywords
archives
row
index
line
file
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.)
Active
Application number
CN201510124194.0A
Other languages
English (en)
Other versions
CN104657513A (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.)
Shandong Well Data Co Ltd
Original Assignee
Shandong Well Data 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 Shandong Well Data Co Ltd filed Critical Shandong Well Data 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

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 (7)

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

Families Citing this family (5)

* 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记录的方法
CN107239454B (zh) * 2016-03-28 2020-11-17 福建天晴数码有限公司 基于文本数据库的检索方法及系统
CN111680198B (zh) * 2020-04-29 2021-05-11 浙江海洋大学 基于文件分割与特征提取的档案管理系统及方法
CN112017375B (zh) * 2020-08-24 2023-04-11 深圳市智莱科技股份有限公司 指示储物空间位置的方法及装置
CN114706849B (zh) * 2022-03-24 2023-03-14 深圳大学 一种数据检索方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129458A (zh) * 2011-03-09 2011-07-20 胡劲松 关系型数据库的存储方法及装置
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 中国科学院计算技术研究所 分布式顺序表片内二级索引方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7885932B2 (en) * 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 中国科学院计算技术研究所 分布式顺序表片内二级索引方法及系统

Also Published As

Publication number Publication date
CN104657513A (zh) 2015-05-27

Similar Documents

Publication Publication Date Title
CN104657513B (zh) 嵌入式系统中档案操作与快速检索方法
US8838551B2 (en) Multi-level database compression
US7603370B2 (en) Method for duplicate detection and suppression
US8161036B2 (en) Index optimization for ranking using a linear model
CN110019218B (zh) 数据存储与查询方法及设备
KR100903961B1 (ko) 시그니처 파일을 이용한 고차원 데이터 색인 및 검색방법과 그 시스템
US8150856B2 (en) Bit string searching apparatus, searching method, and program
US7406462B2 (en) Prediction of query difficulty for a generic search engine
CN102819592B (zh) 一种基于Lucene的桌面搜索系统及方法
US11030172B2 (en) Database archiving method and device for creating index information and method and device of retrieving archived database including index information
CN110222015B (zh) 一种文件数据的读取、查询方法、装置及可读存储介质
CN112597345A (zh) 一种实验室数据自动采集与匹配方法
CN110019913A (zh) 图片匹配方法、用户设备、存储介质及装置
CN110580255A (zh) 一种存储并检索数据的方法以及系统
CN106909623B (zh) 一种支持高效海量数据分析和检索的数据装置及数据存储方法
US7672925B2 (en) Accelerating queries using temporary enumeration representation
CN116226681A (zh) 一种文本相似性判定方法、装置、计算机设备和存储介质
US20080162414A1 (en) Accelerating queries using delayed value projection of enumerated storage
US7039646B2 (en) Method and system for compressing varying-length columns during index high key generation
CN115099309A (zh) 一种为图数据的存储和索引设计代价评估模型的方法
CN115543993A (zh) 数据处理方法、装置、电子设备及存储介质
KR101452638B1 (ko) 유사 문자열 검색 방법 및 장치
RU2656721C1 (ru) Способ организации хранения частично совпадающих больших объектов
CN113946365A (zh) 页面识别方法、装置、计算机设备和存储介质
CN101930451B (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

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

CB03 Change of inventor or designer information