一种嵌入式系统的数据存放及其查找方法

文档序号:6595897阅读:174来源:国知局
专利名称:一种嵌入式系统的数据存放及其查找方法
技术领域
本发明涉及一种嵌入式系统的数据处理技术,特别涉及一种嵌入式系统的数据存放及其查找方法。
背景技术
目前,很多嵌入式系统引入了嵌入式数据库。嵌入式数据库对嵌入式产品有着十分重要的意义,其能够满足嵌入式系统对数据处理和数据交换等要求,它和嵌入式操作系统有机地结合在一起,为应用开发人员提供有效的数据管理手段,同时提供各种定制条件和方法。
数据的存储与索引是嵌入式数据库的核心技术,也是决定数据库存储效率的关键技术,一个快速、灵活、高效的数据存储和索引方法是数据库研发中最为基本又最为重要的环节之一,其质量的优劣直接决定了数据的存取速度和查询速度等主要技术指标;同时,存储与索引两者之间又是互相依赖的,通过一对匹配的索引和存储技术间共同协调工作,才能有效地完成数据的存储与查询。嵌入式数据库中的数据一般都采用二进制进行存储,这样保证了嵌入式数据库的平台无关性,同时有利于提高查找速度。
现有大型数据库系统的数据库存储和索引技术,如IBM的DB2,Microsoft的SQL Server等,采用复杂的多级索引和动态散列结构对数据进行处理,并采用并行分布式系统对数据资料进行管理,可在很大程度上提高数据的存取速度和效率,但必须建立在高速系统、大容量硬盘、内存及高速的并行机制基础上,受这些条件的限制,显然不能将这些成熟的数据存放与索引技术平滑地移植到象嵌入式这样的低性能、单一节点的设备所使用的数据库中。
现有的嵌入式设备由于自身特点的不同对嵌入式数据库进行数据处理的要求也有所不同有的嵌入式设备如PDA、手机等存储空间小,对数据的并发操作要求低;而有的嵌入式设备,如Handle PC、终端机、机顶盒等具有相对较大的磁盘空间,要求对数据具有相当大的并发操作能力,又同时希望有足够的索引以提高数据查找速度。
对于存储空间小,对数据的并发操作要求低的嵌入式系统,可以采用全散列技术将记录和索引存放在同一个数据文件中,它将记录中的数据以域(即字段)为单位进行拆分,将这个记录的每一个域都散列存放在这个数据文件的相应索引中,实际上这个数据文件不存在记录的实体,而是每个域的索引数据的组合,由于每个域上都存在索引,通过查找每个索引中该记录的相应域的数值,然后进行数据组装从而得到完整的记录数据。这种技术由于表单各域都有相应的索引,各个域的数据都存放在相应的索引中,而不存在数据的实体,在很大程度上节省了磁盘占用空间,同时,由于数据完全散列的存放,使得用户可以方便的在表单的任何域上做查询操作而不影响查询效率。但由于所有的表单操作都是在一个数据文件中进行,使得对这种表单的数据并发性操作受到了一定程度的影响。
可见,全散列技术由于并发性受到了影响而并不适用于具有相对较大的磁盘空间,要求对数据具有相当大的并发操作能力,又同时希望有足够的索引以提高数据查找速度的嵌入式系统。目前对于这类嵌入式系统还没有较好的数据存储和查找的方法来解决并发性和提高数据查找速度的问题。

发明内容
有鉴于此,本发明的目的在于提供一种嵌入式系统的数据存放及其查找方法,具有相当大的并发操作能力,同时又能够提高嵌入式系统数据查找的速度和效率。
为达到上述目的,本发明的技术方案具体是这样实现的一种嵌入式系统的数据存放及其查找方法,其特征在于,该方法包括
数据存放过程,其包括建立表单,将记录存放在数据文件中;和为表单中用户所指定的一个或多个域建立一个或多个域索引文件,将索引信息写入域索引文件,并将表单的数据文件和域索引文件进行绑定;如果用户没有指定域则建立简单索引文件,将索引信息写入简单索引文件;数据查找过程,其通过在域索引文件中查找数据的索引信息,或没有域索引文件时在简单索引文件中查找数据的索引信息来进行数据查找。
该方法中,写入域索引文件的索引信息可以包含每条记录在该域的内容、记录在数据文件中的具体位置和该记录的大小;写入简单索引文件的索引信息可以包含每条记录在数据文件中的具体位置和该记录的大小。
该方法步骤2)所述的建立域索引文件的过程可以为对用户所指定的各个域的数据分别通过哈希运算得到哈希结果值,将哈希结果值填入索引文件中的哈希表,根据哈希表将索引信息填入索引文件中的B+树。步骤3)所述的在域索引文件中查找数据的索引信息的过程可以为根据欲查找数据的一个或多个域比较条件,先进行哈希运算得到各个条件的哈希值,再根据各个域索引文件中的哈希表,到各个域索引文件中的B+树中查找各个域的索引信息。
步骤2)所述的将表单的数据文件和域索引文件进行绑定的方法可以为将该表单的数据文件和域索引文件存放在同一目录中。
步骤3)所述的在简单索引文件中查找数据的索引信息的可以过程为遍历简单索引文件查找该条记录的索引信息。
该方法可以进一步包括如果表单建立了域索引文件,则将简单索引文件删除。
该方法还可以进一步包括,删除记录的过程为从域索引文件或简单索引文件中查找到该记录的索引信息并标记删除。域索引文件中标记删除的索引信息,可以在添加新记录时,用新记录的索引信息代替。简单索引文件中标记删除的索引信息,用不能重用标记代替。
该方法还可以进一步包括在删除域的索引时,先判断该域所在的表单是否还有其他的域索引文件,如果有则直接删除该域的域索引文件;如果没有则建立简单索引文件,根据该域的域索引文件遍历整个表单,将索引信息写入简单索引文件,再删除该域的域索引文件。
该方法还可以进一步包括在对表单的结构进行修改时,建立一个与修改后的表单结构相同的临时表单,遍历整个原表单,将原表单的所有记录插入临时表单,再将原表单用临时表单替换。
因此,本发明的这种嵌入式系统的数据存放及其查找方法,具有相当大的并发操作能力,同时又能够提高嵌入式系统数据查找的速度和效率。本发明是一种以索引文件为基本单位的数据多索引技术,它使得嵌入式数据库实现了数据多索引交叉查找数据技术,优化提高了嵌入式数据库数据查找速度及效率,减少了因数据查找而带来的CPU计算负担和内存负担,提高了嵌入式数据库在嵌入式设备的适用性。


图1为本发明方案一个较佳实施例的建立第一个域索引文件的过程示意图;图2为图1所示实施例中建立另一个域索引文件的过程示意图;图3为图1所示实施例的表单索引结构示意图;图4为图1所示实施例进行数据查找并删除的过程示意图;图5为图1所示实施例进行添加记录的过程示意图;图6为图1所示实施例进行添加域的过程示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
本发明是为了适应具有相对较大的磁盘空间,要求对数据具有相当大的并发操作能力,又同时希望有足够的索引以提高数据查找速度的嵌入式系统,发明的一种多索引技术。多索引技术的基本方法是将记录的数据和索引分开在不同的文件中进行存储,用户可以灵活的指定想要建立索引的域,即一个表单由一个数据文件和若干个索引文件组成,由于数据实体和索引文件分开,使得一条记录的某些数据在数据文件和索引文件中重复出现,虽然加大了数据的存储冗余量,但提高了数据的查询效率。又由于数据和索引存放在不同的文件中,从而减少了并发操作时的冲突,提高了并发操作数据库的效率。
本发明的实施方法包括以下步骤第一步建立表单,将记录以二进制形式存放在数据文件中。嵌入式数据库中的数据一般都采用二进制进行存储,这样保证了嵌入式数据库的平台无关性,同时有利于提高查找速度。
第二步为表单中用户所指定的一个或多个域建立一个或多个域索引文件,将索引信息写入域索引文件,并将表单的数据文件和域索引文件进行绑定;如果用户没有指定域则建立简单索引文件,将索引信息写入简单索引文件。
在用户刚建立表单并在这个表单中建立了几个域时,因为并没有建立任何索引,所以系统自动在这个表单中建立一个缺省的不依赖于任何域的简单索引文件。因为数据文件中的记录是以二进制存放,所以用一个索引对数据文件中的记录加以区分。
此时,用户可以指定域建立域索引文件,参见图1,本发明方案一个较佳实施例的建立第一个域索引文件的过程示意图。
表单在没有建立域索引文件时,系统自动建立简单索引文件。如图1所示,简单索引文件101中包含了每条记录的索引信息及被删除的索引信息等所有索引信息102;如果用户想在一个没有索引的表单的域1上建立索引,则执行步骤103,嵌入式数据库根据简单索引文件中的索引信息遍历整个表单,取出所有的记录,再通过哈希运算得到哈希结果值,将哈希结果值填入域索引文件中的哈希表,根据哈希表将索引信息填入索引文件中的B+树,即将每条记录在域1的索引数据连同索引信息一起写入索引文件,这样完成步骤104,建立了域1的域索引文件。然后,将域1的域索引文件存放在该表单数据文件所在的目录中。最后,删除已经不再有用的简单索引文件,因为嵌入式数据库不再维护这个简单索引文件。简单索引是当一个表单用户没有显式的建立索引时建立起来的索引,他不与任何域进行捆绑,同时,它的存在与一般索引文件的存在是互斥的,如果用户在表单某一个域上建立了索引,则这个简单索引将被删除,如果这个表单不存在任何索引,则系统会自动建立简单索引文件。
表一为简单索引文件内容表。如表一所示,简单索引文件仅仅包含这个表单中所有记录在数据文件的具体位置以及大小的信息,新的记录插入表单时,它在数据文件中的具体位置信息和数据大小被写入简单索引文件的末尾,一条记录被删除后,为保证记录插入表单的时序性,这条记录在简单索引文件中所占用的空间将被不能重用标记-1代替而不能重用。

表一域索引文件中的索引数据是指哈希值、索引信息在B+树中的位置等,域索引文件中的索引信息则包含每条记录在该域的内容、记录在数据文件中的具体位置和该记录的大小。
用户还可以指定其他多个域建立域索引文件,参见图2,图2为图1所示实施例中建立另一个域索引文件的过程示意图。如图2所示,表单已经在域1上存在索引,若用户要在域3上创建新的索引,则执行步骤201,数据库遍历已存在的域1的域索引文件,然后执行步骤202,通过哈希运算得到新的索引数据连同索引信息一起填充到域3的索引文件中,这样完成步骤203,建立了域3的域索引文件。然后,将域3的域索引文件存放在该表单数据文件所在的目录中。如果用户还需要为其他域建立索引文件,方法同上。
本实施例为表单建立了3个域索引文件,其索引结构参见图3,图3为图1所示实施例的表单索引结构示意图。如图3所示,该表单包含5个域域1-域5,其中域1建立了域索引文件301、域3建立了域索引文件302、域5建立了域索引文件303,域2、域4没有索引。域索引文件301、302和303是根据各个域的数据信息建立的,其包含各个域通过哈希算法计算得到的索引数据和与该域的数据一一对应的索引信息。
第三步表单建立了索引结构后就可以通过在域索引文件中查找数据的索引信息,或没有域索引文件时在简单索引文件中查找数据的索引信息来进行数据查找。在有域索引文件,对记录进行查找时,本发明的多索引记录存储方式使得用户可以进行选择查找,即用户只需指定某些域的比较条件对满足这些比较条件的记录进行查找。参见图4,图4为图1所示实施例进行数据查找并删除的过程示意图。如图4所示,如用户希望删除域1符合条件1,域2符合条件2,域3符合条件3的某些记录。如图中1、2所示用户在域1和域3上都建立了索引,因此首先执行步骤401和402数据库根据域1和域3的索引,通过计算条件1和条件3的哈希值,根据哈希表找出同时满足这两个条件的记录链3;再执行步骤403在这个记录链中进行查找,找出满足域2符合条件2的这些记录;对于满足3个条件的记录4,执行步骤404将这些记录在所有索引文件中进行标识,标识它们已被删除,这样就完成了用户提交的记录条件删除命令;如图中5、6、7所示被标记删除的各域的索引信息包含该记录在该域的数据内容、记录所在数据文件的具体位置数据长度等。
本发明并不将索引信息和数据文件的实际内容删除,这是因为对记录的查询等所有操作都是首先查找索引进行的,而在索引中不存在该记录的索引信息,就无法找到该记录,就好像这条记录根本不存在一样,达到了和删除记录同样的效果。由于不需要删除整条记录,提高了删除记录的效率,而且这种方法不必释放这条记录所占用的磁盘空间,这些磁盘空间还可以在增加新记录时被重新利用而不会废置,不会浪费磁盘空间。同时,这样还保证了在需要撤消删除操作时,数据仍然保留,不会造成数据丢失。
在简单索引文件中查找数据的索引信息来进行数据查找的方法很简单,只需遍历整个表单查找该条记录的索引信息,根据索引信息提供的记录在数据文件中的位置和记录的大小,就可以在数据文件中查找到该记录。
当有新的记录写入表单时,如果没有建立域索引文件只需将新记录写入数据文件的末尾,并将数据文件中的具体位置信息的数据大小写入简单索引文件的末尾即可。如果表单已建立域索引文件,其写入过程参见图5,图5为图1所示实施例进行添加记录的过程示意图。如图5所示,首先执行步骤501,数据库遍历已建立的域索引文件,接着执行步骤502,判断是否有标记删除的信息,如果没有标记删除的索引信息,则进入步骤505,将新记录写入数据文件末尾并通过哈希运算得到哈希结果值,到索引文件中的哈希表中查找哈希结果值,根据哈希表将索引信息添加到B+树中;如果有标记删除的索引信息,则执行步骤503,将新记录的索引信息与被标记删除的索引信息进行比较;如果新记录的索引信息与被标记删除的索引信息中数据的大小相同,则执行步骤504,通过哈希运算得到新记录的哈希结果值,将哈希结果值到索引文件中的哈希表中查找,根据哈希表将索引信息添加到B+树中,并将新记录的索引信息代替标记删除的索引信息,取消删除标记,同时按索引信息中该记录在数据文件中的地址,将新记录的数据写入到数据文件中。如果新记录的索引信息与被标记删除的索引信息中数据的大小不同,则执行步骤505。
在表单的结构进行修改时,如建立/删除/修改域时,将会影响到整个表单的所有记录在数据文件中的位置等信息,为保证每个索引文件都能正确的反映出表单记录的索引信息,数据库建立一个临时的表单,这个临时表单的结构形式与建立/删除/修改域后这个表的结构相同。例如,用户在本实施例的这个表单中建立一个新域——域6,参见图6,图6为图1所示实施例进行添加域的过程示意图。如图6所示,首先步骤601,建立一个包含域6的临时表单;然后执行步骤602,遍历整个表单,将原表单中所有记录插入临时表单,由于插入记录时这些记录在临时表单中的索引信息会与记录保持一致,因此达到了修改表单结构的目的,同时又不会因为操作过程中的错误而影响到原表单的数据,最后,执行步骤603,将原表单用临时表单替换,完成表单结构修改操作。
图6中还示出了临时表单的结构,其不仅包含了原表单的5个域及其域1、3、5的索引信息,还包含了新建的域6。
由此可见,本发明的这种嵌入式系统的数据存放及其查找方法,具有相当大的并发操作能力,同时又能够提高嵌入式系统数据查找的速度和效率。是一种以索引文件为基本单位的数据多索引技术,它使得嵌入式数据库实现了数据多索引交叉查找数据技术,优化提高了嵌入式数据库数据查找速度及效率,减少了因数据查找而带来的CPU计算负担和内存负担,提高了嵌入式数据库在嵌入式设备的适用性。同时,由于这种方法的平台无关性和语言无关性,可以方便地移植到各种嵌入式平台和应用程序中,有着广泛的应用前景。
权利要求
1.一种嵌入式系统的数据存放及其查找方法,其特征在于,该方法包括数据存放过程,其包括建立表单,将记录存放在数据文件中;和为表单中用户所指定的一个或多个域建立一个或多个域索引文件,将索引信息写入域索引文件,并将表单的数据文件和域索引文件进行绑定;如果用户没有指定域则建立简单索引文件,将索引信息写入简单索引文件;数据查找过程,其通过在域索引文件中查找数据的索引信息,或没有域索引文件时在简单索引文件中查找数据的索引信息来进行数据查找。
2.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于写入域索引文件的索引信息包含每条记录在该域的内容、记录在数据文件中的具体位置和该记录的大小。
3.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于写入简单索引文件的索引信息包含每条记录在数据文件中的具体位置和该记录的大小。
4.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于,步骤2)所述的建立域索引文件的过程为对用户所指定的各个域的数据分别通过哈希运算得到哈希结果值,将哈希结果值填入索引文件中的哈希表,根据哈希表将索引信息填入索引文件中的B+树;步骤3)所述的在域索引文件中查找数据的索引信息的过程为根据欲查找数据的一个或多个域比较条件,先进行哈希运算得到各个比较条件的哈希值,再根据各个域索引文件中的哈希表,到各个域索引文件中的B+树中查找各个域的索引信息。
5.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于,步骤2)所述的将表单的数据文件和域索引文件进行绑定的方法为将该表单的数据文件和域索引文件存放在同一目录中。
6.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于,步骤3)所述的在简单索引文件中查找数据的索引信息的过程为遍历简单索引文件查找该条记录的索引信息。
7.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于,该方法进一步包括如果表单建立了域索引文件,则将简单索引文件删除。
8.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于,该方法进一步包括,删除记录的过程为从域索引文件或简单索引文件中查找到该记录的索引信息并标记删除。
9.如权利要求8所述的嵌入式系统的数据存放及其查找方法,其特征在于,该方法进一步包括域索引文件中标记删除的索引信息,在添加新记录时,用新记录的索引信息代替标记删除的索引信息。
10.如权利要求8所述的嵌入式系统的数据存放及其查找方法,其特征在于,该方法进一步包括简单索引文件中标记删除的索引信息,用不能重用标记代替。
11.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于,该方法进一步包括在删除域的索引时,先判断该域所在的表单是否还有其他的域索引文件,如果有则直接删除该域的域索引文件;如果没有则建立简单索引文件,根据该域的域索引文件遍历整个表单,将索引信息写入简单索引文件,再删除该域的域索引文件。
12.如权利要求1所述的嵌入式系统的数据存放及其查找方法,其特征在于,该方法进一步包括在对表单的结构进行修改时,建立一个与修改后的表单结构相同的临时表单,遍历整个原表单,将原表单的所有记录插入临时表单,再将原表单用临时表单替换。
全文摘要
本发明公开了一种嵌入式系统的数据存放及其查找方法,数据存放过程包括建立表单,将记录存放在数据文件中;和为表单中用户所指定的一个或多个域建立一个或多个域索引文件,将索引信息写入域索引文件,并将表单的数据文件和域索引文件进行绑定;如果用户没有指定域则建立简单索引文件,将索引信息写入简单索引文件;查找过程为通过在域索引文件中查找数据的索引信息,或没有域索引文件时在简单索引文件中查找数据的索引信息来进行数据查找。本发明方法具有相当大的并发操作能力,能够提高嵌入式系统数据查找的速度和效率,且具有平台无关性和语言无关性,可以方便地移植到各种嵌入式平台和应用程序中,有着广泛的应用前景。
文档编号G06F17/30GK1492363SQ02145960
公开日2004年4月28日 申请日期2002年10月25日 优先权日2002年10月25日
发明者丁刚, 杨柏梁, 孙雅莎, 丁 刚 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1