CN105677849A - 数据更新方法和装置 - Google Patents
数据更新方法和装置 Download PDFInfo
- Publication number
- CN105677849A CN105677849A CN201610007958.2A CN201610007958A CN105677849A CN 105677849 A CN105677849 A CN 105677849A CN 201610007958 A CN201610007958 A CN 201610007958A CN 105677849 A CN105677849 A CN 105677849A
- Authority
- CN
- China
- Prior art keywords
- data
- updated
- request
- renewal request
- renewal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了数据更新方法和装置。所述方法的一具体实施方式包括:获取至少一个更新数据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据标识;利用预设的定时器任务线程,周期性执行各所述更新数据请求对应的原子操作;基于所述更新数据请求对应的原子操作,更新数据库中所述更新数据请求的数据标识对应的待更新数据。该实施方式提高了高并发场景下数据更新的准确性。
Description
技术领域
本申请涉及计算机技术领域,具体涉及数据处理领域,尤其涉及数据更新方法和装置。
背景技术
数据更新是以新数据替换或修改数据库中与之相对应的旧数据的过程。在当今信息化的企业和组织中,存储着大量的数据,并且随着时间的推移存储的数据需要不断地更新,例如网购平台中用户的累积消费、积分变更等。随着网络的发展,网购、交友等平台的用户不断的增加,导致平台经常出现高并发应用场景,因此需要一种适用于高并发场景下的数据更新方法。
现有高并发场景下的数据更新操作大多是利用平台架构和容器本身的事务处理机制完成,但是这种数据更新的方法难以保证复杂的高并发应用场景下的数据更新的准确性。
发明内容
本申请的目的在于提出一种改进的数据更新方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种数据更新方法,所述方法包括:获取至少一个更新数据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据标识;利用预设的定时器任务线程,周期性执行各所述更新数据请求对应的原子操作;基于所述更新数据请求对应的原子操作,更新数据库中所述更新数据请求的数据标识对应的待更新数据。
在一些实施例中,所述获取更新数据请求,包括:缓存客户端发送的各所述更新数据请求到消息队列;将所述消息队列中的各所述更新数据请求分发给订阅模块,其中,所述订阅模块用于接收所述更新数据请求,并根据所述数据标识将各所述更新数据请求插入更新数据表;从所述更新数据表获取至少一个所述更新数据请求。
在一些实施例中,所述原子操作包括如下步骤:从所述更新数据表获取所述更新数据请求,并将该所述更新数据请求标记为未处理状态;处理所述未处理状态的更新数据请求,并将处理中的所述更新数据请求的未处理状态更新为处理中状态;获取所述处理中状态的更新数据请求的处理结果,并将所述更新数据请求的处理中状态更新为处理完成状态。
在一些实施例中,所述方法还包括:在所述数据库中确定与所述处理中状态的更新数据请求的数据标识对应的所述待更新数据;所述数据库利用所述增量数据,更新所确定的待更新数据。
在一些实施例中,所述方法还包括:判断所述数据库中是否存在与所述数据标识对应的待更新数据;若是,则在所述数据库中确定所述待更新数据;若否,则在所述数据库中存储所述数据标识,并设置与该所述数据标识对应的所述待更新数据为初始值。
在一些实施例中,所述方法还包括:构建多个定时器任务进程和多个定时器任务线程;根据所述更新数据请求的总量和各所述更新数据请求对应的原子操作的耗时,确定开启所述定时器任务进程的数量和各所开启的定时器任务进程中开启的所述定时器任务线程的数量以计算所述待更新数据的更新效率。
第二方面,本申请提供了一种数据更新装置,所述装置包括:获取模块,配置用于获取至少一个更新数据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据标识;原子操作执行模块,配置用于利用预设的定时器任务线程,周期性执行各所述更新数据请求对应的原子操作;更新模块,配置用于基于所述更新数据请求对应的原子操作,更新数据库中所述更新数据请求的数据标识对应的待更新数据。
在一些实施例中,所述获取模块进一步配置用于:缓存客户端发送的各所述更新数据请求到消息队列;将所述消息队列中的各所述更新数据请求分发给订阅模块,其中,所述订阅模块用于接收所述更新数据请求,并根据所述数据标识将各所述更新数据请求插入更新数据表;从所述更新数据表获取至少一个所述更新数据请求。
在一些实施例中,所述原子操作包括如下步骤:从所述更新数据表获取所述更新数据请求,并将该所述更新数据请求标记为未处理状态;处理所述未处理状态的更新数据请求,并将处理中的所述更新数据请求的未处理状态更新为处理中状态;获取所述处理中状态的更新数据请求的处理结果,并将所述更新数据请求的处理中状态更新为处理完成状态。
在一些实施例中,所述装置还包括:第一确定模块,配置用于在所述数据库中确定与所述处理中状态的更新数据请求的数据标识对应的所述待更新数据请求;以及所述数据库利用所述增量数据,更新所确定的待更新数据。
在一些实施例中,所述装置还包括:判断模块,配置用于判断所述数据库中是否存在与所述数据标识对应的待更新数据;若是,则在所述数据库中确定所述待更新数据;若否,则在所述数据库中存储所述数据标识,并设置与该所述数据标识对应的所述待更新数据为初始值。
在一些实施例中,所述装置还包括:第二确定模块,配置用于构建多个定时器任务进程和多个定时器任务线程;以及根据所述更新数据请求的总量和各所述更新数据请求对应的原子操作的耗时,确定开启所述定时器任务进程的数量和各所开启的定时器任务进程中开启的所述定时器任务线程的数量,以计算所述待更新数据的更新效率。
本申请提供的数据更新方法和装置,通过预设的定时器任务线程周期性的执行所获取的更新数据请求对应的原子操作,而后基于原子操作更新数据库中与上述更新数据请求的数据标识相对应的待更新数据,从而有效的提高了高并发场景下的数据更新的准确性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的数据更新方法的一个实施例的流程图;
图3是根据本申请的数据更新方法的又一个实施例的流程图;
图4是根据本申请的数据更新方法中,原子操作的一种实现方式的示意性流程;
图5是根据本申请的数据更新装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的客户端或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的数据更新方法或数据更新装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括客户端101,网络102、104,服务器103和服务器105。网络102、104用以在客户端101、服务器103和服务器105之间提供通信链路的介质。网络102、104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
在本实施例中,客户端101并不特指某一类型的终端,客户端101可以为运行有多个应用以向用户提供线上服务的服务器。服务器105(也可称之为数据管理服务器)可以对各个客户端103上运行的线上服务提供数据管理服务,例如,对线上服务的某个参数进行更新和存储。客户端101可以接收用户在终端设备(未示出)上安装有各种通讯客户端应用产生的数据,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
服务器103可以是提供各种服务的服务器,例如对客户端101的更新数据请求提供支持的后台服务器。后台服务器可以对接收到的更新数据请求等进行分析处理,并将处理结果发送给数据库。
需要说明的是,本申请实施例所提供的数据更新方法一般由服务器103执行,相应地,数据更新装置一般设置于服务器103中。
应该理解,图1中的客户端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器,例如客户端101和服务器103均可以为服务器集群。
继续参考图2,示出了根据本申请的数据更新方法的一个实施例的流程200。所述的数据更新方法,包括以下步骤:
步骤201,获取至少一个更新数据请求。
在本实施例中,更新数据方法运行于其上的电子设备(例如图1所示的服务器103)可以通过有线连接方式或者无线连接方式从客户端(例如图1所示的客户端101)获取更新数据请求,其中,更新数据请求包括增量数据和该增量数据的数据标识,例如,上述更新数据请求可以为:[数据标识]123,[增量数据]888。这里,客户端可以根据用户利用终端上的各种应用产生的数据生成更新数据请求。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultrawideband)连接、以及其他现在已知或将来开发的无线连接方式。
步骤202,利用预设的定时器任务线程,周期性执行各更新数据请求对应的原子操作。
在本实施例中,数据更新方法运行于其上的电子设备(例如图1所示的服务器103)可以预先构建至少一个定时器任务进程,其中,上述每个定时器任务进程均可以包括多个定时器任务线程。上述电子设备利用上述定时器任务线程周期性执行上述获取的更新数据请求对应的原子操作。这里,通过上述定时器任务线程可以在预设的时间点或时间段定时启动并执行上述更新数据请求对应的原子操作。
在本实施例的一些可选的实现方式中,当上述获取的更新数据请求对应的原子操作被其中一个上述定时器任务线程所执行时,该更新数据请求对应的原子操作将不会切换到其它定时器任务线程。
步骤203,基于更新数据请求对应的原子操作,更新数据库中更新数据请求的数据标识对应的待更新数据。
在本实施例中,数据更新方法运行于其上的电子设备通过上述更新数据请求对应的原子操作向数据库发送该更新数据请求,使得数据库可以根据该更新数据请求中的增量数据的数据标识确定待更新数据,而后根据上述增量数据更新所确定的待更新数据。
在本实施例的一些可选的实现方式中,根据业务的需求,可以通过预设的规则更新上述待更新数据。这里,预设的规则可以是加法规则、减法规则等,例如该数据更新方法应用于转账系统中时,上述增量数据为转入金额,上述数据标识为账户名,上述待更新数据为账户余额,则可以通过加法规则更新待更新数据,更新后的数据为转入金额与账户余额的总和。根据原子操作的特性,上述更新数据请求对应的原子操作在执行的过程中是不会被任何其它事务或事件中断,保证了数据更新的准确性。
本申请的上述实施例提供的方法,通过预设的定时器任务线程周期性的执行上述更新数据请求对应的原子操作,而后基于原子操作更新数据库中与上述更新数据请求的数据标识相对应的待更新数据,保证了数据更新的准确性。
继续参考图3,图3是根据本申请的数据更新方法的又一个实施例的流程图300。该数据更新方法的流程300,包括以下步骤:
步骤301,缓存客户端发送的各更新数据请求到消息队列。
在本实施例中,数据更新方法运行于其上的电子设备(例如图1所示的服务器103)可以通过有线连接方式或者无线连接方式将客户端发送的更新数据请求缓存到消息队列中。这里,消息队列可以认为是更新数据请求在传输过程中用于保存更新数据请求的容器,它可以接收上述客户端发送的更新数据请求,也可以将更新数据请求发送给下一个应用程序。通过消息队列缓存上述更新数据请求可以避免接收和发送更新数据请求同时执行的要求。
步骤302,将消息队列中的各更新数据请求分发给订阅模块。
在本实施例中,上述电子设备将缓存在消息队列中的各更新数据请求以例如广播等形式分发给订阅上述更新数据请求的订阅模块。其中,订阅模块用于接收上述更新数据请求,并根据数据标识的对应关系将各更新数据请求插入更新数据表。
在本实施例的一些可选的实现方式中,在高并发数据的场景下,客户端向上述消息队列发送更新数据请求,作为示例,更新数据请求出现了重复缓存的情况;之后,再将消息队列中缓存的各更新数据请求发送到各订阅模块,这里,可以设置多个订阅模块来解决数据高并发的问题;最后,上述订阅模块根据接收到的更新数据请求的数据标识将上述更新数据请求插入到更新数据表中,可以使得重复缓存的更新数据请求只能在更新数据表中插入一次,保证了更新数据表中各更新数据请求的唯一性。
步骤303,从更新数据表获取至少一个更新数据请求。
在本实施例中,更新数据方法运行于其上的电子设备(例如图1所示的服务器103)可以通过有线连接方式或者无线连接方式从更新数据表中获取更新数据请求,其中,更新数据请求包括增量数据和该增量数据的数据标识。这里,可以通过步骤301和步骤302将客户端生成更新数据请求插入上述更新数据表中。
步骤304,根据更新数据请求的总量和各更新数据请求对应的原子操作的耗时,确定开启定时器任务进程的数量和各所开启的定时器任务进程中开启的定时器任务线程的数量。
在本实施例中,数据更新方法运行于其上的电子设备可以预先构建至少一个定时器任务进程,其中,上述每个定时器任务进程均可包括多个定时器任务线程。上述电子设备根据更新数据请求的总量和单个更新数据请求对应的原子操作的耗时,计算理想情况下所有更新数据请求的总耗时。根据上述计算获得的总耗时,确定需要开启定时器任务进程的数量和各所开启的定时器任务进程中开启的定时器任务线程的数量以最大可能的提高数据更新的效率,最大限度的利用服务器的计算资源。
在本实施例的一些可选的实现方式中,用m表示上述更新数据请求的总量,n1表示开启定时器任务进程的数量,n2各所开启的定时器任务进程中开启的定时器任务线程的数量,t表示单个更新数据请求对应的原子操作的耗时,T表示处理上述m个更新数据请求的总耗时,则这里,开启定时器任务进程的数量n1和各所开启的定时器任务进程中开启的定时器任务线程的数量n2可以根据实际的场景需要确定。例如,当开启的定时器任务线程的数量(即n1×n2)大于更新数据请求的总量(即m)时,不仅不能提高数据更新的效率,还会造成资源的浪费,当开启的定时器任务线程的数量(即n1×n2)远小于更新数据请求的总量(即m)时,可能会造成更新数据请求的堵塞,降低高数据更新的效率,因此,需要结合实际的场景需要确定开启定时器任务进程的数量n1和各所开启的定时器任务进程中开启的定时器任务线程的数量n2。
步骤305,利用预设的定时器任务线程,周期性执行各更新数据请求对应的原子操作。
在本实施例中,上述电子设备利用上述开启的定时器任务线程周期性执行上述获取的更新数据请求对应的原子操作。这里,通过上述定时器任务线程可以在预设的时间点或时间段定时启动并执行上述更新数据请求对应的原子操作。
步骤306,基于更新数据请求对应的原子操作,更新数据库中更新数据请求的数据标识对应的待更新数据。
在本实施例中,数据更新方法运行于其上的电子设备通过上述更新数据请求对应的原子操作向数据库发送该更新数据请求,使得数据库可以根据该更新数据请求中的增量数据的数据标识确定待更新数据,而后根据上述增量数据更新所确定的待更新数据。
从图3中可以看出,与图2对应的实施例相比,本实施例中的数据更新方法的流程300突出了对更新数据请求的缓存、分发以及确定开启定时器任务进程和各所开启的定时器任务进程中开启的定时器任务线程的数量的步骤。由此,本实施例描述的方案可以通过先对更新数据请求进行缓存,再将其根据数据标识插入更新数据表,从而避免了高并发场景下数据容易出现重复更新的问题,本实施例描述的方案还可以通过合理配置定时器任务进程的数量和定时器任务线程的数量,提高数据更新的效率。
进一步参考图4,其示出了根据本申请的数据更新方法中,原子操作的一种实现方式的示意性流程400。该原子操作的流程400,包括以下步骤:
步骤401,从更新数据表获取更新数据请求,并将该更新数据请求标记为未处理状态。
在本实现方式中,上述电子设备(例如图1所示的服务器103)中的定时器任务线程从上述更新数据表中获取根据数据标识插入的更新数据请求,例如[数据标识]123,[增量数据]888。之后,将上述获取的更新数据请求标记为未处理状态。这里,可以通过数据库语句完成上述操作,例如:select[数据标识],[增量数据]from[更新数据表]where[数据状态]=[未处理状态]。上述数据库语句可以将更新数据表中的更新数据请求的状态标记为未处理状态。
步骤402,处理未处理状态的更新数据请求,并将处理中的更新数据请求的未处理状态更新为处理中状态。
在本实现方式中,上述电子设备中的定时器任务进程处理上述标记为未处理状态的更新数据请求,之后,将处理中的更新数据请求的未处理状态更新为处理中状态。这里,可以通过数据库语句完成上述操作,例如:update[更新数据表]set[未处理状态]=[正在处理]whereid=[数据标识]。上述数据库语句可以将更新数据表中处于未处理状态的更新数据请求的状态更新为处理中状态。该步骤可以保证在处理中的定时器不被其它定时器任务线程提取,避免出现数据并发的情况。
在本实施例的一些可选的实现方式中,在上述数据库中确定与处理中状态的更新数据请求的数据标识对应的待更新数据;上述数据库利用增量数据,更新所确定的待更新数据。
在本实施例的一些可选的实现方式中,判断上述数据库中是否存在与上述数据标识对应的待更新数据;若是,则在上述数据库中确定待更新数据;若否,则在上述数据库中存储上述数据标识,并设置与该数据标识对应的待更新数据为初始值。
步骤403,获取处理中状态的更新数据请求的处理结果,并将更新数据请求的处理中状态更新为处理完成状态。
在本实现方式中,上述电子设备中的定时器任务进程获取上述处理中状态的更新数据请求更新完成的处理结果,并将该更新数据请求的处理中状态更新为处理完成状态。这里,可以通过数据库语句完成上述操作,例如:update[更新数据表]set[待更新数据字段]=[待更新数据]+[增量数据]whereid=[数据标识]。其中,上述待更新数据字段可以表示为更新后的待更新数据,上述数据库语句可以将上述更新数据表中完成更新处理的更新数据请求的处于处理中状态更新为处理完成状态。
需要说明的是,本领域技术人员可以理解的是,在上述原子操作的步骤完成后,可以通过设置例如destory操作等结束上述定时器任务线程。
本申请的数据更新方法提供的上述实现方式,通过给各更新数据请求设置不同的状态,避免了因同时开启多定时器任务线程而引发数据不准确的可能,上述原子操作保证了更新数据的一致性。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种数据更新装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例所述的数据更新装置500包括:获取模块501、原子操作执行模块502和更新模块503。其中,获取模块501配置用于获取至少一个更新数据请求,其中,更新数据请求包括增量数据和该增量数据的数据标识;原子操作执行模块,配置用于利用预设的定时器任务线程,周期性执行各更新数据请求对应的原子操作;更新模块503配置用于基于上述更新数据请求对应的原子操作,更新数据库中上述更新数据请求的数据标识对应的待更新数据。
在本实施例的一些可选的实现方式中,数据更新装置500的获取模块501可以进一步配置用于:缓存客户端发送的各更新数据请求到消息队列;将该消息队列中的各更新数据请求分发给订阅模块,其中,订阅模块用于接收更新数据请求,并根据数据标识将各更新数据请求插入更新数据表;从上述更新数据表获取至少一个更新数据请求。
在本实施例的一些可选的实现方式中,上述原子操作包括如下步骤:从上述更新数据表获取更新数据请求,并将该更新数据请求标记为未处理状态;处理上述未处理状态的更新数据请求,并将处理中的更新数据请求的未处理状态更新为处理中状态;获取上述处理中状态的更新数据请求的处理结果,并将上述更新数据请求的处理中状态更新为处理完成状态。
在本实施例的一些可选的实现方式中,数据更新装置500还包括第一确定模块(未示出),配置用于在上述数据库中确定与上述处理中状态的更新数据请求的数据标识对应的待更新数据;以及上述数据库利用增量数据,更新所确定的待更新数据。
在本实施例的一些可选的实现方式中,数据更新装置500还包括判断模块(未示出),配置用于判断上述数据库中是否存在与上述数据标识对应的待更新数据;若是,则在该数据库中确定上述待更新数据;若否,则在该数据库中存储上述数据标识,并设置与该数据标识对应的待更新数据为初始值。
在本实施例的一些可选的实现方式中,数据更新装置500还包括第二确定模块(未示出),配置用于构建多个定时器任务进程和多个定时器任务线程;以及根据更新数据请求的总量和各更新数据请求对应的原子操作的耗时,确定开启定时器任务进程的数量和各所开启的定时器任务进程中开启的定时器任务线程的数量,以计算待更新数据的更新效率。
本领域技术人员可以理解,上述数据更新装置500还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图5中未示出。
下面参考图6,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统600的结构示意图。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、原子操作执行模块、更新模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,获取模块还可以被描述为“获取至少一个更新数据请求的模块”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:获取至少一个更新数据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据标识;利用预设的定时器任务线程,周期性执行各所述更新数据请求对应的原子操作;基于所述更新数据请求对应的原子操作,更新数据库中所述更新数据请求的数据标识对应的待更新数据。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种数据更新方法,其特征在于,包括:
获取至少一个更新数据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据标识;
利用预设的定时器任务线程,周期性执行各所述更新数据请求对应的原子操作;
基于所述更新数据请求对应的原子操作,更新数据库中所述更新数据请求的数据标识对应的待更新数据。
2.根据权利要求1所述的数据更新方法,其特征在于,所述获取更新数据请求,包括:
缓存客户端发送的各所述更新数据请求到消息队列;
将所述消息队列中的各所述更新数据请求分发给订阅模块,其中,所述订阅模块用于接收所述更新数据请求,并根据所述数据标识将各所述更新数据请求插入更新数据表;
从所述更新数据表获取至少一个所述更新数据请求。
3.根据权利要求1所述的数据更新方法,其特征在于,所述原子操作包括如下步骤:
从所述更新数据表获取所述更新数据请求,并将该所述更新数据请求标记为未处理状态;
处理所述未处理状态的更新数据请求,并将处理中的所述更新数据请求的未处理状态更新为处理中状态;
获取所述处理中状态的更新数据请求的处理结果,并将所述更新数据请求的处理中状态更新为处理完成状态。
4.根据权利要求2所述的数据更新方法,其特征在于,所述方法还包括:
在所述数据库中确定与所述处理中状态的更新数据请求的数据标识对应的所述待更新数据;
所述数据库利用所述增量数据,更新所确定的待更新数据。
5.根据权利要求4所述的数据更新方法,其特征在于,所述方法还包括:
判断所述数据库中是否存在与所述数据标识对应的待更新数据;
若是,则在所述数据库中确定所述待更新数据;
若否,则在所述数据库中存储所述数据标识,并设置与该所述数据标识对应的所述待更新数据为初始值。
6.根据权利要求1所述的数据更新方法,其特征在于,所述方法还包括:
构建多个定时器任务进程和多个定时器任务线程;
根据所述更新数据请求的总量和各所述更新数据请求对应的原子操作的耗时,确定开启所述定时器任务进程的数量和各所开启的定时器任务进程中开启的所述定时器任务线程的数量,以计算所述待更新数据的更新效率。
7.一种数据更新装置,其特征在于,包括:
获取模块,配置用于获取至少一个更新数据请求,其中,所述更新数据请求包括增量数据和该增量数据的数据标识;
原子操作执行模块,配置用于利用预设的定时器任务线程,周期性执行各所述更新数据请求对应的原子操作;
更新模块,配置用于基于所述更新数据请求对应的原子操作,更新数据库中所述更新数据请求的数据标识对应的待更新数据。
8.根据权利要求7所述的数据更新装置,其特征在于,所述获取模块进一步配置用于:
缓存客户端发送的各所述更新数据请求到消息队列;
将所述消息队列中的各所述更新数据请求分发给订阅模块,其中,所述订阅模块用于接收所述更新数据请求,并根据所述数据标识将各所述更新数据请求插入更新数据表;
从所述更新数据表获取至少一个所述更新数据请求。
9.根据权利要求7所述的数据更新装置,其特征在于,所述原子操作包括如下步骤:
从所述更新数据表获取所述更新数据请求,并将该所述更新数据请求标记为未处理状态;
处理所述未处理状态的更新数据请求,并将处理中的所述更新数据请求的未处理状态更新为处理中状态;
获取所述处理中状态的更新数据请求的处理结果,并将所述更新数据请求的处理中状态更新为处理完成状态。
10.根据权利要求9所述的数据更新装置,其特征在于,所述装置还包括:
第一确定模块,配置用于在所述数据库中确定与所述处理中状态的更新数据请求的数据标识对应的所述待更新数据;以及
所述数据库利用所述增量数据,更新所确定的待更新数据。
11.根据权利要求10所述的数据更新装置,其特征在于,所述装置还包括:
判断模块,配置用于判断所述数据库中是否存在与所述数据标识对应的待更新数据;
若是,则在所述数据库中确定所述待更新数据;
若否,则在所述数据库中存储所述数据标识,并设置与该所述数据标识对应的所述待更新数据为初始值。
12.根据权利要求7所述的数据更新装置,其特征在于,所述装置还包括:
第二确定模块,配置用于构建多个定时器任务进程和多个定时器任务线程;以及
根据所述更新数据请求的总量和各所述更新数据请求对应的原子操作的耗时,确定开启所述定时器任务进程的数量和各所开启的定时器任务进程中开启的所述定时器任务线程的数量,以计算所述待更新数据的更新效率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610007958.2A CN105677849A (zh) | 2016-01-06 | 2016-01-06 | 数据更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610007958.2A CN105677849A (zh) | 2016-01-06 | 2016-01-06 | 数据更新方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105677849A true CN105677849A (zh) | 2016-06-15 |
Family
ID=56299166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610007958.2A Pending CN105677849A (zh) | 2016-01-06 | 2016-01-06 | 数据更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677849A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106777393A (zh) * | 2017-02-24 | 2017-05-31 | 北京新能源汽车股份有限公司 | 一种数据更新方法及装置 |
CN107818170A (zh) * | 2017-11-14 | 2018-03-20 | 北京思特奇信息技术股份有限公司 | 一种访问数据库记录的方法和系统 |
CN107908472A (zh) * | 2017-09-30 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据同步装置、方法及计算机可读存储介质 |
CN108055343A (zh) * | 2017-12-26 | 2018-05-18 | 北京奇虎科技有限公司 | 用于机房的数据同步方法及装置 |
CN108335091A (zh) * | 2018-01-26 | 2018-07-27 | 深圳盛付通科技有限公司 | 一种在高并发支付场景下保持账户余额一致性的方法及系统 |
CN108509455A (zh) * | 2017-02-28 | 2018-09-07 | 百度在线网络技术(北京)有限公司 | 数据表处理方法和装置 |
CN108959032A (zh) * | 2018-06-29 | 2018-12-07 | 北京金山安全软件有限公司 | 一种服务器业务指标的实时监视方法、装置及电子设备 |
CN109284305A (zh) * | 2018-08-23 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 一种数据的更新方法、装置及系统 |
CN109669791A (zh) * | 2018-12-22 | 2019-04-23 | 网宿科技股份有限公司 | 交互方法、服务器及计算机可读存储介质 |
CN110019261A (zh) * | 2017-09-30 | 2019-07-16 | 北京国双科技有限公司 | 数据查询方法和装置 |
CN110597909A (zh) * | 2019-09-12 | 2019-12-20 | 广州南翼信息科技有限公司 | 一种保持客户端和多终端设备状态一致的方法 |
CN111459893A (zh) * | 2020-04-03 | 2020-07-28 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置和电子设备 |
CN117255055A (zh) * | 2023-11-15 | 2023-12-19 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621737A (zh) * | 2008-06-30 | 2010-01-06 | 北京腾瑞万里科技有限公司 | 数据更新方法及系统 |
CN102202072A (zh) * | 2010-03-23 | 2011-09-28 | 盛霆信息技术(上海)有限公司 | 互联网站数据的单向同步方法 |
CN102625156A (zh) * | 2011-01-27 | 2012-08-01 | 天脉聚源(北京)传媒科技有限公司 | 一种信息同步的方法和系统 |
CN103823797A (zh) * | 2012-11-16 | 2014-05-28 | 镇江诺尼基智能技术有限公司 | 基于ftp协议的行业数据库数据实时同步系统 |
-
2016
- 2016-01-06 CN CN201610007958.2A patent/CN105677849A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621737A (zh) * | 2008-06-30 | 2010-01-06 | 北京腾瑞万里科技有限公司 | 数据更新方法及系统 |
CN102202072A (zh) * | 2010-03-23 | 2011-09-28 | 盛霆信息技术(上海)有限公司 | 互联网站数据的单向同步方法 |
CN102625156A (zh) * | 2011-01-27 | 2012-08-01 | 天脉聚源(北京)传媒科技有限公司 | 一种信息同步的方法和系统 |
CN103823797A (zh) * | 2012-11-16 | 2014-05-28 | 镇江诺尼基智能技术有限公司 | 基于ftp协议的行业数据库数据实时同步系统 |
Non-Patent Citations (1)
Title |
---|
孟彦等: "面向XML物化视图远程增量维护的版本管理技术研究", 《计算机工程与设计》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106777393A (zh) * | 2017-02-24 | 2017-05-31 | 北京新能源汽车股份有限公司 | 一种数据更新方法及装置 |
CN106777393B (zh) * | 2017-02-24 | 2019-11-08 | 北京新能源汽车股份有限公司 | 一种数据更新方法及装置 |
CN108509455A (zh) * | 2017-02-28 | 2018-09-07 | 百度在线网络技术(北京)有限公司 | 数据表处理方法和装置 |
CN107908472A (zh) * | 2017-09-30 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据同步装置、方法及计算机可读存储介质 |
CN110019261B (zh) * | 2017-09-30 | 2021-11-23 | 北京国双科技有限公司 | 数据查询方法和装置 |
CN110019261A (zh) * | 2017-09-30 | 2019-07-16 | 北京国双科技有限公司 | 数据查询方法和装置 |
CN107818170A (zh) * | 2017-11-14 | 2018-03-20 | 北京思特奇信息技术股份有限公司 | 一种访问数据库记录的方法和系统 |
CN107818170B (zh) * | 2017-11-14 | 2021-09-28 | 北京思特奇信息技术股份有限公司 | 一种访问数据库记录的方法和系统 |
CN108055343B (zh) * | 2017-12-26 | 2021-07-13 | 北京奇虎科技有限公司 | 用于机房的数据同步方法及装置 |
CN108055343A (zh) * | 2017-12-26 | 2018-05-18 | 北京奇虎科技有限公司 | 用于机房的数据同步方法及装置 |
CN108335091A (zh) * | 2018-01-26 | 2018-07-27 | 深圳盛付通科技有限公司 | 一种在高并发支付场景下保持账户余额一致性的方法及系统 |
CN108959032A (zh) * | 2018-06-29 | 2018-12-07 | 北京金山安全软件有限公司 | 一种服务器业务指标的实时监视方法、装置及电子设备 |
CN109284305A (zh) * | 2018-08-23 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 一种数据的更新方法、装置及系统 |
CN109669791A (zh) * | 2018-12-22 | 2019-04-23 | 网宿科技股份有限公司 | 交互方法、服务器及计算机可读存储介质 |
CN110597909A (zh) * | 2019-09-12 | 2019-12-20 | 广州南翼信息科技有限公司 | 一种保持客户端和多终端设备状态一致的方法 |
CN110597909B (zh) * | 2019-09-12 | 2023-03-14 | 广州南翼信息科技有限公司 | 一种保持客户端和多终端设备状态一致的方法 |
CN111459893A (zh) * | 2020-04-03 | 2020-07-28 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置和电子设备 |
CN111459893B (zh) * | 2020-04-03 | 2023-08-22 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置和电子设备 |
CN117255055A (zh) * | 2023-11-15 | 2023-12-19 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
CN117255055B (zh) * | 2023-11-15 | 2024-02-23 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677849A (zh) | 数据更新方法和装置 | |
CN105979009B (zh) | 一种针对云应用容器的增加负载自动均衡方法 | |
WO2019096326A1 (en) | Blockchain-based room inventory management system | |
US9697042B2 (en) | Extensibility of business process and application logic | |
CN108428104A (zh) | 薪资计算方法、应用服务器及计算机可读存储介质 | |
CN110263307A (zh) | 报表生成方法、服务器及计算机可读存储介质 | |
US9430219B2 (en) | Revision safe upgrade in a hybrid cloud landscape | |
CN107870814B (zh) | 用于内容管理批处理的方法和设备 | |
CN113315824B (zh) | 一种应用的灰度发布方法、装置及应用的灰度发布系统 | |
CN114170032B (zh) | 一种保险产品的上线方法、装置、电子设备及存储介质 | |
CN108154298A (zh) | 配送任务分配方法、装置、电子设备及计算机存储介质 | |
CN110276605B (zh) | 规则生成方法、装置、电子设备及可读存储介质 | |
CN115358401A (zh) | 一种推理服务的处理方法、装置、计算机设备及存储介质 | |
CN111401991A (zh) | 数据的信息配送方法及装置、存储介质、计算机设备 | |
CN110223179A (zh) | 资金的数据处理方法、装置、系统、介质 | |
CN109428926A (zh) | 一种调度任务节点的方法和装置 | |
CN109445911A (zh) | Cvm实例的调整方法、装置、云平台和服务器 | |
JP2020003986A (ja) | 在庫引当処理装置、在庫引当処理方法、および在庫引当処理プログラム | |
CN113204368A (zh) | 应用程序处理方法、服务器及存储介质 | |
JP2019144978A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
CN107463680A (zh) | 一种整合单据的方法及装置 | |
CN108833328A (zh) | 云管理方法、装置、存储介质及处理器 | |
CN106130757B (zh) | 信息获取方法和装置 | |
CN115238988A (zh) | 一种纪念币的分配方法、系统及相关设备 | |
JP2000085925A (ja) | 補給計画作成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160615 |
|
RJ01 | Rejection of invention patent application after publication |