具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的数据的处理方法及装置。
图1是本申请一个实施例的数据的处理方法的流程图,如图1所示,该数据的处理方法包括:
S101,从预设数据库中读取事件的明细数据,并以预设时间段为单位对保存的明细数据进行累积,获得对应的累积数据,其中,累积数据所占用的存储空间小于该累积数据对应的明细数据所占用的存储空间。
具体地,可从预设数据库例如Hbase(HadoopDatabase)数据库中读取明细数据,并以预设时间段为单位,基于预设属性信息对读取到的明细数据进行累积,获得累积数据。其中,预设属性信息包括事件中包含的属性信息。上述预设时间段是系统中预先设置的时间段,预设时间段可为4小时、6小时等,优选地,预设时间段可为24小时即一天。
该实施例中,上述预设数据库可以是Hbase数据库,还可以是其他数据库,Hbase数据库是一个高可靠性、高性能、面向列、可伸缩的分布式存储数据库。上述事件的明细数据是指预设APP的用户在登录、注册、交易等过程中产生的每一条数据。例如,可在Hbase数据库中记录支付宝用户在登录、注册、交易等过程中产生的每一条明细数据。
具体地,为了降低服务器的压力,可以当达到预设条件时,从预设数据库中读取事件的明细数据,例如,当每秒查询率(QPS)低于预设阈值时,从预设数据库例如中Hbase数据库读取事件的明细数据。其中,预设阈值是系统中预先设置的阈值,例如,可以为20%、30%等。
在该实施例中,不同类型的明细数据的累积方式不同,因此,在以预设时间段为单位对事件的明细数据进行累积时,可基于事件的明细数据的类型按照对应的规则对保存的明细数据进行累积,获得累积数据。其中,事件的明细数据的类型是事件中包含的属性信息中的一种。
具体地,预设数据库中保存的事件的明细数据可分为两种类型,数值型的明细数据和非数值型的明细数据,不同类型的明细数据的累积方式不同:
a)对于数值型的明细数据,可以基于对应的规则对明细数据进行累积,以得到包含最大值、最小值、和、第一次交易值、最后一次交易值等的累积数据。
例如,明细数据为买家付款事件的明细数据,针对事件中的属性信息例如买家付款交易事件中的交易金额,可以确定账号对应的明细数据为交易金额,该明细数据的类型为数值型,此时,在以预设时间段比如一天为单位对事件的明细数据进行累积时,可按照对应的规则获得包含每个账号一天的累积交易金额、最大交易金额、最小交易金额、第一笔交易金额、最后一笔交易金额等的累积数据,可将一天的累积数据称为日账数据。
b)对于非数值型的明细数据,可基于非数值型的明细数据对应的规则对明细数据进行累积,以获得包含非数值型的明细数据的访问次数的累积数据。
例如,明细数据为用户的IP(InternetProtocol,互联网协议)地址,可以确定IP地址的类型为非数值类型的明细数据,在以预设时间段比如一天为单位统计每个IP地址的访问次数时,可基于对应的规则对非数值型的明细数据进行处理,比如,可以设置一个基础时间,并基于该基础时间统计每个IP偏离基础时间的在当天出现的次数。以方便后续根据累积数据查询用户在每天的访问次数。
S102,将获得的累积数据保存在预设数据库中。
以日账数据为例,可将获得的日账数据保存在预设数据库例如Hbase数据库中,其中,Hbase数据库中保存的日账数据和明细数据的存储结构如表1所示。
表1明细数据和日账数据的存储结构
表1中将交易主体相同的事件中的不同属性例如买家付款事件中的交易金额、交易的MAC(MediaAccessControl,介质访问控制)地址、IP(InternetProtocol,互联网协议)地址等存储在同一个Rowkey(行主键)下的不同的列中,其中,表1中的xxxx为这条数据的Rowkey值,n_amount和d_ip为事件中包含的属性信息的不同列名,n_amount列下保存数值型的明细数据,该列对应的日账数据的名称为n_amount$,d_ip列下保存非数值型的明细数据,该列对于的日账数据的名称为d_ip$。也就是说,不同类型的明细数据、日账数据对应的列名不同,并且不同类型的明细数据、日账数据的列名之间存在一定的规则,通常情况下,明细数据的列名加上“$”后缀即为对应的日账数据的列名,并且对应数值型的明细数据、日账数据的列名可以以n_开头,非数值型的明细数据、日账数据的列名可以以d_开头。
需要说明的是,不同类型的明细数据和日账数据的存储结构不同。具体而言,数值型的明细数据和日账数据存储结构如表2所示。
表2数值型的明细数据和日账数据的存储结构
其中,表2中的xxxx为这条数据的Rowkey值,n_amount表示数值型的明细数据的列名,在列名n_amount后面加上“$”后缀即为该数值型的明细数据对应的日账数据的列名。n_amount列名下的value:1000timestamp:1383548329867表示保存的明细数据,timestamp是由Hbase数据库在插入数据时自动生成的唯一时间戳标识,value的类型是double(双精度)类型。n_amount$列名下的value:“2000”timestamp对应当天的开始时间为00:00:00表示value是一个字符串2000,说明当天只有一笔数据;n_amount$列名下的value:“10,100,20,1,543,12,8”timestamp对应当天的开始时间00:00:00表示当前有多笔数据,value是一个字符串,逗号间隔的10,100,20,1,543,12,8分别代表的意义是count,sum,max,min,squaresum,first,last对应的数值,其中,count表示当天交易的次数,sum表示当天交易的累积和,max表示当天交易的最大交易,min表示当天交易的最小交易,squaresum表示当天交易的标准差,firs表示当天交易的第一笔交易,last表示当天交易的最后一笔交易。
另外,非数值型的明细数据、日账数据的存储结构除了可以以d_开头命名列名外,为了满足不同的聚合函数的需求,非数值型的明细数据、日账数据的存储结构还可以以s_或者c_开头命名列名,以s_开头命名列名的非数值型的明细数据、日账数据的存储结构如表3所示。
表3非数值型的明细数据、日账数据的存储结构
其中,表3中的xxxx为这条数据的Rowkey值,s_ip表示非数值型的明细数据的列名,在列名s_ip后面加上“$”后缀为该非数值型的明细数据对应的日账数据的列名。s_ip列名下的value:“65,67,89,124,33”timestamp:1383548329867表示保存的明细数据,value的类型是string(字符串)类型。s_ip$列名下的value:1383548329867.89.9.90.91:5.145.23.67.43:10timestamp:Long.MaxValue-1,对于非数值型数据汇总方式,需要对时间进行压缩,格式是:basetimeipA:offset1.ipB:offset2.basetime和ipA之间没有任何符号,basetime是一个长度固定的时间串(长度为10),ipA,ipB为具体的ip值,offset是对于ip值最近一次出现距离basetime的天数。
需要说明的是,表3中的Long.MaxValue是一个较大的预设时间值,例如,可将Long.MaxValue设置为50年,通过将Long.MaxValue设置为较大的时间值,可以使得非数值型的累积数据保存较长的时间。通常在保存累积数据时预设数据库有一个对应的时间值,系统本身有一个系统时间,当系统时间减去保存累积数据对应的时间值大于Long.MaxValue-1时,对应的累积数据将被删除。
以c_开头命名列名的非数值型的明细数据、日账数据的存储结构如表3所示。
表4非数值型的明细数据、日账数据的存储结构
其中,表4中的xxxx为这条数据的Rowkey值,c_ip表示非数值型的明细数据的列名,在列名c_ip后面加上“$”后缀为该非数值型的明细数据对应的日账数据的列名。s_ip列名下的value:“65,67,89,124,33”timestamp:1383548329867表示保存的明细数据,value的类型是string(字符串)类型对于非数值型数据汇总方式,对时间进行了压缩,压缩的格式为basetimeipA:offset1-count1:offset2-count2:offset3-count3,ipBoffset1-count1:offset2-count2,basetime是一个长度固定的时间串(比如长度为10),ipA,ipB为具体的ip值,offset是对于ip值最近一次出现距离basetime的天数,count是offset这天出现该ip的次数。表4中的c_ip列名下的value:1383548329867.89.9.90.91:5-2:45-3,145.23.67.43:10-1:20-8:30-5timestamp:LongMaxValue-1basetime(基本时间)为1383548329867,ipA为89.9.90.91,以基本时间为基准,在偏离基本时间为5天时,在该天ipA出现了2次,在偏离基本时间为45天时,在该天ipA出现了3次,ipB在偏离基本时间为10天时,在该天ipB出现了1次,在偏离基本时间为20天时,在该天ipA出现了8次,在偏离基本时间为30天时,在该天ipA出现了5次。
S103,监控明细数据的保存时间,并删除保存时间达到预设周期的明细数据。
具体地,监控保存在预设数据库例如Hbase数据库中的事件的明细数据的保存时间,若监控到明细数据的保存时间达到预设时间周期例如7天,可删除Hbase数据库中事件的明细数据,该实施例将达到预设时间周期的明细数据删除,可大大减少明细数据的存储空间,相对于现有的存储明细数据的方式,可实现对明细数据3倍以上的压缩,大大提高了数据存储量。其中,预设时间周期可以为7天,还可以为其他时间值。
本申请实施例的数据的处理方法,从预设数据库中读取事件的明细数据,并以预设时间段为单位对保存的明细数据进行累积,获得对应的累积数据,并将获得的累积数据保存在预设数据库中,以及监控明细数据的保存时间,并删除保存时间达到预设周期的明细数据。由此,可大大减少存储明细数据的存储空间,大大降低存储成本。
图2是本申请另一个实施例的数据的处理方法的流程图。
如图2所示,该数据的处理方法包括:
S201,从预设数据库中读取事件的明细数据,并以预设时间段为单位对保存的明细数据进行累积,获得对应的累积数据,其中,累积数据所占用的存储空间小于累积数据对应的明细数据所占用的存储空间。
需要说明的是,步骤S201与步骤S101相同,对步骤S101的解释说明也适用于步骤S201,此处不赘述。
S202,将获得的累积数据保存在预设数据库中。
需要说明的是,步骤S202与步骤S102相同,对步骤S102的解释说明也适用于步骤S202,此处不赘述。
S203,从预设数据库中查询累积数据,获得查询结果。
在该实施例中,可以获得聚合函数,对聚合函数进行参数转换;以及向数据库发送包含参数转换后的聚合函数和查询条件的查询请求,并接收根据查询请求获得的查询结果。
例如,查询请求为查询一天时间内账户为A的用户在一天内总的交易金额,具体地,获得查询请求,并根据该查询请求获得与其对应的聚合函数例如累积函数,解析聚合函数,并将函数、时间窗口进行转换,转换为对Hbase数据库的行键(rowkey)、列(column)的查询,以获得对应的查询结果。具体而言,可根据聚合函数例如累积函数的数值型或者非数值型、累积的函数名查询不同的列,并将时间窗口值和当前时间值,转换为查询Hbase数据库的时间值,以获得对应的查询结果。
需要说明的,步骤S203还可以在步骤S103之后执行。
S204,基于查询结果进行统计,并根据统计结果执行对应的控制操作。
具体地,可以对查询结果进行解析,对解析出的日帐数据进行解压缩,并基于查询条件对解压缩后的日帐数据进行统计。
例如,查询请求为查询一天时间内账户为A的用户在一天内总的交易金额,在根据聚合函数例如累积函数获得各列的查询结果后,可以依此解析各列查询结果,具体地,根据查询结果是数值型或非数值型,是否需要累积数据对各列的查询结果进行解析,由于数值型查询结果存储结构与非数值型数值存储结构不相同,因此需要分别解析,具体而言,若查询结果为数值型数据,则计算各个函数和时间窗口下的明细数据,并判断是否需要累积数据,若需要,则累加各个时间窗口、指标下的累积数据,并组装各个函数、时间窗口对应的值,然后判断所有查询结果是否解析完毕,若解析完,则封装整个结果并返回。
若查询结果为非数值型的数据,则检查该列是否需要涉及累积数据,若需要累积数据,则解压累积数据,并计算各个时间窗口、指标下的值,然后判断解析结果是否解析完毕,若解析完毕,则封装整个结果并返回。
在该实施例中,在接收到查询请求后,查询请求查询对应的累积数据,在累积数据的基础上,解析部分累积结果,然后根据查询请求做相应的计算即可获得查询结果,无需对明细数据进行统计分析,由此,可提高查询和分析数据的效率,方便用户迅速获得查询结果。
另外,在该实施例中,在获得统计结果后,若发现统计结果存在异常,还可以提示用户支付存在危险,或者,智能取消交易等。
本申请实施例的数据的处理方法,基于保存在预设数据中的累积数据进行查询或者分析,无需累积明细数据,由此,可大大提高计算或者查询数据的效率,方便快速获得计算结果或者查询结果。
为了实现上述实施例,本申请还提出一种数据的处理装置。
图3是本申请一个实施例的数据的处理装置的结构示意图,如图3所示,该装置包括累积模块100、保存模块200和第一处理模块300,其中:
累积模块100用于从预设数据库中读取事件的明细数据的保存时间,并以预设时间段为单位对保存的明细数据进行累积,获得对应的累积数据,其中,累积数据所占用的存储空间小于累积数据对应的明细数据所占用的存储空间;保存模块200用于将获得的累积数据保存在预设数据库中;以及第一处理模块300用于监控明细数据的保存时间,并删除保存时间达到预设周期的明细数据。
其中,预设数据库是系统中预先设置的保存事件的明细数据的数据库,预设数据库可以是Hbase(HadoopDatabase)数据库,还可以为其他数据库,Hbase数据库是一个高可靠性、高性能、面向列、可伸缩的分布式存储数据库。
上述累积理模块100具体用于:以预设时间段为单位,基于预设规则对保存的明细数据进行累积,获得累积数据。其中,上述预设属性信息包括事件中包含的属性信息。例如,预设属性信息可以是事件的明细数据的类型,不同类型的明细数据的累积方式不同,所获得的累积数据不同。
具体地,为了减少服务器的压力,累积模块100可以当达到预设条件时,从预设数据库中读取事件的明细数据,例如,累积模块100可在每秒查询率低于预设阈值例如20%时,从Hbase数据库读取事件的明细数据,在读取事件的明细数据后,可以预设时间段例如一天为单位,基于事件的明细数据的类型进行累积,以获得一天的累积数据,可将一天的累积数据称为日账数据,以方便后续基于累积数据进行查询和分析数据。
另外,如图4所示,上述装置还包括第二处理模块400,第二处理模块400用于在保存模块200将获得的累积数据保存在预设数据库中之后,从预设数据库中查询累积数据,获得查询结果;以及基于查询结果进行统计,并根据统计结果执行对应的控制操作。
上述第二处理模块400具体用于:获得聚合函数,对聚合函数进行参数转换;以及向预设数据库发送包含参数转换后的聚合函数和查询条件的查询请求,并接收根据查询请求获得的查询结果。
上述第二处理模块400还用于:对查询结果进行解析,对解析出的累积数据进行解压缩,并基于查询条件对解压缩后的累积数据进行统计。
上述第二处理模块400基于累积数据进行计算或者查询,无需累积明细数据,由此,可大大提高计算或者查询数据的效率,方便快速获得计算结果或者查询结果。
包含累积模块100、保存模块200、第一处理模块300和第二处理模块400的数据的处理装置处理数据的过程可参见图1或者图2,此处不赘述。
本申请实施例的数据的处理装置,通过累积模块从预设数据库中读取事件的明细数据的保存时间,并以预设时间段为单位对保存的明细数据进行累积,获得对应的累积数据,其中,累积数据所占用的存储空间小于累积数据对应的明细数据所占用的存储空间,并通过保存模块将获得的累积数据保存在预设数据库中,以及通过第一处理模块监控明细数据的保存时间,并删除保存时间达到预设周期的明细数据,由此,可大大减少存储明细数据的存储空间,大大降低存储成本。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。