数据管理方法、装置和系统转让专利

申请号 : CN201010136562.0

文献号 : CN101833511B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王夕军宋显建

申请人 : 瑞斯康达科技发展股份有限公司

摘要 :

本发明提供了一种数据管理方法、装置和系统。涉及嵌入式系统;解决了传统配置数据管理方式效率低实现复杂的问题。该方法包括:分别为嵌入式系统中各功能模块建立对应的RAM数据表;在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据。本发明提供的技术方案适用于嵌入式系统中。

权利要求 :

1.一种数据管理方法,其特征在于,对嵌入式系统中各个功能模块的配置数据格式统一管理,包括:分别为嵌入式系统中各功能模块建立对应的RAM数据表,每个RAM数据表中以记录列表为单位存储配置数据,记录列表为一数组,所述RAM数据表包括至少一个索引,每个索引对应一个正向索引表和一个反向索引表,所述正向索引表按所述RAM数据表中各记录列表的该索引值从小到大的顺序存储各记录列表的记录编号,所述反向索引表存储该RAM数据表中各记录列表的记录名次;

在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据,包括:创建包含所述配置数据的待存储的记录列表,每个记录列表均包含一个主键;当所述RAM数据表中不存在与所述待存储的记录列表中所包含的主键字段相同的记录列表,则在该RAM数据表的尾部添加所述待存储的记录列表,然后使用快速排序算法对所述RAM数据表的所有索引字段对应的正向索引表重新排序,并根据重新排序后的正向索引表更新反向索引表。

2.根据权利要求1所述的数据管理方法,其特征在于,所述在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据的步骤还包括:当所述RAM数据表中存在与所述待存储的记录列表中所包含的主键字段相同的记录列表,则不添加所述待存储的记录列表。

3.根据权利要求1所述的数据管理方法,其特征在于,还包括:

接收检索记录指令,该指令中包含至少一个检索条件;

根据各检索条件分别进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值;

取各检索结果集合的交集作为检索记录的检索结果。

4.根据权利要求3所述的数据管理方法,其特征在于,所述取各检索结果集合的交集作为检索记录的检索结果的步骤包括:分别为各个检索结果集合构建一个位图,该位图的第k bit对应RAM数据表中记录编号为k的记录列表;

将后一检索结果集合累加到其之前的检索结果集合交集中,得到交集的位图,将该位图中交集内的记录列表对应的bit值置为1;

在取完全部检索结果集合的交集后,将最终获取的位图中bit值为1的bit对应的记录列表的集合作为检索结果。

5.根据权利要求1所述的数据管理方法,其特征在于,该方法还包括:接收修改指令,所述修改指令中包含至少一个检索条件;

根据所述检索条件,检索到相应的记录列表;

对所述记录列表进行修改。

6.根据权利要求1所述的数据管理方法,其特征在于,该方法还包括:接收删除指令,所述删除指令中包含至少一个检索条件;

根据所述检索条件,检索到相应的记录列表;

删除所述记录列表。

7.根据权利要求1所述的数据管理方法,其特征在于,该方法还包括:接收检索下一个记录指令,该指令中包含至少一个检索条件;

根据各检索条件依次进行检索,分别获取各有效检索条件的检索结果集合;

取各检索结果集合的交集;

查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述交集中的各记录列表的记录名次;

将记录名次最小的记录列表作为检索下一个记录的检索结果。

8.根据权利要求1所述的数据管理方法,其特征在于,还包括:

建立NVRAM数据库,在所述NVRAM数据库中分别为嵌入式系统中各功能模块建立对应的NVRAM数据表,所述NVRAM存储数据表的当前记录和容量;

通过直接读写裸介质在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步。

9.根据权利要求8所述的数据管理方法,其特征在于,所述通过直接读写裸介质在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步的步骤包括:采用直接读取裸介质的方式将所述NVRAM数据表中的记录列表读取到内存中,加入到对应的RAM数据表内,并删除所述NVRAM中存储的记录列表;及,检查RAM数据表内各记录列表的同步标志,将该同步标志为未同步状态的记录列表写入对应的NVRAM数据表内,并将所述记录列表的同步标志改为已同步状态。

10.一种数据管理装置,其特征在于,所述数据管理装置用于对嵌入式系统中各个功能模块的配置数据格式统一管理,包括:RAM数据表建立模块,用于分别为嵌入式系统中各功能模块建立对应的RAM数据表,每个RAM数据表中以记录列表为单位存储配置数据,记录列表为一数组,所述RAM数据表包括至少一个索引,每个索引对应一个正向索引表和一个反向索引表,所述正向索引表按所述RAM数据表中各记录列表的该索引值从小到大的顺序存储各记录列表的记录编号,所述反向索引表存储该RAM数据表中各记录列表的记录名次;

数据存储模块,用于在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据,包括:创建包含所述配置数据的待存储的记录列表,每个记录列表均包含一个主键;

当所述RAM数据表中不存在与所述待存储的记录列表中所包含的主键字段相同的记录列表,则在该RAM数据表的尾部添加所述待存储的记录列表,然后使用快速排序算法对所述RAM数据表的所有索引字段对应的正向索引表重新排序,并根据重新排序后的正向索引表更新反向索引表;

检索下一个记录模块,用于接收检索下一个记录指令,该指令中包含至少一个检索条件,根据所述检索条件依次对所述数据存储模块存储的RAM数据表数据组进行检索,分别获取各有效检索条件的检索结果集合,查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述检索结果集合中的各记录列表的记录名次,并将记录名次最小的记录列表作为检索下一个记录的检索结果。

11.根据权利要求10所述的数据管理装置,其特征在于,还包括:检索记录模块,用于接收检索记录指令,该指令中包含至少一个检索条件,根据各检索条件分别对所述数据存储模块存储的RAM数据表数据组进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值,取各检索结果集合的交集作为检索记录的检索结果。

12.根据权利要求10所述的数据管理装置,其特征在于,还包括:修改模块,用于接收修改指令,所述修改指令中包含至少一个检索条件,根据所述检索条件,检索所述数据存储模块存储的RAM数据表数据组获取相应的记录列表,对所述记录列表进行修改。

13.根据权利要求10所述的数据管理装置,其特征在于,还包括:删除模块,用于接收删除指令,所述删除指令中包含至少一个检索条件,根据所述检索条件,检索所述数据存储模块存储的RAM数据表数据组获取相应的记录列表,对所述记录列表进行修改。

14.一种数据管理系统,其特征在于,包括数据管理装置和NVRAM数据库,其中:所述数据管理装置采用如权利要求10、11、12或13所述的数据管理装置;

所述NVRAM数据库,用于分别为嵌入式系统中各功能模块建立对应的NVRAM数据表,并通过读取裸介质在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步。

说明书 :

数据管理方法、装置和系统

技术领域

[0001] 本发明涉及嵌入式系统,尤其涉及一种嵌入式系统下的数据管理方法、装置和系统。

背景技术

[0002] 嵌入式通信设备系统中,存在较多的数据操作(保存、修改、查询),这些数据一般需要用户配置,统称为配置数据。系统运行过程中,配置数据一般保存在内存(以下缩写为RAM)中,有的设备还需要存储于非易失性介质(以下缩写为NVRAM)中。
[0003] 现有常用的数据库管理系统都比较大(一般都在兆级以上)。受硬件资源(CPU性能、RAM/NVRAM大小)限制,嵌入式通信系统无法采用这些数据库系统来管理配置数据。目前传统的配置数据管理方式是:在内存中,配置数据则分散保存于各功能模块内部,格式也由各功能模块自行定义;在需要存储到NVRAM时,再由各功能模块将其负责的配置数据转换为文本格式,存储到NVRAM中。
[0004] 随着实时通信系统功能的增强,系统配置数据的数量也在迅速增长。此时,各功能模块在管理各自负责的配置数据时都面临着同样的时间效率问题,都要根据各自的配置数据保存格式去分别优化改进,而文本格式的存储方式在配置数据数量较大时存储空间效率问题也暴露了出来。这使得传统配置数据管理方式在配置数据规模大大增长后基本不可用。

发明内容

[0005] 本发明提供了一种数据管理方法、装置和系统,解决了上述传统配置数据管理方式效率低实现复杂的问题。
[0006] 一种数据管理方法,包括:
[0007] 分别为嵌入式系统中各功能模块建立对应的RAM数据表;
[0008] 在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据。
[0009] 进一步的,所述在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据的步骤包括:
[0010] 创建包含所述配置数据的待存储的记录列表,每个记录列表均包含一个主键;
[0011] 当所述RAM数据表中不存在与所述待存储的记录列表中所包含的主键字段相同的记录列表,则在该RAM数据表的尾部添加所述待存储的记录列表。
[0012] 进一步的,所述在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据的步骤还包括:
[0013] 当所述RAM数据表中存在与所述待存储的记录列表中所包含的主键字段相同的记录列表,则不添加所述待存储的记录列表。
[0014] 进一步的,所述RAM数据表包括至少一个索引,每个索引对应一个正向索引表,所述正向索引表按照该组索引的顺序存储该RAM数据表中各记录列表的记录编号,所述在该RAM数据表的尾部添加所述待存储的记录列表的步骤之后,还包括:
[0015] 使用快速排序算法对各组索引的正向索引表进行重新排序。
[0016] 进一步的,每个索引还对应一个反向索引表,所述反向索引表存储该RAM数据表中各记录列表的按该组索引的顺序排序后的记录名次,所述使用快速排序算法对各组索引的正向索引表进行重新排序的步骤之后,还包括:
[0017] 各组索引的反向索引表根据对应的正向索引表,更改其中存储的记录名次。
[0018] 进一步的,上述数据管理方法还包括:
[0019] 接收检索记录指令,该指令中包含至少一个检索条件;
[0020] 根据各检索条件分别进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值;
[0021] 取各检索结果集合的交集作为检索记录的检索结果。
[0022] 进一步的,所述取各检索结果集合的交集作为检索记录的检索结果的步骤包括:
[0023] 分别为各个检索结果集合构建一个位图,该位图的第k bit对应RAM数据表中记录编号为k的记录列表;
[0024] 将后一检索结果集合累加到其之前的检索结果集合交集中,得到交集的位图,将该位图中交集内的记录列表对应的bit值置为1;
[0025] 在取完全部检索结果集合的交集后,将最终获取的位图中bit值为1的bit对应的记录列表的集合作为检索结果。
[0026] 进一步的,上述数据管理方法还包括:
[0027] 接收修改指令,所述修改指令中包含至少一个检索条件;
[0028] 根据所述检索条件,检索到相应的记录列表;
[0029] 对所述记录列表进行修改。
[0030] 进一步的,上述数据管理方法还包括:
[0031] 接收删除指令,所述删除指令中包含至少一个检索条件;
[0032] 根据所述检索条件,检索到相应的记录列表;
[0033] 删除所述记录列表。
[0034] 进一步的,上述数据管理方法还包括:
[0035] 接收检索下一个记录指令,该指令中包含至少一个检索条件;
[0036] 根据各检索条件依次进行检索,分别获取各有效检索条件的检索结果集合;
[0037] 取各检索结果集合的交集;
[0038] 查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述交集中的各记录列表的记录名次;
[0039] 将记录名次最小的记录列表作为检索下一个记录的检索结果。
[0040] 进一步的,上述数据管理方法还包括:
[0041] 建立NVRAM数据库,在所述NVRAM数据库中分别为嵌入式系统中各功能模块建立对应的NVRAM数据表,所述NVRAM存储数据表的当前记录和容量;
[0042] 通过直接读写裸介质在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步。
[0043] 进一步的,所述通过直接读写裸介质在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步的步骤包括:
[0044] 采用直接读取裸介质的方式将所述NVRAM数据表中的记录列表读取到内存中,加入到对应的RAM数据表内,并删除所述NVRAM中存储的记录列表;或,
[0045] 检查RAM数据表内各记录列表的同步标志,将该同步标志为未同步状态的记录列表写入对应的NVRAM数据表内,并将所述记录列表的同步标志改为已同步状态。
[0046] 本发明还提供了一种数据管理装置,包括:
[0047] RAM数据表建立模块,用于分别为嵌入式系统中各功能模块建立对应的RAM数据表;
[0048] 数据存储模块,用于在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据。
[0049] 进一步的,上述数据管理装置还包括:
[0050] 检索记录模块,用于接收检索记录指令,该指令中包含至少一个检索条件,根据各检索条件分别对所述数据存储模块存储的RAM数据表数据组进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值,取各检索结果集合的交集作为检索记录的检索结果。
[0051] 进一步的,上述数据管理装置还包括:
[0052] 检索下一个记录模块,用于接收检索下一个记录指令,该指令中包含至少一个检索条件,根据所述检索条件依次对所述数据存储模块存储的RAM数据表数据组进行检索,分别获取各有效检索条件的检索结果集合,查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述检索结果集合中的各记录列表的记录名次,并将记录名次最小的记录列表作为检索下一个记录的检索结果。
[0053] 进一步的,上述数据管理装置还包括:
[0054] 修改模块,用于接收修改指令,所述修改指令中包含至少一个检索条件,根据所述检索条件,检索所述数据存储模块存储的RAM数据表数据组获取相应的记录列表,对所述记录列表进行修改。
[0055] 进一步的,上述数据管理装置还包括:
[0056] 删除模块,用于接收删除指令,所述删除指令中包含至少一个检索条件,根据所述检索条件,检索所述数据存储模块存储的RAM数据表数据组获取相应的记录列表,对所述记录列表进行修改。
[0057] 本发明还提供了一种数据管理系统,包括数据管理装置;
[0058] 所述数据管理装置,用于分别为嵌入式系统中各功能模块建立对应的RAM数据表,并在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据。
[0059] 进一步的,上述数据管理系统,还包括NVRAM数据库;
[0060] 所述NVRAM数据库,用于分别为嵌入式系统中各功能模块建立对应的NVRAM数据表,并通过读取裸介质在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步。
[0061] 进一步的,所述数据管理装置,还用于接收检索记录指令,该指令中包含至少一个检索条件,根据各检索条件分别进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值,取各检索结果集合的交集作为检索记录的检索结果;和/或
[0062] 接收检索下一个记录指令,该指令中包含至少一个检索条件,根据所述检索条件依次进行检索,分别获取各有效检索条件的检索结果集合,查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述检索结果集合中的各记录列表的记录名次,并将记录名次最小的记录列表作为检索下一个记录的检索结果;和/或
[0063] 接收修改指令,所述修改指令中包含至少一个检索条件,根据所述检索条件,检索到相应的记录列表,对所述记录列表进行修改;和/或
[0064] 接收删除指令,所述删除指令中包含至少一个检索条件,根据所述检索条件,检索到相应的记录列表,对所述记录列表进行修改。
[0065] 本发明的实施例提供了一种数据管理方法、装置和系统,在RAM数据库中分别为嵌入式系统中各功能模块建立对应的RAM数据表,在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据,实现了对嵌入式系统中各个功能块配置数据格式的统一管理,使得数据库结构更简单,简化了实现方式,提高了数据存储效率。使用位图对多个检索结果集合取交集,实现了取交集的线性效率。通过关系数据表格式存储的NVRAM数据库,也提高了配置数据存储空间的效率,在这一过程中还使用了直接读写NVRAM裸介质的方式,缩短了访问时间,降低了系统在写NVRAM期间所占用的系统资源。此外,通过使用反向索引表,也实现了嵌入式系统数据库的使RAM数据库“检索下一个”的功能,为所有功能模块解决了SNMP中对配置数据的“检索下一个”功能的时间效率问题。

附图说明

[0066] 图1为本发明的实施例所使用的RAM数据库的逻辑结构示意图;
[0067] 图2为本发明的实施例所使用的记录列表的结构示意图;
[0068] 图3为本发明的实施例一提供的一种数据管理方法的流程图;
[0069] 图4为图3中步骤302的具体流程图;
[0070] 图5为本发明的实施例二提供的一种数据管理方法的流程图;
[0071] 图6为图5中步骤502的具体流程图;
[0072] 图7为图5中步骤503的具体流程图;
[0073] 图8为图5中步骤504的具体流程图;
[0074] 图9为图5中步骤505的具体流程图;
[0075] 图10为本发明的实施例三提供的一种数据管理方法的流程图;
[0076] 图11为本发明的实施例三中获取各有效检索条件检索集合的具体流程图;
[0077] 图12为本发明的实施例三中获取各有效检索条件检索集合交集的具体流程图;
[0078] 图13为图10中步骤1003的具体流程图;
[0079] 图14为本发明的实施例四提供的一种数据管理方法的流程图;
[0080] 图15为本发明的实施例使用的NVRAM数据库结构示意图;
[0081] 图16为本发明的实施例提供的一种数据管理装置的结构示意图;
[0082] 图17为本发明的又一实施例提供的一种数据管理装置的结构示意图。

具体实施方式

[0083] 随着实时通信系统功能的增强,系统配置数据的数量也在迅速增长。此时,各功能模块在管理各自负责的配置数据时都面临着同样的时间效率问题,都要根据各自的配置数据保存格式去分别优化改进,而文本格式的存储方式在配置数据数量较大时存储空间效率问题也暴露了出来。这使得传统配置数据管理方式在配置数据规模大大增长后基本不可用。
[0084] 另外,在支持简单网络管理协议(以下简称SNMP)的实时通信系统中,除了需要检索、添加、修改、删除配置数据条目以外,还需要各功能模块提供“检索下一个”配置数据条目的功能。在配置数据规模大大增长时,这同样使各功能模块都遇到了时间效率问题。
[0085] 为了解决上述问题,本发明的实施例提供了一种数据管理方法,本发明实施例中使用的RAM数据库的逻辑结构如图1所示,由多个RAM数据表101和各RAM数据表的至少一个索引102组成,每个数据表对应一个嵌入式系统中的功能模块。每个数据表中以记录列表的为单位存储配置数据,记录列表为一数组,结构如图2所示,数组下标即为记录列表的记录编号。图1中的每一个索引都对应图2中的一个索引字段,每个索引又对应一个正向索引表1021和一个反向索引表1022,从图1中可以看出,正向索引表按照该组索引的顺序存储该RAM数据表中各记录列表的记录编号,例如,数据表中存储着记录列表1、2、3、4,其中,按照索引字段T1从小到大的顺序进行排序后,就得到索引T1的正向索引表,该表反映了各记录列表在字段T1上的排序,依次为记录列表2、4、1、3;反向索引表存储该RAM数据表中各记录列表的按该组索引的顺序排序后的记录名次,在正向索引表完成排序后,可知记录列表2的记录名次(即排序后的位置)为1,就在反向索引表的第二个位置上存储1,依此类推。反向索引表仅存储记录列表的记录名次,在系统最大表记录数不超过64K时,反向索引表的每项使用16位即可,可以节省50%的RAM开销。反向索引表在添加、修改、删除记录列表时相应修改,以维护反向索引表的正确性。
[0086] 下面结合上述附图,对使用本发明的实施例一进行说明。本发明的实施例一提供了一种数据管理方法,结合图1及图2所示的RAM数据库,实现了数据存储,具体流程如图3所示,包括:
[0087] 步骤301、分别为嵌入式系统中各功能模块建立对应的RAM数据表;
[0088] 本步骤中,在RAM数据库初始化时,分别确定各RAM数据表的容量、表记录长度、主键和至少一个索引,为所述RAM数据表与至少一个索引分配内存资源。
[0089] 每个RAM数据表必须定义一个主键,用于唯一区分表中的各条记录列表,主键可以包含记录列表的一个或多个字段;每个数据表还可以定义一组或多组索引,用于快速从表中检索。每组索引占用表的一个字段。通常情况下,主键的构成字段都定义为索引。
[0090] 每个数据表的每个索引,对应两个索引表:一个是按各记录的该索引值从小到大的进行排序的记录编号表(以下简称正向索引表);一个是反向的各记录的排序名次表(以下简称反向索引表)。这两个索引表在添加、修改和删除记录列表时更新,在检索时使用。
[0091] 其中,在RAM数据库不支持检索下一个的功能时,可以不创建反向索引表。
[0092] 步骤302、在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据;
[0093] 本步骤中具体如图4所示,当嵌入式系统的一个功能模块需要存储配置数据时,首先生成一个或多个包含上述配置数据的记录列表,在定义好该记录列表的各个字段后,将这待存储的记录列表输入到RAM数据库中,由RAM数据库使用快速排序算法对输入的待存储记录列表进行排序。然后,判断排序后的多个待存储记录列表中是否有两个相邻记录列表中的主键字段完全相同,如果存在,则返回失败消息,在该失败消息中指示待存储的记录列表中有重复的现象存在,还可以携带重复的记录列表的主键或记录编号;否则,进一步的判断在RAM数据库中是否存在与待存储的记录列表主键字段完全相同的记录列表,并在存在与该待存储的记录列表主键字段完全相同的记录时,返回失败消息,不存储该记录列表;在不存在主键字段完全相同的记录时,将待加入的记录复制到数据表尾部,其记录编号在原有最大记录编号后依次递增。之后,初始化所有正向索引表,具体为按照记录编号的顺序排序;最后使用快速排序算法对本RAM数据表的所有索引字段对应的正向索引表重新排序,并根据重新排序后的正向索引表更新反向索引表。
[0094] 当待存储的记录列表数据较少(如少于100条)时,也可以使用插入排序法结合二法,将待存储的记录列表逐条加入到正向索引表中,再更新反向索引表。
[0095] 下面结合附图,对本发明的实施例二进行说明。
[0096] 本发明的实施例二提供了一种数据管理方法,能够对RAM数据库中的记录列表进行检索,具体流程如图5所示,包括:
[0097] 步骤501、接收检索记录指令,该指令中包含至少一个检索条件;
[0098] 本步骤中,多个检索条件逻辑相与,一个检索条件具体可以为某字段在指定取值范围之内,或者某字段等于指定值。检索条件中涉及的表字段都属于同一个RAM数据表,且已在该字段上定义了索引,检索结果固定为满足检索条件的所有表记录。
[0099] 需要说明的是,实际检索时可以根据需要指定其中的一个或多个索引(索引条件之间是逻辑与的关系),甚至可以不指定任何索引(此时检索结果为所有记录)。
[0100] 步骤502、根据各检索条件分别进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值;
[0101] 本步骤中,通过二分法分别获取各个检索条件的检索结果集合,其中,需要说明的是,在数据表为空或存在一个无效检索条件(即根据该检索条件检索不到记录列表)时,认为检索失败,返回空集;在N=0,即未输入检索条件时,返回RAM数据表中记录列表的全集。
[0102] 具体如图6所示,输入数据表T上的N个索引{TIi |i=1,2,...,N}以及在这N个索引上的取值范围{(Tmini,Tmaxi)|Tmini为下界(含),Tmaxi为上界(含),i=1,2,...,N};然后判断数据表是否为空,如果为空,则返回空集,如果不为空,则判断N是否等于0;如果N为0,返回全集,否则,r为指定索引列表中检索结果集最小的索引编号,用于使用二分法完成检测;将r和i的初始值均设置为1,然后在正向索引表TIi上用二分法查找第一个大于等于Tmini的记录名次Ois和最后一个小于等于Tmaxi的记录名次Oie,Ors和Ore分别表示在第r索引上的结果记录起始排序名次和结束排序名次;如果没找到符合条件的记录名次,则返回空集,否则,进一步判断Oie、Ois、Ore和Ors;具体的,若Oie-Ois<Ors-Ore,则r:=i,并将i:=i+1;之后,对i和N进行比较,具体的,如果i<=N,则继续使用二分法查找,否则统计出各索引上结果集{[Ois,Oie]|i=1,2,...,N}中不是全集的个数M,其中[Ois,Oie]表示名次在Ois和Oie之间的所有记录;进一步判断M的值,若M<=1,则返回索引Ir上的结果集[Ors,Ore],否则进入步骤503。
[0103] 步骤503、取各检索结果集合的交集作为最终检索结果;
[0104] 本步骤中,每个检索条件检索获取的检索结果集合均对应一个位图,位图的第k bit对应RAM数据表中记录编号为k的记录列表,如果该记录列表满足检索条件,则将该bit置为1,否则置为0。
[0105] 按照上述方法,依次对各个检索结果集合进行处理,将后一检索结果集合累加到其之前的检索结果集合交集中,直至完成全部检索结果集合的处理,得到最终检索结果。
[0106] 具体如图7所示,例如,输入数据表T在N个索引{TIi|i=1,2,...,N}上的结果集区间{[Ois,Oie]|i=1,2,...,N},统计出结果记录个数最小的索引TIr,然后判断TIr上的结果记录个数为0,如果是则返回空集,否则定义一个位图bitmap[0..1],其中0、1为位图编号;位图的第k bit表示记录编号为k的记录是否在结果集中,将TIr上结果集全部标识到位图0上;设置变量b,用于获取最终检索结果,初始时设置b:=0,i:=0,然后根据i:=i+1对i进行处理;将i与N进行比较,如果i>N,则返回TIr结果集中那些在bitmap[b]上已标记的记录,否则判断i=r或者TIi上的结果集为全集;在判断结果为全集时,对i进行i:=i+1的处理,在判断结果不为全集时,将位图bitmap[1-b]清0,对[Ois,Oie]的每个记录,若其在位图bitmap[b]中已标记,则在bitmap[1-b]中上标记该记录,并根据b:=
1-b对b的值进行处理,再对i进行i:=i+1的处理,并再将i与N进行比较,以确定是否返回TIr结果集中那些在bitmap[b]上已标记的记录。
[0107] 使用位图可以提高检索的总体效率。计算两个分别有N和M个元素的集合的交集时,通常情况下的效率为N*M,在使用位图时,效率为N+M。
[0108] 需要说明的是,在同一个RAM数据表中,可能存在一个或多个索引值均相同的多个记录列表,故最终检索结果可以是一个记录列表,也可以是多个均满足全部检索条件的记录列表。
[0109] 在步骤501至503完成检索的基础上,还可以实现对已存储在RAM数据表中的记录列表的修改和删除,在检索到需要操作的列表记录后,对其进行修改或删除的步骤如下。
[0110] 步骤504、修改RAM数据表中存储的配置数据;
[0111] 本步骤中,接收到修改指令后,根据修改指令中携带的检索条件检索到相应的记录列表,进行修改替换。如果RAM数据表中存在相邻的多条主键字段完全相同的记录列表,则认为RAM数据表发生错误,返回失败消息;或在RAM数据表中,不存在符合检索条件的记录列表时,返回失败消息。
[0112] 在修改完记录列表后,根据修改后的结果,更新该RAM数据表的全部正向索引表及反向索引表。
[0113] 具体如图8所示,例如,输入一组要修改的数据表T的记录列表,使用快速排序算法对输入的记录列表进行排序,并判断排序后的记录列表中是否存在主键字段完全相同的相邻记录,如果存在则返回失败,如果不存在则调用图6所示过程确定待修改的所有记录在数据表中是否已存在;调用图6所示过程后,如果判断结果为不存在,则返回失败,否则用待修改的记录替换到数据表中的具有相同主键的记录,然后使用快速排序算法对此表所有非主键成员字段上的正向索引表重新排序(按照所代表的表记录的对应索引值);根据变化后的所有正向索引表直接更新反向索引表(已知正向索引表中名次为k的记录的编号为Dk,则反向索引表中编号为Dk的记录的名次为k),返回成功。
[0114] 步骤505、删除RAM数据表中存储的配置数据;
[0115] 本步骤中,接收删除指令,根据删除指令中的检索条件检索相应的记录列表,并在检索到需要删除的记录列表后,执行删除,在删除完成后,还需要对该RAM数据表的全部正向索引表及反向索引表进行更新。
[0116] 具体过程如图9所示,例如,首先输入数据表T上的N个索引{TIi|i=1,2,...,N}以及在这N个索引上的取值范围{(Tmini,Tmaxi)|Tmini为下界(含),Tmaxi为上界(含),i=1,2,...,N},然后调用图6所示的过程得到满足条件的记录集R;将表中最后一条记录移动到待删除的j记录的存储位置,并相应修改两个索引表中j记录的名次Oj=Olast,DOlast=j,其中,表示反向索引表中编号为j的记录的名次,Olast表示反向索引表中编号最大的记录的名次,DOlast表示正向索引表中名次为Olast的记录的编号;最后将反向索引表中名次大于Oj的所有记录的名次减1,返回成功。
[0117] 下面结合附图,对本发明的实施例三进行介绍。
[0118] 本发明的实施例三提供了一种数据管理方法,使用该方法,可以实现嵌入式系统数据库的“检索下一个记录”功能,具体流程如图10所示,包括:
[0119] 步骤1001、接收检索下一个记录指令,该指令中包含至少一个检索条件;
[0120] 步骤1002、根据各检索条件依次进行检索,分别获取各有效检索条件的检索结果集合;
[0121] 本步骤中,依次按照各个检索条件获取对应的检索结果集合,检索结果不为空的检索条件为有效检索条件,直到发现一个检索条件的检索结果为空集(即该检索条件无效)时,停止检索。
[0122] 具体如图11所示,例如,步骤1101输入数据表T上的N>0个索引{TIi|i=1,2,...,N}以及在这N个索引上的取值{Tvi|i=1,2,...,N},步骤1102将i设置为i=
1,步骤1103在正向索引表TIi上用二分法查找第一个大于等于Tvi的记录名次Ois(找不到时为表记录数+1)和最后一个小于等于Tvi的记录名次Oie(找不到时为0);然后在步骤
1104中比较Ois和Oie,如果Ois<=Oie则进入步骤1105,否则进入步骤1108;步骤1105中将TIr上结果集全部标识到位图0上;步骤1106比较i和N的关系,如果i<=N则返回步骤1103,否则进入步骤1107;步骤1107根据i:=i-1对i进行处理;步骤1108比较Ois和Oie,如果Ois<=Oie则进入步骤1110,否则进入步骤1109。
[0123] 步骤1109中,比较Ois和表记录数,如果Ois>表记录数则进入步骤1115,否则进入步骤1110;步骤1110中,Oie:=表记录数,然后进入步骤1113。
[0124] 步骤1111中,比较Oie和表记录数,如果Oie=表记录数,则进入步骤1115,否则进入步骤1112;步骤1112中Ois:=Oie+1,Oie:=表记录数,然后进入步骤1113。
[0125] 步骤1113调用图12的过程计算所有[Ojs,Oje],j=1,2,...,I的交集中索引TIi上取值最小的记录集R,进入步骤1114;步骤1114中判断R是否为空集,如果R为空集,则进入步骤1115,否则调用图13的过程计算并返回R中索引{TIj,j=i+1,...,N}值按字典序最小的记录集。
[0126] 步骤1115中i:=i-1,进入步骤1116;步骤1116中,如果i>=1,则返回步骤1118,否则返回空集。
[0127] 在停止检索后,取已获取的各检索结果集合的交集,具体流程如图12所示,例如,步骤1201中输入数据表T在N个索引{TIi|i=1,2,...,N}上的结果集区间{[Ois,Oie]|i=1,2,...,N};步骤1202统计出结果记录个数最小的索引TIr;步骤1203中判断TIr上的结果记录个数是否为0,如果为0则返回空集,否则进入步骤1204;步骤1204中定义一个位图bitmap[0..1],其中0、1为位图编号,位图的第k bit表示记录编号为k的记录是否在结果集中;步骤1205将TIr上结果集全部标识到位图0上;步骤1206中令b:=0,i:=0;步骤1207中令i:=i+1;步骤1208中i>N的话进入步骤1213,否则进入步骤1209;步骤1209判断i=r或者TIi上的结果集是否为全集,如果是则进入步骤1211,否则进入步骤
1210;步骤1210将位图bitmap[1-b]清0;步骤1211对[Ois,Oie]的每个记录,若其在位图bitmap[b]中已标记,则在bitmap[1-b]中标记该记录(前i个索引上的交集);步骤1212进行b:=1-b的处理,然后回到步骤1207。
[0128] 步骤1213中判断总交集R是否为空集,如果是返回空集,如果不是则进入步骤1214;步骤1214中从总交集R中找到第N索引上名次最小的记录,该记录的第N索引值设为TvN;步骤1215在正向索引表TIN上用二分法查找第一个大于等于给定记录TvN的记录名次ObN和最后一个小于等于给定记录TvN的记录名次O1N(都必能找到),返回R与区间[ObN,O1N]的交集。
[0129] 步骤1003、查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述检索结果集合中的各记录列表的记录名次,并将记录名次最小的记录列表作为检索下一个记录的检索结果;
[0130] 本步骤中,首先获取最后一个有效检索条件对应的反向索引表,将该反向索引表中存储的记录名次最小的记录列表作为检索下一个记录的检索结果。
[0131] 具体如图13所示,例如,步骤1301输入数据表T的记录列表R={i|i为记录编号,i=1,...,M}以及N个索引{TIi|i=1,2,...,N},然后步骤1302进行i:=1的处理;步骤1303利用TIi的反向索引表得到R中各记录的名次列表L={Oj|j=1,...,M};步骤1304统计出L中的最小名次Ok,设该记录的第i索引值设为Tvi;步骤1305在正向索引表TIi上用二分法查找第一个大于等于Tvi的记录名次Ois和最后一个小于等于Tvi的记录名次Oie(都必能找到);步骤1306进行R:=R与区间[Ois,Oie]的交集的处理;步骤1307进行i:=i+1的处理;步骤1308比较i和N,如果i>N,则返回R,否则进入步骤1303。
[0132] 特别的,当记录名次最小的记录列表为两个或两个以上时,可以在这多个记录列表中,根据前一有效检索条件的反向索引表,获取前一有效检索条件记录名次最小的记录列表作为检索结果,依次类推,直到检索结果仅为一个记录列表,或已使用全部的有效检索条件进行筛选为止。
[0133] 下面结合附图,对本发明的实施例四进行说明。
[0134] 本发明的实施例四提供了一种数据管理方法,建立一个RAM数据库和一个NVRAM数据库,通过将这数据在这两个数据库中进行同步备份,提高了数据存储的可靠性,具体流程如图14所示,包括:
[0135] 步骤1401、建立NVRAM数据库,在所述NVRAM数据库中分别为嵌入式系统中各功能模块建立对应的NVRAM数据表;
[0136] 本发明的实施例使用的NVRAM数据库结构如图15所示,NVRAM数据库中仅存储数据表的当前记录和容量,不存储主键、索引定义以及索引表
[0137] NVRAM数据表的创建在系统初始化时进行,数据表结构系统运行期间保持不变。RAM数据库系统初始化后,在NVRAM数据库系统初始化时,若不存在某个NVRAM数据表,则根据RAM数据库的该表信息创建此NVRAM表,为该表分配NVRAM空间。
[0138] 步骤1402、在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步;
[0139] 本步骤中,首先将RAM数据表记录同步到对应NVRAM数据表,为避免向NVRAM烧写没有变化的数据表,RAM数据库为每个RAM数据表提供一个同步标志。在对某一RAM数据表中的记录列表进行添加、修改、删除时,将该RAM数据表的同步标志置为未同步状态。在进行RAM数据表到NVRAM数据表的同步时,只对同步标志为未同步状态的RAM数据表进行同步操作,同步标志为已同步时直接返回操作成功。
[0140] 在将RAM数据表记录同步到对应NVRAM数据表之后,再将NVRAM数据表记录同步到对应RAM数据表中,首先采用直接读取裸介质的方式将所有NVRAM数据表记录读取到内存中,并删除对应的RAM数据表的所有记录,再调用“添加RAM数据表记录”过程将上面读取的NVRAM数据表加入到对应的RAM数据表。
[0141] 在系统初始化时,由于RAM数据表空白,故一般在系统初始化时,会执行由NVRAM数据表向RAM数据表的同步。
[0142] 同步时可以采用直接写裸介质的方式写NVRAM数据表,缩短烧写时间。
[0143] 本发明的实施例提供了一种数据管理方法,通过精简关系数据库系统的功能,使用正向和反向索引表,为所有功能模块集中解决了配置数据检索时间效率问题,使RAM数据库检索效率达到log(n)的数量级,其中n为数据表的实际记录数;对常见的单表容量几万条、索引个数较少的中小型实时通信系统来说,这使得数据库检索时间几乎变为常量。
[0144] 本发明的实施例二和三中,使用位图对多个检索结果集合取交集,实现了取交集的线性效率。而本发明的实施例四中,通过关系数据表格式存储的NVRAM数据库,也提高了配置数据存储空间的效率,在这一过程中还使用了直接读写NVRAM裸介质的方式,缩短了访问时间,降低了系统在写NVRAM期间所占用的系统资源。
[0145] 此外,通过使用正向和反向索引表,也实现了嵌入式系统数据库的使RAM数据库“检索下一个”的功能,为所有功能模块解决了SNMP中对配置数据的“检索下一个”功能的时间效率问题。
[0146] 本发明的实施例提供的数据管理方法,还以关系数据表格式存储NVRAM数据库,极大的提高了配置数据存储空间效率,并采用直接读写NVRAM裸介质的方式,缩短了访问时间,降低了系统在写NVRAM期间对系统其它功能的影响。使用本发明的实施例提供的数据管理方法对存储及管理配置数据,数据库系统目标代码不超过30Kbyte,大大减少了硬件资源的占用,能够有效降低设备成本。
[0147] 本发明的实施例还提供了一种数据管理装置,其结构如图16所示,包括:
[0148] RAM数据表建立模块1601,用于分别为嵌入式系统中各功能模块建立对应的RAM数据表;
[0149] 数据存储模块1602,用于在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据。
[0150] 进一步的,上述数据管理装置如图17所示,还包括:
[0151] 检索记录模块1603,用于接收检索记录指令,该指令中包含至少一个检索条件,根据各检索条件分别进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值,取各检索结果集合的交集作为检索记录的检索结果;
[0152] 检索下一个记录模块1604,用于接收检索下一个记录指令,该指令中包含至少一个检索条件,根据所述检索条件依次进行检索,分别获取各有效检索条件的检索结果集合,查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述检索结果集合中的各记录列表的记录名次,并将记录名次最小的记录列表作为检索下一个记录的检索结果;
[0153] 修改模块1605,用于接收修改指令,所述修改指令中包含至少一个检索条件,根据所述检索条件,检索到相应的记录列表,对所述记录列表进行修改;
[0154] 删除模块1606,用于接收删除指令,所述删除指令中包含至少一个检索条件,根据所述检索条件,检索到相应的记录列表,对所述记录列表进行修改。
[0155] 本发明的实施例还提供了一种数据管理系统,包括数据管理装置;
[0156] 所述数据管理装置,用于分别为嵌入式系统中各功能模块建立对应的RAM数据表,并在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据。
[0157] 进一步的,上述数据管理系统还包括NVRAM数据库;
[0158] 所述NVRAM数据库,用于分别为嵌入式系统中各功能模块建立对应的NVRAM数据表,并在所述NVRAM数据库与嵌入式系统中各功能模块对应的RAM数据表之间进行记录列表同步。
[0159] 进一步的,所述数据管理装置,还用于接收检索记录指令,该指令中包含至少一个检索条件,根据各检索条件分别进行检索,获取各检索条件的检索结果集合,所述检索条件具体为一个字段的取值范围或指定值,取各检索结果集合的交集作为检索记录的检索结果;和/或
[0160] 接收检索下一个记录指令,该指令中包含至少一个检索条件,根据所述检索条件依次进行检索,分别获取各有效检索条件的检索结果集合,查询最后一个有效检索条件对应的一个索引中的反向索引表,获取所述检索结果集合中的各记录列表的记录名次,并将记录名次最小的记录列表作为检索下一个记录的检索结果;和/或
[0161] 接收修改指令,所述修改指令中包含至少一个检索条件,根据所述检索条件,检索到相应的记录列表,对所述记录列表进行修改;和/或
[0162] 接收删除指令,所述删除指令中包含至少一个检索条件,根据所述检索条件,检索到相应的记录列表,对所述记录列表进行修改。
[0163] 上述数据管理装置和数据管理系统,可以与本发明的实施例提供的一种数据管理方法相结合,在RAM数据库中分别为嵌入式系统中各功能模块建立对应的RAM数据表,在各个功能模块对应的RAM数据表数据组存储该功能模块的配置数据,实现了对嵌入式系统中各个功能块配置数据格式的统一管理,使得数据库结构更简单,简化了实现方式,提高了数据存储效率。此外,还实现了嵌入式系统中的“检索下一个记录”功能,进一步提高了嵌入式系统中配置数据管理的效率。
[0164] 本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0165] 另外,在本发明各个实施例中的各功能单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0166] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0167] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。