CN111522827A - 一种数据更新方法、装置和电子设备 - Google Patents
一种数据更新方法、装置和电子设备 Download PDFInfo
- Publication number
- CN111522827A CN111522827A CN202010282625.7A CN202010282625A CN111522827A CN 111522827 A CN111522827 A CN 111522827A CN 202010282625 A CN202010282625 A CN 202010282625A CN 111522827 A CN111522827 A CN 111522827A
- Authority
- CN
- China
- Prior art keywords
- queue
- target
- data table
- request
- data
- 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.)
- Granted
Links
Images
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/2365—Ensuring data consistency and integrity
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据更新方法、装置和电子设备,其中,方法包括:在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。本发明实施例提供的数据更新方法可以提升数据库与缓存的一致性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据更新方法、装置和电子设备。
背景技术
相关技术中,在大流量高并发的应用场景中,往往采用缓存存储热点数据,以减少频繁的从数据库中读取数据时使数据库的读写压力。但是,当更新数据库中存储数据时,可能因为未及时修改缓存,或者修改缓存失败,使得缓存中的数据与数据库中的新数据不一致的情况,将使高一致性需求场景发生错误(例如:支付场景等,将造成资金错误)。
由此可见,相关技术中的数据更新方法存在可靠性差的缺陷。
发明内容
本发明实施例提供一种数据更新方法、装置和电子设备,以解决相关技术中的数据更新方法存在的可靠性差的问题。
为了解决上述技术问题,本发明实施例是这样实现的:
第一方面,本发明实施例提供了一种数据更新方法,包括:
在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;
根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;
按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。
第二方面,本发明实施例还提供了一种数据更新装置,所述装置包括:
获取模块,用于在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;
嵌入模块,用于根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;
执行模块,用于按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。
第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例第一方面提供的所述数据更新方法中的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面提供的所述数据更新方法中的步骤。
本发明实施例提供的数据更新方法,包括:在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。这样,对数据库中存储的数据表进行操作的过程中,与同一数据表对应的操作请求,将按照时间戳的顺序排列于对应的操作队列中,从而根据时间排列顺序依次执行各个操作请求,避免了在数据库更新之后读取更新前的旧数据至缓存中,从而提升了数据库与缓存中存储的数据的一致性,进而提升了数据更新方法的可靠性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据更新方法的流程图;
图2是本发明实施例提供的一种数据更新方法的应用场景图之一;
图3是与操作队列一一对应的线程的流程图;
图4是本发明实施例提供的一种数据更新方法的应用场景图之二;
图5是本发明实施例提供的一种数据更新方法的应用场景图之三;
图6是本发明实施例提供的一种数据更新装置的结构图;
图7是本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的数据更新方法,在更新数据库中存储的数据的情况下,确保缓存中的数据与数据库中的存储数据保持一致。
在具体实施中,数据库用于存储数据,并在电子设备或应用程序需要使用数据时,将数据库中存储的数据读取至缓存中存储,以使电子设备或应用程序从缓存中读取数据;在电子设备或应用程序输出新数据时,将该新数据写入至数据库中,以更新所述数据库,并同时将缓存中的同一数据更新为该新数据。
请参见图1,是本发明实施例提供的数据更新方法的流程图,如图1所示,本发明实施例提供的数据更新方法可以包括以下步骤:
步骤101、在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳。
在具体实施中,上述数据表也可以简称为:表,其可以表示数据库中临时保存数据的网格虚拟表(即表示数据库中数据的一个表),另外,上述操作请求的操作类型可以包括写入操作请求或读取操作请求,上述操作请求的时间戳可以包括生成所述操作请求的时间。
步骤102、根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列。
在具体实施中,上述目标操作队列中的个操作请求按照时间的顺序,即由先产生的操作请求向后产生的操作请求的顺序排列,且每一操作队列对应一个线程,以通过该线程从操作队列中排列于队列头的操作请求开始执行该操作队列。
步骤103、按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。
在具体实施中,上述目标操作队列为阻塞队列,每次仅能够执行一个操作请求,在操作请求执行完毕后,再执行该操作队列中排列于该操作请求之后的另一操作请求。通过队列的方式维护操作的数据,而不是维护操作后的数据,能够确保维护数据的请求按照数据的运行顺序进行,从而能够确保缓存与数据库中存储的数据的一致性。
作为一种可选的实施方式,在所述在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳之前,所述方法还包括:
获取所述数据库中存储的N个数据表;
基于所述N个数据表生成M个操作队列;
其中,所述N个数据表与所述M个操作队列关联,所述N为大于或者等于所述M的正整数,在所述M小于所述N的情况下,所述M个操作队列包括(M-1)个第一操作队列和一个第二操作队列,所述(M-1)个第一操作队列与(M-1)个数据表一一对应,所述第二操作队列与(N-M+1)个数据表关联,所述第一操作队列对应的数据表的更新频率大于所述第二操作队列关联的数据表的更新频率。
在具体实施中,可以预先配置M的取值,例如:N等于50的情况下,M配置为10个,这样,可以减少操作队列的数量,从而减少线程的数量,以减少计算资源的占用。
另外,还可以设置一预设频率,以根据所述第一操作队列对应的数据表的更新频率大于或者等于预设频率的数据表的数量值,所述第二操作队列关联的数据表的更新频率小于所述预设频率对数据表对应的操作队列进行划分,需要说明的是,在设置预设频率以确定数据表对应的操作队列的实施方式中,上述M的数值可以发生改变,例如:在某一时段,N个数据表的更新频率均增加时,则M的数值可以增加;在另一时段,N个数据表的更新频率均减小时,则M的数值可以减小。在具体实施中,上述预设频率的取值可以根据用户的选择设置,例如设置为一天更新一次或者一个星期更新一次等。
这样,可以将针对更新频率低的多个数据表的操作请求并入一个操作队列中,避免了创建单独的线程以执行操作频率低的操作队列,从而减少了资源的消耗。
作为一种可选的实施方式,所述基于所述N个数据表生成M个操作队列,包括:
根据所述数据库中存储的更新频率大于或者等于预设频率的数据表的数量值,生成M个操作队列,其中,所述第一操作队列对应的数据表的更新频率大于或者等于所述预设频率,所述第二操作队列对应的数据表的更新频率小于所述预设频率,每一个操作队列对应一个操作队列标识;
根据所述M个操作队列的操作队列标识,生成M个二元组,其中,每一二元组包括数据表的数据表标识和与所述数据表标识对应的操作队列标识;
所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求针对的数据表的数据表标识,从所述M个二元组中确定目标二元组;
根据所述目标二元组确定目标操作队列,其中,所述目标二元组包括所述目标操作队列的操作队列标识;
根据所述操作请求的时间戳,将所述操作请求嵌入至与所述目标操作队列中的目标位置。
在具体实施中,上述操作队列标识和数据表标识可以是由数字、字母、符号等中的至少一种组成的字符串,以根据该字符串确定唯一对应的操作队列和数据表。
在实际应用中,可以采用以下编程程序实现队列的集合:
Map<String,LinkedBlockingQueue<E>>
其中,String表示二元组中的数据表标识,LinkedBlockingQueue<E>表示操作队列表示,通过执行上述编程程序,可以将操作请求<E>分配至LinkedBlockingQueue<E>对应的操作队列中,其中,<E>中保存着操作请求的时间戳和操作类型和操作的数据表等。
这样,在接收请求的情况下,可以简化确定请求对应的操作队列的过程。
作为一种可选的实施方式,所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求,生成第一操作指令,其中,所述第一操作指令携带有所述操作请求的操作类型、针对的数据表的数据表标识以及时间戳;
基于所述第一操作指令中的数据表标识和所述时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的目标位置;
所述按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求,包括:
按照所述目标操作队列中的操作指令的排列顺序,执行所述目标操作队列中的各个操作指令。
在具体实施中,上述操作指令也可以称之为command,所述操作类型可以包括读取操作或者写入操作,且上述执行操作指令可以理解为按照该操作指令的操作类型对该操作指令携带的数据表标识对应的数据表执行相应的写入或者读取操作。
另外,上述路由选择方式可以理解为确定最佳路径的方式,在本实施方式中,可以理解为根据控制指令中携带的数据表标识确定对应的数据表以及该数据表对应的操作队列。例如:如图2所示应用场景中,在接收到操作数据库的请求的情况下,获取该操作请求的操作类型、所操作的数据表的数据表标识,以及产生该操作请求的时间戳,以生成command,并采用路由选择的方式将该command嵌入至相应的操作队列中,其中,该相应的操作队列表示该操作请求所操作的数据表对应的操作队列。
这样,可以根据操作指令携带的操作类型和数据表标识准确的确定操作请求对应的数据表,并执行相应种类的操作,从而提升了数据更新方法的准确性。
进一步的,上述执行所述目标操作队列中的各个操作指令包括:
在执行至所述目标操作队列中的目标操作指令的情况下,获取所述目标操作指令携带的时间戳;
在所述目标操作指令携带的时间戳小于所述数据库的时间戳的情况下,从所述目标操作队列中删除所述目标操作指令,并从所述目标操作队列的队列头开始执行所述目标操作队列中的各个操作指令。
其中,上述队列头可以理解为所述目标操作队列中排列于第一位的操作指令。上述操作指令可以用于更新缓存或者数据库中存储的数据。另外,上述数据库的时间戳,可以是最近一次更新数据库的操作指令的时间戳。
具体的,如图3所示,上述通过与操作队列一一对应的线程执行所述目标操作队列中的各个操作指令的过程包括以下步骤:
步骤301、读取所述目标操作队列的队列头。
步骤302、执行与所述队列头的操作指令对应的更新操作。
在具体实施中,上述更新操作可以包括更新缓存和更新数据库的操作。
步骤303、判断时间戳是否小于所述数据库的时间戳。
其中,上述判断时间戳是否小于所述数据库的时间戳可以理解为判断所述队列头的操作指令的时间戳是否大于或者等于所述数据库的时间戳。
在步骤303的判断结果为“否”的情况下,执行步骤304,否则执行步骤305和步骤306。
步骤304、确定所述操作指令执行成功。
需要说明的是,在所述操作指令执行成功后,所述操作指令失效,即所述目标操作队列的队列头更新为至排列于该操作指令之后的下一操作指令。
步骤305、确定所述操作指令执行失败。
另外,在步骤303的判断结果为“否”的情况下,确定该目标操作指令针对的数据与数据库中当前存储的数据不匹配,从而使其执行失败。
步骤306、删除所述控制指令,并重复执行步骤301。
本实施方式中,在更新数据之后,当接收到在更新数据之前产生的操作数据库的请求时,为避免其将数据库中存储的数据与更新前的数据相混淆,从而删除该操作请求,并重新执行所述目标操作队列,以提升更新方法的可靠性。
作为一种可选的实施方式,所示根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求,生成第一操作指令和第二操作指令,其中,所述第一操作指令用于更新所述数据表中的数据,所述第二操作指令用于将所述更新后的数据表存储于缓存中,所述第一操作指令和所述第二操作指令均携带有所述操作请求的数据表标识和时间戳;
基于所述第一操作指令和所述第二操作指令中的数据表标识和时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的第一目标位置,并将所述第二操作指令嵌入至所述目标操作队列的第二目标位置,其中,所述第二目标位置与所述第一目标位置相邻且排列于所述第一目标位置之后。
本实施方式中,上述第一操作指令中携带的操作种类为写入操作种类,所述第二操作指令中携带的操作种类为读取操作种类,且所述第一操作指令和所述第二操作指令携带有相同的数据表标识,另外,第一操作指令和第二操作指令携带的时间戳也可以相同。当然,在具体实施中,第一操作指令和第二操作指令携带的时间戳也可以不同,且第二操作指令携带的时间戳略晚于第一操作指令携带的时间戳。
在相关技术中,在当读取数据时,发现缓存为空,则从数据库中读取数据,以更新缓存,若这时候有写入操作将新数据写入数据库,就会导致缓存和数据库中的数据不一致。本实施方式中,将读数据+写数据作为一个整体操作添加到队列中,这就保证了在读写完成之前,后续的更新操作不会被提前执行。
本实施方式中,将写入和读取作为一个整体的操作步骤嵌入至操作队列中,以达到在数据库的数据更新的情况下,将更新后的数据同步至缓存中,并确保缓存与数据库中的数据更新至一致之前,后续从操作步骤不会执行,从而确保了后续操作读取缓存中的数据的情况下,其读取的数据与数据库中存储的数据是一致的,从而进一步确保了数据更新方法的可靠性。
作为一种可选的实施方式,所述操作请求为写入操作请求或者读取操作请求,在所述根据所述操作请求的时间戳,将所述操作请求分配至与所述数据表对应的目标操作队列中之后,所述方法还包括:
在所述目标操作队列中包括第一写入操作请求和第二写入操作请求,且所述第一写入操作请求和所述第二写入操作请求之间无读取操作请求的情况下,获取所述第一写入操作请求和所述第二写入操作请求的写入数据;
若所述第一写入操作请求和所述第二写入操作请求的写入数据相同,则将所述第一写入操作请求和所述第二写入操作请求合并。
在具体实施中,上述第一写入操作请求和所述第二写入操作请求的写入数据相同,可以表示为第一写入操作请求和第二写入操作请求为重复的写入操作,具体可以是:在对数据表写入一更新内容之后,再次将相同的更新内容写入至该数据表,例如:对每一数据表执行以下写入操作:步骤一:a=1;步骤二:a=2;步骤三:a=1,则上述a=1、a=2和a=1的步骤即为重复步骤,经过合并处理后,可以合并为一个步骤,即a=1的步骤,这样便减化了两个步骤。需要说明的是,需要确保上述重复的写入操作请求之间无读取操作请求,例如,上述步骤一:a=1;步骤二:a=2;步骤三:a=1之间无读取的操作,否则不能讲上述重复步骤进行合并。
本发明实施例中,通过将重复的写入操作请求进行合并的方式,可以避免不必要的对数据库中存储的数据进行频繁的更新,从而简化了所述数据更新方法的过程,并节约了资源。
在具体实施中,数据库往往与多台计算机(即计算机集群)进行连接,以使多台计算机共同更新和读取数据库中存储的数据。
在一种实施方式中,每一台计算机分别创建与所述数据库中存储的数据表对应的操作队列,并在运行中,对每一个操作队列分配一个线程以执行该操作队列。
例如:如图4所示应用场景中,若与数据库连接的机器集群包括机器A、机器B以及机器C,与数据库中存储的数据表对应的操作队列包括队列A、队列B以及队列C,则机器A、机器B以及机器C分别创建3个线程以分别执行队列A、队列B以及队列C,这样,机器集群中一共包括9个线程。
这样,可以通过针对每一台机器分别进行队列的划分,使针对不同数据的操作互不影响能够并行处理,且互不影响,能够减轻操作的阻塞。
在另一种实施方式中,机器集群共同创建与所述数据库中存储的数据表对应的操作队列,并在运行中,对每一个操作队列分配一个线程以执行该操作队列。
在具体实施中,可以为机器集群设置一中控设备,以在该中控设备中创建与数据库中的数据表一一对应的操作队列,以使每个数据通过其对应的操作队列的线程进行读写更新操作,这样,在机器集群中的某一具体机器需要对目标数据表中的数据进行读写操作时,可以将其操作请求发送至中控设备,以嵌入至中控设备中与目标数据表对应的操作队列中,实现对目标数据表的读写更新操作。
例如:如图5所示应用场景中,若与数据库连接的机器集群包括机器A、机器B以及机器C,与数据库中存储的数据表对应的操作队列包括队列A、队列B以及队列C,则机器A、机器B以及机器C通过同一线程执行队列A中的操作请求、通过同一线程执行队列B中的操作请求,并通过同一线程执行队列C中的操作请求,这样,机器集群中一共包括3个线程。
这样,这样相比每台机器分别维护不同的操作队列,能够使操作队列中的操作请求更加紧凑,并减少了在更新数据时候,进行同步操作产生的损耗。
本发明实施例提供的数据更新方法,包括:在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。这样,对数据库中存储的数据表进行操作的过程中,与同一数据表对应的操作请求,将按照时间戳的顺序排列于对应的操作队列中,从而根据时间排列顺序依次执行各个操作请求,避免了在数据库更新之后读取更新前的旧数据至缓存中,从而提升了数据库与缓存中存储的数据的一致性,进而提升了数据更新方法的可靠性。
请参阅图6,是本发明实施例提供的一种数据更新装置的结构图,如图6所示,数据更新装置600包括:
第一获取模块601,用于在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;
嵌入模块602,用于根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;
执行模块603,用于按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。
可选的,在所述在接收到对数据库中存储的数据表的操作请求的情况下,数据更新装置600还包括:
第二获取模块,用于在获取所述操作请求的时间戳之前,获取所述数据库中存储的N个数据表;
生成模块,用于基于所述N个数据表生成M个操作队列;
其中,所述N个数据表与所述M个操作队列关联,所述N为大于或者等于所述M的正整数,在所述M小于所述N的情况下,所述M个操作队列包括(M-1)个第一操作队列和一个第二操作队列,所述(M-1)个第一操作队列与(M-1)个数据表一一对应,所述第二操作队列与(N-M+1)个数据表关联,所述第一操作队列对应的数据表的更新频率大于所述第二操作队列关联的数据表的更新频率。
可选的,所述生成模块,包括:
第一生成单元,用于根据所述数据库中存储的更新频率大于或者等于预设频率的数据表的数量值,生成M个操作队列,其中,所述第一操作队列对应的数据表的更新频率大于或者等于所述预设频率,所述第二操作队列对应的数据表的更新频率小于所述预设频率,每一个操作队列对应一个操作队列标识;
第二生成单元,用于根据所述M个操作队列的操作队列标识,生成M个二元组,其中,每一二元组包括数据表的数据表标识和与所述数据表标识对应的操作队列标识;
嵌入模块602,包括:
第一确定单元,用于根据所述操作请求针对的数据表的数据表标识,从所述M个二元组中确定目标二元组;
第二确定单元,用于根据所述目标二元组确定目标操作队列,其中,所述目标二元组包括所述目标操作队列的操作队列标识;
第一嵌入单元,用于根据所述操作请求的时间戳,将所述操作请求嵌入至与所述目标操作队列中的目标位置。
可选的,嵌入模块602,包括:
第三生成单元,用于根据所述操作请求,生成第一操作指令,其中,所述第一操作指令携带有所述操作请求的操作类型、针对的数据表的数据表标识以及时间戳;
第二嵌入单元,用于基于所述第一操作指令中的数据表标识和所述时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的目标位置;
执行模块603具体用于:
按照所述目标操作队列中的操作指令的排列顺序,执行所述目标操作队列中的各个操作指令。
可选的,执行模块603,包括:
获取单元,用于在执行至所述目标操作队列中的目标操作指令的情况下,获取所述目标操作指令携带的时间戳;
执行单元,用于在所述目标操作指令携带的时间戳小于所述数据库的时间戳的情况下,从所述目标操作队列中删除所述目标操作指令,并从所述目标操作队列的队列头开始执行所述目标操作队列中的各个操作指令。
可选的,嵌入模块602,包括:
第四生成单元,用于根据所述操作请求,生成第一操作指令和第二操作指令,其中,所述第一操作指令用于更新所述数据表中的数据,所述第二操作指令用于将所述更新后的数据表存储于缓存中,所述第一操作指令和所述第二操作指令均携带有所述操作请求的数据表标识和时间戳;
第三嵌入单元,用于基于所述第一操作指令和所述第二操作指令中的数据表标识和时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的第一目标位置,并将所述第二操作指令嵌入至所述目标操作队列的第二目标位置,其中,所述第二目标位置与所述第一目标位置相邻且排列于所述第一目标位置之后。
可选的,所述操作请求为写入操作请求或者读取操作请求,数据更新装置600,还包括:
第三获取模块,用于在所述根据所述操作请求的时间戳,将所述操作请求分配至与所述数据表对应的目标操作队列中之后,在所述目标操作队列中包括第一写入操作请求和第二写入操作请求,且所述第一写入操作请求和所述第二写入操作请求之间无读取操作请求的情况下,获取所述第一写入操作请求和所述第二写入操作请求的写入数据;
合并模块,用于若所述第一写入操作请求和所述第二写入操作请求的写入数据相同,则将所述第一写入操作请求和所述第二写入操作请求合并。
可选的,在与所述数据库连接的计算机集群包括至少两台计算机的情况下,所述计算机集群中的每一台计算机的操作队列互不相同或者所述计算机集群中的计算机对应相同的操作队列。
本发明实施例提供的数据更新装置可以实现本发明实施例提供的数据更新方法的各个过程,且能够取得相同的有益效果,为避免重复,在此不再赘述。
请参阅图7,是本发明实施例提供的另一种电子设备的结构图。该另一种电子设备700包括:存储器701、处理器702及存储在存储器901上并可在处理器702上运行的计算机程序7011。
其中,处理器702执行计算机程序7011时,用于:
在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;
根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;
按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。
可选的,在执行所述在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳之前,处理器702还用于:
获取所述数据库中存储的N个数据表;
基于所述N个数据表生成M个操作队列;
其中,所述N个数据表与所述M个操作队列关联,所述N为大于或者等于所述M的正整数,在所述M小于所述N的情况下,所述M个操作队列包括(M-1)个第一操作队列和一个第二操作队列,所述(M-1)个第一操作队列与(M-1)个数据表一一对应,所述第二操作队列与(N-M+1)个数据表关联,所述第一操作队列对应的数据表的更新频率大于所述第二操作队列关联的数据表的更新频率。
可选的,处理器702执行的所述基于所述N个数据表生成M个操作队列,包括:
根据所述数据库中存储的更新频率大于或者等于预设频率的数据表的数量值,生成M个操作队列,其中,所述第一操作队列对应的数据表的更新频率大于或者等于所述预设频率,所述第二操作队列对应的数据表的更新频率小于所述预设频率,每一个操作队列对应一个操作队列标识;
根据所述M个操作队列的操作队列标识,生成M个二元组,其中,每一二元组包括数据表的数据表标识和与所述数据表标识对应的操作队列标识;
所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求针对的数据表的数据表标识,从所述M个二元组中确定目标二元组;
根据所述目标二元组确定目标操作队列,其中,所述目标二元组包括所述目标操作队列的操作队列标识;
根据所述操作请求的时间戳,将所述操作请求嵌入至与所述目标操作队列中的目标位置。
可选的,处理器702执行的所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求,生成第一操作指令,其中,所述第一操作指令携带有所述操作请求的操作类型、针对的数据表的数据表标识以及时间戳;
基于所述第一操作指令中的数据表标识和所述时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的目标位置;
所述按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求,包括:
按照所述目标操作队列中的操作指令的排列顺序,执行所述目标操作队列中的各个操作指令。
可选的,处理器702执行的所述执行所述目标操作队列中的各个操作指令包括:
在执行至所述目标操作队列中的目标操作指令的情况下,获取所述目标操作指令携带的时间戳;
在所述目标操作指令携带的时间戳小于所述数据库的时间戳的情况下,从所述目标操作队列中删除所述目标操作指令,并从所述目标操作队列的队列头开始执行所述目标操作队列中的各个操作指令。
可选的,处理器702执行的所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求,生成第一操作指令和第二操作指令,其中,所述第一操作指令用于更新所述数据表中的数据,所述第二操作指令用于将所述更新后的数据表存储于缓存中,所述第一操作指令和所述第二操作指令均携带有所述操作请求的数据表标识和时间戳;
基于所述第一操作指令和所述第二操作指令中的数据表标识和时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的第一目标位置,并将所述第二操作指令嵌入至所述目标操作队列的第二目标位置,其中,所述第二目标位置与所述第一目标位置相邻且排列于所述第一目标位置之后。
可选的,在执行所述根据所述操作请求的时间戳,将所述操作请求分配至与所述数据表对应的目标操作队列中之后,处理器702还用于:
在所述目标操作队列中包括第一写入操作请求和第二写入操作请求,且所述第一写入操作请求和所述第二写入操作请求之间无读取操作请求的情况下,获取所述第一写入操作请求和所述第二写入操作请求的写入数据;
若所述第一写入操作请求和所述第二写入操作请求的写入数据相同,则将所述第一写入操作请求和所述第二写入操作请求合并。
可选的,在与所述数据库连接的计算机集群包括至少两台计算机的情况下,所述计算机集群中的每一台计算机的操作队列互不相同或者所述计算机集群中的计算机对应相同的操作队列。
本发明实施例能够实现如图1所示数据更新方法实施例中电子设备执行的各个步骤,且能够取得相同的有益效果,为避免重复,在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如图1所示实施例提供的数据更新方法中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(RandomAccess Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (10)
1.一种数据更新方法,其特征在于,所述方法包括:
在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;
根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;
按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中之前,所述方法还包括:
获取所述数据库中存储的N个数据表;
基于所述N个数据表生成M个操作队列;
其中,所述N个数据表与所述M个操作队列关联,所述N为大于或者等于所述M的正整数,在所述M小于所述N的情况下,所述M个操作队列包括(M-1)个第一操作队列和一个第二操作队列,所述(M-1)个第一操作队列与(M-1)个数据表一一对应,所述第二操作队列与(N-M+1)个数据表关联,所述第一操作队列对应的数据表的更新频率大于所述第二操作队列关联的数据表的更新频率。
3.根据权利要求2所述的方法,其特征在于,所述基于所述N个数据表生成M个操作队列,包括:
根据所述数据库中存储的更新频率大于或者等于预设频率的数据表的数量值,生成M个操作队列,其中,所述第一操作队列对应的数据表的更新频率大于或者等于所述预设频率,所述第二操作队列对应的数据表的更新频率小于所述预设频率,每一个操作队列对应一个操作队列标识;
根据所述M个操作队列的操作队列标识,生成M个二元组,其中,每一二元组包括数据表的数据表标识和与所述数据表标识对应的操作队列标识;
所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求针对的数据表的数据表标识,从所述M个二元组中确定目标二元组;
根据所述目标二元组确定目标操作队列,其中,所述目标二元组包括所述目标操作队列的操作队列标识;
根据所述操作请求的时间戳,将所述操作请求嵌入至与所述目标操作队列中的目标位置。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求,生成第一操作指令,其中,所述第一操作指令携带有所述操作请求的操作类型、针对的数据表的数据表标识以及时间戳;
基于所述第一操作指令中的数据表标识和所述时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的目标位置;
所述按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求,包括:
按照所述目标操作队列中的操作指令的排列顺序,执行所述目标操作队列中的各个操作指令。
5.根据权利要求4所述的方法,其特征在于,执行所述目标操作队列中的各个操作指令包括:
在执行至所述目标操作队列中的目标操作指令的情况下,获取所述目标操作指令携带的时间戳;
在所述目标操作指令携带的时间戳小于所述数据库的时间戳的情况下,从所述目标操作队列中删除所述目标操作指令,并从所述目标操作队列的队列头开始执行所述目标操作队列中的各个操作指令。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,包括:
根据所述操作请求,生成第一操作指令和第二操作指令,其中,所述第一操作指令用于更新所述数据表中的数据,所述第二操作指令用于将所述更新后的数据表存储于缓存中,所述第一操作指令和所述第二操作指令均携带有所述操作请求的数据表标识和时间戳;
基于所述第一操作指令和所述第二操作指令中的数据表标识和时间戳,采用路由选择方式,将所述第一操作指令嵌入至所述目标操作队列的第一目标位置,并将所述第二操作指令嵌入至所述目标操作队列的第二目标位置,其中,所述第二目标位置与所述第一目标位置相邻且排列于所述第一目标位置之后。
7.根据权利要求1至3中任一项所述的方法,其特征在于,所述操作请求为写入操作请求或者读取操作请求,在所述根据所述操作请求的时间戳,将所述操作请求分配至与所述数据表对应的目标操作队列中之后,所述方法还包括:
在所述目标操作队列中包括第一写入操作请求和第二写入操作请求,且所述第一写入操作请求和所述第二写入操作请求之间无读取操作请求的情况下,获取所述第一写入操作请求和所述第二写入操作请求的写入数据;
若所述第一写入操作请求和所述第二写入操作请求的写入数据相同,则将所述第一写入操作请求和所述第二写入操作请求合并。
8.一种数据更新装置,其特征在于,所述装置包括:
获取模块,用于在接收到对数据库中存储的数据表的操作请求的情况下,获取所述操作请求的时间戳;
嵌入模块,用于根据所述操作请求的时间戳,将所述操作请求嵌入至与所述数据表对应的目标操作队列中,其中,同一数据表的操作请求位于同一操作队列;
执行模块,用于按照所述目标操作队列中的操作请求的排列顺序,执行所述目标操作队列中的各个操作请求。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的数据更新方法中的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据更新方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010282625.7A CN111522827B (zh) | 2020-04-08 | 2020-04-08 | 一种数据更新方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010282625.7A CN111522827B (zh) | 2020-04-08 | 2020-04-08 | 一种数据更新方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522827A true CN111522827A (zh) | 2020-08-11 |
CN111522827B CN111522827B (zh) | 2023-09-05 |
Family
ID=71902644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010282625.7A Active CN111522827B (zh) | 2020-04-08 | 2020-04-08 | 一种数据更新方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522827B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719646A (zh) * | 2023-08-09 | 2023-09-08 | 浙江邦盛科技股份有限公司 | 热点数据处理方法、装置、电子装置和存储介质 |
CN116991542A (zh) * | 2023-09-26 | 2023-11-03 | 苏州元脑智能科技有限公司 | 一种虚拟机快照方法、系统、电子设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050004996A1 (en) * | 2003-03-24 | 2005-01-06 | International Business Machines Corporation | System, method and program for grouping data update requests for efficient processing |
CN103019859A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种对服务请求调度的方法和系统 |
CN103631727A (zh) * | 2012-08-27 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 用于缓存服务器的缓存管理方法及缓存管理系统 |
CN105373541A (zh) * | 2014-08-22 | 2016-03-02 | 博雅网络游戏开发(深圳)有限公司 | 数据库的数据操作请求的处理方法和系统 |
CN105393251A (zh) * | 2013-06-12 | 2016-03-09 | 甲骨文国际公司 | 数据库内的分片队列 |
-
2020
- 2020-04-08 CN CN202010282625.7A patent/CN111522827B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050004996A1 (en) * | 2003-03-24 | 2005-01-06 | International Business Machines Corporation | System, method and program for grouping data update requests for efficient processing |
CN103631727A (zh) * | 2012-08-27 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 用于缓存服务器的缓存管理方法及缓存管理系统 |
CN103019859A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种对服务请求调度的方法和系统 |
CN105393251A (zh) * | 2013-06-12 | 2016-03-09 | 甲骨文国际公司 | 数据库内的分片队列 |
CN105373541A (zh) * | 2014-08-22 | 2016-03-02 | 博雅网络游戏开发(深圳)有限公司 | 数据库的数据操作请求的处理方法和系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719646A (zh) * | 2023-08-09 | 2023-09-08 | 浙江邦盛科技股份有限公司 | 热点数据处理方法、装置、电子装置和存储介质 |
CN116991542A (zh) * | 2023-09-26 | 2023-11-03 | 苏州元脑智能科技有限公司 | 一种虚拟机快照方法、系统、电子设备及计算机存储介质 |
CN116991542B (zh) * | 2023-09-26 | 2024-02-13 | 苏州元脑智能科技有限公司 | 一种虚拟机快照方法、系统、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111522827B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110287044B (zh) | 无锁共享内存处理方法、装置、电子设备及可读存储介质 | |
EP3079078B1 (en) | Multi-version concurrency control method in database, and database system | |
US11157445B2 (en) | Indexing implementing method and system in file storage | |
US8352681B2 (en) | Storage system and a control method for accelerating the speed of copy processing | |
JP4644684B2 (ja) | 仮想化を用いるリモート・コピーの一貫性の維持(ストレージをコピーする方法およびシステム) | |
US20120197958A1 (en) | Parallel Serialization of Request Processing | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
US11321302B2 (en) | Computer system and database management method | |
JP7133647B2 (ja) | データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体 | |
CN110399333B (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN105138284A (zh) | 虚拟机磁盘镜像同步操作优化的系统及方法 | |
US20110099151A1 (en) | Saving snapshot of a knowledge base without blocking | |
KR20160100211A (ko) | 대용량 오디오 핑거프린트 데이터베이스의 온라인 실시간 업데이팅을 구성하기 위한 방법 및 장치 | |
CN111522827B (zh) | 一种数据更新方法、装置和电子设备 | |
CN111125040A (zh) | 管理重做日志的方法、装置及存储介质 | |
CN111143368A (zh) | 一种关系型数据库数据对比方法及系统 | |
CN111930716A (zh) | 一种数据库扩容方法、装置及系统 | |
CN101458655B (zh) | 内存管理方法、系统及内存控制装置 | |
CN113064919B (zh) | 数据处理方法、数据存储系统、计算机设备及存储介质 | |
CN112764662B (zh) | 用于存储管理的方法、设备和计算机程序产品 | |
CN109542872B (zh) | 数据读取方法、装置、计算机设备和存储介质 | |
CN109542860B (zh) | 基于hdfs的业务数据管理方法、终端设备 | |
EP3264254B1 (en) | System and method for a simulation of a block storage system on an object storage system | |
CN115712397A (zh) | 缓存验证装置、方法及系统 | |
CN114138424B (zh) | 一种虚拟机内存快照生成方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |