智能卡数据库多表操作方法及装置.pdf

上传人:大师****2 文档编号:971917 上传时间:2018-03-22 格式:PDF 页数:20 大小:1.25MB
返回 下载 相关 举报
摘要
申请专利号:

CN201010163363.9

申请日:

2010.04.28

公开号:

CN101840430A

公开日:

2010.09.22

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20100428|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

北京握奇数据系统有限公司

发明人:

刘庆海

地址:

100015 北京市朝阳区东直门外西八间房万红西街2号燕东商务花园

优先权:

专利代理机构:

北京中博世达专利商标代理有限公司 11274

代理人:

申健

PDF下载: PDF下载
内容摘要

本发明实施例公开了一种智能卡数据库多表操作方法及装置,涉及智能卡数据库领域,提高了智能卡数据库的性能和操作效率。本发明包括:从需要进行连接操作的至少两个数据库表中,选取一个数据库表作为第一数据库表;将满足与所述第一数据库表对应的第一查询条件的第一记录存储在预分配的第一缓存中;从所述记录中获取与连接查询条件中数据域名对应的数据域值,用所述数据域值代替所述连接查询条件中对应的数据域名组成第二查询条件,将满足所述第二查询条件的第二记录存储到预分配的第二缓存中;将所述第一记录与第二记录进行连接组合并存储在预分配的连接输出缓存中。本发明主要用于智能卡数据库进行多表连接查询的过程中。

权利要求书

1: 一种智能卡数据库多表操作方法, 其特征在于, 包括 : 从需要进行连接操作的至少两个数据库表中, 选取一个数据库表作为第一数据库表 ; 获取满足第一查询条件的第一记录, 并根据第一缓存的大小将所述第一记录存储在所 述第一缓存中, 所述第一查询条件为与所述第一数据库表对应的查询条件, 所述第一缓存 的大小至少为所述第一数据库表中一条记录的存储空间大小 ; 从所述第一记录中获取所述第一数据库表与其他数据库表的连接查询条件中数据域 名对应的数据域值, 用所述数据域值代替所述连接查询条件中对应的数据域名组成第二查 询条件 ; 获取满足所述第二查询条件的第二记录, 并根据第二缓存的大小将所述第二记录存储 在所述第二缓存中, 所述第二缓存的大小至少为所述第二数据库表中一条记录的存储空间 大小 ; 将所述第一记录与所述第二记录进行连接组合得到连接组合记录, 并将所述连接组合 记录存储在预分配的连接输出缓存中, 所述连接输出缓存的大小至少为所述第一数据库表 和第二数据库表连接后一条连接组合记录记录的存储空间大小。
2: 根据权利要求 1 所述的方法, 其特征在于, 所述根据第一缓存的大小将所述第一记 录存储在所述第一缓存中包括 : 判断所述第一记录的大小是否大于所述第一缓存的大小 ; 若所述第一记录的大小小于或等于所述第一缓存的大小, 则将所述第一记录一次全部 存储在所述第一缓存中 ; 若所述第一记录的大小大于所述第一缓存的大小, 则根据所述第一缓存的大小分批将 所述第一记录存储在所述第一缓存中。
3: 根据权利要求 2 所述的方法, 其特征在于, 所述根据所述第一缓存的大小分批将所 述第一记录存储在所述第一缓存中包括 : 从所述第一记录中选取小于或等于所述第一缓存空间大小的记录存储在所述第一缓 存中, 并标记所述第一数据库表中还存在满足所述第一查询条件的第一记录 ; 在将所述第一缓存中的记录与满足第二查询条件的记录连接组合完成后, 依据所述标 记查询数据库, 获取满足第一查询条件的剩余的第一记录 ; 根据第一缓存的大小分批将所述剩余的第一记录存储在所述第一缓存中。
4: 根据权利要求 1 所述的方法, 其特征在于, 所述根据第二缓存的大小将所述第二记 录存储在所述第二缓存中包括 : 判断所述第二记录的大小是否大于所述第二缓存的大小 ; 若所述第二记录的大小小于或等于所述第二缓存的大小, 则将所述第二记录一次全部 存储在所述第二缓存中 ; 若所述第二记录的大小大于所述第二缓存的大小, 则根据所述第二缓存的大小分批将 所述第二记录存储在所述第二缓存中。
5: 根据权利要求 4 所述的方法, 其特征在于, 所述根据所述第二缓存的大小分批将所 述第二记录存储在所述第二缓存中包括 : 从所述第二记录中选取小于或等于所述第二缓存空间大小的记录存储在所述第二缓 存中, 并标记所述第二数据库表中还存在满足所述第二查询条件的记录 ; 2 在将所述第二缓存中的记录与所述连接查询条件对应的第一记录连接组合完后, 依据 所述标记查询数据库, 获取满足第二查询条件的剩余的第二记录 ; 根据第二缓存的大小分批将所述剩余的第二记录存储在所述第二缓存中。
6: 根据权利要求 1 所述的方法, 其特征在于, 所述将所述第一记录与所述第二记录进 行连接组合得到连接组合记录, 并将所述连接组合记录存储在预分配的连接输出缓存中包 括: 若所述第二缓存中不存在所述第二记录, 则用空值填补一条满足所述第二查询条件的 第二记录, 并将所述填补空值后的第二记录与第一缓存中的所述第一记录进行连接组合得 到连接组合记录, 并将所述连接组合记录存储在预分配的连接输出缓存中 ; 或者仅将所述 第一记录存储在预分配的连接输出缓存中 ; 若所述第二缓存中存在所述第二记录, 则将与所述第二查询条件的数据域值对应的第 一记录和第二记录进行连接组合得到连接组合记录, 并将所述连接组合记录存储在预分配 的连接输出缓存中。
7: 根据权利要求 1 所述的方法, 其特征在于, 该方法还包括 : 根据所述第一数据库表和第二数据库表连接后连接组合记录的大小以及智能卡剩余 内存的大小确定所述连接输出缓存的大小 ; 将所述智能卡剩余内存的大小减去连接输出缓存的大小作为新的智能卡剩余内存的 大小 ; 根据所述获取的第一数据库表和第二数据库表一条记录的大小、 以及所述新的智能卡 剩余内存的大小, 分别确定与所述第一数据表和第二数据库表对应的第一缓存和第二缓存 的大小。
8: 根据权利要求 1 所述的方法, 其特征在于, 该方法还包括 : 在根据所述连接查询条件执行完所述连接查询操作后, 将预分配的第一缓存、 第二缓 存以及连接输出缓存释放。
9: 一种智能卡数据库多表操作装置, 其特征在于, 包括 : 选取单元, 用于从需要进行连接操作的至少两个数据库表中, 选取一个数据库表作为 第一数据库表 ; 第一获取单元, 用于获取满足第一查询条件的第一记录, 所述第一查询条件为与所述 第一数据库表对应的查询条件 ; 第一存储单元, 用于根据第一缓存的大小将所述第一获取单元获取的所述第一记录存 储在所述第一缓存中, 所述第一缓存的大小至少为所述第一数据库表中一条记录的存储空 间大小 ; 组成单元, 用于从所述第一记录中获取所述第一数据库表与其他数据库表的连接查询 条件中数据域名对应的数据域值, 用所述数据域值代替所述连接查询条件中对应的数据域 名组成第二查询条件 ; 第二获取单元, 用于获取满足所述第二查询条件的第二记录 ; 第二存储单元, 用于根据第二缓存的大小将所述第二获取单元获取的所述第二记录存 储在所述第二缓存中, 所述第二缓存的大小至少为所述第二数据库表中一条记录的存储空 间大小 ; 3 连接组合单元, 用于将所述第一记录与所述第二记录进行连接组合得到连接组合记 录; 第三存储单元, 用于将所述连接组合单元生成的连接组合记录存储在预分配的连接输 出缓存中, 所述连接输出缓存的大小至少为所述第一数据库表和第二数据库表连接后一条 连接组合记录记录的存储空间大小。
10: 根据权利要求 9 所述的装置, 其特征在于, 所述第一存储单元包括 : 第一判断模块, 用于判断所述第一记录的大小是否大于所述第一缓存的大小 ; 第一存储模块, 用于在所述第一判断模块判定所述第一记录的大小小于或等于所述第 一缓存的大小时, 将所述第一记录一次全部存储在所述第一缓存中 ; 第一分批存储模块, 用于在所述第一判断模块判定所述第一记录的大小大于所述第一 缓存的大小时, 根据所述第一缓存的大小分批将所述第一记录存储在所述第一缓存中。
11: 根据权利要求 10 所述的装置, 其特征在于, 所述第一分批存储模块用于, 从所述第 一记录中选取小于或等于所述第一缓存空间大小的记录存储在所述第一缓存中 ; 在所述第 一选取子模块从所述第一记录中选取标记所述第一数据库表中还存在满足所述第一查询 条件的第一记录时, 标记所述第一数据库表中还存在满足所述第一查询条件的第一记录 ; 并且在将所述第一缓存中的记录与满足第二查询条件的记录连接组合完成后, 依据所述标 记查询数据库, 获取满足第一查询条件的剩余的第一记录, 并根据第一缓存的大小分批将 所述剩余的第一记录存储在所述第一缓存中。
12: 根据权利要求 9 所述的装置, 其特征在于, 所述第二存储单元包括 : 第二判断模块, 用于判断所述第二记录的大小是否大于所述第二缓存的大小 ; 第二存储模块, 用于在所述第二判断模块判定所述第二记录的大小小于或等于所述第 二缓存的大小时, 将所述第二记录一次全部存储在所述第二缓存中 ; 第二分批存储模块, 用于在所述第二判断模块判定所述第二记录的大小大于所述第二 缓存的大小时, 根据所述第二缓存的大小分批将所述第二记录存储在所述第二缓存中。
13: 根据权利要求 12 所述的装置, 其特征在于, 所述第二分批存储模块用于, 从所述第 二记录中选取小于或等于所述第二缓存空间大小的记录存储在所述第二缓存中 ; 在所述第 二选取子模块从所述第二记录中选取小于或等于所述第二缓存空间大小的记录时, 标记所 述第二数据库表中还存在满足所述第二查询条件的记录 ; 并且在将所述第二缓存中的记录 与所述连接查询条件对应的第一记录连接组合完后, 依据所述标记查询数据库, 获取满足 第二查询条件的剩余的第二记录, 并根据第二缓存的大小分批将所述剩余的第二记录存储 在所述第二缓存中。
14: 根据权利要求 9 所述的装置, 其特征在于, 该装置还包括 : 缓存分配单元, 用于根据所述第一数据库表和第二数据库表连接后连接组合记录的大 小以及智能卡剩余内存的大小确定所述连接输出缓存的大小 ; 计算单元, 用于将所述智能卡剩余内存的大小减去连接输出缓存的大小作为新的智能 卡剩余内存的大小 ; 所述缓存分配单元还用于, 根据所述获取的第一数据库表和第二数据库表一条记录的 大小、 以及所述新的智能卡剩余内存的大小, 分别确定与所述第一数据表和第二数据库表 对应的第一缓存和第二缓存的大小。 4
15: 根据权利要求 9 所述的装置, 其特征在于, 所述装置还包括 : 释放单元, 用于在根据所述连接查询条件执行完所述连接查询操作后, 将缓存分配单 元预分配的第一缓存、 第二缓存以及连接输出缓存释放。

说明书


智能卡数据库多表操作方法及装置

    【技术领域】
     本发明涉及智能卡数据库领域, 尤其涉及一种智能卡数据库多表操作方法及装置。 背景技术
     由于智能卡数据库只提供单表操作, 因此在设计智能卡数据库应用时只能按单个 数据库表进行设计。当需要对数据库中的多个数据表进行连接应用时, 目前对智能卡数据 库的操作有两种方法 : 第一种, 首先将需要连接应用的多个数据表合成一个表, 即把多个数 据表中所有信息放在一张表中, 然后对该包含所有信息的合成表进行操作 ; 第二种, 通过应 用来完成相关数据库表的操作, 即把需要连接应用的表中的数据全部取到应用中, 在应用 中完成相关连接操作。
     在实现上述智能卡数据库多表操作的过程中, 发明人发现现有技术中至少存在如 下问题 : 由于智能卡的缓存空间有限, 若采用第一种方法, 合成后的数据库表中会增加许多 冗余数据, 使智能卡数据库性能急剧下降, 影响了数据库的操作效率。若采用第二种方法, 会在通讯中增加许多冗余数据, 增加了智能卡通讯处理时间, 并且大量的冗余数据需要存 储在智能卡有限的内存中, 使智能卡的数据库性能急剧下降, 影响了智能卡数据库的操作 效率。上述两种方法获取的数据都存在大量的冗余, 造成大量冗余数据存储在有限的智能 卡内存中, 使得原本有限的内存空间更加拥塞, 造成智能卡的数据库性能急剧下降, 影响了 智能卡数据库的操作效率。 发明内容
     本发明的实施例提供一种智能卡数据库多表操作方法及装置, 提高了智能卡数据 库的性能和智能卡数据库的操作效率。
     为达到上述目的, 本发明的实施例采用如下技术方案 :
     一种智能卡数据库多表操作方法, 包括 :
     从需要进行连接操作的至少两个数据库表中, 选取一个数据库表作为第一数据库 表;
     获取满足第一查询条件的第一记录, 并根据第一缓存的大小将所述第一记录存储 在所述第一缓存中, 所述第一查询条件为与所述第一数据库表对应的查询条件, 所述第一 缓存的大小至少为所述第一数据库表中一条记录的存储空间大小 ;
     从所述第一记录中获取所述第一数据库表与其他数据库表的连接查询条件中数 据域名对应的数据域值, 用所述数据域值代替所述连接查询条件中对应的数据域名组成第 二查询条件 ;
     获取满足所述第二查询条件的第二记录, 并根据第二缓存的大小将所述第二记录 存储在所述第二缓存中, 所述第二缓存的大小至少为所述第二数据库表中一条记录的存储 空间大小 ;将所述第一记录与所述第二记录进行连接组合得到连接组合记录, 并将所述连接 组合记录存储在预分配的连接输出缓存中, 所述连接输出缓存的大小至少为所述第一数据 库表和第二数据库表连接后一条连接组合记录记录的存储空间大小。
     一种智能卡数据库多表操作装置, 包括 :
     选取单元, 用于从需要进行连接操作的至少两个数据库表中, 选取一个数据库表 作为第一数据库表 ;
     第一获取单元, 用于获取满足第一查询条件的第一记录, 所述第一查询条件为与 所述第一数据库表对应的查询条件 ;
     第一存储单元, 用于根据第一缓存的大小将所述第一获取单元获取的所述第一记 录存储在所述第一缓存中, 所述第一缓存的大小至少为所述第一数据库表中一条记录的存 储空间大小 ;
     组成单元, 用于从所述第一记录中获取所述第一数据库表与其他数据库表的连接 查询条件中数据域名对应的数据域值, 用所述数据域值代替所述连接查询条件中对应的数 据域名组成第二查询条件 ;
     第二获取单元, 用于获取满足所述第二查询条件的第二记录 ; 第二存储单元, 用于根据第二缓存的大小将所述第二获取单元获取的所述第二记 录存储在所述第二缓存中, 所述第二缓存的大小至少为所述第二数据库表中一条记录的存 储空间大小 ;
     连接组合单元, 用于将所述第一记录与所述第二记录进行连接组合得到连接组合 记录 ;
     第三存储单元, 用于将所述连接组合单元生成的连接组合记录存储在预分配的连 接输出缓存中, 所述连接输出缓存的大小至少为所述第一数据库表和第二数据库表连接后 一条连接组合记录记录的存储空间大小。
     采用本发明技术方案后, 当需要对智能卡数据库中的多个数据库表进行关联查询 操作时, 在智能卡内为需要进行关联查询的数据库表设置至少能够存储下一条记录的第一 缓存和第二缓存, 并根据连接后的记录设置对应的连接输出缓存 ; 在进行多表查询操作时, 将满足查询条件的记录根据缓存的大小存储分批存储在设置的第一缓存和第二缓存中, 并 在对满足条件的记录进行连接操作后, 将连接后的记录存储在连接输出缓存中, 以实现智 能卡数据表的多表关联查询, 即, 使用缓存复用的方式充分利用有限的智能卡内存空间, 从 而提高了智能卡数据库的性能和质量。
     附图说明
     为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以 根据这些附图获得其他的附图。
     图 1 为本发明实施例 1 中智能卡数据库多表操作的方法流程图 ;
     图 2 为本发明实施例 2 中智能卡数据库多表操作的方法流程图 ;
     图 3 为本发明实施例 3 中一种智能卡数据库多表操作装置的组成框图 ;图 4 为本发明实施例 3 中另一种智能卡数据库多表操作装置的组成框图 ; 图 5 为本发明实施例 3 中另一种智能卡数据库多表操作装置的组成框图 ; 图 6 为本发明实施例 3 中另一种智能卡数据库多表操作装置的组成框图。具体实施方式
     下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。
     实施例 1
     本发明实施例提供一种智能卡数据库的查询方法, 如图 1 所示, 该方法包括 :
     101、 从需要进行连接操作的至少两个数据库表中, 选取一个数据库表作为第一数 据库表。
     其中, 智能卡数据库表之间的连接操作方式一般包括以下三种, 左连接操作、 右连 接操作和内连接操作 ; 其中, 从需要进行连接操作的至少两个数据库表中, 选取一个数据库 表作为第一数据库表可以包括 : 首先根据接口函数中的连接类型值来判断所述智能卡数据 库表的连接操作方式 ; 其次根据所述智能卡数据库表的连接操作方式, 从需要进行连接操 作的至少两个数据库表中选取一个数据库表作为第一数据库表, 本发明实施例对此不进行 限制。 例如, 当所述智能卡数据库表的连接操作方式为左连接操作时, 根据连接条件表达式 选取连接条件表达式中逻辑关系符号左边的数据库表为第一数据库表 ; 当所述智能卡数据 库表的连接操作方式为右连接操作时, 根据连接条件表达式选取连接条件表达式中逻辑关 系符号右边的数据库表为第一数据库表 ; 当所述智能卡数据库表的连接操作方式为内连接 操作时, 选取所述需要连接的至少两个数据库表中的任一数据库表为第一数据库表。 其中, 当需要数据库中的三表或者多表连接操作时, 先对第一个和第二个表按照上述两表连接方 式进行连接, 然后用两表连接后的结果和第三个表进行连接, 以此类推, 直到所有的表都连 接完为止。
     102、 获取满足第一查询条件的第一记录, 并根据第一缓存的大小将所述第一记录 存储在所述第一缓存中, 所述第一查询条件为与所述第一数据库表对应的查询条件, 所述 第一缓存的大小至少为所述第一数据库表中一条记录的存储空间大小。
     其中, 所述与第一数据库表对应的第一查询条件可以包括针对所述第一数据库表 指定输出的多个字段的查询条件, 本发明实施例中为了描述方便, 将针对所述第一数据库 表可以包含指定输出的多个字段的查询条件统称为第一查询条件。
     103、 从所述第一记录中获取所述第一数据库表与其他数据库表的连接查询条件 中数据域名对应的数据域值, 用所述数据域值代替所述连接查询条件中对应的数据域名组 成第二查询条件。
     104、 获取满足所述第二查询条件的第二记录, 并根据第二缓存的大小将所述第二 记录存储在所述第二缓存中, 所述第二缓存的大小至少为所述第二数据库表中一条记录的 存储空间大小。
     105、 将所述第一记录与所述第二记录进行连接组合得到连接组合记录, 并将所述连接组合记录存储在预分配的连接输出缓存中, 所述连接输出缓存的大小至少为所述第一 数据库表和第二数据库表连接后一条连接组合记录记录的存储空间大小。
     本发明实施例中, 当需要对智能卡数据库中的多个数据库表进行关联查询操作 时, 在智能卡内为需要进行关联查询的数据库表设置至少能够存储下一条记录的第一缓存 和第二缓存, 并根据连接后的记录设置对应的连接输出缓存 ; 在进行多表查询操作时, 将满 足查询条件的记录根据缓存的大小存储分批存储在设置的第一缓存和第二缓存中, 并在对 满足条件的记录进行连接操作后, 将连接后的记录存储在连接输出缓存中, 以实现智能卡 数据表的多表关联查询, 即, 使用缓存复用的方式充分利用有限的智能卡内存空间, 从而提 高了智能卡数据库的性能和质量。
     实施例 2
     本发明实施例提供一种智能卡数据库多表操作方法, 智能卡数据库表之间的连接 操作一般包括以下三种, 左连接操作、 右连接操作和内连接操作, 本发明实施例具体以左连 接操作方式对所述智能卡数据库两表操作方法进行具体阐述, 如图 2 所示, 该方法包括 :
     为在本实施例中描述的方便, 本发明实施例将智能卡数据库需要连接的两个数据 库表称为左表和右表, 将对应所述左表和右表预分配的缓存分别称为左表缓存和右表缓 存。
     201、 从需要进行连接操作的两个数据库表中, 选取一个数据库表作为第一数据库 表, 即数据库的左表和右表 ; 本发明实施例以左表作为第一数据库表。
     进一步地, 本发明实施例还预设置了存储满足所述左表和右表查询条件记录的左 表缓存 ( 第一缓存 )、 右表缓存 ( 第二缓存 ), 以及存储连接记录的连接输出缓存。在分配 上述三个缓存时, 一般按照先分配连接输出缓存, 再分配左表缓存和右表缓存的顺序, 具体 包括 :
     根据所述获取的数据库表连接后所得连接组合记录的大小以及智能卡剩余内存 的大小确定所述连接输出缓存的大小 ; 将所述智能卡剩余内存的大小减去连接输出缓存的 大小作为新的智能卡剩余内存的大小 ; 根据所述获取的第一数据库表和第二数据库表一条 记录的大小、 以及所述新的智能卡剩余内存的大小, 分别确定与所述第一数据表和第二数 据库表对应的第一缓存和第二缓存的大小。 其中, 所述缓存的大小可以用记录条数来确定, 但本发明实施例对此不进行限制。
     202、 获取满足第一查询条件的第一记录, 根据左表缓存的大小将所述第一记录存 储在预分配的左表缓存中, 所述第一查询条件为与左表相对应的查询条件。
     其中, 所述与第一数据库表对应的第一查询条件可以包括针对所述第一数据库表 指定输出的多个字段的查询条件, 本发明实施例中为了描述方便, 将针对所述第一数据库 表可以包含指定输出的多个字段的查询条件统称为第一查询条件。
     其中, 由于智能卡的内存空间有限, 因此为所述左表分配的左表缓存空间大小也 有限, 可能存在所述预分配的左表缓存不能容纳满足第一查询条件的所有记录, 因此, 在根 据所述第一查询条件获取满足第一查询条件的第一记录, 并将所述第一记录存储在所述左 表缓存的过程中, 所述将满足所述第一查询条件的记录存储在预分配的左表缓存中时, 需 要判断所述满足所述第一查询条件的记录大小是否超过所述预分配的左表缓存的大小, 若 超过所述左表缓存的大小, 则需要根据所述左表缓存的大小将所述满足第一查询条件的记录分批存储在所述左表缓存中, 具体包括 :
     判断所述记录的大小是否大于所述左表缓存的大小 ; 若所述第一记录大小小于或 等于所述左表缓存的大小, 则将所述第一记录一次全部存储在所述左表缓存中 ; 若所述第 一记录的大小大于所述左表缓存的大小, 则根据所述左表缓存的大小分批将所述第一记录 存储在所述左表缓存中。其中, 所述根据所述左表缓存的大小分批将所述第一记录存储在 所述左表缓存中, 可以包括 : 从所述第一记录中选取小于或等于所述左表缓存空间大小的 记录存储在所述左表缓存中, 并标记所述第一数据库表中还存在满足所述第一查询条件的 第一记录 ; 在将所述左表缓存中的记录与满足第二查询条件的记录连接组合完成后, 依据 所述标记查询数据库, 获取满足第一查询条件的剩余的第一记录 ; 根据左表缓存的大小分 批将所述剩余的第一记录存储在所述左表缓存中。
     203、 判断所述左表缓存中是否存在没有处理的记录, 若所述左表缓存中不存在没 有处理的记录, 则执行步骤 204 ; 若所述左表缓存中存在没有处理的记录, 则执行步骤 205。
     204、 判断所述左表中是否还存在满足第一查询条件的记录 ; 若所述左表中还存在 满足第一查询条件的记录, 则执行步骤 202 ; 若所述左表中不存在满足第一查询条件的记 录, 则结束本连接查询操作。 205、 从所述左表缓存中取出一条记录, 并从所述记录中获取与连接查询条件中数 据域名对应的数据域值, 用所述数据域值代替所述连接查询条件中对应的数据域名组成第 二查询条件。
     206、 根据所述第二查询条件对需要与所述左表连接的右表进行查询, 将满足所述 第二查询条件的记录存储到预分配的右表缓存中。
     其中, 由于智能卡的内存空间有限, 因此为所述右表分配的右表缓存空间大小也 有限, 可能存在所述预分配的右表缓存不能容纳满足第二查询条件的所有记录, 因此在根 据所述第二查询条件获取满足所述第二查询条件的第二记录, 并所述将满足所述第二查询 条件的第二记录存储在预分配的右表缓存中时, 需要判断所述第二记录的大小是否大于所 述预分配的右表缓存的大小, 若大于所述右表缓存的大小, 则需要根据所述右表缓存的大 小将所述满足第二查询条件的记录分批存储在所述右表缓存中, 具体包括 :
     判断所述第二记录的大小是否大于所述右表缓存的大小 ; 若所述第二记录大小小 于或等于所述右表缓存的大小, 则将所述第二记录全部一次存储在所述右表缓存中 ; 若所 述第二记录大小大于所述右表缓存的大小, 则根据所述右表缓存的大小分批将所述第二记 录存储在所述右表缓存中。其中, 所述根据所述右表缓存的大小分批将所述第二记录存储 在所述右表缓存中包括 : 从所述第二记录中选取小于或等于所述右表缓存空间大小的记 录存储在所述右表缓存中, 并标记所述第二数据库表中还存在满足所述第二查询条件的记 录; 在将所述右表缓存中的记录与所述连接查询条件对应的第一记录连接组合完后, 依据 所述标记查询数据库, 获取满足第二查询条件的剩余的第二记录 ; 根据右表缓存的大小分 批将所述剩余的第二记录存储在所述右表缓存中。
     207、 判断所述右表缓存中是否存在没有处理的记录, 若所述右表缓存中不存在没 有处理的记录, 则执行步骤 208 ; 若所述右表缓存中存在没有处理的记录, 则执行步骤 209。
     208、 判断所述右表中是否还存在满足第二查询条件的记录 ; 若所述右表中还存在 满足第二查询条件的记录, 则执行步骤 206 ; 若所述右表中不存在满足第二查询条件的记
     录, 则执行步骤 205。
     209、 从所述右表缓存中取出一条记录, 并将从所述右表缓存中取出的记录与从所 述左表取出的一条记录进行连接, 将连接后的记录存储在所述连接输出缓存中, 并将所述 连接输出缓存中的记录数加 1。
     其中, 为保持连接后记录长度的一致性, 若所述右表缓存中不存在满足所述第二 查询条件的记录, 可以用空值填补一条满足所述第二查询条件的记录, 并将所述填补空值 后的记录与从左表缓存中依次取出满足所述第一查询条件的记录进行连接组合, 并存储在 预分配的连接输出缓存中, 并将所述连接输出缓存中的记录数加 1。
     210、 判断所述输出缓存中的记录数是否等于所述输出缓存能存储的记录数, 若所 述输出缓存中的记录数小于所述输出缓存能存储的记录数, 则执行步骤 209 ; 若所述输出 缓存中的记录数等于所述输出缓存能存储的记录数, 则执行步骤 211。
     211、 记录所述输出缓存中查找到的连接记录数, 并将所述输出缓存中的连接记录 输出。
     进一步地, 在执行步骤 206 的过程中, 还包括 : 根据与所述右表对应的第三查询条 件, 对所述第二数据库表进行查询, 将满足所述第二查询条件和第三查询条件的记录存储 在预分配的右表缓存中, 以便使查找到的满足所述连接查询条件的记录更准确。 其中, 所述 与第二数据库表对应的第三查询条件可以包括针对所述第二数据库表指定输出的多个字 段的查询条件, 本发明实施例中为了描述方便, 将针对所述第二数据库表可以包含指定输 出的多个字段的查询条件统称为第三查询条件, 但不限制于此。 进一步地, 在根据所述连接查询条件进行完所述连接查询操作后, 本发明实施例 还包括 : 将预分配的左表缓存和右表缓存, 以及连接输出缓存释放, 以便所述智能卡使用所 述释放内存进行其他的操作。
     本发明实施例中主要针对两表的左连接操作为例进行了具体阐述, 当按照两表的 右连接操作实施本发明实施例时, 与采用两表左连接操作的不同之处包括 : 将所述右表作 为第一数据库表, 并首先根据与所述右表对应的查询条件对所述右表进行查询, 其他步骤 的执行参考使用两表左连接的具体操作 ; 当按照两表内连接的操作方式实施本发明实施例 时, 区别于两表左连接和两表右连接的操作包括 : 将所述左表或者右表中的任一个数据库 表作为第一数据库表, 并且在对所述需要连接操作的数据库表进行查询的过程中, 在根据 与所述第一数据库表对应的第一查询条件对所述第一数据库表进行查询的过程中, 若所述 第一数据库表中不存在满足所述第一查询条件的记录, 则结束数据表的连接查询操作 ; 若 所述第一数据库表中存在满足所述第一查询条件的记录, 但是第二数据库表中不存在满足 第二查询条件的记录, 则不再执行查询记录的连接和输出, 而直接终止数据库表连接查询 操作。
     本发明实施例中, 当需要对智能卡数据库中的多个数据库表进行关联查询操作 时, 在智能卡内为需要进行关联查询的数据库表设置至少能够存储下一条记录的第一缓存 和第二缓存, 并根据连接后的记录设置对应的连接输出缓存 ; 在进行多表查询操作时, 将满 足查询条件的记录根据缓存的大小存储分批存储在设置的第一缓存和第二缓存中, 并在对 满足条件的记录进行连接操作后, 将连接后的记录存储在连接输出缓存中, 以实现智能卡 数据表的多表关联查询, 即, 使用缓存复用的方式充分利用有限的智能卡内存空间, 从而提
     高了智能卡数据库的性能和质量。
     并且, 本发明实施例中通过在智能卡内完成连接操作, 只输出连接后的结果, 提高 了数据库操作效率。 通过多表连接操作, 可以把单表扩展到多表设计, 提高了智能卡数据库 表的设计灵活性。
     另外, 在根据所述连接查询条件执行完所述连接查询操作后, 将预分配的缓存释 放, 以便所述智能卡使用所述释放内存进行其他的操作, 从而提高了智能卡内存的利用率。
     实施例 3
     本发明实施例提供一种智能卡数据库的查询装置, 如图 3 所示, 该装置包括 : 选取 单元 301、 第一获取单元 302、 第一存储单元 303、 组成单元 304、 第二获取单元 305、 第二存储 单元 306、 连接组合单元 307 和第三存储单元 308。
     选取单元 301, 用于从需要进行连接操作的至少两个数据库表中, 选取一个数据 库表作为第一数据库表 ; 其中, 智能卡数据库表之间的连接操作方式一般包括以下三种, 包 括: 左连接操作、 右连接操作和内连接操作 ; 其中, 从需要进行连接操作的至少两个数据库 表中, 选取一个数据库表作为第一数据库表可以包括 : 首先根据接口函数中的连接类型值 来判断所述智能卡数据库表的连接操作方式 ; 其次根据所述智能卡数据库表的连接操作方 式, 从需要进行连接操作的至少两个数据库表中选取一个数据库表作为第一数据库表, 本 发明实施例对此不进行限制。例如, 当所述智能卡数据库表的连接操作方式为左连接操作 时, 根据连接条件表达式选取连接条件表达式中逻辑关系符号左边的数据库表为第一数据 库表 ; 当所述智能卡数据库表的连接操作方式为右连接操作时, 根据连接条件表达式选取 连接条件表达式中逻辑关系符号右边的数据库表为第一数据库表 ; 当所述智能卡数据库表 的连接操作方式为内连接操作时, 选取所述需要连接的至少两个数据库表中的任一数据库 表为第一数据库表。 其中, 当需要数据库中的三表或者多表连接操作时, 先对第一个和第二 个表按照上述两表连接方式进行连接, 然后用两表连接后的结果和第三个表进行连接, 以 此类推, 直到所有的表都连接完为止。
     第一获取单元 302, 用于获取满足第一查询条件的第一记录, 并根据第一缓存的大 小将所述第一记录存储在所述第一缓存中, 所述第一查询条件为与所述第一数据库表对应 的查询条件, 所述第一缓存的大小至少为所述第一数据库表中一条记录的存储空间大小。 其中, 所述与第一数据库表对应的第一查询条件可以包括针对所述第一数据库表指定输出 的多个字段的查询条件, 本发明实施例中为了描述方便, 将针对所述第一数据库表可以包 含指定输出的多个字段的查询条件统称为第一查询条件。
     第一存储单元 303, 用于根据第一缓存的大小将所述第一获取单元 303 获取的所 述第一记录存储在所述第一缓存中, 所述第一缓存的大小至少为所述第一数据库表中一条 记录的存储空间大小。
     组成单元 304, 用于从所述第一记录中获取所述第一数据库表与其他数据库表的 连接查询条件中数据域名对应的数据域值, 用所述数据域值代替所述连接查询条件中对应 的数据域名组成第二查询条件。
     第二获取单元 305, 用于获取满足所述第二查询条件的第二记录 ; 第二存储单元 306, 用于根据第二缓存的大小将所述第二获取单元 305 获取的所述第二记录存储在所述 第二缓存中, 所述第二缓存的大小至少为所述第二数据库表中一条记录的存储空间大小。连接组合单元 307, 用于将所述第一记录与所述第二记录进行连接组合得到连接 组合记录 ; 第三存储单元 308, 用于将所述连接组合单元 307 生成的连接组合记录存储在预 分配的连接输出缓存中, 所述连接输出缓存的大小至少为所述第一数据库表和第二数据库 表连接后一条连接组合记录记录的存储空间大小。
     进一步, 如图 4 所示, 该装置还包括缓存分配单元 309 和计算单元 310, 缓存分配单 元 309 用于所述第一数据库表和第二数据库表连接后连接组合记录的大小以及智能卡剩 余内存的大小确定所述连接输出缓存的大小 ; 计算单元 310, 用于将所述智能卡剩余内存 的大小减去连接输出缓存的大小作为新的智能卡剩余内存的大小 ; 所述缓存分配单元 309 还用于, 根据所述获取的第一数据库表和第二数据库表一条记录的大小、 以及所述新的智 能卡剩余内存的大小, 分别确定与所述第一数据表和第二数据库表对应的第一缓存和第二 缓存的大小。
     进一步地, 如图 5 所示, 该装置还还包括释放单元 311。所述释放单元 311, 用于在 根据所述连接查询条件执行完所述连接查询操作后, 将缓存分配单元预分配的第一缓存、 第二缓存以及连接输出缓存释放。
     进一步地, 由于智能卡的内存空间有限, 因此为所述第一数据库表分配的第一存 空间大小有限, 可能存在所述预分配的第一数据库表缓存不能容纳满足第一查询条件的所 有记录, 因此在根据所述第一查询条件获取满足所述第一查询条件的第一记录, 并将所述 第一记录存储在预分配的第一缓存中时, 需要判断所述第一记录的大小是否大于所述预分 配的第一缓存的大小, 若大于所述第一缓存的大小, 则需要根据所述第一缓存的大小将所 述第一记录分批存储在所述第一缓存中, 如图 6 所示, 该所述第一存储单元 303 包括 : 第一 判断模块 3031、 第一存储模块 3032 和第一分批存储模块 3033。
     第一判断模块 3031, 用于判断满足所述第一查询条件的第一记录的大小是否大于 所述第一缓存的大小 ; 第一存储模块 3032, 用于在所述第一判断模块 3031 判定所述第一记 录的大小小于或等于所述第一缓存的大小时, 将所述第一记录全部一次存储在所述第一缓 存中 ; 在所述第一判断模块 3031 判定所述第一记录大小的大于所述第一缓存的大小时, 所 述第一分批存储模块 3033 用于, 根据所述第一缓存的大小分批将所述第一记录存储在所 述第一缓存中。
     其中, 所述第一分批存储模块 3033 具体用于, 所述第一分批存储模块用于, 从所 述第一记录中选取小于或等于所述第一缓存空间大小的记录存储在所述第一缓存中 ; 在所 述第一选取子模块从所述第一记录中选取标记所述第一数据库表中还存在满足所述第一 查询条件的第一记录时, 标记所述第一数据库表中还存在满足所述第一查询条件的第一记 录; 并且在将所述第一缓存中的记录与满足第二查询条件的记录连接组合完成后, 依据所 述标记查询数据库, 获取满足第一查询条件的剩余的第一记录, 并根据第一缓存的大小分 批将所述剩余的第一记录存储在所述第一缓存中。
     进一步, 由于智能卡的内存空间有限, 因此为所述第二数据库表分配的第二存空 间大小也有限, 可能存在所述预分配的第二表缓存不能容纳满足第二查询条件的所有记 录, 因此在根据所述第二查询条件查询所述第二数据库表, 获取满足所述第二查询条件的 第二记录, 并将所述第二记录存储在预分配的第二缓存中时, 需要判断所述满足所述第二 查询条件的第二记录大小是否大于所述预分配的第二缓存的大小, 若大于所述第二缓存的大小则需要根据所述第二缓存的大小将所述满足第二查询条件的记录分批存储在所述第 二缓存中, 如图 6 所示, 该所述第二存储单元 306 包括 : 第二判断模块 3061、 第二存储模块 3062 和第二分批存储模块 3063。
     第二判断模块 3061, 用于判断所述第二记录的大小是否大于所述第二缓存大小 ; 第二存储模块 3062, 用于在所述第二判断模块 3061 判定所述第二记录的大小小于或等于 所述第二缓存的大小时, 将所述第二记录一次全部存储在所述第二缓存中 ; 第二分批存储 模块 3062 还用于, 在所述第二判断模块 3061 判定所述第二记录的大小大于所述第二缓存 的大小时, 根据所述第二缓存的大小分批将所述第二记录存储在所述第二缓存中。
     其中, 所述第二分批存储模块 3062 具体用于, 从所述第二记录中选取小于或等于 所述第二缓存空间大小的记录存储在所述第二缓存中 ; 在所述第二选取子模块从所述第二 记录中选取小于或等于所述第二缓存空间大小的记录时, 标记所述第二数据库表中还存在 满足所述第二查询条件的记录 ; 并且在将所述第二缓存中的记录与所述连接查询条件对应 的第一记录连接组合完后, 依据所述标记查询数据库, 获取满足第二查询条件的剩余的第 二记录, 并根据第二缓存的大小分批将所述剩余的第二记录存储在所述第二缓存中。
     进一步, 所述第二获取单元 306 还用于, 在根据第三查询条件对所述第二数据库 表进行查询, 获取满足所述第二查询条件和第三查询条件的第二记录, 所述第三查询条件 为与所述第二数据库表对应的查询条件。其中, 所述与第二数据库表对应的第三查询条件 可以包括针对所述第二数据库表指定输出的多个字段的查询条件, 本发明实施例中为了描 述方便, 将针对所述第二数据库表可以包含指定输出的多个字段的查询条件统称为第三查 询条件。
     本发明实施例中, 当需要对智能卡数据库中的多个数据库表进行关联查询操作 时, 在智能卡内为需要进行关联查询的数据库表设置至少能够存储下一条记录的第一缓存 和第二缓存, 并根据连接后的记录设置对应的连接输出缓存 ; 在进行多表查询操作时, 将满 足查询条件的记录根据缓存的大小存储分批存储在设置的第一缓存和第二缓存中, 并在对 满足条件的记录进行连接操作后, 将连接后的记录存储在连接输出缓存中, 以实现智能卡 数据表的多表关联查询, 即, 使用缓存复用的方式充分利用有限的智能卡内存空间, 从而提 高了智能卡数据库的性能和质量。
     并且, 本发明实施例中通过在智能卡内完成连接操作, 只输出连接后的结果, 提高 了数据库操作效率。 通过多表连接操作, 可以把单表扩展到多表设计, 提高了智能卡数据库 表的设计灵活性。
     另外, 在根据所述连接查询条件执行完所述连接查询操作后, 将预分配的缓存释 放, 以便所述智能卡使用所述释放内存进行其他的操作, 从而提高了智能卡内存的利用率。
     通过本发明, 实现了智能卡数据库两表的连接操作, 进一步通过类似的设计原理 和操作步骤可以实现多表的连接操作, 克服了单表操作时数据冗余和在应用中实现相关操 作所带来的通讯数据冗余的缺点和不足, 为实现智能卡数据库多表应用设计奠定了良好的 基础, 充分发挥关系数据库连接运算的优越性。
     通过以上的实施方式的描述, 所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现, 当然也可以通过硬件, 但很多情况下前者是更佳 的实施方式。基于这样的理解, 本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来, 该计算机软件产品存储在可读取的存储介质中, 如计 算机的软盘, 硬盘或光盘等, 包括若干指令用以使得一台计算机设备 ( 可以是个人计算机, 服务器, 或者网络设备等 ) 执行本发明各个实施例所述的方法。
     本领域内的技术人员应明白, 本申请的实施例可提供为方法、 系统、 或计算机程序 产品。因此, 本申请可采用完全硬件实施例、 完全软件实施例、 或结合软件和硬件方面的实 施例的形式。而且, 本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质 ( 包括但不限于磁盘存储器、 CD-ROM、 光学存储器等 ) 上实施的计算机程序产 品的形式。
     本申请是参照根据本申请实施例的方法、 设备 ( 系统 )、 和计算机程序产品的流程 图和 / 或方框图来描述的。应理解可由计算机程序指令实现流程图和 / 或方框图中的每一 流程和 / 或方框、 以及流程图和 / 或方框图中的流程和 / 或方框的结合。可提供这些计算 机程序指令到通用计算机、 专用计算机、 嵌入式处理机或其他可编程数据处理设备的处理 器以产生一个机器, 使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和 / 或方框图一个方框或多个方框中指定的功能 的装置。 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中, 使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品, 该指令装置实现在流程图一个流程或多个流程和 / 或方框图一个方框或 多个方框中指定的功能。
     这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上, 使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理, 从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和 / 或方框图 一个方框或多个方框中指定的功能的步骤。
     尽管已描述了本申请的优选实施例, 但本领域内的技术人员一旦得知了基本创造 性概念, 则可对这些实施例做出另外的变更和修改。 所以, 所附权利要求意欲解释为包括优 选实施例以及落入本申请范围的所有变更和修改。
     以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于此, 任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可轻易想到变化或替换, 都应涵 盖在本发明的保护范围之内。 因此, 本发明的保护范围应以所述权利要求的保护范围为准。
    

智能卡数据库多表操作方法及装置.pdf_第1页
第1页 / 共20页
智能卡数据库多表操作方法及装置.pdf_第2页
第2页 / 共20页
智能卡数据库多表操作方法及装置.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《智能卡数据库多表操作方法及装置.pdf》由会员分享,可在线阅读,更多相关《智能卡数据库多表操作方法及装置.pdf(20页珍藏版)》请在专利查询网上搜索。

本发明实施例公开了一种智能卡数据库多表操作方法及装置,涉及智能卡数据库领域,提高了智能卡数据库的性能和操作效率。本发明包括:从需要进行连接操作的至少两个数据库表中,选取一个数据库表作为第一数据库表;将满足与所述第一数据库表对应的第一查询条件的第一记录存储在预分配的第一缓存中;从所述记录中获取与连接查询条件中数据域名对应的数据域值,用所述数据域值代替所述连接查询条件中对应的数据域名组成第二查询条件,。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1