具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对装置、模块或单元进行区分,并非用于限定这些装置、模块或单元一定为不同的装置、模块或单元,也并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
本公开实施例提供的数据处理方法、装置、电子设备及计算机可读存储介质,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本公开实施例的技术方案以及本公开实施例的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本公开的实施例进行描述。
本公开一个实施例提供了一种数据处理方法,该方法由计算机设备执行,该计算机设备可以是终端或者服务器。终端可以是台式设备或者移动终端。服务器可以是独立的物理服务器、物理服务器集群或者虚拟服务器。
如图1所示,该方法包括:
步骤S110,接收数据发送记录的查询请求,查询请求包括目标数据发送状态与目标查询时间范围;步骤S120,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询,得到至少一条数据发送记录,预设数据库中存储有各个已发送的数据信息的数据发送记录,预设数据库中存储有各个已发送的数据信息的数据发送记录;步骤S130,确定各条数据发送记录分别对应的数据信息与目标发送对象,并将各条数据发送记录分别对应的数据信息再次发送给相应的目标发送对象。
具体地,预设数据库可以是关系性数据库,例如MySQL、Microsoft Access(由微软发布的关系数据库管理***)、Microsoft SQL Server(微软公司推出的关系型数据库管理***)、Oracle数据库等;预设数据库也可以是非关系型数据库,例如MongoDB(基于分布式文件存储的数据库)、BigTable(由谷歌设计的分布式数据存储***)等,本申请实施例不对其作限制。
具体地,预设数据库可以用于存储各类数据,预设数据库可以与计算机设备(即服务器或终端)通信连接,也可以根据需要部署在计算机设备上,还可以部署在通信连接的电子设备上。根据实现需要,计算机设备上可以安装相应的数据库管理软件,用于查询、更新(比如删除、新增、修改等)预设数据库中的数据。
具体地,预设数据库中通常会预存储有各个已发送的数据信息的数据发送记录,即预设数据库中存储有各个已发送的数据信息的数据发送记录。比如,任一用户可以根据需要向与之通信的其他用户发送数据信息,在发送数据信息后,该任一用户对应的终端设备可以在其对应的预设数据库中存储该数据信息的数据发送记录。又比如,应用程序、直播平台及游戏等的开发人员,可以根据需要向其对应的所有用户统一发送数据信息,在发送数据信息后,应用程序、直播平台及游戏等对应的服务器可以在其对应的预设数据库中存储该数据信息的数据发送记录。
具体地,任一用户或开发人员可以根据需要在相应的预设数据库中查询目标数据发送状态的数据发送记录,例如数据发送成功状态的数据发送记录,又例如数据发送失败状态的数据发送状态,再例如其他可行的数据发送状态的数据发送记录等。然而,由于只将目标数据发送状态作为查询条件,在整个预设数据库中进行全表扫描式查询,仅会因为目标数据发送状态的区分度比较低,影响查询结果的准确,而且全表扫描式查询导致查询速度慢,对数据库造成较大查询压力,因此,可以增加目标查询时间范围,来对查询范围进行适当限定,增加查询区分度及提高查询速度。换言之,任一用户或开发人员可以根据需要在相应计算机设备的相应预设数据库中,查询目标数据发送状态与目标查询时间范围的数据发送记录。相对应地,计算机设备可以接收数据发送记录的查询请求,该查询请求包括目标数据发送状态与目标查询时间范围。
具体地,计算机设备在接收到数据发送记录的查询请求后,可以在预设数据库中查询位于目标查询时间范围内的、且是目标数据发送状态的至少一条数据发送记录,即根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询,得到至少一条数据发送记录。
具体地,在查询到符合查询请求的某条数据发送记录后,可以根据该某条数据发送记录得到其对应的数据信息及该数据信息的目标发送对象,从而可以将该数据信息再次发送给其对应的目标发送对象。假如某条数据发送记录为数据记录S1,数据记录S1对应的数据信息为数据D1、且对应的目标发送对象为U1,则将数据D1再次发送给U1;又假如某条数据发送记录为数据记录S2,数据记录S2对应的数据信息为数据D1、且对应的目标发送对象为U2,则将数据D2再次发送给U2。
本公开实施例提供的数据处理方法,通过基于接收到的目标数据发送状态与目标查询时间范围,在预设数据库中查询相应的数据发送记录,使得不仅依据目标数据发送状态在预设数据库中进行全表扫描式查询,而且依据目标查询时间范围在预设数据库中进行全表扫描式查询,从而有效提高查询结果的准确性、全面性和查询速度,减小对预设数据库的查询压力,最大程度减少对其它业务访问预设数据库的影响;确定各条数据发送记录分别对应的数据信息与目标发送对象,并将各条数据发送记录分别对应的数据信息再次发送给相应的目标发送对象,实现了对数据信息的重发、补发等,确保目标对象能够及时接收到相应的数据信息。
下面对本公开实施例的方法进行具体介绍:
具体地,在发送数据信息后,该数据信息可能会发送成功,也可能会发送失败,通常,对于发送成功的数据信息没有必要再次发送,对于发送失败的数据信息需要再次发送,以免造成不良影响。基于此,上述的目标数据发送状态可以为数据发送失败状态,当目标数据发送状态为数据发送失败状态时,说明数据信息未发送成功(即发送失败),需要再次发送该数据信息。需要说明的是,虽然发送成功的数据信息没有必要再次发送,但是也可以根据需要对其再次进行发送。
在一种可能的实现方式中,在根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询之前,可以在预设数据库中存储各个已发送的数据信息的数据发送记录。其中,针对每个已发送的数据信息,在预设数据库中存储每个已发送的数据信息的数据发送记录的过程,可以为:首先,确定每个已发送的数据信息的数据发送状态;接着,将每个已发送的数据信息的标识信息、每个已发送的数据信息的数据发送状态及每个已发送的数据信息的目标发送对象的标识信息,对应存储至预设数据库中,并在预设数据库中对应记录该存储的起始存储时间,来得到每个已发送的数据信息的数据发送记录。
具体地,在将数据信息发送之后,会将该数据信息的发送记录(即数据发送记录)存储到预设数据库中,即在预设数据库中生成或创建该数据信息的数据发送记录,以便于后续通过该预设数据库查询相应的数据发送记录。其中,预设数据库中生成或创建数据信息的数据发送记录时,需要记录该数据发送记录的生成时间或创建时间,以便于后续可以根据时间参数查询相应的数据发送记录。
具体地,在向用户U1、用户U2及用户U3发送数据信息D1时,由于数据信息D1可能发送成功,也可能发送失败,因此,在向用户U1、用户U2及用户U3发送数据信息D1后,需要确定数据信息D1的数据发送状态,即确定每个已发送的数据信息的数据发送状态,并将确定出的数据发送状态记录到相应的数据发送记录中。其中,数据发送状态可以用status表示,比如status=0表示数据发送失败,status=1表示数据发送成功。
在一种应用场景下,可以每当发送一个数据信息时,就在预设数据库中生成或创建该一个数据信息的数据发送记录,并记录该数据发送记录的生成时间或创建时间,接着,在确定出数据发送状态后,再将确定出的数据发送状态补充到相应的数据发送记录中。其中,可以将各条数据发送记录的生成时间或创建时间,记录在相应的各条数据发送记录中。
在一个示例中,假如发送的数据信息为D1,数据信息D1的目标发送对象为用户U1、用户U2及用户U3,则在向用户U1、用户U2及用户U3发送数据信息D1后,就可以在预设数据库中生成或创建关于数据信息D1发送给用户U1的数据发送记录(记作S1)、数据信息D1发送给用户U2的数据发送记录(记作S2)及数据信息D1发送给用户U3的数据发送记录(记作S3),同时记录数据发送记录S1、数据发送记录S2及数据发送记录S3的生成时间,其中,可以在数据发送记录中同时记录数据发送记录的生成时间,比如在数据发送记录S1中记录数据发送记录S1的生成时间(记作T1)、在数据发送记录S2中记录数据发送记录S2的生成时间(记作T2)、以及数据发送记录S3中记录数据发送记录S3的生成时间(记作T3);接着,若数据信息D1成功发送给用户U1(即发送成功)、数据信息D1未成功发送给用户U2(即发送失败)及数据信息D1成功发送给用户U3(即发送成功),则在数据发送记录S1中记录数据发送成功这一数据发送状态(即数据发送记录S1中的status为1)、在数据发送记录S2中记录数据发送失败这一数据发送状态(即数据发送记录S2中的status为0)以及在数据发送记录S3中记录数据发送成功这一数据发送状态(即数据发送记录S3中的status为1)。
在另一应用场景下,可以在发送数据信息后、且在确定出数据信息的数据发送状态之后,再在预设数据中生成或创建数据信息的数据发送记录,同时记录该数据发送记录的生成时间或创建时间。其中,可以将各条数据发送记录的生成时间或创建时间,记录在相应的各条数据发送记录中。
在一个示例中,假如发送的数据信息为D1,数据信息D1的目标发送对象为用户U1、用户U2及用户U3,且确定出数据信息D1成功发送给用户U1(即发送成功)、数据信息D1未成功发送给用户U2(即发送失败)及数据信息D1成功发送给用户U3(即发送成功),则可以在预设数据库中生成或创建关于数据信息D1发送给用户U1的数据发送记录S1、数据信息D1发送给用户U2的数据发送记录S2及数据信息D1发送给用户U3的数据发送记录S3,同时在数据发送记录S1中记录数据发送记录S1的生成时间或创建时间T1、在数据发送记录S2中记录数据发送记录S2的生成时间或创建时间T2及在数据发送记录S3中记录数据发送记录S1的生成时间或创建时间T3。
需要说明的是,在预设数据库中生成或创建数据信息的数据发送记录,即为将数据发送记录存储在预设数据库中,也即针对每个已发送的数据信息,在预设数据库中存储每个已发送的数据信息的数据发送记录,故上述的数据发送记录的生成时间或创建时间即为数据发送记录存储在预设数据库的起始存储时间。其中,在预设数据库中存储每个已发送的数据信息的数据发送记录时,可以将每个已发送的数据信息的标识信息、每个已发送的数据信息的数据发送状态及每个已发送的数据信息的目标发送对象的标识信息,对应存储至预设数据库中,并在预设数据库中对应记录该存储的起始存储时间,从而得到每个已发送的数据信息的数据发送记录。
在一种可能的实现方式中,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询的过程,可以为通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询。
具体地,可以通过多个线程(比如空闲线程)在预设数据库中查询属于目标查询时间范围内的、数据发送状态为目标数据发送状态的各条数据发送记录,从而加快数据查询效率,进一步缩短数据查询时间。其中,目标查询时间范围是数据发送记录的生成时间(即起始存储时间)的范围,假如目标查询时间范围是2019年1月1日至2019年1月2日,则在预设数据库中查询数据发送记录的生成时间属于2019年1月1日至2019年1月2日之间的数据发送记录。
在一个示例中,假如预设数据库为MySQL数据库,目标数据发送状态为数据发送失败状态(即status=0)、目标查询时间范围(记作creat_time)为2019年1月1日至2019年1月2日,则查询请求可以简化为如下的查询语句:select id from table where status=0and create_time>'2019-01-0100:00:00'and create_time<'2019-01-0223:59:59',其中,table为MySQL数据库中存储数据发送记录的数据表,id为通过多个线程并查询到的属于目标查询时间范围内的、数据发送状态为目标数据发送状态的各条数据发送记录的标识。
具体地,在查询到各条数据发送记录后,可以将各条数据发送记录各自对应的数据信息再次发送给各条数据发送记录各自对应的目标发送对象。基于上述示例,假如查询到的各条数据发送记录分别为数据记录S1、数据记录S2及数据记录S3,则可以将数据记录S1对应的数据信息比如(D1)再次发送给数据记录S1对应的目标发送对象(比如U1)、将数据记录S2对应的数据信息比如(D1)再次发送给数据记录S2对应的目标发送对象(比如U2)、将数据记录S3对应的数据信息比如(D1)再次发送给数据记录S3对应的目标发送对象(比如U3)。
在一种可能的实现方式中,在通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询的过程中,可以先确定多个线程的数量与各线程的单次查询时长,并基于目标查询时间范围与数量,确定各线程分别对应的第一查询时间范围;接着,根据各线程分别对应的第一查询时间范围与各线程的单次查询时长,通过各线程在预设数据库中并行查询包括目标数据发送状态的各条数据发送记录。
具体地,在通过多个线程在预设数据库中进行并行查询时,先确定出用于并行查询预设数据库的线程的数量(记作WorkerCount),例如5个、8个及12个等,在确定出线程的数量后,可以根据目标查询时间范围,确定每个线程的查询时间范围(即第一查询时间范围),并通过各线程在各自对应的查询时间范围内对预设数据库中进行并行查询。
在一个示例中,假如线程的数量为5个、目标查询时间范围为2019年1月1日06:00:00至2019年1月1日10:59:59,则可以确定每个线程的查询时间范围为1小时,即将目标查询时间范围划分为5个时间段,分别为2019年1月1日06:00:00至2019年1月1日06:59:59、2019年1月1日07:00:00至2019年1月1日07:59:59、2019年1月1日08:00:00至2019年1月1日08:59:59、2019年1月1日09:00:00至2019年1月1日09:59:59及2019年1月1日10:00:00至2019年1月1日10:59:59。接着,将这5个时间段随机分配给5个线程,比如线程1的查询时间范围为2019年1月1日06:00:00至2019年1月1日06:59:59、线程2的查询时间范围为2019年1月1日08:00:00至2019年1月1日08:59:59、线程3的查询时间范围为2019年1月1日10:00:00至2019年1月1日10:59:59、线程4的查询时间范围为2019年1月1日07:00:00至2019年1月1日07:59:59、线程5的查询时间范围为2019年1月1日09:00:00至2019年1月1日09:59:59;接着,通过各线程在各自对应的查询时间范围内对预设数据库中进行并行查询。
具体地,在确定出用于并行查询预设数据库的线程的数量后,还可以确定各线程的单次查询时长,从而根据各线程分别对应的第一查询时间范围与各线程的单次查询时长,通过各线程在预设数据库中并行查询。其中,各线程的单次查询时长为各线程每次批处理的数据量,比如单次查询时长为60秒,则说明各线程每次批处理60秒的数据量,即各线程每次访问预设数据库可以查询1分钟的数据量,相当于每次扫1分钟的数据。基于上述示例,各线的查询时间范围分别为1小时,则各线程分别通过60次的查询,即可完成1小时的数据查询,从而得到目标数据发送状态的各条数据发送记录。
具体地,各线程在工作的时候,每次从预设数据库中读取一定时间范围的数据,如果时间范围太大,命中的数据量太大,会导致数据查询较慢;如果时间范围太小,命中的数据量太小,会导致读写预设数据库过于频繁,造成浪费。因此,需要根据数据特点合理设置单次查询时长,实现对单次查询时长的动态调整。
换言之,各线程的单次查询时长可以是根据经验动态设定的,该单次查询时长可以是根据经验预先设定的60秒、2分钟等,也可以是根据经验设定的其它数值,本申请实施例不对其作限定。其中,在设定各线程的单次查询时长时,可以对各线程的单次查询时长单独设置,例如一个线程的单次查询时长为60秒、另一个线程的单次查询时长为90秒、再一个线程的单次查询时长为2分钟等,也可以对各线程的单次查询时长统一设置,例如将所有线程的单次查询时长均设置为60秒。
在实际应用中,在根据经验设定各线程的单次查询时长时,可以通过设定最小查询时间范围(记作MinCreateTimeDuration),来设定各线程的单次查询时长,于是,可以先确定当前的最小查询时间范围,并将最小查询时间范围确定为各线程的单次查询时长。
具体地,可以根据当前针对预设数据库的数据访问量,来确定当前并行查询预设数据库的多个线程的数量,故可以先确定当前针对预设数据库的数据访问量,再根据数据访问量确定当前并行查询预设数据库的多个线程的数量。其中,当数据访问量比较大时,比如数据访问量大于或等于预设阈值时,则减少并行查询预设数据库的线程的数量,比如将并行查询预设数据库的线程的数量减少为5个,即确定当前并行查询预设数据库的多个线程的数量为5个;当数据访问量比较小时,比如数据访问量小于预设阈值时,则增加并行查询预设数据库的线程的数量,比如将并行查询预设数据库的线程的数量增加为15个,即确定当前并行查询预设数据库的多个线程的数量为15个。
换言之,可以根据当前针对预设数据库的访问压力,对并行访问预设数据库的线程的数量进行动态调整,对于高峰时期(即数据访问量比较大时),可以减少线程的数量,对于低峰时期(即数据访问量比较小时),可以增加线程的数量,从而无需人为干预。
在一种可能的实现方式中,在基于目标查询时间范围与线程的数量,确定各线程分别对应的第一查询时间范围的过程中,可以确定当前的最大查询时间范围,并根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围;接着,根据第二查询时间范围与线程的数量,确定各线程分别对应的第一查询时间范围。
具体地,上述最大查询时间范围可以记作MaxProcessDuration,该最大查询时间范围可以是根据经验预先设定的,比如通过跟踪对预设数据库的读写压力,设置合理的最大查询时间范围为7天,又比如通过跟踪对预设数据库的读写压力,设置合理的最大查询时间范围为10天,本申请实施例不对其作限制。
具体地,在确定出当前的最大查询时间范围后,可以根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的真实查询时间范围(即第二查询时间范围)。其中,在根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围的过程中,可以通过比较目标查询时间范围与最大查询时间范围,来确定第二查询时间范围,比如,当确定目标查询时间范围小于或等于最大查询时间范围时,可以将目标查询时间范围确定为第二查询时间范围,又比如,当确定目标查询时间范围大于最大查询时间范围,将预设的最大查询时间范围确定为第二查询时间范围,并生成相应的提示信息,以提示第二查询时间范围为最大查询时间范围,便于用户将超出最大查询时间范围的剩余的目标查询时间范围,作为下次查询的目标查询时间范围,再次进行数据发送记录的查询。
假如目标查询时间范围为5天,最大查询时间范围为7天,则目标查询时间范围小于最大查询时间范围,此时可以将目标查询时间范围确定为第二查询时间范围,即各个线程在目标查询时间范围内并行查询预设数据库中的目标数据发送状态的数据发送记录。又假如目标查询时间范围为9天,最大查询时间范围为7天,则目标查询时间范围大于最大查询时间范围,此时可以将最大查询时间范围确定为第二查询时间范围,即各个线程在最大查询时间范围内并行查询预设数据库中的目标数据发送状态的数据发送记录。其中,超出最大查询时间范围的目标查询时间范围(即2天),可以作为下次查询时的查询时间范围。
具体地,在确定出第二查询时间范围与线程的数量后,可以根据第二查询时间范围与线程的数量,确定各线程分别对应的第一查询时间范围。其中,可以根据线程的数量对查询时间范围进行平分,比如查询查询范围为5天,线程的数量为5个,则每个线程的查询时间范围(即第一查询时间范围)为1天。如果每个线程的单次查询时长为60秒,则每个线程需要1天时间完成查询工作。
在一个示例中,假如目标查询时间范围为1天(即24个小时),线程的数量为24,则可以确定每个线程的查询时间范围(即第一查询时间范围)为1小时,如果单次查询时长为60秒,则每个线程每次扫描查询1分钟的数据,总共60次即可完成1小时的扫描查询。
图2为本公开又一实施例提供的一种数据处理装置的结构示意图,如图2所示,该装置200可以包括接收模块201、第一处理模块202及第二处理模块203,其中:
接收模块201,用于接收数据发送记录的查询请求,查询请求包括目标数据发送状态与目标查询时间范围;
第一处理模块202,用于根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询,得到至少一条数据发送记录,预设数据库中存储有各个已发送的数据信息的数据发送记录;
第二处理模块203,用于确定各条数据发送记录分别对应的数据信息与目标发送对象,并将各条数据发送记录分别对应的数据信息再次发送给相应的目标发送对象。
在一种可能的实现方式中,第一处理模块在根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询时,具体用于:
通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询。
在一种可能的实现方式中,第一处理模块在通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询时,具体用于:
确定多个线程的数量与各线程的单次查询时长,并基于目标查询时间范围与数量,确定各线程分别对应的第一查询时间范围;
根据各线程分别对应的第一查询时间范围与各线程的单次查询时长,通过各线程在预设数据库中并行查询包括目标数据发送状态的各条数据发送记录。
在一种可能的实现方式中,第一处理模块在确定多个线程的数量时,具体用于确定当前针对预设数据库的数据访问量,并根据数据访问量,确定当前并行查询预设数据库的多个线程的数量;
第一处理模块在确定各线程的单次查询时长时,具体用于:
确定当前的最小查询时间范围,并将最小查询时间范围确定为各线程的单次查询时长。
在一种可能的实现方式中,第一处理模块在基于目标查询时间范围与数量,确定各线程分别对应的第一查询时间范围时,具体用于:
确定当前的最大查询时间范围,并根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围;
根据第二查询时间范围与数量,确定各线程分别对应的第一查询时间范围。
在一种可能的实现方式中,第一处理模块在根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围时,具体用于:
当确定目标查询时间范围小于或等于最大查询时间范围,将目标查询时间范围确定为第二查询时间范围;
当确定目标查询时间范围大于最大查询时间范围,将预设的最大查询时间范围确定为第二查询时间范围,并生成相应的提示信息,以提示第二查询时间范围为最大查询时间范围。
在一种可能的实现方式中,目标数据发送状态为数据发送失败状态。
在一种可能的实现方式中,还包括:存储模块,用于在预设数据库中存储各个已发送的数据信息的数据发送记录;
针对每个已发送的数据信息,存储模块具体用于:
确定每个已发送的数据信息的数据发送状态;
将每个已发送的数据信息的标识信息、每个已发送的数据信息的数据发送状态及每个已发送的数据信息的目标发送对象的标识信息,对应存储至预设数据库中,并在预设数据库中对应记录该存储的起始存储时间,来得到每个已发送的数据信息的数据发送记录。
本公开实施例提供的装置,通过基于接收到的目标数据发送状态与目标查询时间范围,在预设数据库中查询相应的数据发送记录,使得不仅依据目标数据发送状态在预设数据库中进行全表扫描式查询,而且依据目标查询时间范围在预设数据库中进行全表扫描式查询,从而有效提高查询结果的准确性、全面性和查询速度,减小对预设数据库的查询压力,最大程度减少对其它业务访问预设数据库的影响;确定各条数据发送记录分别对应的数据信息与目标发送对象,并将各条数据发送记录分别对应的数据信息再次发送给相应的目标发送对象,实现了对数据信息的重发、补发等,确保目标对象能够及时接收到相应的数据信息。
需要说明的是,本实施例为与上述的方法项实施例相对应的装置项实施例,本实施例可与上述方法项实施例互相配合实施。上述方法项实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述方法项实施例中。
下面参考图3,其示出了适于用来实现本公开实施例的电子设备300的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图3出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
电子设备包括存储器以及处理器,其中,这里的处理器可以称为下方所述的处理装置301,存储器包括下文中的只读存储器(ROM)302、随机访问存储器(RAM)303以及存储装置308中的至少一项,具体如下所示:
如图3所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图3示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收数据发送记录的查询请求,查询请求包括目标数据发送状态与目标查询时间范围;接着,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询,得到至少一条数据发送记录,预设数据库中存储有各个已发送的数据信息的数据发送记录;接着,确定各条数据发送记录分别对应的数据信息与目标发送对象,并将各条数据发送记录分别对应的数据信息再次发送给相应的目标发送对象。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块或单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取模块还可以被描述为“检测到发生预定直播事件时,获取预定直播事件对应的至少一种事件处理方式的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,提供了一种数据处理方法,包括:
接收数据发送记录的查询请求,查询请求包括目标数据发送状态与目标查询时间范围;
根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询,得到至少一条数据发送记录,预设数据库中存储有各个已发送的数据信息的数据发送记录;
确定各条数据发送记录分别对应的数据信息与目标发送对象,并将各条数据发送记录分别对应的数据信息再次发送给相应的目标发送对象。
在一种可能的实现方式中,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询,包括:
通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询。
在一种可能的实现方式中,通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询,包括:
确定多个线程的数量与各线程的单次查询时长,并基于目标查询时间范围与数量,确定各线程分别对应的第一查询时间范围;
根据各线程分别对应的第一查询时间范围与各线程的单次查询时长,通过各线程在预设数据库中并行查询包括目标数据发送状态的各条数据发送记录。
在一种可能的实现方式中,确定多个线程的数量,包括:
确定当前针对预设数据库的数据访问量,并根据数据访问量,确定当前并行查询预设数据库的多个线程的数量;
确定各线程的单次查询时长,包括:
确定当前的最小查询时间范围,并将最小查询时间范围确定为各线程的单次查询时长。
在一种可能的实现方式中,基于目标查询时间范围与数量,确定各线程分别对应的第一查询时间范围,包括:
确定当前的最大查询时间范围,并根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围;
根据第二查询时间范围与数量,确定各线程分别对应的第一查询时间范围。
在一种可能的实现方式中,根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围,包括:
当确定目标查询时间范围小于或等于最大查询时间范围,将目标查询时间范围确定为第二查询时间范围;
当确定目标查询时间范围大于最大查询时间范围,将预设的最大查询时间范围确定为第二查询时间范围,并生成相应的提示信息,以提示第二查询时间范围为最大查询时间范围。
根据本公开的一个或多个实施例,提供了一种数据处理装置,包括:
接收模块,用于接收数据发送记录的查询请求,查询请求包括目标数据发送状态与目标查询时间范围;
第一处理模块,用于根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询,得到至少一条数据发送记录,预设数据库中存储有各个已发送的数据信息的数据发送记录;
第二处理模块,用于确定各条数据发送记录分别对应的数据信息与目标发送对象,并将各条数据发送记录分别对应的数据信息再次发送给相应的目标发送对象。
在一种可能的实现方式中,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行查询时,具体用于:
通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询。
在一种可能的实现方式中,第一处理模块在通过多个线程,根据目标数据发送状态与目标查询时间范围,在预设数据库中进行并行查询时,具体用于:
确定多个线程的数量与各线程的单次查询时长,并基于目标查询时间范围与数量,确定各线程分别对应的第一查询时间范围;
根据各线程分别对应的第一查询时间范围与各线程的单次查询时长,通过各线程在预设数据库中并行查询包括目标数据发送状态的各条数据发送记录。
在一种可能的实现方式中,第一处理模块在确定多个线程的数量时,具体用于确定当前针对预设数据库的数据访问量,并根据数据访问量,确定当前并行查询预设数据库的多个线程的数量;
第一处理模块在确定各线程的单次查询时长时,具体用于:
确定当前的最小查询时间范围,并将最小查询时间范围确定为各线程的单次查询时长。
在一种可能的实现方式中,第一处理模块在基于目标查询时间范围与数量,确定各线程分别对应的第一查询时间范围时,具体用于:
确定当前的最大查询时间范围,并根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围;
根据第二查询时间范围与数量,确定各线程分别对应的第一查询时间范围。
在一种可能的实现方式中,第一处理模块在根据目标查询时间范围与最大查询时间范围,确定当前针对预设数据库的第二查询时间范围时,具体用于:
当确定目标查询时间范围小于或等于最大查询时间范围,将目标查询时间范围确定为第二查询时间范围;
当确定目标查询时间范围大于最大查询时间范围,将预设的最大查询时间范围确定为第二查询时间范围,并生成相应的提示信息,以提示第二查询时间范围为最大查询时间范围。
在一种可能的实现方式中,目标数据发送状态为数据发送失败状态。
在一种可能的实现方式中,还包括:存储模块,用于在预设数据库中存储各个已发送的数据信息的数据发送记录;
针对每个已发送的数据信息,存储模块具体用于:
确定每个已发送的数据信息的数据发送状态;
将每个已发送的数据信息的标识信息、每个已发送的数据信息的数据发送状态及每个已发送的数据信息的目标发送对象的标识信息,对应存储至预设数据库中,并在预设数据库中对应记录该存储的起始存储时间,来得到每个已发送的数据信息的数据发送记录。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。