运算结果展现的方法、装置和系统 【技术领域】
本发明涉及数据处理领域,尤其涉及运算结果展现的方法、装置和系统。
背景技术
在日常的网络运营服务中常会遇到这样的情况:客户需要查看海量网络用户中满足某些条件的用户特征是什么,这类用户总数是多少。由于查询数据量大,无论是数据库查询记录还是通过模型预测,都会耗费一定的时间,客户只能等待,不能马上看到结果,客户感知度较差,实际应用效果较差。另外,在有些时候,系统需要与操作者进行交互,根据操作者选择的客户特征,即时的显示满足特征的客户数量。在客户数据量极大(千万级以上)的情况下,这种即时的客户数量运算几乎是不可能的。
目前业界对于这种大数据量查询展示一般是针对生产数据库的备份库进行查询,同时采用后台(即查询系统的业务处理程序,用户不能直观看到)闲时更新数据(凌晨时段),前台(即查询系统的前台页面,用户能够直观看到)展示采用异步处理过程,对更新后的数据进行查询,得到前多少个结果时就展现在页面,后台继续运算,直到将全部数据查询完毕后,才展现符合查询条件的记录共多少条。
在实现上述运算结果展现的过程中,发明人发现现有技术中至少存在如下问题:查询结果是从备份库得来的,查询出来的结果不能实时展现数据,数据相对滞后。
【发明内容】
本发明的实施例提供一种运算结果展现的方法、装置和系统,能实时查询到生产数据库的数据。
为达到上述目的,本发明的实施例采用如下技术方案:
一种生产数据库运算结果调用的方法,包括:
从存储的海量数据中按照数据分布抽样建立微缩数据集;
将所述微缩数据集发送给辅助系统。
一种辅助系统运算结果展现的方法,包括:
接收来自生产数据库的微缩数据集;
接收来自客户端的查询条件或选择模型;
选择借助微缩数据集提取满足客户端查询条件或选择模型的结果,展现给所述客户端。
一种生产数据库,包括:
抽样单元:用于从所述存储的海量数据中按照数据分布抽样建立微缩数据集;
微缩数据集发送单元:用于将所述微缩数据集发送给辅助系统。
一种辅助系统,包括:
微缩数据集接收单元:用于接收来自生产数据库的微缩数据集;
查询接收单元:用于接收来自客户端的查询条件或选择模型;
选择提取结果单元:用于选择借助微缩数据集提取满足客户端查询条件或选择模型的结果,展现给所述客户端。
一种运算结果展现的系统,包括:生产数据库和辅助系统,其中,
生产数据库:用于按照数据分布建立微缩数据集;
辅助系统:用于选择借助微缩数据集提取并展现查询结果。
本发明实施例提供的运算结果展现的方法、装置和系统,先借助微缩数据集预测生产数据库查询结果并实时展现结果,再从生产数据库得到真实的查询结果对预测结果进行替换,不再依赖备份库,使客户端能实时查询到生产数据库的数据。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法实施例一流程图;
图2为本发明方法实施例二流程图;
图3为本发明方法实施例二中步骤S203的具体流程图;
图4为本发明系统实施例结构图;
图5为本发明系统实施例中生产数据库的结构图;
图6为本发明系统实施例中辅助系统的结构图;
图7为本发明系统实施例中辅助系统内选择提取结果单元的结构图。
【具体实施方式】
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明方法实施例一,如图1所示,包括:
S101、生产数据库从所述存储的海量数据中按照数据分布抽样建立微缩数据集。
所述对存储的海量数据进行抽样的方法包括:简单随机抽样、系统抽样、分层抽样、整群抽样、多阶抽样中的一种或者任意组合。
建立微缩数据集的目的是建立一个“微缩的”生产数据库,当客户端进行查询时,首先向客户端展现的查询结果将在微缩数据集中产生,由于微缩数据集中的数据量小于生产数据库,所以可以很快将结果展现在用户面前,减少用户的等待时间。微缩数据集的表结构一般与生产数据库的表结构一致,建立所述微缩数据集地过程在实现上与现有建立数据库的过程类似,在此不做赘述。
此外,在抽样产生微缩数据集时,应当注意抽样的最终结果应当使微缩数据集能够正确反应生产数据库中海量数据的分布特征,以利于用户通过微缩数据集预测对整个生产数据库的查询结果。
S102、生产数据库将所述微缩数据集发送给辅助系统。
S103、辅助系统接收来自生产数据库的微缩数据集。
S104、辅助系统接收来自客户端的查询条件或选择模型。
S105、辅助系统选择借助微缩数据集提取满足客户端查询条件或选择模型的结果,展现给所述客户端。
在本步骤,借助微缩数据集提取查询结果的过程是可选的,这主要是考虑到有的查询条件和模型较为简单,虽然数据量很大,但是现有的数据库技术仍能很快的得出结果。因此,辅助系统可以选择在使用现有技术得到查询结果时间过长的情况下,借助微缩数据集提取查询结果。
现有数据量查询展示方法是在客户端有查询请求时,开始对数据库执行查询,由于要对数据库中的海量数据进行查找,计算量非常大,尤其是多个客户端同时查询时,甚至会造成生产数据库的瘫痪,为了保护生产数据库的正常运转,现有技术在生产数据库之外另设立备份库,备份库拷贝生产数据库中的数据,用以接受客户端的查询请求。由于生产数据库的数据量往往很大,备份库每次备份生产数据库的数据需要很长时间,所以一般无法做到每天同步更新备份库中的数据,这会造成备份库数据与生产数据库中的数据不同步,降低查询结果的准确性和实时性。
另外,每次客户端有查询请求时,都要对海量数据进行运算,由于运算量过大,如果等到全部运算结束才向客户端展现查询结果,时间会非常长,用户无法容忍,所以现有技术采用异步处理过程,只要得到前多少个结果时就展现在页面,后台继续运算,直到将全部数据查询完毕后,才展现符合查询条件的记录共多少条。但是,通过这种方式展现在用户面前的查询结果(也就是计算后先得到的数个结果),与数据库的整体数据分布无关,无法向客户端反映查询结果的整体分布态势,无法使用户对本次查询有一个宏观的把握,而很多时候用户查询的目的很模糊,并不是想精确定位要查找的信息,恰恰只想对自己的查询有一个宏观的认识,以利于进一步的查找,所以现有技术的查询结果用户感知度差,不能及时快速的展现用户想看的总体结果,不利于辅助决策,应用效果不好。
本实施例首先在生产数据库中建立一个微缩数据集,所述微缩数据集能够正确反应生产数据库中海量数据的分布特征。在客户端有查询请求时,可以按照该查询请求在微缩数据集进行查询,向客户端展示对微缩数据集的查询结果,由于微缩数据集能够正确反应生产数据库中海量数据的分布特征,用户可以通过对微缩数据集的查询结果预测本次查询在生产数据库的查询结果可能是什么样,有利于提高用户对查询结果的感知度,有利于辅助用户决策。这个过程还可以提高向客户端的用户返回查询结果的实时性。与此同时,在后台闲时系统可以对生产数据库执行查询,并在用户需要时向其展示对生产数据库的真实查询结果。通过这个过程,可以保证最终查询结果的准确性。
本发明方法实施例二,如图2所示,包括:
S201、辅助系统闲时将更新数据发送给生产数据库。
S202、生产数据库接收来自辅助系统的更新数据,对存储的海量数据进行更新。
S203、生产数据库从所述存储的海量数据中按照数据分布,以简单随机抽样、整群抽样和系统抽样结合的抽样方法建立微缩数据集。
所述简单随机抽样是指从总体N个单位中任意抽取n个单位作为样本,使每个可能的样本被抽中的概率相等的一种抽样方式。
所述整群抽样是将总体中各单位归并成若干个互不交叉、互不重复的集合,称之为群;然后以群为抽样单位抽取样本的一种抽样方式。
所述系统抽样就是把总体的元素编号排序后,再计算出某种间隔,然后按一固定抽取元素来组成样本的方法。适合用于总体及样本规模都较大的情况。
本步骤的抽样与一般抽样有所区别:一般抽样首先考虑的是抽样的具体问题是什么,然后根据问题选择不同的抽样方法以达到最好的反应总体的效果。而此处由于我们并不能事先确定用户想要查询的问题,为了不偏离重要数据的总体特征,实际操作中我们加入对数据属性按照行业经验进行重要性排序的操作,然后依据排序进行抽样,力求最大限度的反应总体特征。
本步骤中抽样方法如图3所示,具体包括:
S203a、设定抽样的数据总量。
S203b、根据用户所选择的行业设定抽样数据的属性,对所述属性进行重要性排序。
S203c、设定每个属性的抽样量,根据属性的重要性排序,依次对每个属性按照该属性的取值特性,在存储的海量数据中进行抽样。
每次抽样的抽样量可以根据实际需要设定,比如可以设定为最小20000条记录,最大100000条记录。
设生产数据库共有数据记录N条,提取数据所依据的属性有三个,按照重要性排序(从重要到不重要)分别为:Z_1、Z_2、Z_3。其中,Z_1和Z_3的取值特性为离散型取值;Z_2的取值特性为连续型取值。Z_1离散值取值0,1,2,3;Z_2连续值取值0-100,Z_3离散取值0,1,2。进行抽样时,根据各属性的重要性排序,依次进行抽样,先按Z_1各离散值占总体的百分比进行抽样,然后在抽到的这些记录中再按照Z_2离散化后的离散值占Z_1抽样记录的百分比进行抽样,依次进行。
另外,还需确定每个属性的抽样量:设参与重要性排序的属性有n个(本实施例中有三个:Z_1、Z_2、Z_3),记录总体数N,最后抽到的样本占总体的y%,则N×(x%)^n=N×y%=抽样的样本数,其中x%表示抽样样本中后一个属性的记录数占前一个属性记录数的百分比。
设生产数据库中,Z_1取0,1,2,3的数据记录数之比为3∶3.5∶2∶1.5。
设首次按Z_1抽样的记录数为N_1,其中各取值的记录数之比不变,则Z_1取0值的记录数为N_1*(3/10)。
设将Z_2离散化,分为10段:0~10,11~20,21~30,31~40,41~50,51~60,61~70,71~80,81~90,91~100。
设各段在Z_1取0值的记录数中Z_2取值各段记录数比为a_1∶a_2∶a_3∶a_4∶a_5∶a_6∶a_7∶a_8∶a_9∶a_10;则设按此比例从Z_1取0值中随机抽取的记录数为N_2。
设各段在Z_1取1值的记录数中Z_2取值各段记录数比为b_1∶b_2∶b_3∶b_4∶b_5∶b_6∶b_7∶b_8∶b_9∶b_10;则设按此比例从Z_1取1值中随机抽取的记录数为N_3。
设各段在Z_1取2值的记录数中Z_2取值各段记录数比为c_1∶c_2∶c_3∶c_4∶c_5∶c_6∶c_7∶c_8∶c_9∶c_10;则设按此比例从Z_1取2值中随机抽取的记录数为N_4。
设各段在Z_1取3值的记录数中Z_2取值各段记录数比为d_1∶d_2∶d_3∶d_4∶d_5∶d_6∶d_7∶d_8∶d_9∶d_10;则设按此比例从Z_1取3值中随机抽取的记录数为N_5。
以此递推按照属性重要性排序进行抽取,则后一属性记录数占前一个属性记录数的百分比为x%=(N_2+N_3+N_4+N_5)/N_5。
设Z_2属性记录数占Z_1属性记录数x_1%,Z_3属性记录数占Z_2属性记录数x_2%,则20,000<N_1*x_1%*x_2%<100,000,据此可得到第一次简单随机抽样值的范围。对其它属性重复此步骤便可以建立起微缩数据集。
当进行抽样的属性的取值特性为连续型取值,离散化之后随机取值可能会丢掉属性极值的取值记录,比如上文的例子中,Z_2的取值离散化之后,丢掉了10~11、20~21、30~31、40~41、50~51、60~61、70~71、80~81、90~91的取值记录。因此在抽样结束后,需单独对上述字段进行抽样,将记录数补充到微缩数据集中。
设上述抽样最后得到的样本占总体的y%,设连续取值字段S_1(此处为上例中Z_2取值10~11,其它连续取值字段以此类推)极值记录数为P_1,S_2极值记录数为P_2,S_3为P_3......,则极值抽样记录数为[P_1*y%]+[P_2*y%]+......,[]表示取整,即不足一条记录要抽出一条记录。抽出记录编号若在数据集中已有,则不再插入数据集中。
S204、生产数据库将所述微缩数据集发送给辅助系统。
S205、辅助系统接收来自生产数据库的微缩数据集。
S206、辅助系统接收来自客户端的查询条件或选择模型。
S207、辅助系统判断使用现有数据库运算结果展现方法,是否能够在标准时间内返回结果。
S208、如果现有数据库运算结果展现方法能够在标准时间内向客户端展现结果,使用所述现有数据库运算结果展现方法。
S209、如果现有数据库运算结果展现方法不能在标准时间内向客户端展现结果,选择借助微缩数据集提取满足客户端查询条件或选择模型的结果。
在本步骤,借助微缩数据集提取查询结果的过程是可选的,这主要是考虑到有的查询条件和模型较为简单,虽然数据量很大,但是现有的数据库技术仍能很快的得出结果,如数据采用分区存储的技术。因此,辅助系统可以选择在使用现有技术得到查询结果时间过长的情况下,借助微缩数据集提取查询结果。通常,用户希望输入条件,马上可以通过页面看到结果。但是调查发现近4成的网民对于打开网页的忍受时间点是10秒,而8成以上的网民对于20秒以上还未打开网页是无法忍受的。因此我们这里取20秒作为标准时间,对于20秒还不能得到总体结果的运算借助微缩数据集提取查询结果。判断公式如下:
页面打开时间T=20/(3×1000)×(N(字段数)×P(字段查询系数)+C(运算复杂度))×G(数据量,记录数以万为单位)
其中,20/(3×1000)是经验数字,表示1000万条没有索引的记录查询3个字段需耗时20秒。P(字段查询系数)是由于“成倍增加需要查询的字段但耗费时间却不会成倍增加”而产生的经验系数。C(运算复杂度)根据经验定义,一般的查询定义为0,2个数据集的交集、并集运算定义为1,n个数据集的交并运算定义为n/2*P。
S210、将客户端查询条件或选择模型转换成SQL语句,在所述微缩数据集中执行查询,并得到微缩数据集的查询结果。
S211、根据得到的微缩数据集的查询结果,预测生产数据库的查询结果,并将所述预测的生产数据库的查询结果在前台展现给客户端。
S212、在后台对生产数据库内的海量数据继续按照客户端设定的条件进行运算,得到真实的生产数据库的查询结果。
S213、将所述真实的生产数据库的查询结果与预测的生产数据库的查询结果进行比对,如果误差小于标准门限,用真实的生产数据库的查询结果替换预测的生产数据库的查询结果展现给客户;如果误差大于标准门限,发出报警信息。
通过微缩数据集的结果预测整体结果在前台展示后,后台对原始数据集按照用户设定的条件或选定的模型分配一定的内存进行运算,直到运算完毕得到真实的生产数据库的查询结果之后,将所得结果与预测结果进行比对,如果误差小于标准门限(本实施例中标准门限取5%),则用真实的生产数据库的查询结果替换预测的生产数据库的查询结果,反之则对系统管理员发出告警信息,查看抽样方法是否合理,找出问题的具体原因。
本实施例首先在生产数据库中建立一个微缩数据集,所述微缩数据集能够正确反应生产数据库中海量数据的分布特征。在客户端有查询请求时,可以按照该查询请求在微缩数据集进行查询,向客户端展示对微缩数据集的查询结果,也可以在查询时间较短的前提下,使用现有技术查询,保证在最短的时间内将查询结果展现给用户。由于微缩数据集能够正确反应生产数据库中海量数据的分布特征,用户可以通过对微缩数据集的查询结果预测本次查询在生产数据库的查询结果可能是什么样,有利于提高用户对查询结果的感知度,有利于辅助用户决策。这个过程还可以提高向客户端的用户返回查询结果的实时性。与此同时,在后台闲时系统可以对生产数据库执行查询,并在用户需要时向其展示对生产数据库的真实查询结果。通过这个过程,可以保证最终查询结果的准确性。
另外,本实施例的实现不再依赖备份库,节省了系统成本,直接从生产数据库导出数据,数据真实,无延迟。
本发明系统实施例,如图4所示,包括:生产数据库1和辅助系统2,其中,
生产数据库1:用于建立微缩数据集。
辅助系统2:用于选择借助微缩数据集提取并展现查询结果。
在现实中,所述辅助系统可以是用于配合、支撑现网上正在运营的系统的保障系统。
所述生产数据库1如图5所示,包括:
接收单元11:用于接收来自辅助系统的更新数据,对存储的海量数据进行更新。
抽样单元12:用于从所述存储的海量数据中抽样建立微缩数据集。
微缩数据集发送单元13:用于将所述微缩数据集发送给辅助系统。
其中,所述抽样单元12包括:
总量设定子单元121:用于设定抽样的数据总量。
排序子单元122:用于根据用户所选择的行业设定抽样数据的属性,对所述属性进行重要性排序。
抽样处理子单元123:用于设定每个属性的抽样量,根据属性的重要性排序,依次对每个属性按照该属性的取值特性,在存储的海量数据中进行抽样。
进一步的,所述抽样处理子单元123具体为:
如果所述属性的取值特性为离散型取值,依据各离散值占所述属性的抽样量的百分比进行简单随机抽样;
如果所述属性的取值特性为连续型取值,将所述属性的取值范围分成一个以上的离散区间,依据各离散区间占所述属性的抽样量的百分比进行简单随机抽样。
另外,辅助系统2如图6所示,包括:
更新单元21:用于闲时将更新数据发送给生产数据库。
微缩数据集接收单元22:用于接收来自生产数据库的微缩数据集。
查询接收单元23:用于接收来自客户端的查询条件或选择模型。
选择提取结果单元24:用于选择借助微缩数据集提取满足客户端查询条件或选择模型的结果,展现给所述客户端。
其中,所述选择提取结果单元24如图7所示,包括:
判断子单元241:用于判断使用现有数据库运算结果展现方法,是否能够在标准时间内返回结果。
展示子单元242:如果现有数据库运算结果展现方法不能在标准时间内向客户端展现结果,用于通过微缩数据集预测生产数据库的查询结果,并将所述预测的查询结果在前台展现给客户端。
如果现有数据库运算结果展现方法能够在标准时间内向客户端展现结果,使用所述现有数据库运算结果展现方法。
查询结果运算子单元243:用于在后台对生产数据库内的海量数据继续按照客户端设定的条件进行运算,得到真实的生产数据库的查询结果。
比对子单元244:用于将所述真实的生产数据库的查询结果与预测的生产数据库的查询结果进行比对,如果误差小于标准门限,用真实的生产数据库的查询结果替换预测的生产数据库的查询结果展现给客户;如果误差大于标准门限,发出报警信息。
本实施例先借助微缩数据集预测生产数据库查询结果并实时展现结果,再从生产数据库得到真实的查询结果对预测结果进行替换,不再依赖备份库,使客户端能实时查询到生产数据库的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。