数据的处理方法、装置及服务器
技术领域
本公开涉及数据处理
技术领域
,尤其涉及一种数据的处理方法、装置及服务器。背景技术
在数据处理领域中,可以将数据分为离线数据和实时数据,在进行数据查询时,通常是根据各批离线数据的存储时刻,在存储的数据中筛选出待查询的数据对应的离线数据和实时数据,再进行合并处理后返回查询结果。
相关技术中,为了获取离线数据,通常是将周期性产生的离线数据全量同步到线上存储,每次同步时创建一个包含全量离线数据的数据表,导致线上存储了多个版本的数据表,占用了较多的存储资源,且在进行数据同步时耗费了较多的计算资源和等待时间。
发明内容
本公开提供一种数据的处理方法、装置及服务器、存储介质及计算机程序产品,以至少解决相关技术中,在数据查询服务中,存储了多个版本的数据表,占用了较多的存储资源,且在进行数据同步时耗费了较多的计算资源和等待时间的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据查询方法,包括:
获取数据查询请求,查询请求中包括数据标识;
获取离线数据库当前对应的生成时刻;
根据离线数据库当前对应的生成时刻,确定待检索的在线数据的目标时间段;
从离线数据库及目标时间段内的在线数据中,检索并获取与数据标识对应的目标数据。
在本公开实施例一种可能的实现方式中,获取离线数据库当前对应的生成时刻,包括:查询所述离线数据库对应的更新时刻列表,以根据所述更新时刻列表中的最新更新时刻确定所述当前对应的生成时刻。
在本公开实施例一种可能的实现方式中,所述数据的处理方法,还包括:在所述离线数据库当前对应的生成时刻与当前时刻间的时间间隔大于阈值的情况下,获取从所述当前对应的生成时刻起至当前时刻止的待存储数据;确定待存储数据与所述离线数据库中已存储数据间间的差异数据;将所述差异数据存入所述离线数据库,并将所述当前时刻加入所述更新时刻列表中。
在本公开实施例一种可能的实现方式中,在所述获取从所述当前对应的生成时刻起至当前时刻止的待存储数据之后,还包括:在所述离线数据库中未存储数据的情况下,将所述待存储数据存入所述离线数据库,并将所述当前时刻加入所述更新时刻列表中。
在本公开实施例一种可能的实现方式中,查询请求中还包括目标业务标识,在所述检索并获取与所述数据标识对应的目标数据之后,还包括:根据所述目标业务标识,确定所述目标数据对应的目标处理方式;根据所述目标处理方式,将所述目标数据进行处理。
在本公开实施例一种可能的实现方式中,所述根据所述目标业务标识,确定所述目标数据对应的处理方式,包括:根据预设的业务标识与处理方式的映射关系,确定与所述目标业务标识对应的目标处理方式;或者,根据所述目标业务标识,确定所述目标数据的类型,并根据所述目标数据的类型,确定所述目标处理方式。
在本公开实施例一种可能的实现方式中,所述根据所述离线数据库当前对应的生成时刻,确定待检索的在线数据的目标时间段,包括:将所述离线数据库当前对应的生成时刻与当前时刻之间的时间段,确定为所述目标时间段;或者,将所述离线数据库当前对应的生成时刻之后的预设长度的时间段,确定为所述目标时间段。
根据本公开实施例的第二方面,提供一种数据的处理装置,包括:
第一获取模块,被配置为获取数据查询请求,所述查询请求中包括数据标识;
第二获取模块,被配置为获取离线数据库当前对应的生成时刻;
第一确定模块,被配置为根据所述离线数据当前对应的生成时刻,确定待检索的在线数据的目标时间段;
第三获取模块,被配置为从所述离线数据库及所述目标时间段内的在线数据中,检索并获取与所述数据标识对应的目标数据。
在本公开实施例一种可能的实现方式中,所述第二获取模块,还被配置为:查询所述离线数据库对应的更新时刻列表,以根据所述更新时刻列表中的最新更新时刻确定所述当前对应的生成时刻。
在本公开实施例一种可能的实现方式中,所述数据的处理装置,还包括:第四获取模块,被配置为在所述离线数据库当前对应的生成时刻与当前时刻间的时间间隔大于阈值的情况下,获取从所述当前对应的生成时刻起至当前时刻止的待存储数据;第二确定模块,被配置为确定所述待存储数据与所述离线数据库中已存储数据间的差异数据;第一存储模块,被配置为将所述差异数据存入所述离线数据库,并将所述当前时刻加入所述更新时刻列表中。
在本公开实施例一种可能的实现方式中,第一存储模块,还被配置为:在所述离线数据库中未存储数据的情况下,将所述待存储数据存入所述离线数据库,并将所述当前时刻加入所述更新时刻列表中。
在本公开实施例一种可能的实现方式中,查询请求中还包括业务标识,所述装置,还包括:第三确定模块,被配置为根据所述目标业务标识,确定所述目标数据对应的目标处理方式;处理模块,被配置为根据所述目标处理方式,将所述目标数据进行处理。
在本公开实施例一种可能的实现方式中,数据的处理装置,还包括:第四确定模块,被配置为根据预设的业务标识与处理方式的映射关系,确定与所述目标业务标识对应的目标处理方式,或者根据所述目标业务标识,确定所述目标数据的类型,并根据所述目标数据的类型,确定所述目标处理方式。
在本公开实施例一种可能的实现方式中,所述第一确定模块,还包括:第一确定单元,被配置为将所述离线数据库当前对应的生成时刻与当前时刻之间的时间段,确定为所述目标时间段,或者将所述离线数据库当前对应的生成时刻之后的预设长度的时间段,确定为所述目标时间段。
根据本公开实施例的第三方面,提供一种服务器,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如前所述的数据的处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如前所述的数据的处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,该计算机程序由服务器的处理器执行时,使得服务器能够执行如前所述的数据的处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:存在数据查询请求时,可以根据预先确定的离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,再根据最新更新离线数据的时刻确定待检索的在线数据的目标时间段,进而从离线数据库及目标时间段内的在线数据中,检索并获取与数据标识对应的目标数据。由此,根据离线数据库当前对应的生成时刻,可以确定离线数据库中最新更新离线数据的时刻,进而可以根据最新更新离线数据的时刻查询当前已同步的离线数据和该时刻后相应时间段内的实时数据,通过设置离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,便于将更新时发生变化的离线数据同步至离线数据库,可以在一份全量离线数据表中查询离线数据,从而离线数据库中仅需存储一份全量离线数据表即可实现数据查询任务,节省了存储空间,并且,降低了离线数据同步所需的计算资源和时间。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据的处理方法的流程图。
图2是根据一示例性实施例示出的一种具体的数据的处理方法的流程图。
图3是根据一示例性实施例示出的另一种具体的数据的处理方法的流程图。
图4是根据一示例性实施例示出的又一种具体的数据的处理方法的流程图。
图5是根据一示例性实施例示出的一种数据的处理装置框图。
图6是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种数据的处理方法的流程图,如图1所示,该数据的处理方法用于服务器中,包括以下步骤。
在步骤S101中,获取数据查询请求,查询请求中包括数据标识。
需要说明的是,本公开的数据的处理方法的执行主体为服务器。本公开一实施例的数据的处理方法可以由本公开实施例的数据的处理装置执行,本公开实施例的数据的处理装置可以配置在本公开实施例的服务器中,以执行本公开实施例的数据的处理方法。
还需说明的是,本公开实施例的服务器可以是任意的为用户提供数据查询功能的服务器,在数据查询场景下,为提高查询出的数据的准确性和实效性,在本公开实施例中,通过离线数据完成数据的初始化,并通过在线数据(即实时数据)保证数据的时效性,即本公开实施例的数据的处理方法检索待查询的数据的离线数据和在线数据,为此,本公开实施例的服务器预先存储了生产完成的离线数据和在线数据,以便后续提供数据查询服务,其中,本公开实施例将周期性产生的离线数据存储在一份全量离线数据表中,服务器的离线数据库通过一个版本的数据表存储各周期产生的全量离线数据,且该全量离线数据表中不存在重复的离线数据。与相关技术中需存储多个版本的数据表相比,本公开实施例的离线数据占用的存储资源少,且不存储重复的数据,减少了资源耗费。
其中,数据查询请求,是客户端向服务器发送的查询数据的具体信息的请求,数据查询请求中包括数据标识,该数据标识是待查询数据的身份信息,比如,待查询数据的名称等。
在本公开的一个实施例中,通过服务器提供的服务端接口,使客户端可以与服务器建立连接,客户端再发送数据查询请求至服务器,并获取服务器返回的该查询请求对应的数据查询结果,其中,客户端将待查询数据的数据标识设置在数据查询请求中,以便服务器接收到数据查询请求后,提取出查询请求中包含的数据标识,以该数据标识为查询条件,在存储的数据中检索该数据标识对应的数据。
在步骤S102中,获取离线数据库当前对应的生成时刻。
其中,对于周期性产生的的离线数据,每产生一个周期的离线数据,需要把该周期对应的各离线数据存储至离线数据库中,而离线数据库对应的生成时刻,是把一个周期生成的离线数据同步存储至离线数据库时,离线数据库记录的存储完当前周期内的最后一个离线数据的时刻,比如,当前周期内产生了10条数据,离线数据库记录存储完第10条数据的时刻为当前对应的生成时刻。并且每同步完成一个周期的离线数据后,离线数据库对应的生成时刻对应进行更新,因此,通过离线数据库当前对应的生成时刻可以确定离线数据库中最新的离线数据的生成时刻。
举例而言,将第T-1周期生成的离线数据存储至离线数据库后,离线数据库对应的生成时刻为存储完T-1周期生成的最后一个离线数据的时刻,然后离线数据生产作业继续运行,在将下一周期即第T周期生成的离线数据存储至离线数据库后,离线数据库当前对应的生成时刻更新为存储完第T周期生成的最后一个离线数据的时刻。由此,根据离线数据库当前对应的生成时刻,服务器可以确定离线数据库中最新的离线数据的生成时刻,且离线数据库中存储了截止到周期T的全量离线数据。
由此,本公开实施例的数据查询方法,通过设置离线数据库当前对应的生成时刻,在离线数据库中可以存储一份全量离线数据表,在存储离线数据时,离线数据库记录对应的生成时刻,而在进行数据查询时,可以根据离线数据库当前对应的生成时刻确定离线数据库中最新的离线数据的生成时刻,而需要获取的在线数据即为该时刻后的实时数据,从而便于后续获取最新的全量离线数据以及时效性更强的在线数据,以满足数据查询的需要,并且节省了离线数据库的存储空间。
可选地,在本公开的一个实施例中,离线数据库当前对应的生成时刻可以通过查询离线数据库对应的更新时刻列表获得,离线数据库对应的更新时刻列表记录每个离线数据库对应的生成时刻,当离线数据库当前对应的生成时刻发生变化时,更新时刻列表对应更新当前的生成时刻,从而可以以更新时刻列表中的最新更新时刻为当前对应的生成时刻。具体实施时,更新时刻列表可以根据离线数据库的元数据进行设置,其中,元数据是描述离线数据的属性的数据,通过元数据可以表示离线数据的存储时间,当离线数据库存储完离线数据后,将当前存储完离线数据对应的时刻同步给元数据,通过修改指令修改元数据中表示数据改动时间的信息来存储当前存储完离线数据对应的时刻,以通过读取元数据表示的最新的时间信息设置更新列表中的更新时刻。举例而言,将当前存储完离线数据对应的时刻“2021年5月10日12点10分10秒”同步给元数据后,通过touch指令修改离线数据库“A”的数据改动时间“modify time”为当前接收到的时刻,即通过指令“#touch-modifytime-t202105101210.10/A”修改元数据表示的离线数据“A”的存储时间为当前接收的对应时刻“202105101210.10”。
在步骤S103中,根据离线数据库当前对应的生成时刻,确定待检索的在线数据的目标时间段。
其中,目标时间段是指时效性相同或相似的在线数据所处的时间范围,一个目标时间段内可以包括一个或多个在线数据,目标时间段可以根据数据查询的精确度要求等实际因素进行确定。
作为第一种可能的实现方式,将离线数据库当前对应的生成时刻与当前时刻之间的时间段,确定为目标时间段。在本示例中,将离线数据库当前对应的生成时刻起,至当前时刻止之间的时间段,确定为在线数据的目标时间段,在该目标时间段内包含离线数据库当前对应的生成时刻后产生的在线数据,在该目标时间段内检索在线数据,检索方式简单便捷,节省了计算资源。
作为第二种可能的实现方式,将离线数据库当前对应的生成时刻之后的预设长度的时间段,确定为目标时间段。在本示例中,预设长度的时间段是预先存储在线数据时,对在线数据进行聚合的时间窗口。需要说明的是,根据数据处理领域中在线数据的特性,由于一条在线数据本身不能直接存储后对外提供查询服务,因此需要将当前时刻下产生的在线数据和一个预设长度的时间段内的历史在线数据按照相应的规则进行合并,即将预设长度的时间段内的在线数据进行聚合后再存储,该预设长度的时间段即为聚合的时间窗口。比如,将第一分钟内产生的30条在线数据进行求和后,存储在第一分钟对应的tw1窗口中。
需要说明的是,在存储在线数据时,为了减少存储的数据量,在本公开的实施例中,预先将在线数据以预设的时间窗口进行聚合后,再存储在在线数据库中,即将同一时间窗口的在线数据聚合存储在该时间窗口所处时间段对应的数据集中,在线数据库的在线数据表依次存储了各个时间窗口对应的数据集。举例而言,将第一分钟、第二分钟和第三分钟内产生的在线数据分别聚合在第一分钟、第二分钟和第三分钟对应的tw1、tw2和tw3窗口内,则在线数据库的在线数据表按时间顺序依次存储了tw1、tw2和tw3时间窗口对应的数据集。
其中,在线数据的时间窗口可以按分钟、小时或天数等单位进行划分,比如,将一个小时内的生成的在线数据聚合在该小时对应的在线数据库的数据集中,具体的时间窗口的长度可以根据实际需要进行设置,此处不做限制。在本公开的实施例中,确定离线数据库当前对应的生成时刻后,再获取在线数据表记录的在离线数据库当前对应的生成时刻之后的每个时间窗口,可以理解的是,离线数据是离线数据库当前对应的生成时刻之前的数据,而待检索的在线数据的时间段在离线数据的生成时刻之后,因此,可以将离线数据的生成时刻之后的在线数据的每个时间窗口,确定为待检索的在线数据的目标时间段,便于后续在在线数据的各个目标时间段内,检索出待查询的数据对应的在线数据。
在步骤S104中,从离线数据库及目标时间段内的在线数据中,检索并获取与数据标识对应的目标数据。
在本公开的实施例中,根据待查询的数据的数据标识,在离线数据库中检索与数据标识对应的离线数据,并在在线数据库的目标时间段内检索与数据标识对应的在线数据,从而检索出与数据标识对应的离线数据和在线数据,并将检索出的与数据标识对应的离线数据和在线数据作为待查询的数据的目标数据,离线数据是截止到离线数据库当前对应的生成时刻之前的历史数据,在线数据是离线数据库当前对应的生成时刻之后的时效性更强的数据,检索出的离线数据和在线数据完整的包括了不同时刻下的目标数据,便于后续根据目标数据返回更为准确的查询结果。
可选地,在本公开的一个实施例中,在检索与数据标识对应的在线数据时,可以以数据标识结合每个目标时间段的方式检索在线数据,即在每个目标时间段内检索该时间段内是否存在与数据标识对应的在线数据,并单独记录每个目标时间段的检索结果,最后综合每个目标时间段的检索结果获取最终的目标在线数据,从而,避免了不同的目标时间段对检索数据产生的影响,提高了获取目标数据的准确性。
本公开的实施例提供的数据的处理方法,存在数据查询请求时,可以根据预先确定的离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,再根据最新更新离线数据的时刻确定待检索的在线数据的目标时间段,进而从离线数据库及目标时间段内的在线数据中,检索并获取与数据标识对应的目标数据。由此,根据离线数据库当前对应的生成时刻,可以确定离线数据库中最新更新离线数据的时刻,进而可以根据最新更新离线数据的时刻查询当前已同步的离线数据和该时刻后相应时间段内的实时数据,通过离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,便于将更新时发生变化的离线数据同步至离线数据库,可以在一份全量离线数据表中查询离线数据,从而离线数据库中仅需存储一份全量离线数据表即可实现数据查询任务,节省了存储空间,并且,降低了离线数据同步所需的计算资源和时间。
基于上述实施例,在本公开一种可能的实现形式中,在存储离线数据时,可以存储不同周期的离线数据发生变换的部分,以进一步降低离线数据的存储空间和同步存储离线数据的复杂程度,为了更加清楚的说明该方式的实现过程,本公开的实施例还提出了一种具体的数据的处理方法。
图2是根据一示例性实施例示出的一种具体的数据的处理方法的流程图。如图2所示,该数据的处理方法包括以下步骤:
在步骤S201中,在离线数据库当前对应的生成时刻与当前时刻间的时间间隔大于阈值的情况下,获取从当前对应的生成时刻起至当前时刻止的待存储数据。
其中,阈值可以根据离线数据的生产周期进行设置,并使阈值大于或等于离线数据的生产周期,比如,若离线数据的生产周期为1小时,则阈值设置为1.1小时。从而,在判断出离线数据库当前对应的生成时刻与当前时刻间的时间间隔大于阈值时,表示当前到了离线数据库的一个更新周期,需要通过该更新周期内新产生的离线数据对离线数据库进行更细,即需要将新产生的离线数据存储至离线数据库中。
在本公开实施例中,获取从离线数据库当前对应的生成时刻起至当前时刻止的产生的全部离线数据,作为待存储数据。需要说明的是,由于离线数据生产过程中,每个周期均生成全量离线数据,因此,本公开实施例中获取的待存储数据是离线数据库当前对应的生成时刻至当前时刻内生产的全量离线数据。
在步骤S202中,确定待存储数据与离线数据库中已存储数据间的差异数据。
其中,离线数据库中已存储数据是离线数据库当前对应的生成时刻存储的上一周期生产的离线数据,需要说明的是,对于周期性生成的全量离线数据,通常两个连续周期生成的全量离线数据,可能只有部分数据产生了变化,其他数据保持一致,在本公开中将发生了变化的数据为差异数据。
在本公开实施例中,将待存储数据与离线数据库中已存储数据进行比较,获取待存储数据相对于离线数据库中已存储数据产生了变化的数据,并将该产生了变化的数据作为待存储数据与离线数据库中已存储数据间的差异数据。
举例而言,若离线数据库中已存储了数据标识分别为1至10的十条数据的存储位置和数值大小,而待存储数据同样包括该十条数据的存储位置和数值大小,但数据标识为9和10的数据的数值大小发生了改变,其他数据并未发生变化,则服务器将待存储数据与所述离线数据库中已存储数据进行比较后,确定数据标号为9和10的数据的数值大小发生了改变,进而确定待存储数据与离线数据库中已存储数据的差异数据为数据标号为9和10的数值数据。
在步骤S203中,将差异数据存入离线数据库,并将当前时刻加入更新时刻列表中。
在本公开的实施例中,将待存储数据与离线数据库中已存储数据间的差异数据存入离线数据库的离线数据表中,可以理解的是,将差异数据存入离线数据库的离线数据表后,该离线数据库的离线数据表包含了未存储差异数据之前的历史数据和当前周期新变化的数据,因此,该离线数据库的离线数据表包括了截止到当前时刻各个周期生成的全量离线数据。并且,由于本公开将发生了变化的差异数据存入离线数据库,继续以上一示例而言,本申请存储了数据标号为9和10的两条数据,相比于将当前周期产生的离线数据全量存入离线数据库,降低了同步数据的规模,大大节省了存储资源和存储空间。
进一步的,由于在当前时刻向离线数据库中同步了最新更新周期内产生的差异数据,服务器确定离线数据库当前对应的生成时刻变为当前时刻。
在本公开的一个实施例中,还可以通过上述实施例中的方法将离线数据库当前对应的生成时刻更新当前时刻,便于后续在执行数据查询服务时,根据离线数据库当前对应的生成时刻,确定待检索的离线数据和在线数据。
需要说明的是,在实际应用中,当前时刻可能为存储离线数据的初始时刻,即当前的离线数据库中并未存储历史离线数据。因此,在本公开的一个实施例中,在确定当前时刻为初始时刻的情况下,将当前时刻对应的待存储数据作为差异数据存入离线数据库,并确定离线数据库中离线数据的生成时刻为当前时刻。由此,增加了本公开实施例的数据查询方法可适用的场景,提高了本公开实施例的数据查询方法的实用性和适用性。
本公开实施例的数据查询方法,在离线数据库当前对应的生成时刻与当前时刻间的时间间隔大于阈值的情况下,获取从当前对应的生成时刻起至当前时刻止的待存储数据,并确定待存储数据与离线数据库中已存储数据间的差异数据,进而将差异数据存入离线数据库,并确定离线数据库当前对应的生成时刻为当前时刻。由此,该方法在每次同步离线数据时只需要将发生变化的数据存储至离线数据库,避免了存储重复的数据,进一步节省了存储空间,并且,由于每次同步离线数据时不再需要存储全量离线数据,降低了每次同步存储数据的规模,减少了进行离线数据同步所耗费的计算资源和等待时间,避免对离线数据库的存储性能产生影响。
基于上述实施例,为了更加清楚的描述将在线数据按照时间段存储至在线数据库的具体过程,本公开的实施例还提出了另一种具体的数据的处理方法。
图3是根据一示例性实施例示出的另一种具体的数据的处理方法的流程图。如图3所示,该数据查询方法包括以下步骤:
在步骤S301中,获取当前时间段的各个在线数据,其中,每个在线数据中包括该数据对应的数据标识。
需要说明的是,本公开实施例的数据查询方法,在线数据产生后,实时读取在线数据,其中,读取的每个在线数据中包括该数据对应的数据标识。
其中,在线数据对应的数据标识用于区分不同的在线数据,数据标识可以包括该数据的名称和生成时间等,在本公开的一个实施例中,服务器可以在读取在线数据时,读取生成该在线数据的记录,以获取记录中包含的每个在线数据对应的数据标识。
在步骤S302中,将当前时间段的各个在线数据,按照对应的数据标识,存入当前时间段对应的数据集中。
在本公开的实施例中,根据时间段,预先将在线数据库中存储在线数据的在线数据表划分为不同的数据集,每个时间段对应一个数据集,比如,当时间段按照小时划分时,第一小时对应在线数据表中的第一数据集,第二小时对应在线数据表中的第二数据集,依次类推。
需要说明的是,如上所述,由于一条在线数据本身不能直接存储后对外提供查询服务,因此需要将当前时刻下产生的在线数据和一个预设长度的时间段内的历史在线数据按照相应的规则进行合并,该预设长度的时间段即为上述聚合的时间窗口。具体实施时,在存储当前时间段的在线数据时,按照在线数据的数据标识依次将各个在线数据存储在当前时间段对应的数据集中,其中,如步骤S301所述,由于数据标识中包括各在线数据的生成时间,在存储数据前,先获取数据标识中的生成时间,比较在线数据的生成时间,区分不同在线数据的生成时刻并确定存储次序,比如,若根据数据标识中的生成时间确定第一数据早于第二数据生成,则先将第一数据存储在当前时间段对应的数据集中,再将第二数据存储在当前时间段对应的数据集中,在存储在线数据时同时存储在线数据的数据标识,便于后续根据数据标识在数据集中检索数据。
可选地,在本公开的一个实施例中,在存储一条在线数据时,可以将数据集中已存储的数据作为历史数据,并通过预设的合并规则将当前待存储的该条数据和数据集中已存储的历史数据进行合并处理,比如,第一分钟对应的数据集中已存储了第一分钟内的第一时刻对应的数据,则将该条数据作为历史数据,将当前待存储的第一分钟内的第二时刻对应的在线数据与历史数据进行合并,其中合并规则可以根据数据查询服务的实际需要设置为不同的两元处理规则,比如,两元处理规则是将当前待存储的在线数据和历史数据进行求和处理、追加处理、覆盖处理,以及计算最大值和最小值等,然后,将合并处理后的数据作为结果数据存储在当前时间段对应的数据集中。进一步的,该结果数据存储后成为新的历史数据,若存在下一条在线数据,则可按照上述方法继续进行合并,直至将当前时间段内的在线数据全部存储至对应的数据集中。由此,通过合并处理保证了在线数据在当前时间段内的一致性。
可选地,在本公开的一个实施例中,在对当前的在线数据和历史数据进行合并处理过程中,还可以将生成的结果数据在合并作业内部进行归档,即将结果数据转移至为合并作业单独设置的存储设备中进行保存,从而,在合并作业出现故障时,可以确保已生成的数据不会丢失,提高了数据查询的可靠性。
本公开的数据查询方法,先获取当前时间段的在线数据,其中,在线数据中包括各个数据对应的数据标识,再将当前时间段的在线数据中的各个数据,按照对应的数据标识,存入当前时间段对应的数据集中。通过将不同时间段内的各个在线数据存储到该时间段对应的数据集中,在后续进行数据查询时,便于获取该时间段内的全部数据以进行检索,提高了检索目标在线数据的效率和检索的全面性,有利于缩短数据查询的等待时间并提高查询的准确性。并且,通过对当前时间段的在线数据进行合并存储,保证了数据的一致性,并降低可存储的数据量。
基于上述实施例,在本公开一种可能的实现形式中,在获取与数据标识对应的目标数据后,还可以根据具体的数据查询服务对获取的目标数据进行处理,以便返回与本次数据查询业务相适应的查询结果,提高数据查询服务的针对性和用户的满意度。
图4是根据一示例性实施例示出的又一种具体的数据的处理方法的流程图。如图4所示,该数据的处理方法包括以下步骤:
在步骤S401中,根据目标业务标识,确定目标数据对应的目标处理方式。
其中,目标业务标识是用于指示本次数据查询的具体业务内容的标识,比如,当用户需要查询数据在某一时段内的最大值时,业务标识可以为待查询的数据的数据标识、特定时段和最大值的组合。
在本公开实施例中,目标业务标识可以由用户进行设置,并将目标业务标识包括在查询请求中发送给服务器,也可以由服务器在接收到用户发送的请求后,根据请求内容识别出本次查询请求对应的目标业务标识,目标业务标识的具体获取方式可以根据实际需要进行设置,此处不做限制。在本公开的实施例中,服务器获取数据查询请求后,先获取数据查询请求中的数据标识和目标业务标识,在通过上述实施例中的步骤获取与数据标识对应的目标数据后,再根据目标业务标识确定目标数据对应的处理方式。
其中,目标数据对应的处理方式可以包括将检索出的离线数据和在线数据以不同的规则进行合并的方式,比如,将离线数据和在线数据进行求和、计算最大值和计算最小值等。
在本公开的实施例中,可以通过服务器的管理系统确定目标数据对应的处理方式。在获取目标业务标识后,将目标业务标识发送给服务器的管理系统,服务器的管理系统根据目标业务标识,确定本次数据查询的具体业务内容,再综合分析可实现该业务的途径,设置具体的目标数据的目标处理方式,比如,在目标业务标识为上述示例中的待查询的数据的数据标识、特定时段和最大值的组合时,管理系统确定目标数据对应的目标处理方式为计算在线数据和离线数据的最大值等。
具体实施时,服务器的管理系统可以通过不同的方式确定目标数据对应的处理方式,作为一种可能的实现方式,服务器的管理系统可以通过对历史数据进行机器学习的方式,预先生成业务标识与处理方式的映射关系,再根据获取的目标业务标识,查询预设的业务标识与处理方式的映射关系,确定与目标业务标识对应的目标处理方式。
上述通过对历史数据进行机器学习的过程为:
通过获取服务器中的记录数据等方式收集大量的训练数据,其中,训练数据是不同的数据查询请求对应的处理方式的历史数据,不同的数据查询请求包含不同的业务标识;
在收集到数据后,还可以对收集到的数据进行去重复、标准化、错误修正等操作,以提高获取的训练数据的精确性;
对获取的训练数据进行分析,通过可视化等方式分析业务标识与处理方式的相关性,确定相关系数;
对数据进行特征选择和向量化处理,以提取特征结果并通过向量化增强特征的表示能力,防止模型过于复杂;
根据实际需求选择合适的算法,比如,根据实际的训练结果的准确性要求,从线性回归、决策树和随机森林等算法中选择一个目标算法进行模型训练,训练出的模型即反映了业务标识与处理方式的映射关系,在后续获取到目标业务标识后,将目标业务标识输入至该模型,即可输出与该目标业务标识对应的目标处理方式。
作为另一种可能的实现方式,服务器的管理系统可以根据目标业务标识,确定目标数据的类型,并根据目标数据的类型,确定目标处理方式。在本示例中,当确定目标数据的类型后,可以根据该特定类型的目标数据通常的处理方式,确定目标处理方式。比如,当目标业务标识为“获取用户的行走里程”,确定目标数据的类型是用户各时间段行走的路程量,而获取用户总的行走里程需要计算各个时间段行走的路程量的和,因此,确定目标处理方式是将离线数据和在线数据进行求和计算。
在步骤S402中,根据处理方式,将目标数据进行处理。
在本公开的实施例中,根据确定出的目标数据对应的处理方式,对目标数据进行相应的处理,并将处理后的目标数据返回给客户端,以使客户端获取与本次数据查询业务相适应的查询结果。
本公开的数据查询方法,根据目标业务标识,确定目标数据对应的目标处理方式,再根据确定出的目标处理方式,将目标数据进行相应的处理后返回。通过根据具体的数据查询服业务,对获取的目标数据进行处理,返回与本次数据查询业务相适应的查询结果,提高了数据查询服务的针对性和用户的满意度。
为了更加清楚的说明描述前述实施例中所述的数据的处理方法的实现过程,下面以一个具体实施例进行详细说明。
本公开实施例的执行数据的处理方法的服务器,服务器能够同步生产的离线数据和在线数据。具体的,对于离线数据,在服务器确定离线数据库记录的当前对应的生成时刻与当前时刻间的时间间隔大于阈值的情况下,获取从当前对应的生成时刻起至当前时刻止的待存储的T+1周期内生产的全量离线数据,再将T+1周期内生产的全量离线数据与离线数据路中在t0时刻存储的T周期内生产的离线数据进行比较,确定待存储数据与离线数据库中已存储数据间的差异数据,将差异数据存入离线数据库,并将差异数据同步完成的当前时刻t1加入更新时刻列表中,将离线数据库当前对应的生成时刻由t0更新为t1。其中,若在离线数据库中未存储数据的情况下,将当前的待存储数据存入离线数据库,并将t1加入更新时刻列表中。对于在线数据,将在线数据以预设的时间窗口进行聚合后,再存储在在线数据库中,即将同一时间窗口的在线数据聚合存储在该时间段对应的数据集中,在线数据库的在线数据表依次存储了各个时间窗口对应的数据集,比如,将每分钟内的生成的在线数据聚合在该分钟对应的在线数据库的数据集中,在线数据库的在线数据表中依次存储了tw1、tw2和tw3等各个时间窗口内聚合的在线数据。
当服务器接收到客户端发送的数据查询请求后,获取查询请求中的数据标识“A”和目标业务标识“获取A截止到目前的最大值”,查询离线数据库对应的更新时刻列表,根据更新时刻列表中的最新更新时刻确定离线数据库当前对应的生成时刻为t1,进而根据t1确定t1之后的各个在线数据的目标时间段tw1、tw2、tw3等等。从离线数据库存储的全量离线数据中检索与数据标识“A”对应的离线数据,以及,在在线数据库中,以“A+tw1”、“A+tw2”、“A+tw3”等以数据标识和各时间窗口相结合的方式,依次在各时间窗口中检索在线数据,并将记录的每个时间窗口的检索结果进行拼装,得到目标时间段内的在线数据。
获取完目标数据后,服务器的管理系统根据目标业务标识“获取A截止到目前的最大值”,查询预设的映射关系,确定获取的“A”的目标数据对应的目标处理方式是求最大值,进而,服务器合并获取的“A”的在线数据和离线数据,并计算其中的最大值,再将计算结果返回给客户端。
图5是根据一示例性实施例示出的一种数据的处理装置框图。参照图5,该装置100包括第一获取模块110、第二获取模块120、第一确定模块130及第三获取模块140。
其中,第一获取模块110,被配置为获取数据查询请求,查询请求中包括数据标识。
其中,数据查询请求,是客户端向服务器发送的查询数据的具体信息的请求,数据查询请求中包括数据标识,该数据标识是待查询数据的身份信息,比如,待查询数据的名称等。
在本公开的一个实施例中,通过服务器提供的服务端接口,使客户端可以与服务器建立连接,客户端再发送数据查询请求至服务器,并获取服务器返回的该查询请求对应的数据查询结果,其中,客户端将待查询数据的数据标识设置在数据查询请求中,以便服务器接收到数据查询请求后,提取出查询请求中包含的数据标识,以该数据标识为查询条件,在存储的数据中检索该数据标识对应的数据。
第二获取模块120,被配置为获取离线数据库当前对应的生成时刻。
其中,对于周期性产生的的离线数据,每产生一个周期的离线数据,需要把该周期对应的各离线数据存储至离线数据库中,而离线数据库对应的生成时刻,是把一个周期生成的离线数据同步存储至离线数据库时,离线数据库记录的存储完当前周期内的最后一个离线数据的时刻,比如,当前周期内产生了10条数据,离线数据库记录存储完第10条数据的时刻为当前对应的生成时刻,并且每同步完成一个周期的离线数据后,离线数据库当前对应的生成时刻对应进行更新,因此,通过离线数据库当前对应的生成时刻可以确定离线数据库中最新的离线数据的生成时刻。
由此,本公开实施例的数据查询方法,通过设置离线数据库当前对应的生成时刻,在离线数据库中可以存储一份全量离线数据表,在存储离线数据时,离线数据库记录对应的生成时刻,而在进行数据查询时,可以根据离线数据库当前对应的生成时刻确定离线数据库中最新的离线数据的生成时刻,而需要获取的在线数据即为该时刻后的实时数据,从而便于后续获取最新的全量离线数据以及时效性更强的在线数据,以满足数据查询的需要,并且节省了离线数据库的存储空间。
可选地,在本公开的一个实施例中,离线数据库当前对应的生成时刻可以通过查询离线数据库对应的更新时刻列表获得,离线数据库对应的更新时刻列表记录每个离线数据库对应的生成时刻,当离线数据库当前对应的生成时刻发生变化时,更新时刻列表对应更新当前的生成时刻,从而可以以更新时刻列表中的最新更新时刻为当前对应的生成时刻。具体实施时,更新时刻列表可以根据离线数据库的元数据进行设置其中,元数据是描述离线数据的属性的数据,通过元数据可以表示离线数据的存储时间,当离线数据库存储完离线数据后,将当前存储完离线数据对应的时刻同步给元数据,通过修改指令修改元数据中表示数据改动时间的信息来存储当前存储完离线数据对应的时刻,以便于通过读取元数据表示的最新的时间信息设置更新列表中的更新时刻。
第一确定模块130,被配置为根据离线数据当前对应的生成时刻,确定待检索的在线数据的目标时间段。
其中,目标时间段是指时效性相同或相似的在线数据所处的时间范围,一个目标时间段内可以包括一个或多个在线数据,目标时间段可以根据数据查询的精确度要求等实际因素进行确定。
作为第一种可能的实现方式,第一确定模块130将离线数据库当前对应的生成时刻与当前时刻之间的时间段,确定为目标时间段。在本示例中,第一确定模块130将离线数据库当前对应的生成时刻起,至当前时刻止之间的时间段,确定为在线数据的目标时间段,在该目标时间段内包含离线数据库当前对应的生成时刻后产生的在线数据,在该目标时间段内检索在线数据,检索方式简单便捷,节省了计算资源。
作为第二种可能的实现方式,第一确定模块130将离线数据库当前对应的生成时刻之后的预设长度的时间段,确定为目标时间段。在本示例中,预设长度的时间段是预先存储在线数据时,对在线数据进行聚合的时间窗口。需要说明的是,根据数据处理领域中在线数据的特性,由于一条在线数据本身不能直接存储后对外提供查询服务,因此需要将当前时刻下产生的在线数据和一个预设长度的时间段内的历史在线数据按照相应的规则进行合并,即将预设长度的时间段内的在线数据进行聚合后,再存储,该预设长度的时间段即为聚合的时间窗口。比如,将第一分钟内产生的30条在线数据进行求和后,存储在第一分钟对应的tw1窗口中。
其中,在线数据的时间段可以按分钟、小时或天数等单位进行划分,比如,将一个小时内的生成的在线数据聚合在该小时对应的在线数据库的数据集中,具体的时间段长度可以根据实际需要进行设置,此处不做限制。
在本公开的实施例中,第一确定模块130确定离线数据库当前对应的生成时刻后,再获取在线数据表记录的在线数据在离线数据库当前对应的生成时刻之后的每个时间窗口,可以理解的是,离线数据是离线数据库当前对应的生成时刻之前的数据,而待检索的在线数据的时间段在离线数据的生成时刻之后,因此,可以将离线数据的生成时刻之后的在线数据的每个时间窗口,确定为待检索的在线数据的目标时间段,便于后续在在线数据的各个目标时间段内,检索出待查询的数据对应的在线数据。
第二获取模块140,被配置为从离线数据库及目标时间段内的在线数据中,检索并获取与数据标识对应的目标数据。
在本公开的实施例中,根据待查询的数据的数据标识,在离线数据库中检索与数据标识对应的离线数据,并在在线数据库的目标时间段内检索与数据标识对应的在线数据,从而,检索出与数据标识对应的离线数据和在线数据,并将检索出的与数据标识对应的离线数据和在线数据作为待查询的数据的目标数据,便于后续根据目标数据返回查询结果。
可选地,在本公开的一个实施例中,在检索与数据标识对应的在线数据时,可以以数据标识结合每个目标时间段的方式检索在线数据,即在每个目标时间段内检索该时间段内是否存在与数据标识对应的在线数据,并单独记录每个目标时间段的检索结果,最后综合每个目标时间段的检索结果获取最终的目标在线数据,从而,避免了不同的目标时间段对检索数据产生的影响,提高了获取目标数据的准确性。
在本公开的一个实施例中,该装置,还包括:
第二获取模块还被配置为:查询离线数据库对应的更新时刻列表,以根据更新时刻列表中的最新更新时刻确定当前对应的生成时刻。
第四获取模块,被配置为在离线数据库当前对应的生成时刻与当前时刻间的时间间隔大于阈值的情况下,获取从当前对应的生成时刻起至当前时刻止的待存储数据。
第二确定模块,被配置为确定待存储数据与离线数据库中已存储数据间的差异数据。
第一存储模块,被配置为将差异数据存入离线数据库,并将当前时刻加入更新时刻列表中。
其中,差异数据是待存储数据与离线数据库中已存储数据间不同的数据,需要说明的是,对于周期性生成的全量离线数据,通常两个连续周期生成的全量离线数据,可能只有部分数据产生了变化,其他数据保持一致,在本公开中将发生了变化的数据为差异数据。
在本公开实施例中,将待存储数据与离线数据库中已存储数据进行比较,获取待存储数据与离线数据库中已存储数据间产生了变化的数据,并将该产生了变化的数据作为待存储数据与离线数据库中已存储数据间的差异数据。
在本公开的一个实施例中,第一存储模块,还被配置为:在离线数据库中未存储数据的情况下,将待存储数据存入所述离线数据库,并将当前时刻加入更新时刻列表中。
在本公开的一个实施例中,查询请求中还包括业务标识,该装置,还包括:
第三确定模块,被配置为根据目标业务标识,确定目标数据对应的目标处理方式;
处理模块,被配置为根据目标处理方式,将目标数据进行处理。
在本公开的一个实施例中,该装置,还包括:
第四确定模块,被配置为根据预设的业务标识与处理方式的映射关系,确定与目标业务标识对应的目标处理方式,或者根据目标业务标识,确定目标数据的类型,并根据目标数据的类型,确定目标处理方式。
在本公开的一个实施例中,第一确定模块,还包括:第一确定单元,被配置为将离线数据库当前对应的生成时刻与当前时刻之间的时间段,确定为目标时间段,或者将离线数据库当前对应的生成时刻之后的预设长度的时间段,确定为目标时间段。
在实际使用时,本公开实施例提供的数据的处理装置,可以被配置在服务器中,以执行前述数据的处理方法。因此,关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开的实施例提供的数据的处理装置,存在数据查询请求时,可以根据预先确定的离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,再根据最新更新离线数据的时刻确定待检索的在线数据的目标时间段,进而从离线数据库及目标时间段内的在线数据中,检索并获取与数据标识对应的目标数据。由此,根据离线数据库当前对应的生成时刻,可以确定离线数据库中最新更新离线数据的时刻,进而可以根据最新更新离线数据的时刻查询当前已同步的离线数据和该时刻后相应时间段内的实时数据,通过离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,便于将更新时发生变化的离线数据同步至离线数据库,可以在一份全量离线数据表中查询离线数据,从而离线数据库中仅需存储一份全量离线数据表即可实现数据查询任务,节省了存储空间,并且,降低了离线数据同步所需的计算资源和时间。
图6是根据一示例性实施例示出的一种用于数据处理的服务器200的框图。
如图6所示,上述服务器200包括:
存储器210及处理器220,连接不同组件(包括存储器210和处理器220)的总线230,存储器210存储有计算机程序,当处理器220执行所述程序时实现本公开实施例所述的数据的处理方法。
总线230表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
服务器200典型地包括多种电子设备可读介质。这些介质可以是任何能够被服务器200访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器210还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)240和/或高速缓存存储器250。服务器200可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统260可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线230相连。存储器210可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
具有一组(至少一个)程序模块270的程序/实用工具280,可以存储在例如存储器210中,这样的程序模块270包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块270通常执行本公开所描述的实施例中的功能和/或方法。
服务器200也可以与一个或多个外部设备290(例如键盘、指向设备、显示器291等)通信,还可与一个或者多个使得用户能与该服务器200交互的设备通信,和/或与使得该服务器200能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口292进行。并且,服务器200还可以通过网络适配器293与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器293通过总线230与服务器200的其它模块通信。应当明白,尽管图中未示出,可以结合服务器200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器220通过运行存储在存储器210中的程序,从而执行各种功能应用以及数据处理。
需要说明的是,本实施例的服务器的实施过程和技术原理参见前述对本公开实施例的数据查询方法的解释说明,此处不再赘述。
本公开实施例提供的服务器,可以执行如前所述的数据的处理方法,存在数据查询请求时,可以根据预先确定的离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,再根据最新更新离线数据的时刻确定待检索的在线数据的目标时间段,进而从离线数据库及目标时间段内的在线数据中,检索并获取与数据标识对应的目标数据。由此,根据离线数据库当前对应的生成时刻,可以确定离线数据库中最新更新离线数据的时刻,进而可以根据最新更新离线数据的时刻查询当前已同步的离线数据和该时刻后相应时间段内的实时数据,通过离线数据库当前对应的生成时刻,确定最新更新离线数据的时刻,便于将更新时发生变化的离线数据同步至离线数据库,可以在一份全量离线数据表中查询离线数据,从而离线数据库中仅需存储一份全量离线数据表即可实现数据查询任务,节省了存储空间,并且,降低了离线数据同步所需的计算资源和时间。
为了实现上述实施例,本公开还提出一种计算机可读存储介质。
其中,该计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如前所述的数据的处理方法。
为了实现上述实施例,本公开还提供一种计算机程序产品,该计算机程序由服务器的处理器执行时,使得服务器能够执行如前所述的数据的处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。