CN106557578A - 历史数据查询方法及系统 - Google Patents
历史数据查询方法及系统 Download PDFInfo
- Publication number
- CN106557578A CN106557578A CN201611059014.6A CN201611059014A CN106557578A CN 106557578 A CN106557578 A CN 106557578A CN 201611059014 A CN201611059014 A CN 201611059014A CN 106557578 A CN106557578 A CN 106557578A
- Authority
- CN
- China
- Prior art keywords
- data
- hotlist
- inquiry
- cold
- historical data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种历史数据查询方法及系统,所述查询方法包含:将所以历史数据进行预分区处理,获得至少三个存储区域;所述存储区域包含用于存储历史数据的冷表和用于存储用户预定周期内查询历史数据的频率高于预定阀值的历史数据的热表,以及记录历史数据存储情况的中间表;当接收到用户发出的查询指令时,将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配,并根据匹配结果获得所述查询指令所对应的历史数据存储位置;根据所述历史数据存储位置访问所述热表和/或所述冷表,获得所述查询指令所对应的历史数据。
Description
技术领域
本发明涉及计算机数据处理技术领域,具体涉及一种历史数据查询系统及方法。
背景技术
针对金融等大型数据系统,存在海量的历史数据,该类历史数据存在频繁查询的需求。要频繁的从一个非常大的数据表中,取出一部分记录,效率是很低的,在现有的联机交易系统中,不利于系统资源的充分利用,频繁的访问大数据表,会占用更高的cpu资源,甚至会降低整个数据库服务器的性能。现有的处理方法大致包括如下几类:
历史表采用分区存储,查询数据时可以匹配用户查询的条件访问特定分区表里的数据,但是如果历史表特别大,每个分区的数据量也会很大,导致查询效率不会有特别明显的提升,仍然没有解决该问题;此外,若查询条件无法作为分区依据,则无法使用分区方式进行效率提升,存在使用场景的限制。
采用历史表,当前表的模式存储数据。将近期数据放到当前表,历史数据放到历史表,当查询近期数据时,只需要访问当前表就可以很快取出数据。但是如果经常要访问历史表的数据,查询效率依然会很低。并且这种模式不会动态的将用户频繁访问的数据快速取出,不能满足实际业务查询的场景。
发明内容
本发明目的在于提出一种历史数据查询系统及方法,以此解决现有数据查询中效率较慢、cpu资源占用较高等问题。
为达上述目的,本发明所提供的历史数据查询方法,具体包含:将所有历史数据进行预分区处理,获得至少三个存储区域;所述存储区域包含用于存储历史数据的冷表和用于存储用户预定周期内查询历史数据的频率高于预定阀值的历史数据的热表,以及记录历史数据存储情况的中间表;当接收到用户发出的查询指令时,将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配,并根据匹配结果获得所述查询指令所对应的历史数据存储位置;根据所述历史数据存储位置访问所述热表和/或所述冷表,获得所述查询指令所对应的历史数据。
在上述历史数据查询方法中,优选的,所述根据所述历史数据存储位置访问所述热表或所述冷表,获得所述查询指令所对应的历史数据包含:当所述历史数据存储位置为热表时,根据所述历史数据存储位置于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为一部分在所述热表,另一部分在所述冷表时,则将冷表中对应数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为冷表时,则将冷表的数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据。
在上述历史数据查询方法中,优选的,所述于所述热表中调取所述查询指令所对应的历史数据还包含:根据当前所述热表和/或所述冷表中的数据存储变化,修改所述中间表中的所述数据存储情况。
在上述历史数据查询方法中,优选的,所述查询指令包含查询关键字、发生日期和发生月份。
在上述历史数据查询方法中,优选的,所述将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配处理,获得所述查询指令所对应的历史数据存储位置还包含:当所述中间表中存储的历史数据存储情况中没有所述查询指令所对应的历史数据存储信息时,反馈匹配结果并停止访问所述热表和/或所述冷表。
在上述历史数据查询方法中,优选的,所述查询方法还包含按预定周期清理所述热表、所述冷表和所述中间表中存储时间大于一预定阀值的历史数据。
本发明还提供一种历史数据查询系统,所述查询系统包含数据查询模块、访问控制模块和存储模块;所述存储模块包含热表、冷表和中间表;其中,所述热表用于存储用户预定周期内查询历史数据的频率高于预定阀值的历史数据;所述冷表用于存储所有历史数据;所述中间表用于记录历史数据存储情况;所述数据查询模块分别与所述存储模块和所述访问控制模块相连,用于接收用户的查询指令并转发至所述访问控制模块;所述访问控制模块分别与所述数据查询模块和所述存储模块相连,用于将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配,并根据匹配结果获得所述查询指令所对应的历史数据存储位置后反馈至所述数据查询模块;所述数据查询模块根据访问控制模块反馈的信息于所述热表和/或所述冷表中获得所述查询指令所对应的历史数据。
在上述历史数据查询系统中,优选的,所述查询系统还包含中间表处理模块,所述中间表处理模块设置于所述数据查询模块和所述存储模块之间,用于当所述历史数据存储位置为热表时,根据所述历史数据存储位置于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为一部分在所述热表,另一部分在所述冷表时,则将冷表中对应数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为冷表时,则将冷表的数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据。
在上述历史数据查询系统中,优选的,所述访问控制模块还包含当所述中间表中存储的历史数据存储情况中没有所述查询指令所对应的历史数据存储信息时,反馈匹配结果并停止访问所述热表和/或所述冷表。
在上述历史数据查询系统中,优选的,所述查询系统还包含数据清理模块,所述数据清理模块用于按预定周期清理所述热表、所述冷表和所述中间表中存储时间大于一预定阀值的历史数据。
本发明的有益技术效果在于:针对频繁查询的数据或近期的历史数据,将这部分数据存储在当前表中,将用户不经常访问的数据存储在历史表中,此外,还通过一个中间表存储查询数据的存储情况,所有查询先获取该中间表,然后根据获取的存储情况,实现历史数据的快速查询,以及历史数据存储分区的动态调整,大大节省数据库访问的时间,提升了查询效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明所提供的历史数据查询方法流程示意图;
图2为本发明一优选实施例所提供的历史数据查询方法流程示意图;
图3为本发明所提供的历史数据查询系统结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明提供了一种历史数据查询系统及方法,其通过将频繁、近期查询的数据放到热表中,实现了数据库表的冷热分离。由于将频繁、近期的数据复制到数据量较小的表中,所以在频繁查询这部分数据的时候可以显著的提高查询效率。
本发明涉及访问大数据量表的查询交易,特别是针对频繁查询交易记录,提高访问查询速度技术领域。在实际的业务场景中,有很多需要查询历史数据的需求,然而,历史数据表一般都是相当的庞大,每次都直接从历史表中获取数据,查询效率比较低下,并在一定程度影响数据库的性能。数据库冷热分离技术,就解决了这个问题。将用户多次查询的记录,存放到一张热表中,热表较历史表数据量会小很多。从而达到提高查询效率的目的。本发明从三个方面考虑,提高冷热数据的访问效率:
1、冷热表采用分区技术,将数据按一定的逻辑划分为多个逻辑块
冷表数据量庞大,是历史数据的原始存储表,访问冷表时尽可能将访问的数据限制在一个小的逻辑范围内,可以依据用户实际需求按发生日期字段分区,每个单位日期的数据,逻辑上划分为一个分区。当用户访问冷表的数据时,就可以根据用户查询的实际情况,定位到特定的分区中查回数据。热表数据量较小,且不宜保留太长的时间,同样可以依发生日期字段分区,可以很快取出热表的数据。
2、采用中间表的模型
本发明引入了中间表的模型,在用户发起访问后,通过对用户查询条件与中间表的关联匹配,判断何时用户需要访问热表,何时用户需要访问冷表。如果依据匹配关系发现冷表、热表中都没有用户请求的相关信息,甚至都不用访问冷表和热表,这将会大大提高数据库查询效率。
3、数据清理单元
在设计过程中采用数据冗余的方式存储热表数据,将这部分数据在热表和冷表中分别存储一份。如果这部分数据能直接从热表中取出,则达到了提高访问效率的目的。但是为确保热表查询的高效率,热表的数据量级不能无限增大,故需要相应清理机制,对超阀值未访问数据进行清理,例如对长期不访问的记录做清理,始终控制热表的数据量,从而在访问热表时可以快速的取出数据;其后对热表进行数据清理后,同步更新中间表数据存储位置记录,以确保中间表索引正确。此外为确保中间表数据存储位置记录正确性和有效性,增加守护线程定期对中间表数据有效性进行更新维护。此外,为提高整体系统效率,对于数据的清理不局限在热表中,冷表与中间表也可按相同方式配置数据清理策略。
请参考图1所示,本发明所提供的历史数据查询方法,具体包含:S101将所以历史数据进行预分区处理,获得至少三个存储区域;所述存储区域包含用于存储历史数据的冷表和用于存储用户预定周期内查询历史数据的频率高于预定阀值的历史数据的热表,以及记录历史数据存储情况的中间表;S102当接收到用户发出的查询指令时,将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配,并根据匹配结果获得所述查询指令所对应的历史数据存储位置;S103根据所述历史数据存储位置访问所述热表和/或所述冷表,获得所述查询指令所对应的历史数据。其中,所述查询指令包含查询关键字、发生日期和发生月份。
在上述实施例中,步骤S103包含:当所述历史数据存储位置为热表时,根据所述历史数据存储位置于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为一部分在所述热表,另一部分在所述冷表时,则将冷表中对应数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为冷表时,则将冷表的数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据;通过上述实施例,使得用户所查询后的历史数据均保存至热表中,对所有历史数据完成有效分类,便于下次查询时,能够尽快定位查询文件以及快速提取。
为便于下次查询历史数据的准确性与效率,在上述实施例中还包含:根据当前所述热表和/或所述冷表中的数据存储变化,修改所述中间表中的所述数据存储情况,以此保持该中间表的数据存储情况的准确性,以便于用户更有效率的获得查询的历史数据。值得说明是,当所述中间表中存储的历史数据存储情况中没有所述查询指令所对应的历史数据存储信息时,反馈匹配结果并停止访问所述热表和/或所述冷表,以此节约处理流程和提高工作效率。
为保证存储数据的热表、冷表以及中间表保持高效性,需要对其中的一些无效或过期的数据进行清理,为此本发明一优选的实施例中还提供数据清理策略,具体包含按预定周期清理所述热表、所述冷表和所述中间表中存储时间大于一预定阀值的历史数据。
综上,本发明所提出的历史数据查询方法,针对频繁查询的数据或近期的历史数据,将这部分数据存储在当前表中,本发明中称之为热表,将用户不经常访问的数据存储在历史表中,本发明中称之为冷表,此外,还通过一个中间表存储查询数据的存储情况,所有查询先获取该中间表,然后根据获取的存储情况,实现历史数据的快速查询,大大节省数据库访问的时间,提升了查询效率。用户在试图访问历史数据时,首先查看中间表,依据中间表中历史数据存储情况进行如下判断和处理:
(一)如果没有用户需要的历史数据,则不访问冷表或者热表的数据。
(二)如果热表中有用户查询的全部数据,直接从热表中取出数据。
(三)如果用户查询的数据一部分在热表,另一部分在冷表,则将冷表的数据复制到热表中,然后访问热表取出全部数据。并依据该数据存储变化,修改中间表中的数据存储情况,这样下次访问该历史数据就能从热表中获取。
(四)如果热表中没有用户要访问的数据,则直接访问冷表,并将冷表的数据复制到热表中,从热表中取出数据。并依据该数据存储变化,修改中间表中的数据存储情况,这样下次访问该历史数据就能从热表中获取。
此外,系统还针对中间表和热表有数据清理策略,以保证热表和中间表本身不会带来效率问题。
为更清楚的说明上述实施例的具体流程,以下以具体实例对上述实施例做进一步说明:
请参考图2及图3所示,图2为本发明所提供的历史数据查询方法的流程示意图,各步骤描述如下:
步骤201:用户输入查询条件值,包含查询的关键字信息,查询的开始日期和结束日期。
步骤202:根据用户的输入读取数据存储模块5中的冷表属性文件51和中间表53。
步骤203:数据查询模块负责调用访问控制模块2,中间表处理模块3。
步骤204:经过访问控制模块2的加工处理、判断。确定需要访问数据存储模块5中的哪些单元。
步骤205:若从步骤204得到的标志为0,则直接返回空给用户,流程结束。
步骤206:若从步骤204得到的标志不为0,则需要访问数据存储模块5中的冷表或热表数据。
步骤207:将206访问数据的信息返回给访问控制模块2,访问控制模块再将信息返回给数据查询模块203,数据查询模块203根据返回的数据信息,更新数据存储模块5的中间表53数据及冷热标志状态信息。
步骤208:若数据是从热表54中取出,则直接将数据返回给用户。若数据是从冷表52中取出,则将冷表52的数据拷贝到热表54中,再从热表54中将数据返回给用户。若冷表52取一部分数据,热表54中取一部分数据,则先将冷表52的数据拷贝到热表54中,连同热表54本身满足条件的记录,合在一起返回给用户,流程结束。
步骤209:数据清理模块4,是由批量程序定时启动,按照数据存储模块5中冷热表属性文件51中的配置,每日清除数据存储模块5中的热表54中过期的数据。每月月初清除数据存储模块5中的冷表52、中间表53中过期的数据。
请参考图3所示,本发明还提供一种历史数据查询系统,所述查询系统包含数据查询模块1、访问控制模块2和存储模块5;所述存储模块5包含热表54、冷表52和中间表53;其中,所述热表54用于存储用户预定周期内查询历史数据的频率高于预定阀值的历史数据;所述冷表52用于存储所有历史数据;所述中间表53用于记录历史数据存储情况;所述数据查询模块1分别与所述存储模块5和所述访问控制模块2相连,用于接收用户的查询指令并转发至所述访问控制模块2;所述访问控制模块2分别与所述数据查询模块1和所述存储模块5相连,用于将所述查询指令与所述中间表53中存储的所述历史数据存储情况进行匹配,并根据匹配结果获得所述查询指令所对应的历史数据存储位置后反馈至所述数据查询模块1;所述数据查询模块1根据访问控制模块反馈的信息于所述热54表和/或所述冷表52中获得所述查询指令所对应的历史数据。其中,所述访问控制模块2还包含当所述中间表53中存储的历史数据存储情况中没有所述查询指令所对应的历史数据存储信息时,反馈匹配结果并停止访问所述热表54和/或所述冷表52。
在上述实施例中,所述查询系统还可包含中间表处理模块3,所述中间表处理模块3设置于所述数据查询模块1和所述存储模块5之间,用于当所述历史数据存储位置为热表54时,根据所述历史数据存储位置于所述热表54中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为一部分在所述热表54,另一部分在所述冷表52时,则将冷表52中对应数据复制到热表54中,于所述热表54中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为冷表52时,则将冷表52的数据复制到热表54中,于所述热表54中调取所述查询指令所对应的历史数据。
在本发明一优选的实施例中,所述查询系统还包含数据清理模块4,所述数据清理模块4用于按预定周期清理所述热表、所述冷表52和所述中间表53中存储时间大于一预定阀值的历史数据。
为更清楚的说明本发明所提供的历史数据查询系统,以下以具体实例对上述查询系统做进一步说明。
如图3所示,本发明提供了一种历史数据查询系统,该系统包括数据查询模块1、访问控制模块2、中间表处理模块3、数据清理模块4以及数据存储模块5,数据查询模块1、数据存储模块5分别与访问控制模块2、中间表处理模块3相连接,数据清理模块4与数据存储模块5相连接。
数据存储模块5用于存储冷热表属性文件51,冷表52,中间表53,热表54。下面将依次介绍每个存储模块的结构及功能。
冷热表属性文件包括热表的保留周期hot_table、冷表的保留周期cold_table,该字段与中间表的清理周期一致,共享该字段、热表分区方式hot_tablepartition、冷表分区方式cold_tablepartition。这四项需要用户按实际业务场景进行设置。如表1示出了一个实例:
表1
hot_table:单位是月,在该数值期限内的访问表示高频访问,这种数据是需要放在热表中的。同时该值指明了热表的保留周期。
cold_table:单位是月,在该数值期限内的访问表示冷表及中间表中保留有记录。同时该值指明了冷表及中间表的保留周期。冷表与中间表的保留周期一致。清理时间点一致。
hot_tablepartition的字典day代表热表按天分区。
cold_tablepartition的字段month代表冷表按月分区。
在冷热表属性文件51中,用户可以按实际业务场景配置冷热数据的保留周期。保留周期是用户用来界定冷热数据的关键信息。例如,冷表保留周期是12个月,那么就认为12个月内的数据都是冷数据,存放在冷表中。热表数据的保留周期是1个月,那么就在热表中保存最近1个月的数据,以及最近频繁访问的数据(从冷表拷贝到热表的数据)。保留周期同样也是数据清理的关键信息,在数据清理模块4完成清理工作。
在冷表52中,定义了包括查询关键字,交易日期,以及交易日期所在的月份,其他字段信息,根据实际的业务场景添加。如表2所示:
表2
字段英文名 | 字段中文名 |
KEYNAME | 查询关键字 |
TRANSDATE | 发生日期 |
TRANSMONTH | 发生月份 |
查询关键字:用来描述需要查询事物特有的属性名称。
发生日期:记录实际发生的自然日期。
发生月份:记录实际发生的自然日所对应的月份。
实际发生的每笔记录都记录到冷表中,冷表数据保留周期按实际业务需要定义,在冷热表属性文件51中配置。
在中间表53中,定义了需要查询记录的冷热标志信息。中间表中包括查询关键字,交易发生日期所在的月份,记录的冷热标志,冷热记录变更日期。中间表记录的是发生的月份信息,如果一个用户一个月发生过多笔交易,在中间表53中也只是存储一条记录,因此中间表的数量级相对于冷表52,热表54会小很多,相当于一个轻量级的小表。实际发生的每笔记录都记录到中间表里,中间表53数据保留周期与冷表52需要保持一致,并在冷热表属性文件51中配置,共享cold_table字段值;如表3所示:
表3
字段英文名 | 字段中文名 |
KEYNAME | 查询关键字(主键) |
TRANSMONTH | 发生月份(主键) |
HOTFLAG | 冷热标志 |
HOTDATE | 冷热记录变更日期 |
查询关键字:用来描述需要查询事物特有的属性名称。
发生月份:记录实际发生的自然日所对应的月份。
冷热标志:冷表标志的字典有三个,分别是0,1,2。下面是每个字典的含义表述:
0是这样产生的:用户依据keyname+transmonth在查询中间表时,没有找到该用户的任何记录,将用户查询的keyname,transmonth记录到中间表中,将hotflag置为“0”,将hotdate置为当前系统日期,那么下次发生用户的相应查询交易的时候,当访问到该条记录中的hotflag为0就直接返回,代表没有任何历史记录,避免了对冷表和热表的访问,节省了大量数据库I/O。
1是这样产生的:用户在第一次交易,产生交易明细记录的时候,会记录交易明细到冷表、热表及中间表中。将用户查询的keyname,transmonth记录到中间表中,将hotflag置为“1”,将hotdate置为当前系统日期。若中间表存在对应的keyname,transmonth,但是hotflag为“0”,则将hotflag置为“1”,并更新hodate为当前系统日期。
2是这样产生的:当用户依据keyname+transmonth在查询中间表时进行相关判断后,需要访问冷表才能获取数据。这时就需要将冷表的数据拷贝到热表中,并从热表中返回用户查询的数据。并将用户查询的keyname,transmonth记录到中间表,将hotflag置为“2”,将hotdate置为当前系统日期。若中间表存在对应的keyname,transmonth,但是hotflag为“1”,则将hotflag置为“2”,并更新hodate为当前系统日期。
冷热记录变更日期:记录的是中间表中冷热记录变更的日期,当中间表中hotflag字段的状态由“1”变为“2”,或由“0”变为“1”时,hotdate字段的日期就会发生变化,更新为操作发生的当前系统日期。
在热表54中,定义了包含查询关键字,发生日期,以及发生日期所在的月份,其他字段信息,根据实际的业务场景添加。如表2所示:
表2
字段英文名 | 字段中文名 |
KEYNAME | 查询关键字 |
TRANSDATE | 发生日期 |
TRANSMONTH | 发生月份 |
查询关键字:用来描述需要查询事物特有的属性名称。
发生日期:记录实际发生的自然日期。
发生月份:记录实际发生的自然日所对应的月份。
实际发生的每笔记录都记录到热表中,热表数据保留周期按实际业务需要定义,在冷热表属性文件51中cold_table中配置。
数据查询模块1接收用户的查询指令,并将查询关键信息及查询时间范围发送给访问控制模块2,并根据访问控制模块2返回的指令,调用中间表处理模块3进行中间表的相关处理。数据查询模块1接收的用户指令针对历史数据的查询,主要包括查询数据的起始日期和终止日期,以及用户输入的查询关键字信息,根据这些信息,调用访问控制模块2,并接收访问控制模块2返回的信息,调用中间表处理模块,更新数据存储模块5中的中间表53的对应数据记录的hotflag和hotdate信息。在每日日终凌晨,数据清理模块4将批量清理数据存储模块5中热表54中的近期没有被访问的数据,在每月月初,数据清理模块4将批量清理数据存储模块5中冷表52、中间表53中的近期没有被访问的数据。
访问控制模块2接收数据查询模块的查询指令,根据上述查询数据的起始日期和终止日期,以及用户输入的查询关键字信息,计算出用户查询涉及到的月份的集合A。根据输入的查询关键字及查询涉及的月份,与中间表关联,将满足查询条件且中间表hotflag为“0”、“2”或者hotflag为“1”且系统日期减去冷热表属性文件51中热表保留周期小于中间表中对应记录的hotdate值,即:sysdate-hot_table<hotdate的记录定义为集合B。根据输入的查询关键字及查询涉及的月份,与中间表关联,将满足查询条件且中间表hotflag为“0”或者hotflag为“1”且sysdate-hot_table>hotdate的记录定义为集合C。然后进行如下处理:
(a)如果集合A中包含的查询关键字及月份keyname+transmonth在中间表里不存在对应关系,或者中间表里存在keyname+transmonth对应关系,但是hotflag的值全部都是“0”,则说明冷表或热表中没有要查询的数据,直接返回空值给用户。如果中间表里没有keyname+transmonth对应关系,则将用户查询的keyname,transmonth记录到中间表,将hotflag置为“0”,将hotdate置为当前系统日期。
(b)如果集合A中查询的起始日期>sysdate-hot_table的值或者集合A完全包含于集合B(即集合A中的元素在集合B中全部都存在),则只查询热表。
对于中间表中存在keyname+transmonth对应关系的记录,若hotflag的值为“2”或者hotflag的值为“1”且sysdate-hot_table<hotdate,则查询热表,将满足条件的记录返回给用户。对于中间表中存在keyname+transmonth对应关系的记录,且hotflag的值为“0”的记录作为过滤条件筛掉,不去查找任何表。
(c)如果集合A中查询的结束日期<sysdate-hot_table的值并且集合A完全包含于集合C(即集合A中的元素在集合C中全部都存在),则只查询冷表。这里请注意,需要将用户查询当月(从月初到月末)的全部数据从冷表拷贝到热表中,同时更新中间表的状态,将满足返回数据对应月份数据的冷热标志置为“2”。然后将冷表里没有存储用户查询月份的数据插入到中间表,并将hotflag置为“0”。下次查询不用再到冷表或热表里查这些月份的数据。
(d)当(a)、(b)和(c)的条件都不满足时,则冷表和热表都查询。根据查询查询关键字及月份keyname+transmonth在中间表匹配。
若中间表中存在这样的对应关系,当hotflag为“1”或“2”时,且sysdate-hot_table<hotdate则查询热表。
若中间表存在这样的对应关系,当hotflag为“1”时,且sysdate-hot_table>hotdate则查询冷热,将冷表的当月(从月初到月末)全部的数据拷贝到热表中,同时更新中间表的状态为“2”,将hotdate置为当前系统日期。
若中间表存在这样的对应关系,当hotflag为“0”,则这部分记录作为过滤条件筛掉,不去查找任何表。
若中间表中不存在这样的查询关键字及月份,则将用户查询的keyname,transmonth记录到中间表,将hotflag置为“0”,将hotdate置为当前系统日期。
最后,将所有满足条件的数据从热表中返回给用户。
中间表处理模块3,在数据查询模块1调用访问控制模块2之后,如果在冷表52中没有查询到记录,则将这个信息返回给数据查询模块1,数据查询模块1在调用中间表处理模块3,则将用户输入的查询关键字,查询对应的所有月份,冷热标志“0”,自然日对应的日期,依次记录到此表中。也就是说中间表53中hotflag为“0”的记录,实际上在冷表52和热表54中都不存在。下次用户在查询这些条件的记录之前,就可以根据hotflag“0”直接返回空值给用户,根本无需再去访问数据存储模块5中的冷表54或者热表52,达到提高查询效率的目的。若用户在中间表hotflag为“0”对应的月份中,做了一笔交易,则中间表中此月份对应的hotflag为“0”的状态就会更新为“1”,hotdate更新为当前系统日期。如果在数据查询模块1调用访问控制模块2之后,判断需要访问冷表52获取数据,则将冷表的这些记录所在月份的全部记录拷贝到热表中。同时将这个信息返回给数据查询模块1,数据查询模块1在调用中间表处理模块3,将满足这个记录的数据的hotflag更新为“2”。下次用户在查询这些条件的记录之前,就可以根据hotflag“2”,直接查询数据存储模块5中的热表54中的数据,返回给用户,不在访问数据存储模块5中的冷表52中的数据。当数据清理模块4执行清理热表54的数据之前,将清理信息反馈给数据查询模块1,数据查询模块1再调用中间表处理模块3,更新中间表53的标志,将热数据的标志hotflag由“2”更改为“1”。因为中间表的保留周期和冷表一致,中间表本身这些记录不满足被清理的条件,故将这部分从热表中被清理模块清理掉的记录的,在对应的中间表里将状态hotflag由“2”变为“1”。下次再查询这些记录的时候又会到冷表中获取。
数据清理模块4主要负责数据存储模块5中表的清理工作。下面分别描述冷表52、中间表53,热表54的清理策略:
(1)热表的清理策略:首先访问数据存储模块5中的冷热表属性文件51,根据冷热表属性文件51中配置的hot_table,判定热表54的保留周期。例如,热表54保留周期是1个月,那么就根据数据查询模块1发出的指令,判定中间表的hotflag字段和hotdate字段,若hotflag为“1”或“2”,且sysdate-hot_table>中间表的hotdate字段,再判定热54中sysdate-hot_table>热表中的transdate,如果都满足则清理掉热表54中的数据。否则热表54中的数据不能清理。
(2)冷表的清理策略:冷表的清理是每月1日清理。一次清理一年前一个月的数据,采用分区截断的方式,提高清理效率。首先访问数据存储模块5中的冷热表属性文件51,根据文件中配置的cold_table,判定冷表52的保留周期。例如,冷表52保留周期是1年,那么就根据数据查询模块1发出的指令,判定冷表52中sysdate-cold_table>冷表52中的transmonth,满足条件的数据被清理掉。
(3)中间表的清理策略:中间表的清理是每月1日清理。一次清理一年前所有无效的数据。首先访问数据存储模块5中的冷热表属性文件51,根据文件中配置的cold_table,判定中间表53的保留周期。例如,中间表53保留周期是1年,那么就根据数据查询模块1发出的指令,判定中间表53中sysdate-cold_table>中间表53中的transmonth,并且sysdate-hot_table>中间表53中的hotdate(即中间表53对应的记录不是热数据)满足条件的中间表53的数据被清理掉。
本发明的有益技术效果在于:针对频繁查询的数据或近期的历史数据,将这部分数据存储在当前表中,将用户不经常访问的数据存储在历史表中,此外,还通过一个中间表存储查询数据的存储情况,所有查询先获取该中间表,然后根据获取的存储情况,实现历史数据的快速查询,大大节省数据库访问的时间,提升了查询效率。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种历史数据查询方法,其特征在于,所述查询方法包含:
将所以历史数据进行预分区处理,获得至少三个存储区域;
所述存储区域包含用于存储历史数据的冷表和用于存储用户预定周期内查询历史数据的频率高于预定阀值的历史数据的热表,以及记录历史数据存储情况的中间表;
当接收到用户发出的查询指令时,将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配,并根据匹配结果获得所述查询指令所对应的历史数据存储位置;
根据所述历史数据存储位置访问所述热表和/或所述冷表,获得所述查询指令所对应的历史数据。
2.根据权利要求1所述的历史数据查询方法,其特征在于,所述根据所述历史数据存储位置访问所述热表或所述冷表,获得所述查询指令所对应的历史数据包含:
当所述历史数据存储位置为热表时,根据所述历史数据存储位置于所述热表中调取所述查询指令所对应的历史数据;
当所述历史数据存储位置为一部分在所述热表,另一部分在所述冷表时,则将冷表中对应数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据;
当所述历史数据存储位置为冷表时,则将冷表的数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据。
3.根据权利要求2所述的历史数据查询方法,其特征在于,所述于所述热表中调取所述查询指令所对应的历史数据还包含:根据当前所述热表和/或所述冷表中的数据存储变化,修改所述中间表中的所述数据存储情况。
4.根据权利要求1所述的历史数据查询方法,其特征在于,所述查询指令包含查询关键字、发生日期和发生月份。
5.根据权利要求1所述的历史数据查询方法,其特征在于,所述将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配处理,获得所述查询指令所对应的历史数据存储位置还包含:当所述中间表中存储的历史数据存储情况中没有所述查询指令所对应的历史数据存储信息时,反馈匹配结果并停止访问所述热表和/或所述冷表。
6.根据权利要求1所述的历史数据查询方法,其特征在于,所述查询方法还包含按预定周期清理所述热表、所述冷表和所述中间表中存储时间大于一预定阀值的历史数据。
7.一种历史数据查询系统,其特征在于,所述查询系统包含数据查询模块、访问控制模块和存储模块;
所述存储模块包含热表、冷表和中间表;
其中,所述热表用于存储用户预定周期内查询历史数据的频率高于预定阀值的历史数据;所述冷表用于存储所有历史数据;所述中间表用于记录历史数据存储情况;
所述数据查询模块分别与所述存储模块和所述访问控制模块相连,用于接收用户的查询指令并转发至所述访问控制模块;
所述访问控制模块分别与所述数据查询模块和所述存储模块相连,用于将所述查询指令与所述中间表中存储的所述历史数据存储情况进行匹配,并根据匹配结果获得所述查询指令所对应的历史数据存储位置后反馈至所述数据查询模块;
所述数据查询模块根据访问控制模块反馈的信息于所述热表和/或所述冷表中获得所述查询指令所对应的历史数据。
8.根据权利要求7所述的历史数据查询系统,其特征在于,所述查询系统还包含中间表处理模块,所述中间表处理模块设置于所述数据查询模块和所述存储模块之间,用于当所述历史数据存储位置为热表时,根据所述历史数据存储位置于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为一部分在所述热表,另一部分在所述冷表时,则将冷表中对应数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据;当所述历史数据存储位置为冷表时,则将冷表的数据复制到热表中,于所述热表中调取所述查询指令所对应的历史数据。
9.根据权利要求7所述的历史数据查询系统,其特征在于,所述访问控制模块还包含当所述中间表中存储的历史数据存储情况中没有所述查询指令所对应的历史数据存储信息时,反馈匹配结果并停止访问所述热表和/或所述冷表。
10.根据权利要求7所述的历史数据查询系统,其特征在于,所述查询系统还包含数据清理模块,所述数据清理模块用于按预定周期清理所述热表、所述冷表和所述中间表中存储时间大于一预定阀值的历史数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611059014.6A CN106557578B (zh) | 2016-11-23 | 2016-11-23 | 历史数据查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611059014.6A CN106557578B (zh) | 2016-11-23 | 2016-11-23 | 历史数据查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106557578A true CN106557578A (zh) | 2017-04-05 |
CN106557578B CN106557578B (zh) | 2020-08-04 |
Family
ID=58445092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611059014.6A Active CN106557578B (zh) | 2016-11-23 | 2016-11-23 | 历史数据查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106557578B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273413A (zh) * | 2017-05-04 | 2017-10-20 | 北京小度信息科技有限公司 | 中间表的创建方法、查询方法及相关装置 |
CN107451204A (zh) * | 2017-07-10 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
CN107977403A (zh) * | 2017-11-14 | 2018-05-01 | 中国银行股份有限公司 | 历史数据查询方法及装置 |
CN108205780A (zh) * | 2018-01-02 | 2018-06-26 | 掌合天下(北京)信息技术有限公司 | 订单处理系统及订单划分方法 |
CN108829782A (zh) * | 2018-05-31 | 2018-11-16 | 平安科技(深圳)有限公司 | 数据表清理方法、服务器及计算机可读存储介质 |
CN110083627A (zh) * | 2019-04-28 | 2019-08-02 | 江苏满运软件科技有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
CN112613992A (zh) * | 2020-12-25 | 2021-04-06 | 傲创(杭州)资产管理有限公司 | 一种基于ai及数据挖掘的全球量化交易智能平台 |
WO2021068612A1 (zh) * | 2019-10-12 | 2021-04-15 | 苏宁云计算有限公司 | 过期数据的归档方法和装置 |
CN112817972A (zh) * | 2021-01-22 | 2021-05-18 | 中信百信银行股份有限公司 | 数据存储方法、数据查询方法、装置及电子设备 |
CN113343023A (zh) * | 2021-06-01 | 2021-09-03 | 广州欢网科技有限责任公司 | 快速查询时段内频道排名的方法及系统 |
CN113448966A (zh) * | 2021-07-17 | 2021-09-28 | 绿漫科技有限公司 | 一种订单类数据多维度分表系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344893A (zh) * | 2008-07-17 | 2009-01-14 | 中兴通讯股份有限公司 | 一种历史数据的存取方法和装置 |
CN102156738A (zh) * | 2011-04-13 | 2011-08-17 | 成都市华为赛门铁克科技有限公司 | 数据块处理方法、数据块存储设备及系统 |
CN102708188A (zh) * | 2012-05-15 | 2012-10-03 | 苏州阔地网络科技有限公司 | 一种数据分离的方法及系统 |
CN103092867A (zh) * | 2011-11-03 | 2013-05-08 | 中国移动通信集团甘肃有限公司 | 一种数据管理方法及系统、数据分析装置 |
CN103186350A (zh) * | 2011-12-31 | 2013-07-03 | 北京快网科技有限公司 | 混合存储系统及热点数据块的迁移方法 |
CN103927265A (zh) * | 2013-01-04 | 2014-07-16 | 深圳市龙视传媒有限公司 | 一种内容分级存储装置、内容获取方法及内容获取装置 |
CN104580274A (zh) * | 2013-10-12 | 2015-04-29 | 中国电信股份有限公司 | 内容分发网络中的内容置换方法与系统、节点 |
CN104965873A (zh) * | 2015-06-10 | 2015-10-07 | 努比亚技术有限公司 | 一种分页查询方法及装置 |
-
2016
- 2016-11-23 CN CN201611059014.6A patent/CN106557578B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344893A (zh) * | 2008-07-17 | 2009-01-14 | 中兴通讯股份有限公司 | 一种历史数据的存取方法和装置 |
CN102156738A (zh) * | 2011-04-13 | 2011-08-17 | 成都市华为赛门铁克科技有限公司 | 数据块处理方法、数据块存储设备及系统 |
CN103092867A (zh) * | 2011-11-03 | 2013-05-08 | 中国移动通信集团甘肃有限公司 | 一种数据管理方法及系统、数据分析装置 |
CN103186350A (zh) * | 2011-12-31 | 2013-07-03 | 北京快网科技有限公司 | 混合存储系统及热点数据块的迁移方法 |
CN102708188A (zh) * | 2012-05-15 | 2012-10-03 | 苏州阔地网络科技有限公司 | 一种数据分离的方法及系统 |
CN103927265A (zh) * | 2013-01-04 | 2014-07-16 | 深圳市龙视传媒有限公司 | 一种内容分级存储装置、内容获取方法及内容获取装置 |
CN104580274A (zh) * | 2013-10-12 | 2015-04-29 | 中国电信股份有限公司 | 内容分发网络中的内容置换方法与系统、节点 |
CN104965873A (zh) * | 2015-06-10 | 2015-10-07 | 努比亚技术有限公司 | 一种分页查询方法及装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273413B (zh) * | 2017-05-04 | 2020-07-31 | 北京星选科技有限公司 | 中间表的创建方法、查询方法及相关装置 |
CN107273413A (zh) * | 2017-05-04 | 2017-10-20 | 北京小度信息科技有限公司 | 中间表的创建方法、查询方法及相关装置 |
CN107451204A (zh) * | 2017-07-10 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
CN107977403A (zh) * | 2017-11-14 | 2018-05-01 | 中国银行股份有限公司 | 历史数据查询方法及装置 |
CN108205780A (zh) * | 2018-01-02 | 2018-06-26 | 掌合天下(北京)信息技术有限公司 | 订单处理系统及订单划分方法 |
CN108829782A (zh) * | 2018-05-31 | 2018-11-16 | 平安科技(深圳)有限公司 | 数据表清理方法、服务器及计算机可读存储介质 |
CN108829782B (zh) * | 2018-05-31 | 2023-08-25 | 平安科技(深圳)有限公司 | 数据表清理方法、服务器及计算机可读存储介质 |
CN110083627A (zh) * | 2019-04-28 | 2019-08-02 | 江苏满运软件科技有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
CN110083627B (zh) * | 2019-04-28 | 2021-08-24 | 江苏满运软件科技有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
WO2021068612A1 (zh) * | 2019-10-12 | 2021-04-15 | 苏宁云计算有限公司 | 过期数据的归档方法和装置 |
CN112613992A (zh) * | 2020-12-25 | 2021-04-06 | 傲创(杭州)资产管理有限公司 | 一种基于ai及数据挖掘的全球量化交易智能平台 |
CN112817972A (zh) * | 2021-01-22 | 2021-05-18 | 中信百信银行股份有限公司 | 数据存储方法、数据查询方法、装置及电子设备 |
CN113343023A (zh) * | 2021-06-01 | 2021-09-03 | 广州欢网科技有限责任公司 | 快速查询时段内频道排名的方法及系统 |
CN113448966A (zh) * | 2021-07-17 | 2021-09-28 | 绿漫科技有限公司 | 一种订单类数据多维度分表系统 |
CN113448966B (zh) * | 2021-07-17 | 2022-06-21 | 绿漫科技有限公司 | 一种订单类数据多维度分表系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106557578B (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106557578A (zh) | 历史数据查询方法及系统 | |
Alonso et al. | Data caching issues in an information retrieval system | |
CN101216821B (zh) | 数据采集系统的存储管理方法 | |
CN104850572B (zh) | HBase非主键索引构建与查询方法及其系统 | |
CN104834675B (zh) | 一种基于用户行为分析的查询性能优化方法 | |
US5787415A (en) | Low maintenance data delivery and refresh system for decision support system database | |
CN105069134B (zh) | 一种Oracle统计信息自动收集方法 | |
US20090164468A1 (en) | System for controlling concurrent access to data in a database system | |
US20050015436A1 (en) | Architecture for partition computation and propagation of changes in data replication | |
US20080222111A1 (en) | Database system with dynamic database caching | |
CN103688259A (zh) | 用于通过压缩和纵列存储进行自动数据放置的技术 | |
US20090138448A1 (en) | Processing database queries by returning results of a first query to subsequent queries | |
CN102043859A (zh) | 数据更新方法及装置 | |
CN104182898A (zh) | 银行系统对夜模式期间发生的联机交易进行补录的方法 | |
US20070179936A1 (en) | Method and system for utilizing shared numeric locks | |
CN102651008A (zh) | 在关系数据库中组织数据记录的方法和设备 | |
CN101562664A (zh) | 一种话单处理方法和系统 | |
CN102968456B (zh) | 一种栅格数据读取处理方法和装置 | |
CN109951541A (zh) | 一种流水号生成方法及服务器 | |
US9489413B2 (en) | Asynchronous global index maintenance during partition maintenance | |
Durner et al. | Crystal: a unified cache storage system for analytical databases | |
CN110647542B (zh) | 一种数据获取方法和装置 | |
CN109388656A (zh) | 基于多级缓存的数据处理方法及系统、装置和存储介质 | |
Mizuno et al. | Sequential consistency in distributed systems | |
CN106156061A (zh) | 一种提高数据查询效率的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |