《一种查询内存数据的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种查询内存数据的方法及装置.pdf(12页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102346765A43申请公布日20120208CN102346765ACN102346765A21申请号201110276259522申请日20110916G06F17/3020060171申请人大唐移动通信设备有限公司地址100083北京市海淀区学院路29号72发明人师敏华曾宪铎74专利代理机构北京同达信恒知识产权代理有限公司11291代理人刘松54发明名称一种查询内存数据的方法及装置57摘要本发明公开了一种查询内存数据的方法,用于提高查询内存数据的效率。所述方法包括接收查询命令标识;在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令;通过所述查。
2、询命令查询所述表,并输出查询结果。本发明还公开了用于实现所述方法的装置。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图2页CN102346785A1/2页21一种查询内存数据的方法,其特征在于,包括以下步骤接收查询命令标识;在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令;通过所述查询命令查询所述表,并输出查询结果。2如权利要求1所述的方法,其特征在于,查找到多个需查询的内存中的表时,通过所述查询命令查询所述表的步骤包括通过所述查询命令按查找到的表的顺序,查询所述多个需查询的内存中的表;或者在预设的数据文件中查找收到的查询命。
3、令标识对应的需查询的内存中的表和查询命令的步骤包括在预设的数据文件中查找收到的查询命令标识对应的需查询的多个表、查询命令和查询规则;通过所述查询命令查询所述表的步骤包括通过所述查询命令按照所述查询规则查询所述多个表。3如权利要求1所述的方法,其特征在于,在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令的步骤包括在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表、索引和查询命令;通过所述查询命令查询所述表的步骤包括通过所述查询命令根据所述索引在需查询的内存中的表中进行查询。4如权利要求3所述的方法,其特征在于,所述索引包括原始索引和等同索引;通过所述查询命。
4、令根据所述索引在需查询的内存中的表中进行查询的步骤包括通过所述查询命令根据先等同索引再原始索引的顺序在需查询的内存中的表中进行查询。5如权利要求1所述的方法,其特征在于,在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令之前,接收需查询的索引标识;通过所述查询命令根据所述索引在需查询的内存中的表中进行查询的步骤包括通过所述查询命令根据收到的索引标识在需查询的内存中的表中进行查询。6如权利要求1所述的方法,其特征在于,在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令的步骤包括在预设的数据文件中查找收到的查询命令标识对应的需查询的多个表、表示从前表。
5、的输出结果中查询的标记、与该标记对应的索引、查询命令;通过所述查询命令查询所述表的步骤包括通过所述查询命令查询所述多个表,并且根据对应所述标记的索引从前表的输出结果中进行查询。7一种用于查询内存数据的装置,其特征在于,包括接口模块,用于接收查询命令标识;中间查询模块,用于在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令;查询执行模块,用于通过所述查询命令查询所述表,并输出查询结果。8如权利要求7所述的装置,其特征在于,查找到多个需查询的内存中的表时,查询执行模块通过所述查询命令按查找到的表的顺序查询所述多个需查询的内存中的表;或者中间查询模块在预设的数据文件中查找收到。
6、的查询命令标识对应的需查询的多个表、查询命令和查询规则;查询执行模块通过所述查询命令按照所述查询规则查询所述多个权利要求书CN102346765ACN102346785A2/2页3表。9如权利要求7所述的装置,其特征在于,中间查询模块在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表、索引和查询命令;查询执行模块通过所述查询命令根据所述索引在需查询的内存中的表中进行查询。10如权利要求9所述的装置,其特征在于,所述索引包括原始索引和等同索引;查询执行模块通过所述查询命令根据先等同索引再原始索引的顺序在需查询的内存中的表中进行查询。11如权利要求7所述的装置,其特征在于,接口模块还。
7、用于接收需查询的索引标识;查询执行模块通过所述查询命令根据收到的索引标识在需查询的内存中的表中进行查询。12如权利要求7所述的装置,其特征在于,中间查询模块在预设的数据文件中查找收到的查询命令标识对应的需查询的多个表、表示从前表的输出结果中查询的标记、与该标记对应的索引和查询命令;查询执行模块通过所述查询命令查询所述多个表,并且根据对应所述标记的索引从前表的输出结果中进行查询。权利要求书CN102346765ACN102346785A1/7页4一种查询内存数据的方法及装置技术领域0001本发明计算机技术领域,特别是涉及查询内存数据的方法及装置。背景技术0002在一些通信设备中,对设备的实时性要。
8、求很高,一般都使会使用实时操作系统,再加上设备的配置数据的数据量相对也较小,因此很少使用商用数据库进行数据管理,一般都是用简单的内存数据表来进行数据管理。由此带来的问题就是内存数据表并不是数据库,因此也不支持标准的SQL。0003这种情况下,就需要一种方法来完成网管对网元设备的配置数据查询,传统的方法有两种,一种是网管将网元设备的数据上传到本机并将其导入到标准的数据库软件,从而完成数据的查询工作。由于网元设备内部的数据是变化的,因此导出的数据可能和网元的实际数据已经不一致,因此需要不停的进行数据同步来保证数据的一致性,查询效率较低。并且,由于网元设备的内存数据表往往都是自定义格式,因此需要开发。
9、接口才能转为某种标准的数据库文件格式,实现较为复杂。0004另一种方法就是针对不同的查询,网元设备中使用硬编码来完成查询工作。但是只要增加一种查询就需要编写代码,实现效率较低。并且编写代码完成后就需要对设备进行软件升级,而由于程序变化带来的升级是非常麻烦的,一般都需要进行设备的重启、切换才能保证升级成功,可能导致设备提供的核心业务发生中断,而中断业务又是通信设备所不能容忍的。发明内容0005本发明实施例提供一种查询内存数据的方法及装置,用于提高查询内存数据的效率。0006一种查询内存数据的方法,包括以下步骤0007接收查询命令标识;0008在预设的数据文件中查找收到的查询命令标识对应的需查询的。
10、内存中的表和查询命令;0009通过所述查询命令查询所述表,并输出查询结果。0010一种用于查询内存数据的装置,包括0011接口模块,用于接收查询命令标识;0012中间查询模块,用于在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令;0013查询执行模块,用于通过所述查询命令查询所述表,并输出查询结果。0014本发明实施例中将查询命令与查询内容分离,查询内容存储在数据文件中。根据收到的查询命令标识查找数据文件以获得查询内容,并将查询内容传递给相应的查询命令并执行该查询命令,实现内存数据的查询。当需要更新查询内容时,只需更新数据文件,不说明书CN102346765ACN10。
11、2346785A2/7页5需要更新查询命令,提高了查询内存数据的效率。附图说明0015图1为本发明实施例中查询内存数据的主要方法流程图;0016图2为本发明实施例中查询结果的示意图;0017图3为本发明实施例中查询内存数据的详细方法流程图;0018图4为本发明实施例中装置的结构图。具体实施方式0019本发明实施例中将查询命令与查询内容分离,查询内容存储在数据文件中。根据收到的查询命令标识查找数据文件以获得查询内容,并将查询内容传递给相应的查询命令并执行该查询命令,实现内存数据的查询。当需要更新查询内容时,只需更新数据文件,不需要更新查询命令,提高了查询内存数据的效率。0020参见图1,本实施例。
12、中查询内存数据的主要方法流程如下0021步骤101接收查询命令标识。0022步骤102在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令。如果未查找到查询命令则确定查询失败。0023步骤103通过所述查询命令查询所述表,并输出查询结果。0024本实施例中数据文件包括了所有可能的查询,是一种计算机语言形成的文件,即计算机可识别和运行的文件。该数据文件可由表格转换而成,两者内容相同,文件格式不同。转换方法是现有技术,因此不做介绍。一个表格的示例如表1所示。0025表100260027其中查询命令标识为用户输入内容,同时对应着查询命令。用户输入索引包括用户可能想要查询的字段标。
13、识及相应的值,如果用户输入的索引标识与表1的用户输入索引中的索引标识完全一致,则将用户输入的索引标识作为索引进行查询,如果不一致,则确定查询失败,可输出查询错误提示。输出内容包括输出字段标识,从查询结果中提取出该输出字段标识对应的内容并输出。查询对象包括需查询的表的标识,还可以包括表中需查询的索引的标识,本实施例中索引的标识与字段的标识相同,也就是说将某个字段作为索引。说明书CN102346765ACN102346785A3/7页60028为了使所有字段标识保证全局统一和唯一,本实施例中字段标识为所属的表标识加上本字段名称,多个字段之间用特定的符号间隔,如用“、”间隔。对于查询对象,如果需查询。
14、多个表,则多个表标识之间也采用特定的符号间隔,如用“、”间隔。为了清楚的区分表标识和其它标识,所有的表标识可采用统一后缀如“TABLE”构成。查询对象的结构示例如下0029表名|原始索引|等同索引|等同索引,|原始索引|等同索引|等同索引,、0030表名|原始索引|等同索引|等同索引,|原始索引|等同索引|等同索引,、00310032原始索引指的是该索引字段属于本查询表中的字段。等同索引指的是该索引字段不属于本查询表中的字段,类似于数据库中的外键。0033“”表示从用户输入中获取索引值。“”表示从前表的查询输出结果中获取索引值。“”表示需要使用规则进行特殊的运算后获得索引值,例如,将用户输入的。
15、或直接从前表获得的索引值加1,得到运算后的索引值。对于一个表,三个符号只能出现一个。有这符号出现时,按照该符号对应的规则获得索引值,如果获取失败,则确定查询失败,退出本次查询。如果这三个符号都不出现,则查找索引时按照缺省方式顺序查找,即先从用户输入中查找,如果找不到再从前表的查询输出中查找。0034一个数据文件的结构实例如下00350036一个待查询表或称关系表的示例如表2所示0037表2说明书CN102346765ACN102346785A4/7页700380039关系表信息包括表名、表字段个数、表字段名称、表字段的数据类型、表字段数据长度及表中存储的记录条数等。每条记录都按照关系表信息中的。
16、字段顺序以紧凑方式存储在内存中,紧凑方式指的是按照1字节对齐方式存储。每条记录的每个字段长度都相同,每条记录的长度均等于各字段的最大长度累加和。对于一个表的查询即单表查询,如果查询对象中未包括索引,则查找的结果就为该表的所有记录。如果包括索引,则首先获取索引的值,然后在关系表中进行匹配查找,例如首先取出表中的一条记录,依次比较索引值和该条记录对应字段的值是否相等,如果全部相等,则该记录属于查询结果,否则不属于查询结果,继续下一条查找。由于索引包括原始索引和等同索引,而等同索引允许有多个,所以匹配时需要先匹配等同索引,再匹配原始索引,匹配过程中只要有一个索引匹配成功即可。0040索引值的来源有三。
17、种,第一种是用户输入,第二种是来自前表的查询结果,第三种是通过预设的规则计算后得到。0041针对多表查询,需要对各表顺序查询。0042以条目1为例,为了描述简单,本例中假设第一张表RRNCPLMNUTABLE表中只有一条记录,第二张表SDEVOBJNAMEINFOTABLE表中也只有一条记录和RRNCPLMNUTABLE表中的记录匹配。收到查询命令标识DSPPLMN,通过表1获得对应的查询对象,即需查询的表RRNCPLMNUTABLE、SDEVOBJNAMEINFOTABLESDEVOBJNAMEINFOULNAMEMOC|RRNCPLMNULMOC、SDEVOBJNAMEINFOAUCNAM。
18、EMOI|RRNCPLMNAUCMOI,首先查询表RRNCPLMNUTABLE,该表没有索引,则需要查询该表的所有记录。然后查询表SDEVOBJNAMEINFOTABLE,该表的查询需要使用索引字段,因此在查询表数据时,需要先得到索引的值,得到索引的值的方法就是先从用户的输入中查找,再从前表的输出中查找因为该项没有出现|这三个符号,即没有使用特殊符号来标识指定的索引获取方式,由于该表有两个索引,并且每个索引有一个等同索引,在获取索引的取值时始终都是先匹配等同索引,后匹配原始索引,只要一个匹配成功,则表示该索引获取成功,否则获取失败,则本次查询失败。在本例中,首先在用户的输入中匹配等同索引RRN。
19、CPLMNULMOC,由于用户没有输入所以没有找到,再在用户的输入中查找原始索引SDEVOBJNAMEINFOULNAMEMOC,同样因为用户没有输入也没有找到。于是就在前表的输出中查找,因为前表的输出字段中肯定会有RRNCPLMNULMOC,于是第一个等同索引RRNCPLMNULMOC匹配成功,得到第一个等同索引RRNCPLMNULMOC的值,同样的方法获取第二索引RRNCPLMNAUCMOI的值,然后利用这两个索引的值在SDEVOBJNAMEINFOTABLE中查询,例如查询到记录SDEVOBJNAMEINFOULNAMEMOC“XXX”,SDEVOBJNAMEINFOAUCNAMEMOI。
20、“YYY”,其中的XXX和YYY就表示获取到的索引SDEVOBJNAMEINFOULNAMEMOC和SDEVOBJNAMEINFOAUCNAMEMOI的值。再利用SDEVOBJNAMEINFOULNAMEMOC“XXX”和说明书CN102346765ACN102346785A5/7页8SDEVOBJNAMEINFOAUCNAMEMOI“YYY”在表SDEVOBJNAMEINFOTABLE中查询。然后从第一张表的输出记录和第二张表的输出记录中,过滤出用户实际需要输出的字段,并输出,从而完成本次查询。0043在第一张表中有可能查询到多条记录,在第二张表中根据第一张表中的每一条记录同样可以匹配到多条。
21、记录。又如,收到的查询命令标识对应三个表TABLE1、TABLE2和TABLE3。TABLE2中的等同索引为TABLE1的字段,TABLE3的等同索引为TABLE2的字段。先对TABLE1进行查询,得到三条查询结果,如记录0、记录1和记录2。利用记录0、记录1和记录2获得TABLE2中等同索引的值,再利用等同索引在TABLE2中查询,从查询结果中获得TABLE2的原始索引的值,并根据原始索引的值在TABLE2中查询。例如,通过记录0在TABLE2中查询到记录00和记录01,通过记录1在TABLE2中查询到记录10、记录11和记录12,通过记录2在TABLE2中查询到记录20和记录21。利用TA。
22、BLE2的7条查询结果获得TABLE3中的等同索引的值,再利用等同索引在TABLE3中查询,从查询结果中获得TABLE3的原始索引的值,并根据原始索引的值在TABLE3中查询。例如,通过记录00在TABLE3中查询到记录000,以此类推,3个表的查询结果参见图2所示。0044在输出查询结果时,可采用广度或深度遍历方式遍历图2所示的查询结果,并根据表1中输出内容所要求的字段进行输出。0045下面通过实施例来详细介绍查询的实现过程。0046参见图3,本实施例中查询内存数据的详细方法流程如下0047步骤301接收查询命令标识。0048还可以同时接收需查询的索引标识和相应的索引值。0049步骤302在。
23、预设的数据文件中查找收到的查询命令标识对应的查询对象和查询命令。查询对象包括需查询的表标识,还可以包括索引标识和索引值来源标记。0050如果收到用户输入的索引标识,还需要将用户输入的索引标识与数据文件中查询命令标识对应的允许输入的索引标识进行比对,如果比对不完全一致,则确定查询失败,否则继续步骤304。0051如果对应的查询对象未包括索引标识,则继续步骤303。如果对应的查询对象包括索引标识,且索引值来源标记为“”,则继续步骤304。如果如果对应的查询对象包括索引标识,且索引值来源标记为“”,则继续步骤305。如果如果对应的查询对象包括索引标识,且索引值来源标记为“”,则继续步骤306。如果对。
24、应的查询对象包括索引标识,但没有上述三种符号,则顺序执行继续步骤304、305和306,获取到索引值为止,如果执行步骤304、305和306后还未获得索引值,则确定查询失败。如果对应的查询对象包括索引标识,且存在等同索引,但没有索引值来源标记,则继续步骤307。0052步骤303通过查询命令查询表中所有记录。继续步骤308。0053步骤304通过查询命令,根据用户输入的索引和索引值查询表中相应的记录。继续步骤308。0054步骤305通过查询命令,从前表的查询结果中获得索引值,并根据该索引值查询表中相应的记录。继续步骤308。0055步骤306通过查询命令根据预设的规则计算出索引值,并根据该索。
25、引值查询表中相应的记录。继续步骤308。说明书CN102346765ACN102346785A6/7页90056步骤307通过查询命令,先依据等同索引查询,再依据原始索引查询。继续步骤308。0057步骤308判断是否有未查询的表,如果有则继续步骤303、304、305、306或307,否则继续步骤309。0058步骤309输出查询结果中查询命令标识对应的输出字段的内容。0059通过以上描述了解了查询内存数据的实现过程,该过程可由装置实现,下面对该装置的内部结构和功能进行介绍。0060参见图4,本实施例中用于查询内存数据的装置包括接口模块401、中间查询模块402和查询执行模块403。该装置可。
26、具体为计算机设备。0061接口模块401用于接收查询命令标识。0062中间查询模块402用于在预设的数据文件中查找收到的查询命令标识对应的需查询的内存中的表和查询命令。0063查询执行模块403用于通过所述查询命令查询所述表,并输出查询结果。0064查找到多个需查询的内存中的表时,查询执行模块403通过所述查询命令按查找到的表的顺序查询所述多个需查询的内存中的表。或者,中间查询模块402在预设的数据文件中查找收到的查询命令标识对应的需查询的多个表、查询命令和查询规则;查询执行模块403通过所述查询命令按照所述查询规则查询所述多个表。0065或者,中间查询模块402在预设的数据文件中查找收到的查。
27、询命令标识对应的需查询的内存中的表、索引和查询命令;查询执行模块403通过所述查询命令根据所述索引在需查询的内存中的表中进行查询。0066所述索引包括原始索引和等同索引。查询执行模块403通过所述查询命令根据先等同索引再原始索引的顺序在需查询的内存中的表中进行查询。0067接口模块401还用于接收需查询的索引标识;查询执行模块403通过所述查询命令根据收到的索引标识在需查询的内存中的表中进行查询。0068中间查询模块402在预设的数据文件中查找收到的查询命令标识对应的需查询的多个表、表示从前表的输出结果中查询的标记、与该标记对应的索引和查询命令;查询执行模块403通过所述查询命令查询所述多个表。
28、,并且根据对应所述标记的索引从前表的输出结果中进行查询。0069本发明实施例中将查询命令与查询内容分离,查询内容存储在数据文件中。根据收到的查询命令标识查找数据文件以获得查询内容,并将查询内容传递给相应的查询命令并执行该查询命令,实现内存数据的查询,即实现了不使用商业数据库软件的情况下对数据表的通用操作。当需要更新查询内容时,只需更新数据文件,不需要更新查询命令,提高了查询内存数据的效率。并且,本发明实施例支持多种查询方式,如是否通过索引查询,索引值的来源也可以有多种方式,满足多种网络设备的查询需求。0070本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本。
29、发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质包括但不限于磁盘存储器和光学存储器等上实施的计算机程序产品的形式。说明书CN102346765ACN102346785A7/7页100071本发明是参照根据本发明实施例的方法、设备系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器。
30、以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。0072这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。0073这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。0074显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。说明书CN102346765ACN102346785A1/2页11图1图2说明书附图CN102346765ACN102346785A2/2页12图3图4说明书附图CN102346765A。