基于共享内存的信息查询设备及方法技术

技术编号:16488185 阅读:36 留言:0更新日期:2017-11-03 09:51
本发明专利技术提出了基于共享内存的信息查询设备及方法。其中,所述设备包括:初始化装置,所述初始化装置在所述信息查询设备启动时基于与对应的数据库的数据通信而执行初始化操作,所述初始化操作包括创建共享内存并将所述数据库中指定的数据记录装载到所述共享内存中;查询装置,所述查询装置基于接收到的来自外部应用的包含查询条件的查询指令执行查询操作,以从所述共享内存中查询出符合所述查询条件的数据记录。本发明专利技术所公开的基于共享内存的信息查询设备及方法具有高的数据记录查询效率。

Information inquiry device and method based on shared memory

The invention provides a device and method for information query based on shared memory. Among them, the apparatus includes a device initialization, the initialization device in the information query device startup data communication with the corresponding database initialization is performed based on the initialization operation including the creation of shared memory and specify the database according to the number of records is loaded into the shared memory device; query the query execution device, query contains the query conditions from external applications received the inquiry based instruction, from the shared query with the query data recorded in memory. The invention discloses the information query device and method based on the shared memory, which has high data recording inquiry efficiency.

【技术实现步骤摘要】
基于共享内存的信息查询设备及方法
本专利技术涉及信息查询设备及方法,更具体地,涉及基于共享内存的信息查询设备及方法。
技术介绍
目前,随着信息数据处理需求的日益增长以及不同领域的业务种类的日益丰富,在海量数据中进行信息的查询(例如金融卡的BIN(BankIdentificationNumber,即发卡行标识码)查询)变得越来越重要。现有的从海量数据中查询特定信息的设备及方法通常采用查询数据库的方式,即将数据(例如配置参数)存储在数据库中,当需要查询特定的数据记录时,使用关键字作为主键查询所述数据库(例如调用SQL语句进行针对所述数据库的搜索操作),然而,现有的从海量数据中查询特定信息的设备及方法存在如下问题:由于数据库通常是独立部署的,故在访问数据库时需要通过网络进行通信,并且每个数据库搜索操作均是文件操作,由此,查询特定的数据记录耗时较长,例如,假设总的数据记录的数量为n,则查询操作的时间复杂度通常为O(n),或者有时可能会达到O(nlogn),甚至O(n2)。因此,存在如下需求:提供具有高的数据记录查询效率的基于共享内存的信息查询设备及方法。
技术实现思路
为了解决上述现有技术方案所存在的问题,本专利技术提出了具有高的数据记录查询效率的基于共享内存的信息查询设备及方法。本专利技术的目的是通过以下技术方案实现的:一种基于共享内存的信息查询设备,所述基于共享内存的信息查询设备包括:初始化装置,所述初始化装置在所述信息查询设备启动时基于与对应的数据库的数据通信而执行初始化操作,所述初始化操作包括创建共享内存并将所述数据库中指定的数据记录装载到所述共享内存中;查询装置,所述查询装置基于接收到的来自外部应用的包含查询条件的查询指令执行查询操作,以从所述共享内存中查询出符合所述查询条件的数据记录。在上面所公开的方案中,优选地,所述查询条件包括待查询的数据记录的关键字段。在上面所公开的方案中,优选地,所述初始化操作进一步包括:从所述数据库依次获取指定的各个参数表的记录数,并且基于所获取的各个参数表的记录数计算共享内存的大小,并基于计算出的共享内存的大小创建所述共享内存。在上面所公开的方案中,优选地,所述初始化操作进一步包括:在指定的数据记录被装载到所述共享内存中后,针对每个数据记录执行如下操作:计算该数据记录的关键字段的哈希值,并将计算出的哈希值和指向该数据记录的指针合并为与该数据记录相关联的索引信息,以及将所述索引信息存储在所述共享内存中。在上面所公开的方案中,优选地,所述查询操作包括:根据所述查询条件计算对应的哈希值;连接到所述共享内存,并将计算出的所述哈希值与所述共享内存中存储的索引信息中的哈希值进行匹配;如果匹配成功,则根据所匹配的索引信息中的指向数据记录的指针从所述共享内存中获取对应的数据记录,并向所述外部应用返回指示“查询成功”的响应并断开与共享内存的连接,以及如果匹配失败,则向所述外部应用返回指示“查询失败”的响应并断开与共享内存的连接。在上面所公开的方案中,优选地,所述指示“查询成功”的响应包含查询出的符合所述查询条件的数据记录的部分或全部内容。在上面所公开的方案中,优选地,所述查询条件是第一数字串,所述数据记录的关键字段是第二数据串,并且所述第二数据串的长度小于所述第一数字串,其中,所述查询操作包括:(1)设置L=最大第二数据串的长度(示例性地,该最大第二数据串的长度可以预先通过配置参数的方式而被确定);(2)如果L大于2,则进入步骤(3),否则,向外部应用返回指示“查询失败”的响应(即未找到与查询条件相对应的数据记录),并终止查询操作;(3)提取所述第一数字串的前L位数字,并根据所述第一数字串的前L位数字计算对应的哈希值;(4)将计算出的所述哈希值与所述共享内存中存储的索引信息中的哈希值进行匹配;(5)如果匹配成功,则根据所匹配的索引信息中的指向数据记录的指针从所述共享内存中获取对应的数据记录,并向外部应用返回指示“查询成功”的响应以及终止查询操作,而如果匹配失败,则使得L=L-1,并返回步骤(2)。本专利技术的目的还通过以下技术方案实现:一种基于共享内存的信息查询方法,所述基于共享内存的信息查询方法包括下列步骤:(A1)信息查询设备在启动时基于与对应的数据库的数据通信而执行初始化操作,所述初始化操作包括创建共享内存并将所述数据库中指定的数据记录装载到所述共享内存中;(A2)所述信息查询设备基于接收到的来自外部应用的包含查询条件的查询指令执行查询操作,以从所述共享内存中查询出符合所述查询条件的数据记录。本专利技术所公开的基于共享内存的信息查询设备及方法具有如下优点:具有极高的查询效率,例如,假设具有400万条数据记录,如果根据主键信息从数据库中搜索一条记录,则时间为1秒左右,而如果使用专利技术所公开的基于共享内存的信息查询方法,则从共享内存中根据主键信息搜索一条记录的时间仅为12微秒左右。附图说明结合附图,本专利技术的技术特征以及优点将会被本领域技术人员更好地理解,其中:图1是根据本专利技术的实施例的基于共享内存的信息查询设备的示意性结构图;图2是根据本专利技术的实施例的基于共享内存的信息查询方法的流程图。具体实施方式图1是根据本专利技术的实施例的基于共享内存的信息查询设备的示意性结构图。如图1所示,本专利技术所公开的基于共享内存的信息查询设备包括初始化装置1和查询装置2。其中,所述初始化装置1在所述信息查询设备启动时基于与对应的数据库的数据通信而执行初始化操作,所述初始化操作包括创建共享内存并将所述数据库中指定的数据记录装载到所述共享内存中(示例性地,可以通过设置配置参数的方式指定要被装载到共享内存中的所述数据库中的数据记录)。所述查询装置2基于接收到的来自外部应用的包含查询条件的查询指令执行查询操作,以从所述共享内存中查询出符合所述查询条件的数据记录。示例性地,在本专利技术所公开的基于共享内存的信息查询设备中,所述查询条件包括待查询的数据记录的关键字段。优选地,在本专利技术所公开的基于共享内存的信息查询设备中,所述初始化操作进一步包括:从所述数据库依次获取指定的各个参数表的记录数,并且基于所获取的各个参数表的记录数计算共享内存的大小(示例性地,如果指定需要装载三个参数表T1、T2和T3,则共享内存的总空间为M=T1的记录数*T1结构体大小+T2的记录数*T2结构体大小+T3的记录数*T3结构体大小),并基于计算出的共享内存的大小创建所述共享内存(所创建的共享内存包括一定的空闲预留空间)。优选地,在本专利技术所公开的基于共享内存的信息查询设备中,所述初始化操作进一步包括:在指定的数据记录被装载到所述共享内存中后,针对每个数据记录执行如下操作:计算该数据记录的关键字段的哈希值,并将计算出的哈希值和指向该数据记录的指针合并为与该数据记录相关联的索引信息,以及将所述索引信息存储在所述共享内存中(示例性地,使用经过优化的哈希函数,以确保每条数据记录的哈希值都不相同,此外,如果两条数据记录的哈希值相同,则可以采用链表法来解决冲突)。优选地,在本专利技术所公开的基于共享内存的信息查询设备中,所述查询操作包括:根据所述查询条件计算对应的哈希值;连接到所述共享内存,并将计算出的所述哈希值与所述共享内存中存储的索引信息中的哈希值进行匹配;如果匹配成功,则根本文档来自技高网...
基于共享内存的信息查询设备及方法

【技术保护点】
一种基于共享内存的信息查询设备,所述基于共享内存的信息查询设备包括:初始化装置,所述初始化装置在所述信息查询设备启动时基于与对应的数据库的数据通信而执行初始化操作,所述初始化操作包括创建共享内存并将所述数据库中指定的数据记录装载到所述共享内存中;查询装置,所述查询装置基于接收到的来自外部应用的包含查询条件的查询指令执行查询操作,以从所述共享内存中查询出符合所述查询条件的数据记录;其中,所述查询条件是第一数字串,所述数据记录的关键字段是第二数据串,并且所述第二数据串的长度小于所述第一数字串,其中,所述查询操作包括:(1)设置L=最大第二数据串的长度;(2)如果L大于2,则进入步骤(3),否则,向外部应用返回指示“查询失败”的响应,并终止查询操作;(3)提取所述第一数字串的前L位数字,并根据所述第一数字串的前L位数字计算对应的哈希值;(4)将计算出的所述哈希值与所述共享内存中存储的索引信息中的哈希值进行匹配;(5)如果匹配成功,则根据所匹配的索引信息中的指向数据记录的指针从所述共享内存中获取对应的数据记录,并向外部应用返回指示“查询成功”的响应以及终止查询操作,而如果匹配失败,则使得L=L‑1,并返回步骤(2)。...

【技术特征摘要】
1.一种基于共享内存的信息查询设备,所述基于共享内存的信息查询设备包括:初始化装置,所述初始化装置在所述信息查询设备启动时基于与对应的数据库的数据通信而执行初始化操作,所述初始化操作包括创建共享内存并将所述数据库中指定的数据记录装载到所述共享内存中;查询装置,所述查询装置基于接收到的来自外部应用的包含查询条件的查询指令执行查询操作,以从所述共享内存中查询出符合所述查询条件的数据记录;其中,所述查询条件是第一数字串,所述数据记录的关键字段是第二数据串,并且所述第二数据串的长度小于所述第一数字串,其中,所述查询操作包括:(1)设置L=最大第二数据串的长度;(2)如果L大于2,则进入步骤(3),否则,向外部应用返回指示“查询失败”的响应,并终止查询操作;(3)提取所述第一数字串的前L位数字,并根据所述第一数字串的前L位数字计算对应的哈希值;(4)将计算出的所述哈希值与所述共享内存中存储的索引信息中的哈希值进行匹配;(5)如果匹配成功,则根据所匹配的索引信息中的指向数据记录的指针从所述共享内存中获取对应的数据记录,并向外部应用返回指示“查询成功”的响应以及终止查询操作,而如果匹配失败,则使得L=L-1,并返回步骤(2)。2.根据权利要求1所述的基于共享内存的信息查询设备,其特征在于,所述查询条件包括待查询的数据记录的关键字段。3.根据权利要求2所述的基于共享内存的信息查询设备,其特征在于,所述初始化操作进一步包括:从所述数据库依次获取指定的各个参数表的记录数,并且基于所获取的各个参数表的记录数计算共享内存的大小,并基于计算出的共享内存的大小创建所述共享内存。4.根据权利要求3所述的基于共享内存的信息查询设备,其特征在于,所述初始化操作进一步包括:在指定的数据记录被装载到所述共享内存中后,针对每个数据记录执行如下操作:计算该数据记录的关键字段的哈希值,并将计算出的哈希值和指向该数据记录的指针合并为与该数据记录相关联的索引信息,以及...

【专利技术属性】
技术研发人员:邱鹏杨燕明
申请(专利权)人:中国银联股份有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1