分布式的数据分析系统及方法与流程

文档序号:14724206发布日期:2018-06-19 03:33阅读:438来源:国知局

本发明涉及数据分析技术领域,特别是涉及一种分布式的数据分析系统及方法。



背景技术:

目前的数据分析技术,通常由数据分析服务器向存储了待分析数据的数据库直接发送能够获取所有待分析数据的查询条件,当所有待分析数据返回数据分析服务器后,再进行数据分析。

由于数据分析需要大量待分析数据,并且数据库存储有海量数据,因此从数据库的海量数据中查询到待分析数据时需要较长的查询等待时间,并且所有待分析数据返回后该数据分析服务器才能开始数据分析,导致数据查询等待响应的时间过长,待分析数据的返回速度慢,进而影响数据分析效率。

因此,如何减少大量数据的查询的查询等待时间,提高待分析数据的返回速度,提高数据分析效率,是对数据库中的数据进行数据分析时需要解决的问题。



技术实现要素:

本发明实施例的目的在于提供一种分布式的数据分析系统及方法,以提高对数据库中的数据进行数据分析时的效率。具体技术方案如下:

第一方面,本发明实施例提供了一种分布式的数据分析系统,所述系统包括:数据分析中心和至少一个Redis服务器;

所述数据分析中心,用于获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

每个Redis服务器,用于从数据库接收并存储已查询到的待分析数据;

所述数据分析中心,在有查询指令完成后,从Redis服务器中获取各个子查询条件对应的待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

可选的,所述的数据分析中心,包括一个第一数据分析服务器和多个第二数据分析服务器;所述Redis服务器的数量与分析服务器的数量相同,且一一对应;

所述第一数据分析服务器,用于获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;

按预设的分配原则,确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件;将各个第二数据分析服务器需要处理的子查询条件,分别发送给对应的第二数据分析服务器;

所述第一数据分析服务器和各个第二数据分析服务器,针对每个自身要处理的子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

所述第一数据分析服务器和各个第二数据分析服务器,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

可选的,所述的每个Redis服务器,进一步检测自身存储的数据量,当数据量小于预设数据量阈值时,向与其对应的数据分析服务器发送数据量不足通知;

所述的第一数据分析服务器和第二数据分析服务器,进一步在接收到所述数据量不足通知后,向数据库发送未处理的查询指令。

可选的,所述的数据分析中心,包括一个第一数据分析服务器和多个第二数据分析服务器;所述Redis服务器的数量与分析服务器的数量相同,且一一对应;

所述第一数据分析服务器,用于获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;

按预设的分配原则,确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件;

所述第一数据分析服务器,针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

所述第一数据分析服务器和各个第二数据分析服务器,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

第二方面,本发明实施例提供了一种分布式的数据分析方法,应用于上述分布式的数据分析系统,包括:

数据分析中心获得待分析数据的查询条件;

按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;

针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;

向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

每个Redis服务器,从数据库接收并存储已查询到的待分析数据;

所述数据分析中心,在有查询指令完成后,从Redis服务器中获取各个子查询条件对应的待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

可选的,所述的数据分析中心,包括一个第一数据分析服务器和多个第二数据分析服务器;所述Redis服务器的数量与分析服务器的数量相同,且一一对应;

所述第一数据分析服务器,获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;

按预设的分配原则,确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件;将各个第二数据分析服务器需要处理的子查询条件,分别发送给对应的第二数据分析服务器;

所述第一数据分析服务器和各个第二数据分析服务器,针对每个自身要处理的子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

所述第一数据分析服务器和各个第二数据分析服务器,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

可选的,所述的每个Redis服务器,进一步检测自身存储的数据量,当数据量小于预设数据量阈值时,向与其对应的数据分析服务器发送数据量不足通知;

所述的第一数据分析服务器和第二数据分析服务器,进一步在接收到所述数据量不足通知后,向数据库发送未处理的查询指令。

可选的,所述的第一数据分析服务器和第二数据分析服务器,进一步接收数据库返回的查询指令完成响应;根据接收到的查询指令完成响应,确定已完成的子查询条件,并发送至指定的Redis服务器;

所述指定的Redis服务器存储各个数据分析服务器已经完成的子查询条件;

所述的第一数据分析服务器和第二数据分析服务器,进一步在向数据库发送待处理查询指令之前,从所述指定的Redis服务器查询该待处理查询指令之前的查询指令对应的子查询条件是否已经完成,仅在所述之前的查询指令对应的子查询条件完成时,向数据库发送所述待处理查询指令;在所述之前的查询指令对应的子查询条件未完成时,向数据库发送该未完成的子查询条件对应的查询指令。

可选的,所述指定的Redis服务器,进一步接收用户发送的查询进度输出指令,将存储的各个数据分析服务器已经完成的子查询条件输出给用户。

可选的,所述的数据分析中心,包括一个第一数据分析服务器和多个第二数据分析服务器;所述Redis服务器的数量与分析服务器的数量相同,且一一对应;

所述第一数据分析服务器,获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;

按预设的分配原则,确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件;

所述第一数据分析服务器,针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

所述第一数据分析服务器和各个第二数据分析服务器,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

本发明实施例提供的一种分布式的数据分析系统,包括数据分析中心和至少一个Redis服务器;通过数据分析中心按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件。针对每个子查询条件,生成一条对应的包含子查询条件及查询到数据的目标Redis服务器标识的查询指令,以使所述数据库102按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中。由数据分析中心从各个Redis服务器中获取各个子查询条件对应的待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

与直接使用获取所有待分析数据的查询条件,等待所有待分析数据返回到数据分析服务器后,才能开始数据分析的方式相比,上述分布式的数据分析系统,由多个子查询条件对应的查询指令分别获取相应的待分析数据,使得待分析数据一旦被查询到即可保存在各个Redis服务器中,数据分析中心从各个Redis服务器中获取各个子查询条件对应的待分析数据直接进行数据分析,实现了边查询边分析的目的,减少了查询等待时间,提高了待分析数据的返回速度,进而提高了数据分析效率。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的分布式的数据分析系统的一种结构示意图;

图2为本发明实施例提供的分布式的数据分析方法的一种流程图;

图3为本发明实施例提供的分布式的数据分析系统的另一种结构示意图;

图4为本发明实施例提供的分布式的数据分析系统的又一种结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了提高对数据库中的数据进行数据分析时的效率,本发明实施例提供了一种分布式的数据分析系统及方法。

下面首先对本发明实施例提供的一种分布式的数据分析系统进行介绍。

如图1所示,本发明实施例提供的一种分布式的数据分析系统,可以包括:

数据分析中心101和至少一个Redis服务器;

所述数据分析中心101,用于获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件。针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识。向数据库102发送所述查询指令,以使所述数据库102按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中。

每个Redis服务器,用于从数据库102接收并存储已查询到的待分析数据。

所述数据分析中心101,在有查询指令完成后,从Redis服务器中获取各个子查询条件对应的待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

例如:待分析数据为所有用户2017年上半年网络购物平台A中的浏览记录,则数据分析中心101获得的查询条件为查找用户1至用户n在2017年1月至2017年6月的浏览记录。

当本次数据分析的目标是获得每个用户的购物偏好,则预设的条件拆分规则可以为:按用户拆分。则将该查询条件拆分为:子查询条件1:查找用户1在2017年1月-2017年6月的浏览记录;子查询条件2:查找用户2在2017年1月-2017年6月的浏览记录;……;子查询条件n:查找用户n在2017年1月-2017年6月的浏览记录。

当本次数据分析的目的是获得各个月份被各个用户浏览最多的商品时,则预设的条件拆分规则可以为:按月份拆分。则将该查询条件拆分为:子查询条件1:查找用户1至用户n在2017年1月的浏览记录;子查询条件2:查找用户用户1至用户n在2017年2月的浏览记录;……;子查询条件6:查找用户1至用户n在2017年6月的浏览记录。

凡是使得数据分析中心直接对按子查询条件获取的各个待分析数据进行数据分析时,能够实现分析目标的拆分规则,均可用于进行查询条件拆分,本发明实施例对此不作限制。

数据分析中心101针对上述每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识。如查询指令C1中包含子查询条件1及查询到数据的目标Redis服务器标识R1,查询指令C2中包含子查询条件2及查询到数据的目标Redis服务器标识R2,……,查询指令Cn中包含子查询条件n及查询到数据的目标Redis服务器标识Rn。

可以理解的是,当Redis服务器的数量小于子查询条件的数量时,数据分析中心可循环选取目标Redis服务器,直到所有子查询条件均有对应的目标Redis服务器。如查询指令C1中包含子查询条件1及查询到数据的目标Redis服务器标识R1,查询指令C2中包含子查询条件1及查询到数据的目标Redis服务器标识R2,查询指令C3中包含子查询条件3及查询到数据的目标Redis服务器标识R1,……,查询指令Cn中包含子查询条件n及查询到数据的目标Redis服务器标识R1或者R2。

数据分析中心101向数据库102发送上述查询指令查询指令C1,C2,……,查询指令Cn,以使所述数据库102按所述子查询条件1,子查询条件2,……,子查询条件n进行数据查询,将查询到的各个待分析数据存储至所述目标Redis服务器标识对应的目标Redis服务器1,目标Redis服务器2,……,目标Redis服务器n。

这样,所述数据分析中心101,在有查询指令完成后,例如:查询指令C1完成后,就可以从Redis服务器中获取子查询条件对应的待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

应用本发明实施例提供的一种分布式的数据分析系统,与直接使用获取所有待分析数据的查询条件,等待所有待分析数据返回到数据分析服务器后,才能开始数据分析的方式相比,上述分布式的数据分析系统,由多个子查询条件对应的查询指令分别获取相应的待分析数据,使得待分析数据一旦被查询到即可保存在各个Redis服务器中,数据分析中心在有查询指令完成后,从各个Redis服务器中获取各个子查询条件对应的待分析数据直接进行数据分析,实现了边查询边分析的目的,减少了查询等待时间,提高了待分析数据的返回速度,进而提高了数据分析效率。

如图2所示,本发明实施例提供的一种分布式的数据分析方法,应用于图1所示的分布式的数据分析系统,包括以下步骤:

S201,数据分析中心获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件.

S202,针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识。

S203,向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中。

S204,每个Redis服务器,从数据库接收并存储已查询到的待分析数据。

S205,所述数据分析中心在有查询指令完成后,从Redis服务器中获取各个子查询条件对应的待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

例如:数据分析中心101获得的查询条件为查找用户1至用户n在2017年1月至2017年6月的浏览记录。当本次数据分析的目标是获得每个用户的购物偏好,则预设的条件拆分规则可以为:按用户拆分。则将该查询条件拆分为:子查询条件1:查找用户1在2017年1月-2017年6月的浏览记录;子查询条件2:查找用户2在2017年1月-2017年6月的浏览记录;……;子查询条件n:查找用户n在2017年1月-2017年6月的浏览记录。

数据分析中心101针对上述每个子查询条件,生成一条对应的查询指令,查询指令C1中包含子查询条件1及查询到数据的目标Redis服务器标识R1,查询指令C2中包含子查询条件2及查询到数据的目标Redis服务器标识R2,……,查询指令Cn中包含子查询条件n及查询到数据的目标Redis服务器标识Rn。数据分析中心101向数据库102发送上述查询指令查询指令C1,C2,……,查询指令Cn,以使所述数据库102按所述子查询条件1,子查询条件2,……,子查询条件n进行数据查询,将查询到的各个待分析数据存储至所述目标Redis服务器标识对应的目标Redis服务器1,目标Redis服务器2,……,目标Redis服务器n。数据分析中心101从Redis服务器1,Redis服务器2,……,Redis服务器n中获取各个子查询条件对应的待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

应用本发明实施例提供的一种分布式的数据分析方法,与直接使用获取所有待分析数据的查询条件,等待所有待分析数据返回到数据分析服务器后,才能开始数据分析的方式相比,上述分布式的数据分析系统,由多个子查询条件对应的查询指令分别获取相应的待分析数据,使得待分析数据一旦被查询到即可保存在各个Redis服务器中,数据分析中心在有查询指令完成后,从各个Redis服务器中获取各个子查询条件对应的待分析数据直接进行数据分析,实现了边查询边分析的目的,减少了查询等待时间,提高了待分析数据的返回速度,进而提高了数据分析效率。

如图3所示,本发明实施例提供的另一种分布式的数据分析系统,可以包括:

数据分析中心302,包括一个第一数据分析服务器1和多个第二数据分析服务器;所述Redis服务器的数量与分析服务器的数量相同,且一一对应。

所述第一数据分析服务器1,用于获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件。

按预设的分配原则,确定第一数据分析服务器1和各个第二数据分析服务器需要处理的子查询条件;将各个第二数据分析服务器需要处理的子查询条件,分别发送给对应的第二数据分析服务器。

所述第一数据分析服务器1和各个第二数据分析服务器,针对每个自身要处理的子查询条件,生成一条对应的查询指令。所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中。

所述第一数据分析服务器1和各个第二数据分析服务器,在有查询指令完成后,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

基于图3所示的分布式的数据分析系统,下面从各个数据分析服务器、数据库以及各个Redis服务器交互的角度,对本发明实施例提供的分布式的数据分析方法的另一种过程,进行介绍,可以包括如下步骤:

步骤一,第一数据分析服务器1,获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;按预设的分配原则,确定第一数据分析服务器1和各个第二数据分析服务器需要处理的子查询条件;将各个第二数据分析服务器需要处理的子查询条件,分别发送给对应的第二数据分析服务器;

步骤二,第一数据分析服务器1和各个第二数据分析服务器,针对每个自身要处理的子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库302发送所述查询指令,以使所述数据库302按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;本实施例中,预设时间间隔可以根据需要进行设置,只要保证至少一条子查询条件对应的查询指令能够完成即可。

步骤三,第一数据分析服务器1和各个第二数据分析服务器,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

例如:所述第一数据分析服务器1,获得待分析数据的查询条件为查找用户1至用户n在2017年1月至2017年6月的浏览记录;按预设的条件拆分规则,当本次数据分析的目标是获得每个用户的购物偏好,则预设的条件拆分规则可以为:按用户拆分。可将该查询条件拆分为多个子查询条件:子查询条件1:查找用户1在2017年1月-2017年6月的浏览记录;子查询条件2:查找用户2在2017年1月-2017年6月的浏览记录;……;子查询条件n:查找用户n在2017年1月-2017年6月的浏览记录。

所述预设的分配原则可以是将各个子查询条件按第一数据分析服务器1和各个第二数据分析服务器的编号逐一顺序循环分配。如有3个数据分析服务器时,将子查询条件1分配给第一数据分析服务器1,子查询条件2分配给第二数据分析服务器2,子查询条件3分配给第二数据分析服务器3,子查询条件4分配给第一数据分析服务器1,……。或者,所述预设的分配原则可以是按各个数据分析服务器的处理能力,根据历史经验为各个数据分析服务器顺序分配预设数量的子查询条件,对于不足预设数量的子查询条件,顺序分配给下一个数据分析服务器。如根据历史经验,各个数据分析服务器处理5000个子查询条件时性能较佳,则将子查询条件1至子查询条件5000分配给第一数据分析服务器1,子查询条件5001至子查询条件10001分配给第二数据分析服务器2,……,当第二数据分析服务器5分配完后,还有2000个子查询条件未被分配,则将其分配给第一数据分析服务器1。任何可以用于确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件的分配原则,均可用于分配本发明,本实施例对此不作限制。

依然以存在3个数据分析服务器为例:第一数据分析服务器1针对子查询条件1,4,7,生成3条对应的查询指令,查询指令C1中包含子查询条件1及查询到数据的目标Redis服务器标识R1,查询指令C4中包含子查询条件4及查询到数据的目标Redis服务器标识R1,查询指令C7中包含子查询条件7及查询到数据的目标Redis服务器标识R1;第二数据分析服务器2针对子查询条件2,5,8,生成3条对应的查询指令,查询指令C2中包含子查询条件2及查询到数据的目标Redis服务器标识R2,查询指令C5中包含子查询条件5及查询到数据的目标Redis服务器标识R2,查询指令C8中包含子查询条件8及查询到数据的目标Redis服务器标识R2;第二数据分析服务器3针对子查询条件3,6,9,生成3条对应的查询指令,查询指令C3中包含子查询条件3及查询到数据的目标Redis服务器标识R3,查询指令C6中包含子查询条件6及查询到数据的目标Redis服务器标识R3,查询指令C9中包含子查询条件9及查询到数据的目标Redis服务器标识R3。上述各个数据分析服务器按预设时间间隔如3秒,向数据库302发送上述查询指令查询指令C1,C2,……,查询指令C9,以使所述数据库302按所述子查询条件1,子查询条件2,……,子查询条件9进行数据查询,将查询到的各个待分析数据存储至所述目标Redis服务器标识对应的Redis服务器1,Redis服务器2,Redis服务器3中。第一数据分析服务器1、第二数据分析服务器2以及第二数据分析服务器3针对子查询条件3,分别从对应的Redis服务器1、Redis服务器2以及Redis服务器3中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。其中,所述预设的时间间隔可以是根据历史经验设置的待分析数据从查询到存储所需的时间,任何可以满足待分析数据从查询到存储所需时间的设置方式均可用于本发明,本实施例对此不作限制。

应用本发明实施例图3所示的另一种分布式的数据分析系统,与直接使用获取所有待分析数据的查询条件,等待所有待分析数据返回到数据分析服务器后,才能开始数据分析的方式相比,由多个子查询条件对应的查询指令分别获取相应的待分析数据,使得待分析数据一旦被查询到即可保存在各个Redis服务器中,各个数据分析服务器从各个Redis服务器中获取各个子查询条件对应的待分析数据直接进行数据分析,在边查询边分析的同时,进一步将数据查询分布到各个数据分析服务器上,进一步减少了查询等待时间,提高了待分析数据的返回速度,并且将数据分析分布到各个数据分析服务器上,进一步提高了数据分析的效率。

可选的,图3所示的分布式系统的数据分析过程还可以包括如下步骤:

步骤一,所述的每个Redis服务器,进一步检测自身存储的数据量,当数据量小于预设数据量阈值时,向与其对应的数据分析服务器发送数据量不足通知;

步骤二,所述的第一数据分析服务器和第二数据分析服务器,进一步在接收到所述数据量不足通知后,向数据库发送未处理的查询指令。

实际应用中,每个Redis服务器都可以采用队列来存储数据库发送的待分析数据;当收到的数据被数据分析服务器获取后,就从队列中删除被数据分析服务器获取的数据。这样,各个Redis服务器就有可能出现数据量不足的情况。

为此,在收到数据库发送的按各个查询指令查询到的待分析数据后,每个Redis服务器可以开启实时检测机制,对自身存储的数据量进行检测。

例如:预设数据量阈值为1000个数据,当Redis服务器1检测到自身存储的数据量为800个,则可以向第一数据分析服务器1发送数据量不足通知,第一数据分析服务器1在接收到所述数据量不足通知后,就可以向数据库302发送未处理的查询指令。

可以理解的是,所述的第一数据分析服务器和第二数据分析服务器只要在接收到所述数据量不足通知后,即可向数据库发送未处理的查询指令,也就是说发送下一条查询指令的时间可以在达到预设的时间间隔之前。这样就可以保证在实际应用中,及时为数据量不足的Redis服务器补充数据,使相应的数据分析服务器始终可获取数据进行分析,避免了空闲时间造成的资源浪费。

可选的,图3所示的分布式系统的数据分析过程还可以包括如下步骤:

步骤一,所述的第一数据分析服务器和第二数据分析服务器,进一步接收数据库返回的查询指令完成响应;根据接收到的查询指令完成响应,确定已完成的子查询条件,并发送至指定的Redis服务器;本实施例中,指定的Redis服务器用来存储查询进度。

步骤二,所述指定的Redis服务器存储各个数据分析服务器已经完成的子查询条件;

步骤三,所述的第一数据分析服务器和第二数据分析服务器,进一步在向数据库发送待处理查询指令之前,从所述指定的Redis服务器查询该待处理查询指令之前的查询指令对应的子查询条件是否已经完成,仅在所述之前的查询指令对应的子查询条件完成时,向数据库发送所述待处理查询指令;在所述之前的查询指令对应的子查询条件未完成时,向数据库发送该未完成的子查询条件对应的查询指令。

例如:Redis服务器1为指定的查询进度存放服务器。第一数据分析服务器1和第二数据分析服务器2,可以接收数据库302返回的查询指令完成响应,根据接收到的查询指令完成响应,确定已完成的子查询条件为C1,并发送至指定的Redis服务器1。Redis服务器1存储上述已经完成的子查询条件。第一数据分析服务器1和第二数据分析服务器2,可以在向数据库302发送待处理查询指令4和待查询指令5之前,从Redis服务器1查询该待查询指令之前的查询指令1和查询指令2对应的子查询条件C1和子查询条件C2是否已经完成。根据查询进度,子查询条件C1已完成,子查询条件C2未完成。则第一数据分析服务器1向数据库302发送待处理查询指令4,第二数据分析服务器2向数据库302发送待处理查询指令2。

可以理解的是,通过在指定的Redis服务器中保存各个子查询条件的查询进度,以便各个数据分析服务器在发送待查询指令之前,先确定该待查询指令之前的查询指令对应的子查询条件是否已完成,可以在系统异常或者是因查询时间超出预设的时间阈值而未完成子查询条件时,确保发送的查询指令均完成,避免数据丢失或查询遗漏,提高待分析数据查询质量。

可选的,当存在上述指定的Redis服务器用于保存查询进度时,图3所示的分布式数据分析系统的数据分析过程还可以包括如下步骤:

所述指定的Redis服务器,进一步接收用户发送的查询进度输出指令,将存储的各个数据分析服务器已经完成的子查询条件输出给用户。

由用户根据自身需求,随时实现查询进度的可视化,方便根据查询进度调整工作任务,进一步提高数据分析的效率。

如图4所示,本发明实施例提供的种分布式的数据分析系统的另一种结构,其中的数据分析中心,包括一个第一数据分析服务器和多个第二数据分析服务器;所述Redis服务器的数量与分析服务器的数量相同,且一一对应;

所述第一数据分析服务器,用于获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;

按预设的分配原则,确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件;

所述第一数据分析服务器,针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

所述第一数据分析服务器和各个第二数据分析服务器,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

基于图4所示的又一种分布式的数据分析系统,数据分析方法的过程,可以包括如下步骤:

步骤一,所述第一数据分析服务器1,获得待分析数据的查询条件;按预设的条件拆分规则,将所述查询条件拆分为多个子查询条件;按预设的分配原则,确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件;

步骤二,所述第一数据分析服务器,针对每个子查询条件,生成一条对应的查询指令,所述查询指令中包含:子查询条件及查询到数据的目标Redis服务器标识;按预设时间间隔,逐一向数据库发送所述查询指令,以使所述数据库按所述子查询条件进行数据查询,将查询到的待分析数据存储至所述目标Redis服务器标识对应的Redis服务器中;

步骤三,所述第一数据分析服务器和各个第二数据分析服务器,从各自对应的Redis服务器中获取待分析数据进行数据分析,将分析后的数据存储至预设的存储设备中。

上述图4所示的系统与图3所示的系统区别在于,所述第一数据分析服务器1在确定第一数据分析服务器和各个第二数据分析服务器需要处理的子查询条件后,不再将各个第二数据分析服务器需要处理的子查询条件发送给对应的第二数据分析服务器,所有子查询条件均由所述第一数据分析服务器1处理,并由所述第一数据分析服务器1将生成的各个查询指令发送给数据库402。其他相同部分具体说明参见图3所示系统和应用图3所示系统进行分布式的数据分析的过程,在此不再赘述。

应用本发明图4所示的又一种分布式的数据分析系统,与直接使用获取所有待分析数据的查询条件,等待所有待分析数据返回到数据分析服务器后,才能开始数据分析的方式相比,上述分布式的数据分析系统,由多个子查询条件对应的查询指令分别获取相应的待分析数据,使得待分析数据一旦被查询到即可保存在各个Redis服务器中,数据分析中心从各个Redis服务器中获取各个子查询条件对应的待分析数据直接进行数据分析,实现了边查询边分析的目的,减少了查询等待时间,提高了待分析数据的返回速度,并且将数据分析分布搭配各个数据分析服务器上,进一步提高了数据分析效率。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1