数据更新方法和装置的制造方法
【技术领域】
[0001] 本申请涉及计算机技术领域,具体涉及数据处理领域,尤其涉及数据更新方法和 装置。
【背景技术】
[0002] 数据更新是以新数据替换或修改数据库中与之相对应的旧数据的过程。在当今信 息化的企业和组织中,存储着大量的数据,并且随着时间的推移存储的数据需要不断地更 新,例如网购平台中用户的累积消费、积分变更等。随着网络的发展,网购、交友等平台的用 户不断的增加,导致平台经常出现高并发应用场景,因此需要一种适用于高并发场景下的 数据更新方法。
[0003] 现有高并发场景下的数据更新操作大多是利用平台架构和容器本身的事务处理 机制完成,但是这种数据更新的方法难以保证复杂的高并发应用场景下的数据更新的准确 性。
【发明内容】
[0004] 本申请的目的在于提出一种改进的数据更新方法和装置,来解决以上【背景技术】部 分提到的技术问题。
[0005] 第一方面,本申请提供了一种数据更新方法,所述方法包括:获取至少一个更新数 据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据标识;利用预设的定时 器任务线程,周期性执行各所述更新数据请求对应的原子操作;基于所述更新数据请求对 应的原子操作,更新数据库中所述更新数据请求的数据标识对应的待更新数据。
[0006] 在一些实施例中,所述获取更新数据请求,包括:缓存客户端发送的各所述更新数 据请求到消息队列;将所述消息队列中的各所述更新数据请求分发给订阅模块,其中,所述 订阅模块用于接收所述更新数据请求,并根据所述数据标识将各所述更新数据请求插入更 新数据表;从所述更新数据表获取至少一个所述更新数据请求。
[0007] 在一些实施例中,所述原子操作包括如下步骤:从所述更新数据表获取所述更新 数据请求,并将该所述更新数据请求标记为未处理状态;处理所述未处理状态的更新数据 请求,并将处理中的所述更新数据请求的未处理状态更新为处理中状态;获取所述处理中 状态的更新数据请求的处理结果,并将所述更新数据请求的处理中状态更新为处理完成状 ??τ 〇
[0008] 在一些实施例中,所述方法还包括:在所述数据库中确定与所述处理中状态的更 新数据请求的数据标识对应的所述待更新数据;所述数据库利用所述增量数据,更新所确 定的待更新数据。
[0009] 在一些实施例中,所述方法还包括:判断所述数据库中是否存在与所述数据标识 对应的待更新数据;若是,则在所述数据库中确定所述待更新数据;若否,则在所述数据库 中存储所述数据标识,并设置与该所述数据标识对应的所述待更新数据为初始值。
[0010] 在一些实施例中,所述方法还包括:构建多个定时器任务进程和多个定时器任务 线程;根据所述更新数据请求的总量和各所述更新数据请求对应的原子操作的耗时,确定 开启所述定时器任务进程的数量和各所开启的定时器任务进程中开启的所述定时器任务 线程的数量以计算所述待更新数据的更新效率。
[0011] 第二方面,本申请提供了一种数据更新装置,所述装置包括:获取模块,配置用于 获取至少一个更新数据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据 标识;原子操作执行模块,配置用于利用预设的定时器任务线程,周期性执行各所述更新数 据请求对应的原子操作;更新模块,配置用于基于所述更新数据请求对应的原子操作,更新 数据库中所述更新数据请求的数据标识对应的待更新数据。
[0012] 在一些实施例中,所述获取模块进一步配置用于:缓存客户端发送的各所述更新 数据请求到消息队列;将所述消息队列中的各所述更新数据请求分发给订阅模块,其中,所 述订阅模块用于接收所述更新数据请求,并根据所述数据标识将各所述更新数据请求插入 更新数据表;从所述更新数据表获取至少一个所述更新数据请求。
[0013] 在一些实施例中,所述原子操作包括如下步骤:从所述更新数据表获取所述更新 数据请求,并将该所述更新数据请求标记为未处理状态;处理所述未处理状态的更新数据 请求,并将处理中的所述更新数据请求的未处理状态更新为处理中状态;获取所述处理中 状态的更新数据请求的处理结果,并将所述更新数据请求的处理中状态更新为处理完成状 ??τ 〇
[0014] 在一些实施例中,所述装置还包括:第一确定模块,配置用于在所述数据库中确定 与所述处理中状态的更新数据请求的数据标识对应的所述待更新数据请求;以及所述数据 库利用所述增量数据,更新所确定的待更新数据。
[0015] 在一些实施例中,所述装置还包括:判断模块,配置用于判断所述数据库中是否存 在与所述数据标识对应的待更新数据;若是,则在所述数据库中确定所述待更新数据;若 否,则在所述数据库中存储所述数据标识,并设置与该所述数据标识对应的所述待更新数 据为初始值。
[0016] 在一些实施例中,所述装置还包括:第二确定模块,配置用于构建多个定时器任务 进程和多个定时器任务线程;以及根据所述更新数据请求的总量和各所述更新数据请求对 应的原子操作的耗时,确定开启所述定时器任务进程的数量和各所开启的定时器任务进程 中开启的所述定时器任务线程的数量,以计算所述待更新数据的更新效率。
[0017] 本申请提供的数据更新方法和装置,通过预设的定时器任务线程周期性的执行所 获取的更新数据请求对应的原子操作,而后基于原子操作更新数据库中与上述更新数据请 求的数据标识相对应的待更新数据,从而有效的提高了高并发场景下的数据更新的准确 性。
【附图说明】
[0018] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它 特征、目的和优点将会变得更明显:
[0019] 图1是本申请可以应用于其中的示例性系统架构图;
[0020] 图2是根据本申请的数据更新方法的一个实施例的流程图;
[0021 ]图3是根据本申请的数据更新方法的又一个实施例的流程图;
[0022] 图4是根据本申请的数据更新方法中,原子操作的一种实现方式的示意性流程;
[0023] 图5是根据本申请的数据更新装置的一个实施例的结构示意图;
[0024] 图6是适于用来实现本申请实施例的客户端或服务器的计算机系统的结构示意 图。
【具体实施方式】
[0025] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描 述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了 便于描述,附图中仅示出了与有关发明相关的部分。
[0026] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本申请。
[0027] 图1示出了可以应用本申请的数据更新方法或数据更新装置的实施例的示例性系 统架构1〇〇。
[0028] 如图1所示,系统架构100可以包括客户端101,网络102、104,服务器103和服务器 105。网络102、104用以在客户端101、服务器103和服务器105之间提供通信链路的介质。网 络102、104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0029] 在本实施例中,客户端101并不特指某一类型的终端,客户端101可以为运行有多 个应用以向用户提供线上服务的服务器。服务器1〇5(也可称之为数据管理服务器)可以对 各个客户端103上运行的线上服务提供数据管理服务,例如,对线上服务的某个参数进行更 新和存储。客户端101可以接收用户在终端设备(未示出)上安装有各种通讯客户端应用产 生的数据,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社 交平台软件等。
[0030] 服务器103可以是提供各种服务的服务器,例如对客户端101的更新数据请求提供 支持的后台服务器。后台服务器可以对接收到的更新