专利名称:一种查询结果处理方法与装置的制作方法
技术领域:
本发明涉及计算机领域,尤其涉及一种查询结果处理方法与装置。
背景技术:
随着现代企业的迅速发展,企业所积累的各种数据也随之剧增。为了便于对这些海量数据进行科学、有效的管理和分析,数据仓库(Data Warehouse) 技术开始得到广泛推广和应用。
即席查询作为数据仓库系统前端展现中的一个重要工具软件,主要负责 业务数据的提取、分析和展现过程。即席查询(Ad hoc query )是数据库应用 最普遍的一种查询,利用数据仓库技术,可以让用户随时可以面对数据库, 获取所希望的数据。尤其适合那些数据库应用系统(比如管理信息系统)的 非IT技术人员的最终用户使用。在企业级的应用中,用户经常需要根据不同 业务条件从数据仓库中提取数据,而且数据仓库提取数据的表非常大,其单 个表的数据量级可达几个GB,甚至几十、几百个GB。如果采用传统的直接 查询方式,其性能和效率非常低,并且展现数据非常慢,根本法满足客户 需求。因此,为了解决数据仓库提取数据的性能瓶颈和数据展现效率低的问 题,采用合适的查询临时结果存储技术方案成为必然的趋势。现有技术中用户在进行即席查询时,数据仓库系统中根据用户设定的查 询条件直接提取数据,把每次查询出来的数据,在内存中建立结果集存储。 然后基于内容中的结果集进行相关的分析操作。当有新的查询或者查询条件 等信息发生改变,再次从数据仓库中查询数据,重新创建内存结果集。但是 由于这种技术方案将结果集暂存在内存中,内存消耗大,容易导致内存溢出 的致命错误;并且由于每个查询只对应一个内存结果集,当有多个用户并发 执行查询时,用户的数据会被相互覆盖。
为了解决上述方案的问题,业界对查询临时结果存储技术方案进行了改 进。这种方法的结构参见图1,从数据仓库中查询出结果,在每个用户进行查
询并得出结果后,根据当前的查询用户ID作标识,分别对应每个用户建立一 个临时结果表来存储该用户的查询数据。本方法通过建立临时结果表来将查 询结果存储在数据库中,大大减轻了内存的压力,并且解决了多用户并发查 询时数据被覆盖的问题。但是这种技术方案依然有如下缺陷1、 由于是针对每个用户设立的临时结果表,那么在此方案上,用户每一 次查询的时候都会把其上次生成的临时结果表覆盖,导致临时结果表的緩存 作用大大降低、重用性不够。2、 采用此技术方案建立的临时结果表只能保存用户最后一次查询的结 果,当用户需要改变查询条件查看历史结果时,由于临时结果表没有存储相 应的数据,需要再次查询数据仓库,依然存在查询效率低的问题。发明内容本发明一实施例要解决的技术问题是提供一种查询结果处理方法及装 置,能够解决用户每一次查询的时候都会把她上次生成的临时结果表覆盖, 导致临时结果表的緩存作用大大降低、重用性不够的问题。为解决上述技术问题,本发明所提供的查询结果处理方法实施例是通过 以下技术方案实现的接收查询索引值,该索引值包括查询条件与用户标识;根据索引值查询 历史记录,若不存在与索引值一致的历史记录,则查询数据仓库,创建该索 引值对应的历史记录、临时结果表并返回数据;若存在与索引值一致的历史 记录,且该索引值对应的临时结果表存在时,则通过所述的临时结果表查询 并返回数据;若存在与索引值一致的历史记录,但该索引值对应的临时结果 表不存在时,则重新查询数据仓库,创建与该索引值对应的临时结果表并返 回数据。对应于上述方法,本发明实施例还提供了一种查询结果处理装置,该装 置包括接收单元,用于接收查询索引值,该索引值包括查询条件与用户标识;
查询单元,根据索引值进行查询历史记录;判断单元,用于判断是否存在与索引值一致的历史记录;及判断出存在 与索引值一致的历史记录时,进一步判断是否存在与所述索引值对应的临时结果表;处理单元,用于当判断单元判断出不存在与索引值一致的历史记录时,查询数据仓库,创建该索引值对应的历史记录、临时结果表并返回数据;当 判断单元判断出存在与所述索引值对应的临时结果表时,通过所述的临时结 果表查询并返回数据;当判断单元判断出不存在与所述索引值对应的临时结 果表时,则重新查询数据仓库,创建该索引值对应的临时结果表并返回数据。 上述技术方案中的技术方案具有如下有益效果本发明技术方案首先通过索引值来确实是否数据仓库中进行过相同索引值的查询;并由于该索引值 包括了查询条件和用户标识,那么查询的结果是按照查询条件和用户标识共 同分配的;因此若该用户进行过相同索引值的查询,那么就直接通过临时结 果表返回数据,而不会再进行相同查询条件的重复查询,并且会对不同的查 询条件针对每个用户创建不同的临时结果表,这样就避免了用户每次查询会 覆盖上次查询数据、造成查询结果重用性差的问题,从而提高了用户查询的 效率。并且由于临时结果表是对应每个用户标识的,那么还可以避免不同的 用户用相同的查询条件进行查询时不会发生临时结果表写入冲突的问题。
图1为现有技术方法结构图; 图2为本发明实施例1方法流程图; 图3为本发明实施例2方法流程图; 图4为本发明实施例3装置结构图; 图5为本发明实施例4装置结构图。
具体实施方式
本发明实施例提供了以下具体方案
实施例l,参见图2, 一种查询结果处理方法步骤101:接收查询索引值,该索引值包括查询条件与用户标识;其中用户标识可以为具体的数字以可以为根据随机算法生成的唯一字符 串等,具体形式并不在本发明实施例中进行限制,只要能够区分用户身份的 唯一标识就可以。步骤102:判断是否存在与索引值一致的历史记录,即判断是否存在与查 询条件与用户标识同时一致的历史记录;若不存在则执行步骤103;若存在则 执行步骤104:该步骤所述的历史记录是指以前进行的每次查询过程都会在系统中进行 保存,保存的内容可以是之前进行的查询条件、用户标识、执行者、执行时 间、临时结果表名等;并且将所述的查询条件按照结构化的方式存储。结构 化的方式存储实际是把树状文件系统的原理应用到单个的文件中,使得单个 文件也能象文件系统一样包括更深层次的"子目录",各个"目录,,可以含多个文 件,把原来需要多个文件存储的内容按树状结构和层次保存到一个文件中去。 如现有查询条件A, B, C,按照不同的逻辑关系可以存储为不同的查询条件 格式1、 (AandB ) orC, 2、 Aand(BorC),本实施例中优选结构化的存 储方式为用xml方式存储,并且可以输出成XML格式的条件组合字符串,非 常方便进行条件集合关系匹配。历史记录是存储在一个数据库表中,存储的 内容可以为历史记录索引标识ID,执行者,查询条件,执行时间等。以上 提到的查询条件特征可以由系统预置,每个查询条件特征对应一个或一組查 询条件;查询条件特征和其对应查询条件由系统存储。步骤103:查询数据仓库,创建与该索引值对应的历史记录、临时结果表 并返回数据,结束查询;该步骤中提到的创建索引对应的历史记录,也就是说将索引值对应的查 询条件特征与用户标识存储,并且存储查询到的临时结果表及表名。该步骤中的临时结果表是用来存储从数据仓库中查询到的关于索引值的数据。1 )、临时结果表的表名可以由预置的查询条件特征与用户标识组成; 2)、临时结果表的表名还可以由预置的名称与预置的随机算法生成一个唯一的随机数组成;并将所述的临时结果表的表名与所述索引值建立对应关系表;只要能够在多用户同时查询同一条件时,产生唯一的临时结果表名,并 且可以根据查询条件、用户标识等内容组成的索引值来——对应,即每个用 户的查询对应于一个临时结果表名,都可以作为该方案中临时结果表名的替 代方案,并不限制于上述两种方法。步骤104:判断是否存在与该索引值对应的临时结果表;若存在则执行步 骤105;若不存在则执行步骤103;该步骤中的判断是否存在与该索引值对应的临时结果表的方法可以为1) 、当使用上述第一种临时结果表名时,通过索引值包括的查询条件与 用户标识判断是否存储有与所述的索引值对应的临时结果表名,若有则存在 与索引值对应的临时结果表。以上提到的查询条件特征可以由系统预置,每个查询条件特征唯一的一 个或一组查询条件;查询条件特征和其对应查询条件由系统存储;并且用户 标识只对应一个用户。2) 、当使用上述第二种临时结果表名时,通过索引值及所述的对应关系 表查询临时结果表的表名,若查找到则存在与索引值对应的临时结果表。以上提到的预置的名称可以是由系统预置的规则生成,例如可以是一些 索引值,索引值的具体方式可以由实际情况决定。步骤105:通过所述的临时结果表查询并返回数据。该步骤也就是说在临时结果表的范围内查询索引值对应的数据,并返回。 实施例1首先通过索引值来确实是否数据仓库中进行过相同索引值的查询;并由于该索引值包括了查询条件和用户标识,那么查询的结果是按照查询条件和用户标识共同分配的;因此若该用户进行过相同索引值的查询,那么就直接通过临时结果表返回数据,而不会再进行相同查询条件的重复查询,并且会对不同的查询条件针对每个用户创建不同的临时结果表,这样就避免
了用户每次查询会覆盖上次查询数据、造成查询结果重用性差的问题,从而 提高了用户查询的效率。并且由于临时结果表是对应每个用户标识的,还可 以避免不同的用户用相同的查询条件进行查询时不会发生临时结果表写入冲 突的问题。实施例2,参见图3,本发明实施例提供的另一种查询结果处理方法步骤201:接收查询索引值,该索引值包括查询条件与用户标识;步骤202:判断是否存在与索引值一致的历史记录;若存在则执行步骤 203;若不存在则执行步骤206:该步骤所述的历史记录是指之前进行的每次查询过程都会在系统中进行 保存,可以保存之前进行的查询条件与用户标识;并且将所述的查询条件4姿 照结构化的方式存储。步骤203:判断是否存在与该索引值对应的临时结果表;若存在则执行步 骤204;若不存在则执行步骤205;该步骤中所述的判断是否存在与该索引值对应的临时结果表的方法可以为1 )、临时结果表的表名可以预置由查询条件特征与用户标识组成;通过索引值包括的查询条件与用户标识判断是否存储有与所述的索引值 对应的临时结果表名,若有则存在与索引值对应的临时结果表。以上提到的查询条件特征可以由系统预置,每个查询条件特征唯一的一 个或一组查询条件;查询条件特征和其对应查询条件由系统存储;并且用户 标识只对应一个用户。2)、上述实施例1与实施例2所述的临时结果表的表名还可以由预置的 名称与预置的随机算法生成一个唯一的随机数组成;并将所述的临时结果表 的表名与所述索引值建立对应关系表;通过索引值及所述的对应关系表查询临时结果表的表名,若查找到则存 在与索引值对应的临时结果表。
只要能够在多用户并发时产生唯一的临时结果表名,并且可以根据查询 条件等内容组成的索引值来对应,都可以作为该方案中临时结果表名的替代 方案,并不限制于上述两种方法。以上提到的预置的名称可以是由系统预置的规则生成,例如可以是一些 索引值,索引值的具体方式可以由实际情况决定。步骤204:通过所述的临时结果表查询并返回数据,跳出本流程;步骤205:查询数据仓库,创建该索引值对应的历史记录、临时结果表并 返回数据,跳出本流程;步骤206:判断是否索引值是历史记录的子集;若是则执行步骤207;若 不是则执行步骤205;步骤207:在所述历史记录对应的临时结果表的范围内查询索引值、创建 对应该索引值的历史记录、临时结果表并返回数据。实施例2在实施例1的基础上进行了改进,当判断得到不存在与索引值 一致的历史记录时,进一步判断了索引值是否为历史记录的子集;如果索引 值为历史记录的子集,就可以根据已经存在的临时结果表范围内来进行重新 查询,由于临时结果表的范围比整个数据仓库的范围要小的多,因此这个查 询效率就会大大提高。为了清楚的表述本发明实施例的方案,给出一个根据 实施例2为基础的实际例子假设在经营分析系统中有省公司市场部用户A使用即席查询查询"新增 彩铃用户表"数据。用户A查询的条件是查询日期=200703和用户标识=5,查询生成临时结 果过程如下1 )首先根据用户查询条件信息在该用户的执行历史记录中查找是否对应 的i己录;2) 如找到对应的记录,取出该记录。否则,新建一条查询执行记录,并 记录有关信息;3) 如果是在历史记录里取出的记录,则比较该记录的输出字段信息是否 和当前查询的输出字段信息一致。否则直接启动新的查询。4) 如果各项信息都从历史记录中查找到对应的查询条件,临时结果表存在,直接返回临时结果表数据;如果临时结果表不存在,则用该临时结果表名重新生成数据,并返回数据。5) 如果无法从历史记录中查找到对应的查询条件,则进入的新查询的过 程。在历史记录中,插入本次查询记录。6 )当用户A在刚才的查询条件中增加一个区域标识=370的条件,该区 域标识标志可以查询全省的数据,根据新的查询条件信息重新组成新的索引 值,并判断在历史记录中是否有相应的记录。7 )假设用户A之前没有执行过查询日期=200703 、用户标识=5和区域标 识=370这个条件组合的查询,那就会在历史记录中无法查找到刚才的索引值。 然后,判断当前的查询条件是否是历史记录中某个记录的子集。8)查询日期=200703、用户标识=5和区域标识=370这个条件产生的结 果会被查询日期=200703和用户标识=5这个条件产生的结果所包含。因此, 系统只需要在刚才生成的临时结果表中使用区域标识=370这个条件作二次查 询就能快速得到用户需要的结果。而用户标识=6的用户B,当其用查询日期=200703和区域标识=370条件 查询时,就无法看到用户标识为5的用户A以同样查询条件的查询到的临时 结果表,用户B只能看到以其用户标识6、查询日期=200703和区域标识=370 为查询条件进行查询的临时结果表,保证了在查询时尽管查询日期与区域标 识相同,但是不会发生临时结果表写入冲突问题。实施例3,为了能够实现实施例1的方法,本发明实施例还提供了一种查 询结果处理装置,参见图4,该装置包括接收单元301,用于接收查询索引值,该索引值包括查询条件与用户标识;查询单元302,根据索引值进行查询历史记录;判断单元303,用于判断是否存在与索引值一致的历史记录;及判断出存 在与索引值一致的历史记录时,进一步判断是否存在与所述索引值对应的临
时结果表;
处理单元304,用于当判断单元303判断出不存在与索引值一致的历史记 录时,查询数据仓库,创建该索引值对应的历史记录、临时结果表并返回数 据;当判断单元303判断出存在与所述索引值对应的临时结果表时,通过所 述的临时结果表查询并返回数据;当判断单元303判断出不存在与所述索引 值对应的临时结果表时,则重新查询数据仓库,创建该索引值对应的临时结 果表并返回数据。
实施例4,对应于实施例2,在实施例3的基础上,本发明实施例还提供 了一种查询结果处理装置,该装置包括
接收单元401,用于接收查询索引值,该索引值包括查询条件与用户标识;
查询单元402,根据索引值进行查询历史记录;
判断单元403,用于判断是否存在与索引值一致的历史记录;及判断出存 在与索引值一致的历史记录时,进一步判断是否存在与所述索引值对应的临 时结果表;用于在判断出不存在与所述的索引值一致的记录时,判断是否索 引值是否为历史记录的子集;用于当判断出索引值是历史记录的子集时,进 一步判断是否存在与所述索引值对应的临时结果表;
处理单元404,用于当判断单元403判断出不存在与索引值一致的历史记 录时,查询数据仓库,创建该索引值对应的历史记录、临时结果表并返回数 据;当判断单元403判断出存在与所述索引值对应的临时结果表时,通过所 述的临时结果表查询并返回数据;当判断单元403判断出不存在与所述索引 值对应的临时结果表时,则重新查询数据仓库,创建该索引值对应的临时结 果表并返回数据;用于在判断单元403判断出索引值不是历史记录的子集衧, 再查询数据仓库、创建该索引值对应的历史记录、临时结果表并返回数据; 用于在判断单元403判断出存在历史记录对应的临时结果表时,在临时结果 表的范围内查询索引值、创建对应该索引值的历史记录、临时结果表并返回 数据。
通过对本发明实施例的具体描述,可以看出本发明实施例的技术方案具 有如下有益效果本发明技术方案首先通过索引值来确实是否数据仓库中进
行过相同索引值的查询;并由于该索引值包括了查询条件和用户标识,那么 查询的结果是按照查询条件和用户标识共同分配的;因此若该用户进行过相 同索引值的查询,那么就直接通过临时结果表返回数据,而不会再进行相同 查询条件的重复查询,并且会对不同的查询条件针对每个用户创建不同的临 时结果表,这样就避免了用户每次查询会覆盖上次查询数据、造成查询结果 重用性差的问题,从而提高了用户查询的效率。并且由于临时结果表是对应 每个用户标识的,还可以避免不同的用户用相同的查询条件进行查询时不会 发生临时结果表写入冲突的问题。并且在实施例2基础上,当判断得到不存在与索引值一致的历史记录时, 进一步判断了索引值是否为历史记录的子集;那么只要索引值为历史记录的 子集,就可以根据已经存在的临时结果表范風内来进行重新查询,由于临时 结果表的范围比整个数据仓库的范围要小的多,那么将大大提高查询效率就。是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机 可读存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上对本发明所提供的一种查询结果处理方法及装置进行了详细介绍, 对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式
及 应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明 的限制。
权利要求
1、一种查询结果处理方法,其特征在于,该方法包括接收查询索引值,该索引值包括查询条件与用户标识;根据索引值查询历史记录,若不存在与索引值一致的历史记录,则查询数据仓库,创建该索引值对应的历史记录、临时结果表并返回数据;若存在与索引值一致的历史记录,且该索引值对应的临时结果表存在时,则通过所述的临时结果表查询并返回数据;若存在与索引值一致的历史记录,但该索引值对应的临时结果表不存在时,则重新查询数据仓库,创建与该索引值对应的临时结果表并返回数据。
2、 根据权利要求1所述的查询结果处理方法,其特征在于,若不存在与 所述索引值一致的记录,并且索引值不是历史记录的子集时,再查询数据仓 库、创建该索引值对应的历史记录、临时结果表并返回数据;若不存在与索 引值一致的记录,但索引值是历史记录的子集且该历史记录对应的临时结果 表存在时则在临时结果表的范围内查询索引值、创建对应该索引值的历史记 录、临时结果表并返回数据。
3、 根据权利要求1或2所述的查询结果处理方法,其特征在于,所述临 时结果表的表名包括查询条件特征与用户标识;确定存在与所述索引值对应的临时结果表的方法为通过索引值包括的 查询条件与用户标识判断是否存储有与所述的索引值对应的临时结果表名, 若有则存在与索引值对应的临时结果表。
4、 根据权利要求1或2所述的查询结果处理方法,其特征在于,所述临时结果表的表名由预置的名称与预置的随机算法生成一个唯一的 随机数组成;并将所述的临时结果表的表名与所述索引值建立对应关系表;确定存在与索引值对应的临时结果表的方法为通过索引值及所述的对 应关系表查询临时结果表的表名,若查找到则存在与索引值对应的临时结果 表。
5、 根据权利要求1或2所述的查询结果处理方法,其特征在于, 所述的历史记录包括的查询条件按照结构化的方式存储。
6、 一种查询结果处理装置,其特征在于,该装置包括接收单元,用于接收查询索引值,该索引值包括查询条件与用户标识; 查询单元,根据索引值进行查询历史记录;判断单元,用于判断是否存在与索引值一致的历史记录;及判断出存在 与索引值一致的历史记录时,进一步判断是否存在与所述索引值对应的临时 结果表;处理单元,用于当判断单元判断出不存在与索引值一致的历史记录时, 查询数据仓库,创建该索引值对应的历史记录、临时结果表并返回数据;当 判断单元判断出存在与所述索引值对应的临时结果表时,通过所述的临时结 果表查询并返回数据;当判断单元判断出不存在与所述索引值对应的临时结 果表时,则重新查询数据仓库,创建该索引值对应的临时结果表并返回^t据。
7、 根据权利要求6所述的查询结果处理装置,其特征在于,判断单元进一步用于在判断出不存在与所述的索引值一致的记录时,判 断是否索引值是否为历史记录的子集;用于当判断出索引值是历史记录的子 集时,进一步判断是否存在与所述索引值对应的临时结果表;处理单元进一步用于在判断单元判断出索引值不是历史记录的子集时, 再查询数据仓库、创建该索引值对应的历史记录、临时结果表并返回数据; 用于在判断单元判断出存在历史记录对应的临时结果表时,在临时结果表的 范围内查询索引值、创建对应该索引值的历史记录、临时结果表并返回数据。
8、 根据权利要求6或7所述的查询结果处理装置,其特征在于, 所述的历史记录包括的查询条件按照结构化的方式存储。
全文摘要
本发明公开了一种查询结果处理方法,该方法包括接收查询索引值,该索引值包括查询条件与用户标识;若不存在与索引值一致的历史记录,则查询数据仓库,创建该索引值对应的历史记录、临时结果表并返回数据;若存在与索引值一致的历史记录,且该索引值对应的临时结果表存在时,则通过所述的临时结果表查询并返回数据;若存在与索引值一致的历史记录,但该索引值对应的临时结果表不存在时,则重新查询数据仓库,创建与该索引值对应的临时结果表并返回数据。本发明还提供了一种查询结果处理装置,该装置包括接收单元、查询单元、判断单元和处理单元。本发明避免了用户每次查询会覆盖上次查询数据、造成查询结果重用性差的问题,提高了查询的效率。
文档编号G06F17/30GK101127048SQ20071014203
公开日2008年2月20日 申请日期2007年8月20日 优先权日2007年8月20日
发明者余悦挺 申请人:华为技术有限公司