数据查询处理方法及装置与流程

文档序号:12837142阅读:203来源:国知局
本发明涉及数据库
技术领域
:,具体而言,涉及一种数据查询处理方法及装置。
背景技术
::目前,大数据统计已应用于社会各个行业领域中,数据分析技术也随之发展。在销售领域中,在进行销售数据统计时,通常会利用数据库自关联查询技术,来分析个体销售或消费行为的历史数据,从而得出可预计未来销售或消费行为的倾向性。但销售数据量往往都是数以亿计的,将其中任一数据字段进行自关联,都意味着数亿的平方数量级的运算,普通运算系统难以承受如此大的运算负荷。特别是对于保险公司而言,为了进行核保作业,每天都需要对每个销售代理人均计算统计出其过往销售历史数据,以验证其当日销售保单的风险值。技术实现要素:本发明提供一种数据查询处理方法及装置,能够加快数据查询处理时间,提升处理效率。本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。根据本发明的一方面,提供了一种数据查询处理方法,包括:根据查询需求,在待处理数据表中建立分布键;根据所述分布键,拆分所述待处理数据表,以建立多个分布式数据表;为每个所述分布式数据表分配一个处理进程;以及利用多线程操作,根据所述查询需求,基于每个分布式数据表,进行数据查询操作。根据本发明的一实施方式,根据所述查询需求,基于每个分布式数据表,进行数据查询操作包括:在每个分布式数据表中进行所述查询需 求所需的自关联数据查询。根据本发明的一实施方式,利用多线程操作,根据所述查询需求,基于每个分布式数据表,进行数据查询操作之前还包括:为每个所述分布式数据表进行同类数据查重及删除操作。根据本发明的一实施方式,为每个所述分布式数据表进行同类数据查重及删除操作包括:针对每个所述分布式数据表,判断其中是否存在重复的同类数据;如果其中有重复的同类数据,则删除所述同类数据,并将删除所述同类数据后的所述分布式数据表保存为分布式数据中间表;以及根据所述查询需求,基于每个分布式数据表,进行数据查询操作包括:根据每个所述分布式数据表及其对应的所述分布式数据中间表,进行所述查询需求所需的互关联数据查询。根据本发明的一实施方式,所述同类数据根据所述查询需求确定。根据本发明的另一方面,提供了一种数据查询处理装置,包括:分布键建立模块,用于根据查询需求,在待处理数据表中建立分布键;数据表拆分模块,用于根据所述分布键,拆分所述待处理数据表,以建立多个分布式数据表;进程分配模块,用于为每个所述分布式数据表分配一个处理进程;以及数据查询模块,用于利用多线程操作,根据所述查询需求,基于每个分布式数据表,进行数据查询操作。根据本发明的一实施方式,所述数据查询模块包括:自关联查询子模块,用于在每个分布式数据表中进行所述查询需求所需的自关联数据查询。根据本发明的一实施方式,该装置还包括:同类数据删除模块,用于在所述数据查询模块进行所述数据查询操作之前,为每个所述分布式数据表进行同类数据查重及删除操作。根据本发明的一实施方式,所述同类数据删除模块包括:同类数据判断子模块,用于针对每个所述分布式数据表,判断其中是否存在重复的同类数据;及同类数据删除子模块,用于当所述同类数据判断子模块判断所述分布式数据表中有重复的同类数据时,删除所述同类数据,并将删除所述同类数据后的所述分布式数据表保存为分布式数据中间表;以及所述数据查询模块包括:互关联查询子模块,用于根据每个所述分 布式数据表及其对应的所述分布式数据中间表,进行所述查询需求所需的互关联数据查询。根据本发明的一实施方式,所述同类数据根据所述查询需求确定。根据本发明的数据查询处理方法,通过将大数据量的数据表根据分布键进行拆分,拆分出多个分布式的子表,且利用多线程操作分布式地处理各个子表,大大加快了数据查询的处理时间,提升了数据查询效率。经测算,以一千万条数据量的数据表为例,作业时间可以由原先的二十几个小时缩短至半个小时左右,数据查询处理时间明显降低,效果十分显著。另外,根据一些实施例,本发明的数据查询方法进一步对拆分的分布式数据表中的同类数据进行查重及删除操作,采用该操作后进一步减少了需统计数据量的规模,从而可以进一步减少数据查询处理的时间,进一步提高处理效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。附图说明通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。图1是根据一示例性实施方式示出的一种数据查询处理方法的流程图。图2是根据一示例性实施方式示出的另一种数据查询处理方法的流程图。图3是根据一示例性实施方式示出的一种数据查询处理装置的框图。图4是根据一示例性实施方式示出的另一种数据查询处理装置的框图。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式 能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现或者操作以避免喧宾夺主而使得本发明的各方面变得模糊。图1是根据一示例性实施方式示出的一种数据查询处理方法的流程图。如图1所示,数据查询处理方法10包括:在步骤s102中,根据查询需求,在待处理数据表中建立分布键。以一交易流水数据表(table_test)为例进行说明。假设该交易流水数据表包含4个字段:交易号tran_id、客户号customer_id、交易金额money、交易日期tran_date。该交易流水数据表如表1所示:表1假设查询需求为,在交易流水数据表中查询每单交易时,该单交易的客户在该单交易之前的交易额。如果没有把分布键建在customer_id上,例如采用sql语言,则查询语句为:selecta.tran_id,sum(b.money)fromtable_testa,table_testbwherea.customer_id=b.customer_idandb.tran_date<a.tran_dategroupbya.tran_id;因为没有把分布键建在customer_id上,数据会进行广播,会按照customer_id进行重新分布,执行效率很低。当数据量达到上千万条时,很可能几天也执行不完。而本发明实施方式,则可以根据上述示例的查询需求,将分布键建立在customer_id上。在步骤s104中,根据建立的分布键,拆分待处理数据表,建立多个分布式数据表。基于数据库的分区,根据分布键,对待处理数据表进行拆分。仍以上述交易流水数据表和查询需求为例。假设数据库的分区为4个,则将上述交易流水数据表按照customer_id拆分为4个分布式数据表,且使customer_id均匀分布。以customer_id为分布键的拆分原则是,保证相同customer_id的数据分在同一分布式数据表中。假设拆分后的4个分布式数据表分别如表2-5所示:表2分区a中的分布式数据表表3分区b中的分布式数据表tran_idcustomer_idmoneytran_date2000210.002016-01-011000025.002016-01-0719000210.002016-01-1520000220.002016-01-159000510.002016-01-07表4分区c中的分布式数据表tran_idcustomer_idmoneytran_date3000320.002016-01-026000315.002016-01-0417000310.002016-01-1311000610.002016-01-0912000730.002016-01-11表5分区d中的分布式数据表tran_idcustomer_idmoneytran_date5000410.002016-01-047000420.002016-01-0415000910.002016-01-121600105.002016-01-1318001110.002016-01-15在步骤s106中,为每个分布式数据表分配一个处理进程。仍以上述示例说明,为4个分布式数据表各分配一个处理进程,即共分配4个处理进程。在步骤s108中,利用多线程操作,根据该查询需求,基于每个分布式数据表,进行数据查询操作。例如,仍以上述示例说明,利用多线程操作,使每个分布式数据表在各自的分区内并行处理,每个分布式数据表和自己进行自关联。例如表2所示的分区a的分布式数据表table_test,按照分布键customer_id进行自关联,仍以采用sql语言为例,则查询语句为:selecta.tran_id,sum(b.money)fromtable_testa,table_testbwherea.customer_id=b.customer_idandb.tran_date<a.tran_dategroupbya.tran_id;其他各分区中的分布式数据表也独立进行上述自关联查询操作。需要说明的是,上述示例仅为了便于理解本发明的方法,而非限制本发明。本发明实施方式提供的数据查询处理方法10,通过将大数据量的数据表根据分布键进行拆分,拆分出多个分布式的子表,且利用多线程操作分布式地处理各个子表,大大加快了数据查询的处理时间,提升了数据查询效率。经测算,以一千万条数据量的数据表为例,作业时间可以由原先的二十几个小时缩短至半个小时左右,数据查询处理时间明显降低,效果十分显著。应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施方式。图2是根据一示例性实施方式示出的另一种数据查询处理方法的流程图。如图2所示,数据查询处理方法20包括:在步骤s202中,根据查询需求,在待处理数据表中建立分布键。在步骤s204中,根据建立的分布键,拆分待处理数据表,建立多个分布式数据表。在步骤s206中,为每个分布式数据表分配一个处理进程。上述步骤与数据查询处理方法10中的步骤s102~s106相同,在此不再赘述。在步骤s208中,利用多线程操作,根据查询需求,为每个分布式数据表进行同类数据查重及删除操作。具体地,对于每个分布式数据表,如果其中有同类数据重复的情况,则可以进行同类数据查重及删除操作,并将查重及删除操作后的分布式数据表保存为分布式数据中间表。该同类数据根据查询需求确定,仍以上述示例为例进行说明,上述表2和表3中的分布式数据表中customer_id为0001和0002的客户分别在2016-01-04和2016-01-15有两笔交易,因此可以按照交易日期进行合并去重,进行查重及删除操作后生成的分布式数据中间表如表6和表7所示:表6分区a中的分布式数据中间表customer_idmoneytran_date000110.002016-01-01000140.002016-01-04000120.002016-01-12000815.002016-01-12表7分区b中的分布式数据中间表customer_idmoneytran_date000210.002016-01-0100025.002016-01-07000230.002016-01-15000510.002016-01-07上述生成分布式数据中间表的操作例如可以sql语句:insertintotable_test_1selectdistinctcustomer_id,tran_datefromtable_test;其中table_test为分布式数据表,table_test_1为分布式数据中间表。在步骤s210中,利用多线程操作,根据每个分布式数据表及其分布式数据中间表,执行该查询需求所需的互关联数据查询。例如,仍以上述示例及采用sql语言为例说明,查询语句可以为:selecta.customer_id,a.tran_date,sum(b.money)astotal_moneyfromtable_test_1a,table_testbwherea.customer_id=b.customer_idandb.tran_date<a.tran_dategroupbya.customer_id,a.tran_date;并将上述查询结果写入表table_test_2中。之后,再用table左关联table_test_2即可,具体语句可以如下:slecta.tran_id,b.total_moneyfromtable_testaleftjointable_test_2ona.customer_id=b.customer_idanda.tran_date=b.tran_date;本发明实施方式提供的数据查询方法20,进一步对拆分的分布式数据表中的同类数据进行查重及删除操作,采用该操作后进一步减少了需统计数据量的规模,从而可以进一步减少数据查询处理的时间,进一步 提高处理效率。本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由cpu执行的计算机程序。在该计算机程序被cpu执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。图3是根据一示例性实施方式示出的一种数据查询处理装置的框图。如图3所示,数据查询处理装置30包括:分布键建立模块302、数据表拆分模块304、进程分配模块306以及数据查询模块308。其中,分布键建立模块302用于根据查询需求,在待处理数据表中建立分布键。数据表拆分模块304用于根据建立的分布键,拆分待处理数据表,以建立多个分布式数据表。进程分配模块306用于为每个分布式数据表分配一个处理进程。数据查询模块308用于利用多线程操作,根据查询需求,基于每个分布式数据表,进行数据查询操作。在一些实施例中,数据查询模块308包括:自关联查询子模块3082,用于在每个分布式数据表中进行查询需求所需的自关联数据查询。本发明实施方式提供的数据查询处理装置30,通过将大数据量的数据表根据分布键进行拆分,拆分出多个分布式的子表,且利用多线程操作分布式地处理各个子表,大大加快了数据查询的处理时间,提升了数据查询效率。经测算,以一千万条数据量的数据表为例,作业时间可以由原先的二十几个小时缩短至半个小时左右,数据查询处理时间明显降 低,效果十分显著。图4是根据一示例性实施方式示出的另一种数据查询处理装置的框图。如图4所示,数据查询处理装置40包括:分布键建立模块402、数据表拆分模块404、进程分配模块406、数据查询模块408以及同类数据删除模块410。其中,分布键建立模块402用于根据查询需求,在待处理数据表中建立分布键。数据表拆分模块404用于根据分布键,拆分待处理数据表,以建立多个分布式数据表。进程分配模块406用于为每个分布式数据表分配一个处理进程。同类数据删除模块410用于在数据查询模块408进行数据查询操作之前,为每个分布式数据表进行同类数据查重及删除操作。数据查询模块408用于利用多线程操作,根据查询需求,基于每个分布式数据表,进行数据查询操作。在一些实施例中,同类数据删除模块410包括:同类数据判断子模块4102和同类数据删除子模块4104,其中同类数据判断子模块4102用于针对每个分布式数据表,判断其中是否存在重复的同类数据,同类数据删除子模块4104用于当同类数据判断子模块判断分布式数据表中有重复的同类数据时,删除同类数据,并将删除同类数据后的分布式数据表保存为分布式数据中间表。数据查询模块408包括:互关联查询子模块4082,用于根据每个分布式数据表及其对应的分布式数据中间表,进行查询需求所需的互关联数据查询。本发明实施方式提供的数据查询装置40,进一步对拆分的分布式数据表中的同类数据进行查重及删除操作,采用该操作后进一步减少了需统计数据量的规模,从而可以进一步减少数据查询处理的时间,进一步提高处理效率。需要注意的是,上述附图中所示的框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施方式的方法。以上具体地示出和描述了本发明的示例性实施方式。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1