CN103778188A - 用于在库文件中查询和/或维护数据的方法和设备 - Google Patents
用于在库文件中查询和/或维护数据的方法和设备 Download PDFInfo
- Publication number
- CN103778188A CN103778188A CN201310750372.1A CN201310750372A CN103778188A CN 103778188 A CN103778188 A CN 103778188A CN 201310750372 A CN201310750372 A CN 201310750372A CN 103778188 A CN103778188 A CN 103778188A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- field
- record
- segment
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种用于在库文件中查询和/或维护数据的方法。库文件至少包括文件头、索引段和数据段,文件头至少包括用于定位索引段的第一字段,索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位相应数据记录的第三字段,以及该一条或多条索引记录的长度相同。用于查询数据的方法包括:(a)接收用于在库文件中查询数据的查询请求;(b)基于第一字段,加载索引段;(c)在索引段中搜索具有与查询请求中包括的数据识别信息相匹配的第二字段的索引记录;以及(d)根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。
Description
技术领域
本发明涉及数据管理领域,更具体地涉及用于在库文件中查询和/或维护数据的方法和设备。
背景技术
随着移动终端的广泛应用,其已经成为了人们在生产、生活中不可或缺的组成部分。受限于移动终端相对有限的处理速度、存储容量以及网络带宽,因此在移动终端上使用的库文件(例如,病毒库、知识库等)难以满足用户在查询和/或维护速度、占用的存储空间等方面的需求。
在现有的设计中,库文件通常包括文件头和数据段。文件头中记载有库文件的元数据,包括例如库文件的版本、库文件中包含的数据记录的数目等。下面以表格方式示出了现有库文件的一个示例。
文件头 | 特征1 数据1 | 特征2 数据2 | … | 特征n 数据n |
表1
其中,在表1所表示的库文件中,地址从左至右、从上至下逐渐升高,即文件头左侧为文件头的起始地址(例如,“0x00000000”),文件头右侧为文件头的终止地址(例如,“0x0000001F”),同时也是第一条数据记录的起始地址。此外在表1中,除文件头之外的每个单元格表示一条数据记录,该数据记录由特征项和数据项构成,特征项用于识别相应数据,供用户检索时比对之用,而数据项中存储了用户所需的数据。此外,如表1所示,数据记录可以是不定长的,即每个数据项的长度不固定,且表1所示的文件头和数据记录的长度仅作为示例之用,它们实际的长度可以完全不同。
然而,这种库文件存在很多严重的缺陷。首先,对于查询来说,由于数据记录是可变长度的,因此很难使用例如二分查找法等高效率的查询算法来进行数据查询。此外,该库设计对于插入操作、更新操作、删除操作等常规维护操作极为不友好,为了实现这些操作,需要对库文件中的大量数据记录进行比对、移位、合并等等。
发明内容
为了解决上述问题,提供了根据本发明的用于在库文件中查询和/或维护数据的方法和设备。
根据本发明的第一方面,提供了一种用于在库文件中查询数据的方法,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同。该方法包括:(a)接收用于在所述库文件中查询数据的查询请求;(b)基于所述第一字段,加载所述索引段;(c)在所述索引段中搜索具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录;以及(d)根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,所述第一字段包括以下各项中的至少两项:所述索引段的起始地址、结束地址、以及长度。
在一些实施例中,每个第二字段至少包括与相应数据记录相对应的数据的散列值。
在一些实施例中,与相应数据记录相对应的数据至少包括恶意应用安装包。
在一些实施例中,每个第三字段包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
在一些实施例中,所述索引段中包括的一条或多条索引记录是按第二字段排序的,以及步骤(c)是通过在所述索引段中使用二分查找算法来实现的。
在一些实施例中,每个索引记录还包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且步骤(c)进一步包括:当在所述索引段中第一次搜索到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向所述文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据所述最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录。
在一些实施例中,步骤(d)进一步包括:根据搜索到的一条或多条索引记录各自的第三字段,定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,所述数据段中包括的一条或多条数据记录的顺序与所述索引段中对应的一条或多条索引记录的顺序相同,步骤(d)进一步包括:根据搜索到的多条索引记录中最接近所述文件头的索引记录的第三字段和搜索到的多条索引记录中最远离所述文件头的索引记录的第三字段,定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,如果在步骤(c)中未找到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录,则步骤(d)进一步包括:返回指示未找到相应数据记录的查询结果。
根据本发明的第二方面,提供了一种用于在库文件中查询数据的设备,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同。该设备包括:接收单元,用于接收用于在所述库文件中查询数据的查询请求;加载单元,用于基于所述第一字段,加载所述索引段;搜索单元,用于在所述索引段中搜索具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录;以及返回单元,用于根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,所述第一字段包括以下各项中的至少两项:所述索引段的起始地址、结束地址、以及长度。
在一些实施例中,每个第二字段至少包括与相应数据记录相对应的数据的散列值。
在一些实施例中,与相应数据记录相对应的数据至少包括恶意应用安装包。
在一些实施例中,每个第三字段包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
在一些实施例中,所述索引段中包括的一条或多条索引记录是按第二字段排序的,以及所述搜索单元使用二分查找算法来实现在所述索引段中的搜索。
在一些实施例中,每个索引记录还包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且所述搜索单元还用于:当在所述索引段中第一次搜索到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向所述文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据所述最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录。
在一些实施例中,所述返回单元还用于:根据搜索到的一条或多条索引记录各自的第三字段,定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,所述数据段中包括的一条或多条数据记录的顺序与所述索引段中对应的一条或多条索引记录的顺序相同,所述返回单元还用于:根据搜索到的多条索引记录中最接近所述文件头的索引记录的第三字段和搜索到的多条索引记录中最远离所述文件头的索引记录的第三字段,定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,如果所述搜索单元未找到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录,则所述返回单元还用于:返回指示未找到相应数据记录的查询结果。
根据本发明的第三方面,提供了一种用于在库文件中维护数据的方法,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同。该方法包括:(a)接收用于在所述库文件中维护数据的维护请求;(b)基于所述维护请求,分别维护所述文件头、所述索引段和所述数据段;以及(c)返回针对所述维护请求的维护结果。
在一些实施例中,所述第一字段包括以下各项中的至少两项:所述索引段的起始地址、结束地址、以及长度。
在一些实施例中,每个第二字段至少包括与相应数据记录相对应的数据的散列值。
在一些实施例中,与相应数据记录相对应的数据至少包括恶意应用安装包。
在一些实施例中,每个第三字段包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
在一些实施例中,所述维护请求的类型是以下各项之一:更新请求、插入请求、删除请求、以及前述各项的任意组合。
在一些实施例中,如果所述维护请求是更新请求,则步骤(b)包括:(b11)基于所述第一字段,加载所述索引段;(b12)在所述索引段中搜索具有与所述更新请求中包括的数据识别信息相匹配的第二字段的第一索引记录;以及(b13)根据所述第一索引记录的第三字段来定位相应的第一数据记录;(b14)根据所述第一数据记录的当前长度以及预期的其更新后的长度之间的差值,来相应调整所述第一数据记录的后续数据记录的定位;(b15)使用所述更新请求中包括的更新数据来更新所述第一数据记录中的部分或全部数据;以及(b16)根据更新后的所述第一数据记录的定位以及所述第一数据记录的后续数据记录的调整后的定位,更新所述索引段中相应索引记录的第三字段。
在一些实施例中,步骤(b12)还包括:如果在所述索引段中搜索到具有与所述更新请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据所述更新请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定所述更新请求所针对的第一索引记录。
在一些实施例中,步骤(b14)还包括以下各项之一:如果所述差值小于零,则将所述第一数据记录的后续数据记录的定位向远离文件头的方向移动所述差值的绝对值;如果所述差值大于零,则将所述第一数据记录的后续数据记录的定位朝向文件头的方向移动所述所述差值;或者如果所述差值为零,则所述第一数据记录的后续数据记录的定位不变。
在一些实施例中,如果在步骤(b12)中未找到所述第一索引记录,则步骤(b)直接结束,且步骤(c)进一步包括:返回指示未找到相应数据记录的更新结果。
在一些实施例中,如果所述维护请求是插入请求,则步骤(b)包括:(b21)基于所述第一字段,加载所述索引段;(b22)基于所述插入请求中包括的数据识别信息,确定在所述索引段中要插入与所述插入请求相对应的第一索引记录的第一索引定位;(b23)在所述第一索引定位处插入所述第一索引记录,所述第一索引记录具有与所述插入请求中包括的数据识别信息相匹配的第二字段;(b24)根据与所述第一索引记录相邻的两侧索引记录的第三字段,确定要插入所述数据段中的与所述插入请求相对应的第一数据记录的第一数据定位;(b25)根据要插入的所述第一数据记录的长度,相应调整其后续数据记录的定位;(b26)在所述第一数据定位处插入所述第一数据记录;(b27)根据所述第一数据记录的定位以及其后续数据记录的调整后的定位,更新所述索引段中相应索引记录的第三字段;以及(b28)将所述第一字段增加所述第一索引记录的长度。
在一些实施例中,步骤(b22)还包括:如果在所述索引段中搜索到具有与所述插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录,则根据所述插入请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定是否存在与所述插入请求相匹配的第一索引记录;如果存在,则步骤(b)直接结束,且在步骤(c)中返回指示插入失败的插入结果,否则根据搜索到的一条或多条第一索引记录中的最远离所述文件头的第一索引记录的定位,来确定要插入的索引记录的定位。
在一些实施例中,如果所述维护请求是删除请求,则步骤(b)包括:(b31)基于所述第一字段,加载所述索引段;(b32)基于所述删除请求中包括的数据识别信息,确定在所述索引段中要删除的第一索引记录及其第一索引定位;(b33)根据所述第一索引记录的第三字段,确定所述数据段中的要删除的第一数据记录的第一数据定位;(b34)根据所述第一数据定位,删除所述第一数据记录,并相应调整其后数据记录的定位;(b35)根据调整后的数据记录的定位,更新所述索引段中相应索引记录的第三字段;(b36)根据所述第一索引定位,删除所述第一索引记录,并相应调整其后索引记录的定位;以及(b37)将所述第一字段减少所述第一索引记录的长度。
在一些实施例中,步骤(b32)还包括:如果在所述索引段中搜索到具有与所述删除请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据所述删除请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定所述删除请求所针对的第一索引记录及其第一索引定位。
在一些实施例中,如果在步骤(b32)中未找到所述第一索引记录,则步骤(b)直接结束,且步骤(c)进一步包括:返回指示未找到相应数据记录的删除结果。
在一些实施例中,所述索引段中包括的一条或多条索引记录是按第二字段排序的,以及步骤b12、b22、或b32是通过在所述索引段中使用二分查找算法来实现的。
在一些实施例中,每个索引记录还包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且步骤b12、b22、或b32进一步包括:当在所述索引段中第一次搜索到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向所述文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据所述最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录,以及步骤b还包括:如果所述维护请求是插入请求,则在插入结果指示插入成功的情况下,将具有与所述插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近所述文件头的第一索引记录的第四字段增加1;以及如果所述维护请求是删除请求,则在删除结果指示删除成功的情况下,将具有与所述删除请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近所述文件头的第一索引记录的第四字段减少1。
在一些实施例中,如果所述维护请求是包括更新请求、插入请求和删除请求中任意一项或多项在内的组合式请求,则步骤(b)还包括:针对所述组合式请求中的各单项请求,顺序执行每个单项请求。
根据本发明的第四方面,提供了一种用于在库文件中维护数据的设备,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同。该设备包括:接收单元,用于接收用于在所述库文件中维护数据的维护请求;维护单元,用于基于所述维护请求,分别维护所述文件头、所述索引段和所述数据段;以及返回单元,用于返回针对所述维护请求的维护结果。
在一些实施例中,所述第一字段包括以下各项中的至少两项:所述索引段的起始地址、结束地址、以及长度。
在一些实施例中,每个第二字段至少包括与相应数据记录相对应的数据的散列值。
在一些实施例中,与相应数据记录相对应的数据至少包括恶意应用安装包。
在一些实施例中,每个第三字段包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
在一些实施例中,所述维护请求的类型是以下各项之一:更新请求、插入请求、删除请求、以及前述各项的任意组合。
在一些实施例中,如果所述维护请求是更新请求,则所述维护单元还用于:(b11)基于所述第一字段,加载所述索引段;(b12)在所述索引段中搜索具有与所述更新请求中包括的数据识别信息相匹配的第二字段的第一索引记录;以及(b13)根据所述第一索引记录的第三字段来定位相应的第一数据记录;(b14)根据所述第一数据记录的当前长度以及预期的其更新后的长度之间的差值,来相应调整所述第一数据记录的后续数据记录的定位;(b15)使用所述更新请求中包括的更新数据来更新所述第一数据记录中的部分或全部数据;以及(b16)根据更新后的所述第一数据记录的定位以及所述第一数据记录的后续数据记录的调整后的定位,更新所述索引段中相应索引记录的第三字段。
在一些实施例中,所述维护单元还用于:如果在所述索引段中搜索到具有与所述更新请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据所述更新请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定所述更新请求所针对的第一索引记录。
在一些实施例中,所述维护单元还用于以下各项之一:如果所述差值小于零,则将所述第一数据记录的后续数据记录的定位向远离文件头的方向移动所述差值的绝对值;如果所述差值大于零,则将所述第一数据记录的后续数据记录的定位朝向文件头的方向移动所述所述差值;或者如果所述差值为零,则所述第一数据记录的后续数据记录的定位不变。
在一些实施例中,如果所述维护单元未找到所述第一索引记录,则所述返回单元还用于:返回指示未找到相应数据记录的更新结果。
在一些实施例中,如果所述维护请求是插入请求,则所述维护单元还用于:(b21)基于所述第一字段,加载所述索引段;(b22)基于所述插入请求中包括的数据识别信息,确定在所述索引段中要插入与所述插入请求相对应的第一索引记录的第一索引定位;(b23)在所述第一索引定位处插入所述第一索引记录,所述第一索引记录具有与所述插入请求中包括的数据识别信息相匹配的第二字段;(b24)根据与所述第一索引记录相邻的两侧索引记录的第三字段,确定要插入所述数据段中的与所述插入请求相对应的第一数据记录的第一数据定位;(b25)根据要插入的所述第一数据记录的长度,相应调整其后续数据记录的定位;(b26)在所述第一数据定位处插入所述第一数据记录;(b27)根据所述第一数据记录的定位以及其后续数据记录的调整后的定位,更新所述索引段中相应索引记录的第三字段;以及(b28)将所述第一字段增加所述第一索引记录的长度。
在一些实施例中,所述维护单元还用于:如果在所述索引段中搜索到具有与所述插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录,则根据所述插入请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定是否存在与所述插入请求相匹配的第一索引记录;如果存在,则所述返回单元直接返回指示插入失败的插入结果,否则根据搜索到的一条或多条第一索引记录中的最远离所述文件头的第一索引记录的定位,来确定要插入的索引记录的定位。
在一些实施例中,如果所述维护请求是删除请求,则所述维护单元还用于:(b31)基于所述第一字段,加载所述索引段;(b32)基于所述删除请求中包括的数据识别信息,确定在所述索引段中要删除的第一索引记录及其第一索引定位;(b33)根据所述第一索引记录的第三字段,确定所述数据段中的要删除的第一数据记录的第一数据定位;(b34)根据所述第一数据定位,删除所述第一数据记录,并相应调整其后数据记录的定位;(b35)根据调整后的数据记录的定位,更新所述索引段中相应索引记录的第三字段;(b36)根据所述第一索引定位,删除所述第一索引记录,并相应调整其后索引记录的定位;以及(b37)将所述第一字段减少所述第一索引记录的长度。
在一些实施例中,所述维护单元还用于:如果在所述索引段中搜索到具有与所述删除请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据所述删除请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定所述删除请求所针对的第一索引记录及其第一索引定位。
在一些实施例中,如果所述维护单元未找到所述第一索引记录,则所述返回单元还用于:返回指示未找到相应数据记录的删除结果。
在一些实施例中,所述索引段中包括的一条或多条索引记录是按第二字段排序的,以及所述维护单元使用二分查找算法来实现在所述索引段中的搜索。
在一些实施例中,每个索引记录还包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且所述维护单元还用于:当在所述索引段中第一次搜索到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向所述文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据所述最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录,以及所述维护单元还用于:如果所述维护请求是插入请求,则在插入结果指示插入成功的情况下,将具有与所述插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近所述文件头的第一索引记录的第四字段增加1;以及如果所述维护请求是删除请求,则在删除结果指示删除成功的情况下,将具有与所述删除请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近所述文件头的第一索引记录的第四字段减少1。
在一些实施例中,如果所述维护请求是包括更新请求、插入请求和删除请求中任意一项或多项在内的组合式请求,则所述维护单元还用于:针对所述组合式请求中的各单项请求,顺序执行每个单项请求。
通过使用本发明的方法和设备,可以实现以下各项优点:
(1)操作(例如,查询、插入、更新和删除等)运行时间与现有设计相比更快,且不会由于索引段和数据段的大小改变而发生过大的变化;
(2)在执行操作(例如,查询、插入、更新和删除等)时,不用加载库文件中的全部数据,降低资源(例如,内存、CPU等)的消耗;
(3)本发明的各操作的算法与现有设计相比要相对简单;
(4)降低库文件所占用的存储器容量(例如,硬盘、SD卡等);以及
(5)查询等操作不依赖于具体复杂的算法,基本上不受算法好坏的影响。
附图说明
通过下面结合附图说明本发明的优选实施例,将使本发明的上述及其它目的、特征和优点更加清楚,其中:
图1是示出了根据本发明的用于库文件的查询和/或维护的系统的示例应用场景的示意图。
图2是示出了根据本发明实施例的用于在库文件中查询数据的示例方法的流程图。
图3是示出了根据本发明实施例的用于执行图2所示方法的示例设备的框图。
图4是示出了根据本发明实施例的用于维护库文件的示例方法的流程图。
图5是示出了根据本发明实施例的用于执行图4所示的方法的示例设备的框图。
具体实施方式
下面参照附图对本发明的优选实施例进行详细说明,在描述过程中省略了对于本发明来说是不必要的细节和功能,以防止对本发明的理解造成混淆。以下,以本发明应用于无线移动通信系统的场景为例,对本发明进行了详细描述。但本发明并不局限于此,本发明也可以应用于固定通信系统、有线通信系统,或者应用于无线移动通信系统、固定通信系统、有线通信系统等的任意混合结构。就移动通信系统而言,本发明并不局限于所涉及的各个移动通信终端的具体通信协议,可以包括(但不限于)2G、3G、4G、5G网络,WCDMA、CDMA2000、TD-SCDMA系统等,不同的移动终端可以采用相同的通信协议,也可以采用不同的通信协议。此外,本发明并不局限于移动终端的具体操作系统,可以包括(但不限于)iOS、Windows Phone、Symbian(塞班)、Android(安卓)等,不同的移动终端可以采用相同的操作系统,也可以采用不同的操作系统。
图1是示出了根据本发明的用于查询和/或维护库文件的系统1000的应用场景的示意图。如图1所示,系统1000可以包括设备100和远程设备200。为了清楚起见,图中仅示出了一个设备100、一个远程设备200,但本发明并不局限于此,可以包括两个或更多数目的设备和/或远程设备等等。设备100可以属于用户或者可以由用户操作。远程设备200可以属于库文件的提供商和/或维护商,或者可以由它们操作。设备100和远程设备200可以通过通信网络300进行通信。通信网络300的示例可以包括(但不限于):互联网、移动通信网络、固定线路(如xDSL、光纤等)等。
在图1的场景中,远程设备200负责维护库文件,并通过各种方式向设备100下发更新的库文件。设备100上的反病毒应用通过使用远程设备200下发的(病毒)库文件,对可疑应用安装包进行查杀,以确保应用安装包的安全性。
在图1所示实施例中,为了在设备100上对库文件进行查询,将根据本发明的实施例的库文件查询客户端150(以下简称为客户端150)安装在设备100上。客户端150可以由用户以软件的形式自行安装在设备100中,或者可以由生产厂商以硬件或固件的形式安装在设备100中。在一些实施例中,客户端150可以是例如在用户购买了设备100之后从网络中下载的专门用于本发明的应用软件。在另一些实施例中,客户端150可以是例如由生产厂商以固件或硬件形式预先安装在设备100中的应用程序。在又一些实施例中,客户端150可以是由生产厂商生产的硬件模块或设备100本身。
此外在图1所示实施例中,为了在远程设备200上对库文件进行维护,将根据本发明的实施例的库文件维护客户端250(以下简称为客户端250)安装在远程设备200上。客户端250可以由提供商和/或维护商以软件的形式自行安装在远程设备200中,或者可以由生产厂商以硬件或固件的形式安装在远程设备200中。在一些实施例中,客户端250可以是例如在提供商和/或维护上购买了远程设备200之后从网络中下载的专门用于本发明的应用软件。在另一些实施例中,客户端250可以是例如由生产厂商以固件或硬件形式预先安装在远程设备200中的应用程序。在又一些实施例中,客户端250可以是由生产厂商生产的硬件模块或远程设备200本身。
首先,将参照下面表2来详细介绍根据本发明的实施例的库文件的示例结构。
表2
如表2所示,最右侧为注释栏,其不代表表2所示库文件的实际数据的一部分。尽管表2中用1行表示文件头(32个字节,即字节0~31)、5行表示索引段(200个字节,即字节32~231)、且8行表示数据段(500个字节,即字节232~731),但本发明不限于此。各个段的字节长度可以根据实际需要而变化。例如,索引段中的索引记录可以有一条或多条,数据段中的数据记录也相应的可以有一条或多条。此外,文件头、索引段、数据段中的各个字段在下文中没有明确描述的情况下,不应被视为是必选字段,即在不同的库文件设计中,可以存在或不存在这些字段。
文件头
在表2所示的示例库文件的文件头中,各字段从左至右可以包括:标识、CRC校验、版本号、更新时间、索引段长度、索引记录数目、数据段长度、数据记录数目。其中,文件标识“AV”(例如,Antivirus)表示在本实施例中,该库文件是针对病毒的病毒库文件;其也可以是用于指示库文件的厂商的标识位。版本号为库文件的版本号,其用于帮助使用库文件的应用程序来区分不同版本的库文件及其数据格式,以防止误操作。更新时间表示该库文件上一次被更新的时间。索引段长度、索引记录数目、数据段长度和数据记录数目分别如其字面意思所表示的,帮助使用该库文件的应用程序来定位并加载库文件中相应的索引和/或数据记录。当然,根据本发明的库文件的文件头不限于这些字段和/或可以不包括全部这些字段,其也可以包括其他字段或者没有上述字段中的一些字段。在本发明的下述实施例中,一旦确定了文件头中包括的各字段以及格式,其长度是固定的。当然,本发明不限于此,在本发明的其他实施例中,文件头也可以是变长的,但是在该情况下,其中应当存在用于帮助确定文件头长度的字段。
索引段
在表2所示的示例库文件的索引段中,每条索引记录要求严格对齐,即它们是等长的。在表2所示的病毒库文件中,索引段中每条索引的各个字段从左到右依次是:特征值(例如,散列值)、键标识符(或keyid)、具有同特征值的索引记录的数目、相对应数据记录的起始地址、和相对应数据记录的结束地址。
特征值可以是与该条索引记录相对应的病毒数据(例如,具有恶意代码的应用安装包)的特征值(例如,使用MD5或者SHA1得到的其散列值),用于初步识别不同的病毒。键标识符用于区分具有相同特征值的不同索引记录,通常其是在插入或更新索引/数据记录时由库文件提供商/维护商为该条记录所分配的全局ID(其可以不是全局ID,而是仅用于区分同特征值的索引记录的相对ID)。具有同特征值的索引记录的数目用于指示具有与当前所考察的索引记录相同特征值的索引记录的总数,以方便用户在查询/维护库文件时找到具有相同特征值的全部索引记录。该字段的缺省值为1,以表明存在1个同特征值的索引记录(即,其自身),具体使用方式将在下面详细阐述,此处不过多描述。
相对应数据记录的起始地址和结束地址用于帮助用户根据该索引记录来定位数据记录。当然,也可以使用其他方式来定位数据记录,例如通过起始地址和数据长度来确定、通过结束地址和数据长度来确定等等。简而言之,为了定位数据记录,可以从例如起始地址、结束地址和数据长度中任选两项来定位。
例如如表2所示,第一条索引记录“101,0x1,1,232,257”代表该索引记录指向的是具有特征值101的第1个数据记录,且仅有1个同特征值的数据记录,该数据记录的起始地址和结束地址分别为232(即,也是数据段的起始地址)和257。
如上所述,在本实施例中,索引段中每条索引记录是严格对齐的,即每条索引记录是定长的。此外,在索引段中,可以按特征值对各索引记录进行排序。在本实施例中,可以按特征值的升序来对索引段中的索引记录进行排序。当然,本发明不限于此,也可以使用降序等来排序。
数据段
在数据段中,各条数据记录不用对齐,即数据记录的长度可以是不固定的。此外,各条记录不需要保持某种顺序。在本实施例中,由于对于病毒库文件的查询要比病毒库文件的维护(例如,更新、插入和/或删除)频繁得多,因此为了方便查询操作,可以使数据记录的顺序与索引段顺序保持相同,即按相应数据的特征值的升序来排序。
在不按特定顺序对数据记录排序的情况下,可以在插入或更新时将可能增加的数据记录全部向文件尾添加,从而使得这些操作的速度远快于现有技术和其他库文件的情况。例如,更新操作可以是先删除原数据记录,然后对剩余记录进行移动合并,最后向文件尾添加更新后的记录。而对于删除操作,可以直接执行数据/索引的删除、剩余记录的合并等。在该情况下,所有数据段的操作,都会相应更改索引段和文件头,但是与现有技术相比,实现起来更为简单。
与现有技术相比,本发明的库文件设计首先在文件头中增加了指示索引段和数据段的大小的字段。这样,只需要加载文件头部,就可以获取到整个文件、及其各部分的长度。
此外,由于各个索引记录是严格对齐的,这样就可以基于计算出的散列值(散列值是整型数据,其可以按照升序排序)在索引段中使用例如二分查找法,更快速地对目标索引记录定位。与现有的没有索引记录或者其他索引记录长度不固定的设计相比,其可以进一步节约终端100的处理能力、简化库文件的查询和/或维护算法。
此外,如果存在散列值一样的数据,由于已经加载了与散列值对应的索引块(对齐固定),则可以通过对比该块中包含的keyid是否匹配(如上所述,该keyid用于区别具有相同散列值的索引记录)。然后选择相匹配的索引记录,进而得到相应数据记录的起始地址和结束地址。这大大地节省了空间,因为不用加载全部索引数据块(搜索特征值时可以根据简单的二分查找法,因为在本实施例中散列值有序)。
如果特征值对应的数据记录唯一,则索引记录读取完成。可以通过查看相同散列值的索引记录的条数(例如,n),如果大于1,则可以基于该索引记录来获得相同其后续的具有相同散列值的索引记录,可以在读取过程中可以对keyid进行匹配,如果发现匹配,则读取结束,否则直到读取到后续第n-1条索引记录,读取索引部分就结束了。
因为已经通过读取索引记录得到了对应数据记录的起始地址和结束地址,所以可以读取数据段中的这段位置,进而完成读取。
如上所述,在本发明中,以病毒库文件为例来说明本发明的创造性概念。病毒库文件是病毒记录的集合,该数据集合可以全部保存在数据段中。通常涉及到病毒库文件的操作是病毒的查询(例如,在查毒期间)、更新病毒库记录、插入病毒库记录和删除病毒库记录等(例如,在病毒库维护期间)。下面将分别一一介绍。
更具体地,在表2所示的病毒库文件的实施例中,文件头可以包含以下信息:
(1)标志位,可以用于标识厂商或文件类型;
(2)CRC校验码,可以用于对本字段后面的所有区域进行校验;
(3)库结构版本号,其可以是整数,用于标识该文件的结构及压缩、加密算法等,病毒扫描应用可根据该版本号判断是否能支持病毒库结构;
(4)最后更新时间,可以用于存储最近更新的日期信息;
(5)索引段大小;(6)索引记录总数;(7)数据段大小;以及(8)数据记录总数(病毒总数)。
在表2所示的实施例中,索引段可以包含以下信息:
(1)数据特征(散列)值(例如,MD5,其可以确定一个病毒样本的唯一性,md5经过转换(转换唯一)的整数值);
(2)keyid(整数值),插入时由系统分配,用于区别具有相同特征值的索引/数据记录;
(3)具有相同散列值的索引记录的数目,如果存在具有相同散列值的n条索引记录,则其中第一条索引记录保存的是其实际数目n,其后n-1条索引记录的对应字段保存的值为1;
(4)对应数据记录的数据段内的起始地址;以及
(5)对应数据记录的数据段内的结束地址。
在表2所示的实施例中,数据段可以包含以下信息:(1)病毒包散列值;(2)病毒包唯一对应的keyid;(3)病毒名称;(4)病毒包publc key;(5)病毒包sha1值;(6)病毒特征值;(7)VersionCode;(8)Version;以及(9)病毒描述等。数据段中的各字段可以完全根据用户的需要来定制,可以包括但不限于上述各种字段,也可以具有完全不同的其他各种字段。
如表2所示,文件头为32字节,索引段包括20条索引记录,总共200字节,数据段具有对应的20条数据记录,总共500字节。该库文件总共为732字节。
如表2所示,文件头可以是固定大小的,索引段可以随着数据增大而变大,索引段严格对齐。数据段虽然在图上显示大小相同,但是在实际中,其各自的大小可以不相同,图示只是为了后续说明的方便。
接下来,将详细描述针对库文件的查询和/或维护操作。在具体描述前,将先简单介绍下与病毒库文件相关的一些情况。
假设我们要对安卓的应用安装包进行病毒扫描。能够让扫描执行的先决条件是:病毒分析人员得到该样本包,并且进行了病毒分析,从样本包中提取或者获得了某些可以用于鉴定这个软件为病毒的特征或者一些其他条件,并以此条件进行生成病毒库的一条记录。这样在匹配时就可以根据病毒库的这些值对样本包进行特殊的匹配,以确保该软件包是病毒。
首先要以该样本包为输入,然后根据病毒扫描引擎对该软件包进行分析处理,得到针对病毒库文件的查询请求所应当包含的查询条件,假设公式为:av=f(x),av为矢量,是样本待扫描特征等条件的集合,且f(x)算法负责对输入的x样本求av矢量。其中av矢量包含有预转换的散列值串。然后,把散列值串转换成整型散列值值,可以例如通过使用hash=Hash(′hash′)。通过这个算法可以得到保存在病毒库文件中的整型散列值。在获得了查询请求中所需的该散列值之后,就可以去进行下述查询操作。
查询请求的处理流程
首先,在本实施例中,由反病毒引擎(由例如设备100的处理器来执行的反病毒软件等)来加载表2所示的库文件的文件头,通过解析文件头中相应字段来确定索引段的定位(例如,起始地址、结束地址、或长度等等)。与现有技术相比,通过在文件头中包括用于指示索引段定位的字段,可以直接加载索引段,而不必像以往的引擎一样加载整个库文件,那样做不但浪费存储空间、处理能力,也完全没有必要。
由于在本实施例中,在索引段中的散列值是按照从小到大的顺序排序的,所以可以通过二分查找去查找该散列值是否存在于索引段中。
假设在查询请求中包含的用于识别待查索引记录的特征值(散列值)为102,则通过查找表2所示的示例库文件的索引段,发现存在该特征值。假设查找到的索引记录的同特征值的索引记录的数目为1,则通过解析包含该特征值的索引记录得到相应数据记录的起始位置为257,且结束位置为282。之后可以直接去读取该段数据,获取相应数据,并返回给杀病毒引擎,此时查询请求的处理流程结束。
假设在另外一个查询请求中,通过上述一系列步骤确定查询请求中包含的用于识别索引记录的数据识别信息(特征值、散列值)为1001,则通过搜索发现要读取的索引记录的条数不是默认的1,而是3。在这种情况下,需要读具有相同特征值的多条索引记录中的第一个索引记录(最接近文件头的索引记录)的起始地址(例如,432),之后读取最后一条索引记录(最远离文件的索引记录)的结束地址(例如,557),并直接加载这段数据块(432~557)。然后可以根据keyid做进一步的匹配,或者直接返回检索到的全部数据记录。当然,上述情况是在数据段中的数据记录与索引段中的索引记录的排序相同的情况下实现的。在另一些实施例中,如果如上所述是在文件尾部直接插入数据记录,则数据段中的记录的排列顺序与索引段中的记录的排列顺序可以不同,且因此不能直接连续读取这段数据块。在该情况下,可以针对多条索引记录中的各自的指示相应数据记录的起始/结束地址来分别读取对应的数据记录,并在读取后将其统一返回给提出查询请求的应用/实体等。
此外,在使用二分搜索的情况下,搜索到的索引记录不一定是具有相同特征值的索引记录中的第一条记录(即,其指示同特征值的索引记录的数目的字段不一定为实际数目,而是缺省的1),则此时可以在朝向文件头的方向上搜索具有同特征值的其他索引记录,并找到其中的第一条索引记录,进而确定所有同特征值的索引记录,后续步骤类似上述过程。
上面描述的都是查询请求命中(即,库文件中存在要查询的索引/数据记录)的情况。假设在另一实施例中需要查询的特征值为99,则根据表2所示的库文件,可以得出索引段中并没有此索引记录,所以可以直接退出,向反病毒软件返回指示查询不成功的结果,且反病毒软件可以据此得出此样本不是病毒。
更新请求的处理流程
在本实施例中,更新操作可以是由远程设备200来执行的,当然也可以由设备100自己或其他设备来执行。远程设备200可以是病毒库发布引擎,该发布引擎负责产生病毒库。发布引擎与不像上述查询操作中提及的查杀引擎,发布引擎对病毒库的操作需要依赖一个另外的条件keyid,它同特征值一起确定了记录(索引/数据)的唯一性。
实际的病毒库文件的格式和发布引擎产生的文件的格式有所不同,发布引擎只是产生一个增量的文件,产生的每一条记录前面包含一个标志位(+、-、^),分别代表新增、删除、更新的记录。但由于其不是本发明的主要关注对象,因此此处并不对其进行详细介绍。
更新操作需要对数据段的相应记录做修改(如有必要还需要对文件头和索引段做修改,这种情况是该数据记录的长度大小(换言之,定位)发生了变化)。下面的表3和表4示出了在一个示例更新前后的数据记录,它们均是上述表2的一部分。
改变前:
101 | 0x1 | A.**.**b | …… |
102 | 0x2 | B.**.**.A | …… |
103 | 0x3 | A.**.**.C | …… |
表3
改变后:
101 | 0x1 | A.**.**b | …… |
102 | 0x2 | B.**.**.B | …… |
103 | 0x3 | A.**.**.C | …… |
表4
在该更新中,该条数据记录的长度未发生改变,且因此文件头和索引段据不需要变化。在更一般的实施例中,首先基于文件头中的用于定位索引段的第一字段(例如,索引段大小字段,其可以与固定文件头长度相配合来确定索引段的定位),来加载索引段。然后在索引段中搜索具有与更新请求中包括的数据识别信息(特征值、散列值)相匹配的第二字段(例如,每条索引记录的特征值)的第一索引记录。以及根据第一索引记录的第三字段(例如,每条索引记录中用于定位相应数据记录的字段,例如数据记录的起始地址、结束地址、长度等)来定位相应的第一数据记录。根据第一数据记录的当前长度以及预期的其更新后的长度之间的差值,来相应调整第一数据记录的后续数据记录的定位。使用更新请求中包括的更新数据来更新第一数据记录中的部分或全部数据。最后根据更新后的第一数据记录的定位以及第一数据记录的后续数据记录的调整后的定位,更新索引段中相应索引记录的第三字段。
在一些实施例中,更新操作还包括:如果在索引段中搜索到具有与更新请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据更新请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息(例如,keyid)来确定更新请求所针对的第一索引记录。
在一些实施例中,更新操作还包括以下各项之一:如果上述差值小于零(即,更新后数据长度大于更新前数据长度),则将第一数据记录的后续数据记录的定位向远离文件头的方向移动差值的绝对值;如果差值大于零(即,更新前数据长度大于更新后数据长度),则将第一数据记录的后续数据记录的定位朝向文件头的方向移动差值;或者如果差值为零,则类似于表3和表4所示,第一数据记录的后续数据记录的定位不变。
在一些实施例中,如果未找到第一索引记录,则更新操作返回指示未找到相应数据记录的更新结果。
删除请求的处理流程
在本发明的实施例中,删除操作可以是由远程设备200来执行的,当然也可以由设备100自己或其他设备来执行。删除记录的处理流程也相对简单(文件头和索引应当要改变,因为减少了一条记录,索引段也必须减少一条对应的索引记录,导致文件头的数据段大小和索引段大小都发生了变化),比更新多一步步骤是删除与索引记录对应的数据记录和文件头的更新。这里面没有任何特别的算法,唯独需要关注的是对于索引段和数据段数据删除后的合并操作。可以使用各种数据合并算法(例如,移位并合并等),但是这不是本发明的关注重点,所以本文中未给出具体描述。下面表5和表6分别示出了删除前后的示例。
删除前:
表5
删除后:
表6
在一些实施例中,删除操作可以包括:基于第一字段(同上),加载索引段。然后基于删除请求中包括的数据识别信息(例如,散列值1001),确定在索引段中要删除的第一索引记录及其第一索引定位。根据第一索引记录的第三字段(例如,532~557),确定数据段中的要删除的第一数据记录的第一数据定位。根据第一数据定位(例如,532~557),删除第一数据记录,并相应调整其后数据记录的定位。根据调整后的数据记录的定位,更新索引段中相应索引记录的第三字段。根据第一索引定位,删除第一索引记录,并相应调整其后索引记录的定位。将第一字段减少第一索引记录的长度。
在一些实施例中,删除操作还可以包括:如果在索引段中搜索到具有与删除请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据删除请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息(例如,keyid为0x14)来确定删除请求所针对的第一索引记录及其第一索引定位。
在一些实施例中,如果未找到第一索引记录,则删除操作可以返回指示未找到相应数据记录的删除结果。
插入请求的处理流程
在本发明的实施例中,插入操作可以是由远程设备200来执行的,当然也可以由设备100自己或其他设备来执行。在本实施例中,插入记录是比较繁琐的操作,它首先要去执行查询操作,确保库中确实不存在待插入的记录,如果真的不存在,则执行插入动作。插入时可以首先要产生一条索引数据,先插入索引数据,然后再在合适的位置插入一条数据记录。插入的时候会涉及到索引段的移动数据段的移动,之后还要涉及文件的合并头部和索引段有关长度数据,其结束位置的合并。
确定插入位置的方法与在查询操作中是类似的。假设要插入的索引记录的特征值为1003。因为在本实施例中,索引段和数据段中都是按照散列值、特征值的升序排列的,所以只需分别找到相邻的大于1003和小于1003的位置就可以执行插入了。例如,在下面的表7和8所示的实施例中,插入的位置是在散列值1004的前面和1001的后面。
插入前:
表7
插入后:
表8
在一些实施例中,插入操作可以包括以下各步骤。基于第一字段,加载索引段。基于插入请求中包括的数据识别信息(例如,散列值1003),确定在索引段中要插入与插入请求相对应的第一索引记录的第一索引定位。在第一索引定位处插入第一索引记录,第一索引记录具有与插入请求中包括的数据识别信息相匹配的第二字段。根据与第一索引记录相邻的两侧索引记录的第三字段,确定要插入数据段中的与插入请求相对应的第一数据记录的第一数据定位。根据要插入的第一数据记录的长度,相应调整其后续数据记录的定位。在第一数据定位处插入第一数据记录。根据第一数据记录的定位以及其后续数据记录的调整后的定位,更新索引段中相应索引记录的第三字段。将第一字段增加第一索引记录的长度。
在一些实施例中,插入操作还可以包括:如果在索引段中搜索到具有与插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录,则根据插入请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定是否存在与插入请求相匹配的第一索引记录。如果存在,则插入操作返回指示插入失败的插入结果,否则根据搜索到的一条或多条第一索引记录中的最远离文件头的第一索引记录的定位,来确定要插入的索引记录的定位。
图2是示出了根据本发明实施例的在设备100中执行的在库文件中查询数据的方法400的流程图。如图2所示,方法400可以包括步骤S410、S420、S430和S440。根据本发明,方法400的一些步骤可以单独执行或组合执行,以及可以并行执行或顺序执行,并不局限于图2所示的具体操作顺序。在一些实施例中,方法400可以由图1所示的设备100和/或其上的客户端150执行。
图4是示出了根据本发明实施例的在远程设备200中执行的维护库文件的方法450的流程图。如图4所示,方法450可以包括步骤S460、S470和S480。根据本发明,方法450的一些步骤可以单独执行或组合执行,以及可以并行执行或顺序执行,并不局限于图4所示的具体操作顺序。在一些实施例中,方法450可以由图1所示的远程设备200和/或其上的客户端250执行。
图3是示出了根据本发明实施例的用于在库文件中查询数据的示例设备100的框图。该库文件至少包括文件头、索引段和数据段,文件头至少包括用于定位索引段的第一字段,索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位相应数据记录的第三字段,以及该一条或多条索引记录的长度相同。如图4所示,设备100可以包括:接收单元110、加载单元120、搜索单元130、以及返回单元140。
接收单元110可以用于接收用于在库文件中查询数据的查询请求。接收单元110可以是设备100的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器等等,其可以与设备100的输入部分(例如,键盘、鼠标等)相配合,接收用于在库文件中查询数据的查询请求。
加载单元120可以用于基于上述第一字段,加载索引段。加载单元120可以是设备100的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器等等,其可以与设备100的存储部分(例如,RAM等)相配合,基于上述第一字段,将索引段加载到RAM中供后续操作之用。
搜索单元130可以用于在索引段中搜索具有与查询请求中包括的数据识别信息相匹配的第二字段的索引记录。搜索单元130可以是设备100的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器等等,其可以与设备100的存储部分(例如,RAM等)相配合,在之前加载的索引段中检索具有匹配第二字段的索引记录。
返回单元140可以用于根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。返回单元140可以是设备100的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器等等,其可以与设备100的存储部分(例如,磁盘、SD卡等)和输出部分(例如,显示器、打印机等)相配合,根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。
图5是示出了根据本发明实施例的用于维护库文件的示例远程设备200的框图。该库文件至少包括文件头、索引段和数据段,文件头至少包括用于定位索引段的第一字段,索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及该一条或多条索引记录的长度相同。如图5所示,远程设备200可以包括:接收单元210、维护单元220和返回单元230。
接收单元210可以用于接收用于在上述库文件中维护数据的维护请求。接收单元210可以是远程设备200的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器等等,其可以与远程设备200的存储部分(例如,磁盘、SD卡等)相配合,接收用于在上述库文件中维护数据的维护请求。
维护单元220可以用于基于该维护请求,分别维护文件头、索引段和数据段。维护单元220可以是远程设备200的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器等等,其可以与远程设备200的存储部分(例如,磁盘、RAM、SD卡等)相配合,基于该维护请求,分别维护文件头、索引段和数据段。
返回单元230可以用于返回针对该维护请求的维护结果。返回单元230可以是远程设备200的中央处理单元(CPU)、数字信号处理器(DSP)、微处理器、微控制器等等,其可以与远程设备200的输出部分(例如,显示器、打印机等等)相配合,根据维护单元220的维护操作的操作结果,例如维护成功、维护失败等来返回针对该维护请求的维护结果。
以下将结合图2和图3,对根据本发明实施例的在设备100上执行的在库文件中查询数据的方法400和设备100进行详细的描述。该库文件至少包括文件头、索引段和数据段,文件头至少包括用于定位索引段的第一字段,索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位相应数据记录的第三字段,以及该一条或多条索引记录的长度相同。
方法400开始于步骤S410,在步骤S410中,可以由设备100的接收单元110接收用于在库文件中查询数据的查询请求。
在步骤S420中,可以由设备100的加载单元120基于第一字段,加载上述索引段。
在步骤S430中,可以由设备100的查询单元130在索引段中搜索具有与查询请求中包括的数据识别信息相匹配的第二字段的索引记录。
在步骤S440中,可以由设备100的返回单元140根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,第一字段可以包括以下各项中的至少两项:索引段的起始地址、结束地址、以及长度。
在一些实施例中,每个第二字段至少可以包括与相应数据记录相对应的数据的散列值。
在一些实施例中,与相应数据记录相对应的数据可以至少包括恶意应用安装包。
在一些实施例中,每个第三字段可以包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
在一些实施例中,索引段中包括的一条或多条索引记录可以是按第二字段排序的,以及步骤S430可以是通过在索引段中使用二分查找算法来实现的。
在一些实施例中,每个索引记录还可以包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且步骤S430可以进一步包括:当在索引段中第一次搜索到具有与查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录。
在一些实施例中,步骤S440可以进一步包括:根据搜索到的一条或多条索引记录各自的第三字段,定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,数据段中包括的一条或多条数据记录的顺序可以与索引段中对应的一条或多条索引记录的顺序相同,步骤S440可以进一步包括:根据搜索到的多条索引记录中最接近文件头的索引记录的第三字段和搜索到的多条索引记录中最远离文件头的索引记录的第三字段,定位并返回相应的数据记录中的全部或部分数据。
在一些实施例中,如果在步骤S430中未找到具有与查询请求中包括的数据识别信息相匹配的第二字段的索引记录,则步骤S440可以进一步包括:返回指示未找到相应数据记录的查询结果。
以下将结合图4和图5,对根据本发明实施例的用于在远程设备200处执行的维护库文件的方法450和远程设备200进行详细的描述。该库文件至少包括文件头、索引段和数据段,文件头至少包括用于定位索引段的第一字段,索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位相应数据记录的第三字段,以及该一条或多条索引记录的长度相同。
方法450开始于步骤S460,在步骤S460中,可以由远程设备200的接收单元210接收用于在库文件中维护数据的维护请求。
在步骤S470中,可以由远程设备200的维护单元220基于维护请求,分别维护文件头、索引段和数据段。
在步骤S480中,可以由远程设备200的返回单元230返回针对维护请求的维护结果。
在一些实施例中,第一字段可以包括以下各项中的至少两项:索引段的起始地址、结束地址、以及长度。
在一些实施例中,每个第二字段可以至少包括与相应数据记录相对应的数据的散列值。
在一些实施例中,与相应数据记录相对应的数据可以至少包括恶意应用安装包。
在一些实施例中,每个第三字段可以包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
在一些实施例中,维护请求的类型可以是以下各项之一:更新请求、插入请求、删除请求、以及前述各项的任意组合。
在一些实施例中,如果维护请求是更新请求,则步骤S470可以包括:(S471)基于第一字段,加载索引段;(S472)在索引段中搜索具有与更新请求中包括的数据识别信息相匹配的第二字段的第一索引记录;以及(S473)根据第一索引记录的第三字段来定位相应的第一数据记录;(S474)根据第一数据记录的当前长度以及预期的其更新后的长度之间的差值,来相应调整第一数据记录的后续数据记录的定位;(S475)使用更新请求中包括的更新数据来更新第一数据记录中的部分或全部数据;以及(S476)根据更新后的第一数据记录的定位以及第一数据记录的后续数据记录的调整后的定位,更新索引段中相应索引记录的第三字段。
在一些实施例中,步骤S472还可以包括:如果在索引段中搜索到具有与更新请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据更新请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定更新请求所针对的第一索引记录。
在一些实施例中,步骤S474还可以包括以下各项之一:如果差值小于零,则将第一数据记录的后续数据记录的定位向远离文件头的方向移动差值的绝对值;如果差值大于零,则将第一数据记录的后续数据记录的定位朝向文件头的方向移动差值;或者如果差值为零,则第一数据记录的后续数据记录的定位不变。
在一些实施例中,如果在步骤S472中未找到第一索引记录,则步骤S470直接结束,且步骤S480可以进一步包括:返回指示未找到相应数据记录的更新结果。
在一些实施例中,如果维护请求是插入请求,则步骤S470可以包括:(S471′)基于第一字段,加载索引段;(S472′)基于插入请求中包括的数据识别信息,确定在索引段中要插入与插入请求相对应的第一索引记录的第一索引定位;(S473′)在第一索引定位处插入第一索引记录,第一索引记录具有与插入请求中包括的数据识别信息相匹配的第二字段;(S474′)根据与第一索引记录相邻的两侧索引记录的第三字段,确定要插入数据段中的与插入请求相对应的第一数据记录的第一数据定位;(S475′)根据要插入的第一数据记录的长度,相应调整其后续数据记录的定位;(S476′)在第一数据定位处插入第一数据记录;(S477′)根据第一数据记录的定位以及其后续数据记录的调整后的定位,更新索引段中相应索引记录的第三字段;以及(S478′)将第一字段增加第一索引记录的长度。
在一些实施例中,步骤S472′还可以包括:如果在索引段中搜索到具有与插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录,则根据插入请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定是否存在与插入请求相匹配的第一索引记录;如果存在,则步骤S470直接结束,且在步骤S480中返回指示插入失败的插入结果,否则根据搜索到的一条或多条第一索引记录中的最远离文件头的第一索引记录的定位,来确定要插入的索引记录的定位。
在一些实施例中,如果维护请求是删除请求,则步骤(S470)包括:(S471″)基于第一字段,加载索引段;(S472″)基于删除请求中包括的数据识别信息,确定在索引段中要删除的第一索引记录及其第一索引定位;(S473″)根据第一索引记录的第三字段,确定数据段中的要删除的第一数据记录的第一数据定位;(S474″)根据第一数据定位,删除第一数据记录,并相应调整其后数据记录的定位;(S475″)根据调整后的数据记录的定位,更新索引段中相应索引记录的第三字段;(S476″)根据第一索引定位,删除第一索引记录,并相应调整其后索引记录的定位;以及(S477″)将第一字段减少第一索引记录的长度。
在一些实施例中,步骤S472″还可以包括:如果在索引段中搜索到具有与删除请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据删除请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定删除请求所针对的第一索引记录及其第一索引定位。
在一些实施例中,如果在步骤S472″中未找到第一索引记录,则步骤S470可以直接结束,且步骤S480可以进一步包括:返回指示未找到相应数据记录的删除结果。
在一些实施例中,索引段中包括的一条或多条索引记录可以是按第二字段排序的,以及步骤S472、S472′、或S472″可以是通过在索引段中使用二分查找算法来实现的。
在一些实施例中,每个索引记录还包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且步骤S472、S472′、或S472″可以进一步包括:当在索引段中第一次搜索到具有与查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录,以及步骤S470还可以包括:如果维护请求是插入请求,则在插入结果指示插入成功的情况下,将具有与插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近文件头的第一索引记录的第四字段增加1;以及如果维护请求是删除请求,则在删除结果指示删除成功的情况下,将具有与删除请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近文件头的第一索引记录的第四字段减少1。
在一些实施例中,如果维护请求是包括更新请求、插入请求和删除请求中任意一项或多项在内的组合式请求,则步骤S470还可以包括:针对组合式请求中的各单项请求,顺序执行每个单项请求。
至此已经结合优选实施例对本发明进行了描述。应该理解,本领域技术人员在不脱离本发明的精神和范围的情况下,可以进行各种其它的改变、替换和添加。因此,本发明的范围不局限于上述特定实施例,而应由所附权利要求所限定。
Claims (30)
1.一种用于在库文件中查询数据的方法,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同,所述方法包括:
(a)接收用于在所述库文件中查询数据的查询请求;
(b)基于所述第一字段,加载所述索引段;
(c)在所述索引段中搜索具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录;以及
(d)根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。
2.根据权利要求1所述的方法,其中,所述第一字段包括以下各项中的至少两项:所述索引段的起始地址、结束地址、以及长度。
3.根据权利要求1所述的方法,其中,每个第二字段至少包括与相应数据记录相对应的数据的散列值。
4.根据权利要求3所述的方法,其中,与相应数据记录相对应的数据至少包括恶意应用安装包。
5.根据权利要求1所述的方法,其中,每个第三字段包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
6.根据权利要求1所述的方法,其中,所述索引段中包括的一条或多条索引记录是按第二字段排序的,以及步骤(c)是通过在所述索引段中使用二分查找算法来实现的。
7.根据权利要求6所述的方法,其中,每个索引记录还包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且步骤(c)进一步包括:
当在所述索引段中第一次搜索到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向所述文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据所述最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录。
8.根据权利要求7所述的方法,其中,步骤(d)进一步包括:
根据搜索到的一条或多条索引记录各自的第三字段,定位并返回相应的数据记录中的全部或部分数据。
9.根据权利要求7所述的方法,其中,所述数据段中包括的一条或多条数据记录的顺序与所述索引段中对应的一条或多条索引记录的顺序相同,步骤(d)进一步包括:
根据搜索到的多条索引记录中最接近所述文件头的索引记录的第三字段和搜索到的多条索引记录中最远离所述文件头的索引记录的第三字段,定位并返回相应的数据记录中的全部或部分数据。
10.根据权利要求1所述的方法,其中,如果在步骤(c)中未找到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录,则步骤(d)进一步包括:返回指示未找到相应数据记录的查询结果。
11.一种用于在库文件中查询数据的设备,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同,所述设备包括:
接收单元,用于接收用于在所述库文件中查询数据的查询请求;
加载单元,用于基于所述第一字段,加载所述索引段;
搜索单元,用于在所述索引段中搜索具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录;以及
返回单元,用于根据搜索到的索引记录的第三字段来定位并返回相应的数据记录中的全部或部分数据。
12.一种用于在库文件中维护数据的方法,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同,所述方法包括:
(a)接收用于在所述库文件中维护数据的维护请求;
(b)基于所述维护请求,分别维护所述文件头、所述索引段和所述数据段;以及
(c)返回针对所述维护请求的维护结果。
13.根据权利要求12所述的方法,其中,所述第一字段包括以下各项中的至少两项:所述索引段的起始地址、结束地址、以及长度。
14.根据权利要求12所述的方法,其中,每个第二字段至少包括与相应数据记录相对应的数据的散列值。
15.根据权利要求14所述的方法,其中,与相应数据记录相对应的数据至少包括恶意应用安装包。
16.根据权利要求12所述的方法,其中,每个第三字段包括以下各项中的至少两项:相应数据记录的起始地址、结束地址、以及长度。
17.根据权利要求12所述的方法,其中,所述维护请求的类型是以下各项之一:更新请求、插入请求、删除请求、以及前述各项的任意组合。
18.根据权利要求17所述的方法,其中,如果所述维护请求是更新请求,则步骤(b)包括:
(b11)基于所述第一字段,加载所述索引段;
(b12)在所述索引段中搜索具有与所述更新请求中包括的数据识别信息相匹配的第二字段的第一索引记录;以及
(b13)根据所述第一索引记录的第三字段来定位相应的第一数据记录;
(b14)根据所述第一数据记录的当前长度以及预期的其更新后的长度之间的差值,来相应调整所述第一数据记录的后续数据记录的定位;
(b15)使用所述更新请求中包括的更新数据来更新所述第一数据记录中的部分或全部数据;以及
(b16)根据更新后的所述第一数据记录的定位以及所述第一数据记录的后续数据记录的调整后的定位,更新所述索引段中相应索引记录的第三字段。
19.根据权利要求18所述的方法,其中,步骤(b12)还包括:
如果在所述索引段中搜索到具有与所述更新请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据所述更新请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定所述更新请求所针对的第一索引记录。
20.根据权利要求19所述的方法,其中,步骤(b14)还包括以下各项之一:
如果所述差值小于零,则将所述第一数据记录的后续数据记录的定位向远离文件头的方向移动所述差值的绝对值;
如果所述差值大于零,则将所述第一数据记录的后续数据记录的定位朝向文件头的方向移动所述所述差值;或者
如果所述差值为零,则所述第一数据记录的后续数据记录的定位不变。
21.根据权利要求18所述的方法,其中,如果在步骤(b12)中未找到所述第一索引记录,则步骤(b)直接结束,且步骤(c)进一步包括:返回指示未找到相应数据记录的更新结果。
22.根据权利要求17所述的方法,其中,如果所述维护请求是插入请求,则步骤(b)包括:
(b21)基于所述第一字段,加载所述索引段;
(b22)基于所述插入请求中包括的数据识别信息,确定在所述索引段中要插入与所述插入请求相对应的第一索引记录的第一索引定位;
(b23)在所述第一索引定位处插入所述第一索引记录,所述第一索引记录具有与所述插入请求中包括的数据识别信息相匹配的第二字段;
(b24)根据与所述第一索引记录相邻的两侧索引记录的第三字段,确定要插入所述数据段中的与所述插入请求相对应的第一数据记录的第一数据定位;
(b25)根据要插入的所述第一数据记录的长度,相应调整其后续数据记录的定位;
(b26)在所述第一数据定位处插入所述第一数据记录;
(b27)根据所述第一数据记录的定位以及其后续数据记录的调整后的定位,更新所述索引段中相应索引记录的第三字段;以及
(b28)将所述第一字段增加所述第一索引记录的长度。
23.根据权利要求22所述的方法,其中,步骤(b22)还包括:
如果在所述索引段中搜索到具有与所述插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录,则根据所述插入请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定是否存在与所述插入请求相匹配的第一索引记录;
如果存在,则步骤(b)直接结束,且在步骤(c)中返回指示插入失败的插入结果,否则根据搜索到的一条或多条第一索引记录中的最远离所述文件头的第一索引记录的定位,来确定要插入的索引记录的定位。
24.根据权利要求17所述的方法,其中,如果所述维护请求是删除请求,则步骤(b)包括:
(b31)基于所述第一字段,加载所述索引段;
(b32)基于所述删除请求中包括的数据识别信息,确定在所述索引段中要删除的第一索引记录及其第一索引定位;
(b33)根据所述第一索引记录的第三字段,确定所述数据段中的要删除的第一数据记录的第一数据定位;
(b34)根据所述第一数据定位,删除所述第一数据记录,并相应调整其后数据记录的定位;
(b35)根据调整后的数据记录的定位,更新所述索引段中相应索引记录的第三字段;
(b36)根据所述第一索引定位,删除所述第一索引记录,并相应调整其后索引记录的定位;以及
(b37)将所述第一字段减少所述第一索引记录的长度。
25.根据权利要求24所述的方法,其中,步骤(b32)还包括:
如果在所述索引段中搜索到具有与所述删除请求中包括的数据识别信息相匹配的第二字段的多条第一索引记录,则根据所述删除请求中包括的用于区分具有相同第二字段的多条第一索引记录的附加数据识别信息来确定所述删除请求所针对的第一索引记录及其第一索引定位。
26.根据权利要求24所述的方法,其中,如果在步骤(b32)中未找到所述第一索引记录,则步骤(b)直接结束,且步骤(c)进一步包括:返回指示未找到相应数据记录的删除结果。
27.根据权利要求18~26中任一项所述的方法,其中,所述索引段中包括的一条或多条索引记录是按第二字段排序的,以及步骤b12、b22、或b32是通过在所述索引段中使用二分查找算法来实现的。
28.根据权利要求27所述的方法,其中,每个索引记录还包括用于指示具有与本身的第二字段相同的第二字段的索引记录的数目的第四字段,且步骤b12、b22、或b32进一步包括:
当在所述索引段中第一次搜索到具有与所述查询请求中包括的数据识别信息相匹配的第二字段的索引记录时,以搜索到的索引记录为起点,以朝向所述文件头的方向来顺序搜索具有第四字段不为1的索引记录,以定位具有相同第二字段的索引记录中的最接近文件头的索引记录,并进而根据所述最接近文件头的索引记录的第四字段来定位具有相同第二字段的所有索引记录,以及
步骤b还包括:
如果所述维护请求是插入请求,则在插入结果指示插入成功的情况下,将具有与所述插入请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近所述文件头的第一索引记录的第四字段增加1;以及
如果所述维护请求是删除请求,则在删除结果指示删除成功的情况下,将具有与所述删除请求中包括的数据识别信息相匹配的第二字段的一条或多条第一索引记录中的最接近所述文件头的第一索引记录的第四字段减少1。
29.根据权利要求17所述的方法,其中,如果所述维护请求是包括更新请求、插入请求和删除请求中任意一项或多项在内的组合式请求,则步骤(b)还包括:针对所述组合式请求中的各单项请求,顺序执行每个单项请求。
30.一种用于在库文件中维护数据的设备,其中,所述库文件至少包括文件头、索引段和数据段,所述文件头至少包括用于定位所述索引段的第一字段,所述索引段包括一条或多条索引记录,每条索引记录至少包括用于识别相应数据记录的第二字段和用于在数据段中定位所述相应数据记录的第三字段,以及所述一条或多条索引记录的长度相同,所述设备包括:
接收单元,用于接收用于在所述库文件中维护数据的维护请求;
维护单元,用于基于所述维护请求,分别维护所述文件头、所述索引段和所述数据段;以及
返回单元,用于返回针对所述维护请求的维护结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750372.1A CN103778188A (zh) | 2013-12-31 | 2013-12-31 | 用于在库文件中查询和/或维护数据的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750372.1A CN103778188A (zh) | 2013-12-31 | 2013-12-31 | 用于在库文件中查询和/或维护数据的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103778188A true CN103778188A (zh) | 2014-05-07 |
Family
ID=50570423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310750372.1A Pending CN103778188A (zh) | 2013-12-31 | 2013-12-31 | 用于在库文件中查询和/或维护数据的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103778188A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776578A (zh) * | 2018-06-01 | 2018-11-09 | 南京紫光云信息科技有限公司 | 一种快速合并对象的方法和系统 |
CN109147091A (zh) * | 2018-08-29 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 无人车数据的处理方法、装置、设备和存储介质 |
CN109272602A (zh) * | 2018-08-29 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 无人车数据的录制方法、装置、设备和存储介质 |
CN109408696A (zh) * | 2018-09-30 | 2019-03-01 | 上海掌门科技有限公司 | 一种用于搜索寄宿程序的方法与设备 |
CN111061699A (zh) * | 2019-11-05 | 2020-04-24 | 广西电网有限责任公司 | 一种电能表数据库版本更新的方法及装置 |
CN111984591A (zh) * | 2019-05-21 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 文件存储、读取方法、装置、设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1492362A (zh) * | 2002-10-25 | 2004-04-28 | 联想(北京)有限公司 | 一种嵌入式数据库的数据备份和恢复方法 |
CN1752888A (zh) * | 2005-11-08 | 2006-03-29 | 朱林 | 用于移动/智能终端的病毒特征提取和检测系统及方法 |
CN101192226A (zh) * | 2006-12-01 | 2008-06-04 | 中兴通讯股份有限公司 | 一种基于定长记录的数据库的数据存取方法 |
CN102298641A (zh) * | 2011-09-14 | 2011-12-28 | 清华大学 | 一种基于键值库的文件与结构化数据统一存储方法 |
CN102867144A (zh) * | 2012-09-06 | 2013-01-09 | 北京奇虎科技有限公司 | 一种用于检测和清除计算机病毒的方法和装置 |
-
2013
- 2013-12-31 CN CN201310750372.1A patent/CN103778188A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1492362A (zh) * | 2002-10-25 | 2004-04-28 | 联想(北京)有限公司 | 一种嵌入式数据库的数据备份和恢复方法 |
CN1752888A (zh) * | 2005-11-08 | 2006-03-29 | 朱林 | 用于移动/智能终端的病毒特征提取和检测系统及方法 |
CN101192226A (zh) * | 2006-12-01 | 2008-06-04 | 中兴通讯股份有限公司 | 一种基于定长记录的数据库的数据存取方法 |
CN102298641A (zh) * | 2011-09-14 | 2011-12-28 | 清华大学 | 一种基于键值库的文件与结构化数据统一存储方法 |
CN102867144A (zh) * | 2012-09-06 | 2013-01-09 | 北京奇虎科技有限公司 | 一种用于检测和清除计算机病毒的方法和装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776578A (zh) * | 2018-06-01 | 2018-11-09 | 南京紫光云信息科技有限公司 | 一种快速合并对象的方法和系统 |
CN109147091A (zh) * | 2018-08-29 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 无人车数据的处理方法、装置、设备和存储介质 |
CN109272602A (zh) * | 2018-08-29 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 无人车数据的录制方法、装置、设备和存储介质 |
CN109147091B (zh) * | 2018-08-29 | 2022-04-19 | 百度在线网络技术(北京)有限公司 | 无人车数据的处理方法、装置、设备和存储介质 |
CN114780493A (zh) * | 2018-08-29 | 2022-07-22 | 百度在线网络技术(北京)有限公司 | 无人车数据的处理方法、装置、设备和存储介质 |
CN109408696A (zh) * | 2018-09-30 | 2019-03-01 | 上海掌门科技有限公司 | 一种用于搜索寄宿程序的方法与设备 |
CN111984591A (zh) * | 2019-05-21 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 文件存储、读取方法、装置、设备及计算机可读存储介质 |
CN111061699A (zh) * | 2019-11-05 | 2020-04-24 | 广西电网有限责任公司 | 一种电能表数据库版本更新的方法及装置 |
CN111061699B (zh) * | 2019-11-05 | 2024-02-09 | 广西电网有限责任公司 | 一种电能表数据库版本更新的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103778188A (zh) | 用于在库文件中查询和/或维护数据的方法和设备 | |
Jeon et al. | A recovery method of deleted record for SQLite database | |
US8788473B2 (en) | Matching transactions in multi-level records | |
JP5721627B2 (ja) | データベースストレージスペースを節約するための方法及びシステム | |
US20050210054A1 (en) | Information management system | |
US9742640B2 (en) | Identifying compatible web service policies | |
JP2006501529A5 (zh) | ||
CN102870116B (zh) | 内容匹配方法和装置 | |
KR20160109870A (ko) | 안드로이드 멀웨어의 고속 검색 시스템 및 방법 | |
CN111651468A (zh) | 基于sql解析的数据更新方法、装置、电子设备及存储介质 | |
US11163726B2 (en) | Context aware delta algorithm for genomic files | |
EP3343395B1 (en) | Data storage method and apparatus for mobile terminal | |
US20080115131A1 (en) | Express task manager system and method | |
CN113590144A (zh) | 一种依赖处理方法及装置 | |
US11917090B2 (en) | Methods and systems for tracking ownership of goods with a blockchain | |
CN116150093B (zh) | 一种对象存储列举对象的实现方法及电子设备 | |
CN111858609A (zh) | 区块链模糊查询方法及装置 | |
CN112650964B (zh) | 一种业务处理方法、设备及机器可读存储介质 | |
CN116263770A (zh) | 基于数据库的业务数据存储方法、装置、终端设备及介质 | |
CN112612817A (zh) | 数据处理方法、装置、终端设备及计算机可读存储介质 | |
KR101299555B1 (ko) | 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 | |
CN118797191A (zh) | 一种url处理方法、装置、存储介质及电子设备 | |
CN111311329B (zh) | 标签数据获取方法、装置、设备及可读存储介质 | |
CN116383192A (zh) | 数据查询方法、装置、设备及存储介质 | |
US20180300320A1 (en) | Non-transitory computer-readable storage medium, management method, and management apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140507 |
|
WD01 | Invention patent application deemed withdrawn after publication |