CN112667650A - 一种数据库更新方法和装置 - Google Patents
一种数据库更新方法和装置 Download PDFInfo
- Publication number
- CN112667650A CN112667650A CN202011583756.5A CN202011583756A CN112667650A CN 112667650 A CN112667650 A CN 112667650A CN 202011583756 A CN202011583756 A CN 202011583756A CN 112667650 A CN112667650 A CN 112667650A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- memory
- state
- current operation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000015654 memory Effects 0.000 claims abstract description 204
- 238000013500 data storage Methods 0.000 claims abstract description 36
- 230000004048 modification Effects 0.000 claims abstract description 34
- 238000012986 modification Methods 0.000 claims abstract description 34
- 238000011022 operating instruction Methods 0.000 claims description 18
- 230000006872 improvement Effects 0.000 description 14
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据库更新方法和装置,属于数据库应用,解决如何确定数据修改操作的有序性和修改数据的正确性的问题。方法包括:通过中间节点从客户端接收操作指令;将操作指令存储在操作队列中;从数据标志位读取当前操作状态并且当前操作状态处于无操作状态时,从操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令;根据当前操作指令和数据存储位置对数据执行当前操作,同时基于当前操作将数据标志位修改为与操作相对应的操作状态;在当前操作完成以后,将数据标志位修改为无操作状态;以及当内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库。保证数据修改操作的有序性和修改数据的正确性。
Description
技术领域
本发明涉及数据库应用技术领域,尤其涉及一种数据库更新方法和装置。
背景技术
在互联网的数据库应用领域,通常一条数据存储于密管系统数据库或后台数据库中,也可以在使用或操作时读出后缓存于内存中。当数据读入内存后,数据库和内存都存储着该条数据,并且内存中的数据为基准数据,会定期写入数据库中。当内存中数据不再被使用时,最新的数据写入数据库的同时,该数据从内存中删除。
对于数据的修改操作,既可以直接通过修改数据库的方式进行修改,也可以在内存中修改后再存入数据库中。假如此时该数据同时存在于数据库和内存中的两种修改方式并发操作,其中一个直接操作数据库进行修改,另外一个修改缓存的数据,如何保证修改操作的有序性和修改数据的正确性。或者存在另外一种情况,存在数据库中的数据同时被多个客户端访问(如同一个账号登录在PC端、iPad端和手机端)时,该数据被同时处理或使用,视同为对同一数据修改的并发操作,也会出现上述修改操作次序和正确性的问题。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种数据库更新方法和装置,用以解决如何确定数据修改操作的有序性和修改数据的正确性的问题。
一方面,本发明实施例提供了一种数据库更新方法,包括:通过中间节点从客户端接收操作指令;将所述操作指令存储在操作队列中;从数据标志位读取当前操作状态并且所述当前操作状态处于无操作状态时,从所述操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令;根据所述当前操作指令和数据存储位置对数据执行当前操作,同时基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态;在所述当前操作完成以后,将所述数据标志位修改为无操作状态;以及当所述内存中存在修改数据时,用存储在所述内存中的最近修改数据定时更新所述数据库。
上述技术方案的有益效果如下:通过在内存中开辟一块内存,这块内存既不是数据库,也不是数据存放的内存而是专门为中间节点服务的内存。在所有平台或客户端访问数据库时都通过这个中间节点进行管控。具体地,通过操作队列对来自不同客户端指令进行管理,基于当前操作实时更新数据标志位,以及在内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库而忽略数据库中的修改数据,从而能够保证数据修改操作的有序性和修改数据的正确性。
基于上述方法的进一步改进,所述操作指令包括:在数据库中操作、在内存中操作、正在读取操作和正在写入操作。
基于上述方法的进一步改进,数据标志位包括锁定状态和操作状态,其中,所述操作状态包括:无操作状态、在数据库中操作数据的状态、在内存中操作数据的状态、读取数据状态和写入数据状态。
基于上述方法的进一步改进,所述数据存储位置包括所述数据库和/或所述内存。
基于上述方法的进一步改进,在所述数据存储位置为所述内存和所述数据库或者所述内存的情况下,根据所述当前操作指令和数据存储位置对数据执行当前操作,同时基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态包括:当所述当前操作指令为在数据库中操作时,将所述当前操作更改为在内存中操作,同时将所述数据标志位修改为在数据库中操作数据的状态,以及在所述内存中对数据执行所述当前操作完成后,将操作记录存储至所述数据库中;以及当所述当前操作指令为在所述内存中操作时,对所述内存中的数据执行所述当前操作,并将所述数据标志位修改为在内存中操作数据的状态。
上述技术方案的有益效果如下:在数据存储位置为内存和数据库或者内存的情况下,根据当前操作指令,对内存中的数据进行修改为基准。另外,在当前操作指令为在数据库中操作时,将当前操作更改为在内存中操作,同时将数据标志位修改为在数据库中操作数据的状态。
基于上述方法的进一步改进,在所述数据存储位置为所述数据库的情况下,根据所述当前操作指令和数据存储位置对数据执行当前操作,同时基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态包括:当所述当前操作指令为在所述数据库中操作时,对所述数据库中的数据执行所述当前操作,并将所述数据标志位修改为在内存中操作数据的状态;以及当所述当前操作指令为在所述内存中操作时,将所述数据库中的数据读取到所述内存中,然后对所述内存中的数据执行所述当前操作,同时基于所述当前操作将所述数据标志位修改为在内存中操作数据的状态。
上述技术方案的有益效果如下:在数据存储位置为数据库的情况下,根据当前操作指令,以对内存中的数据进行修改为基准。另外,只有在当前操作指令为在数据库中操作时,对数据库中的数据执行当前操作,同时将数据标志位修改为在数据库中操作数据的状态。
基于上述方法的进一步改进,从数据标志位读取当前操作状态之后还包括:当所述当前操作状态为所述读取数据状态或所述写入数据状态时,在所述正在读取操作和所述正在写入操作完成以后,从所述操作队列中按照先进先出的顺序获取操作指令并将获取的操作指令作为所述当前操作指令。
上述技术方案的有益效果如下:在当前操作状态为读取数据状态或写入数据状态时,在正在读取操作和正在写入操作完成以后,再获取操作指令。
基于上述方法的进一步改进,当所述内存中存在修改数据时,用存储在所述内存中的最近修改数据定时更新所述数据库包括:当所述内存中存在修改操作记录时,根据预先设置的更新周期,将存储在所述内存中的所述修改操作记录写入所述数据库中以更新所述数据库。
另一方面,本发明实施例提供了一种数据库更新装置,包括:中间节点、读取和操作指令获取模块、操作处理模块和更新模块,所述中间节点包括接收模块、操作队列和数据标志位模块,其中,所述接收模块,用于从客户端接收操作指令;所述操作队列,用于将所述操作指令存储在所述操作队列中;所述读取和操作指令获取模块,用于从数据标志位读取当前操作状态并且在所述当前操作状态处于无操作状态时,从所述操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令;所述操作处理模块,用于根据所述当前操作指令和数据存储位置对数据执行当前操作;所述数据标志位模块,用于基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态以及在所述当前操作完成以后,将所述数据标志位修改为无操作状态;以及所述更新模块,用于当所述内存中存在修改数据时,用存储在所述内存中的最近修改数据定时更新所述数据库。
基于上述装置的进一步改进,所述操作指令包括:在数据库中操作、在内存中操作、正在读取操作和正在写入操作。
基于上述装置的进一步改进,所述数据标志位模块包括数据标志位,所述数据标志位包括锁定状态和操作状态,其中,所述操作状态还包括:无操作状态、在数据库中操作数据的状态、在内存中操作数据的状态、读取数据状态和写入数据状态。
基于上述装置的进一步改进,所述数据存储位置包括所述数据库和/或所述内存。
基于上述装置的进一步改进,在所述数据存储位置为所述内存和所述数据库或者所述内存的情况下,其中,所述操作处理模块用于当所述当前操作指令为在数据库中操作时,将所述当前操作更改为在内存中操作;以及当所述当前操作指令为在所述内存中操作时,对所述内存中的数据执行所述当前操作;所述数据标志位模块用于在将所述当前操作更改为在内存中操作的同时,将所述数据标志位修改为在数据库中操作数据的状态,以及在所述内存中对数据执行所述当前操作完成后,将操作记录存储至所述数据库中;以及在对所述内存中的数据执行所述当前操作的同时将所述数据标志位修改为在内存中操作数据的状态。
基于上述装置的进一步改进,在所述数据存储位置为所述数据库的情况下,其中,所述操作处理模块用于当所述当前操作指令为在所述数据库中操作时,对所述数据库中的数据执行所述当前操作;以及当所述当前操作指令为在所述内存中操作时,将所述数据库中的数据读取到所述内存中,然后对所述内存中的数据执行所述当前操作;以及所述数据标志位模块用于对所述数据库中的数据执行所述当前操作的同时将所述数据标志位修改为在内存中操作数据的状态;以及在对所述内存中的数据执行所述当前操作的同时基于所述当前操作将所述数据标志位修改为在内存中操作数据的状态。
基于上述装置的进一步改进,所述读取和操作指令获取模块还用于当所述当前操作状态为所述读取数据状态或所述写入数据状态时,在所述正在读取操作和所述正在写入操作完成以后,从所述操作队列中按照先进先出的顺序获取操作指令并将获取的操作指令作为所述当前操作指令。
基于上述装置的进一步改进,所述更新模块还用于当所述内存中存在修改操作记录时,基于预先设置的更新周期,将存储在所述内存中的所述修改操作记录写入所述数据库中以更新所述数据库。
与现有技术相比,本发明至少可实现如下有益效果之一:
1、通过在内存中开辟一块内存,这块内存既不是数据库,也不是数据存放的内存而是专门为中间节点服务的内存。在所有平台或客户端访问数据库时都通过这个中间节点进行管控。
2、通过操作队列对来自不同客户端指令进行管理,基于当前操作实时更新数据标志位,以及在内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库而忽略数据库中的修改数据,从而能够数据修改操作的有序性和修改数据的正确性。
3、在数据存储位置为内存和数据库或者内存的情况下,根据当前操作指令,对内存中的数据进行修改为基准。另外,在当前操作指令为在数据库中操作时,将当前操作更改为在内存中操作,同时将数据标志位修改为在数据库中操作数据的状态。
4、在数据存储位置为数据库的情况下,根据当前操作指令,以对内存中的数据进行修改为基准。另外,只有在当前操作指令为在数据库中操作时,对数据库中的数据执行当前操作,同时将数据标志位修改为在数据库中操作数据的状态。
5、在当前操作状态为读取数据状态或写入数据状态时,在正在读取操作和正在写入操作完成以后,再获取操作指令。
6、数据库更新方法可以保障在这种环境下数据更新的一致性和正确性,用户体验更加良好。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为根据本发明实施例的数据库更新方法的流程图。
图2为根据本发明实施例的经由中间节点对数据库更新的示图。
图3为根据本发明实施例的数据库更新装置的框图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
本发明的一个具体实施例,公开了一种数据库更新方法,如图1所示。一种数据库更新方法,包括:步骤S102,通过中间节点从客户端接收操作指令;步骤S104,将操作指令存储在操作队列中;步骤S106,从数据标志位读取当前操作状态并且当前操作状态处于无操作状态时,从操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令;步骤S108,根据当前操作指令和数据存储位置对数据执行当前操作,同时基于当前操作将数据标志位修改为与操作相对应的操作状态;步骤S110,在当前操作完成以后,将数据标志位修改为无操作状态;以及步骤S112,当内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库。
与现有技术相比,本实施例提供的数据库更新方法,通过在内存中开辟一块内存,这块内存既不是数据库,也不是数据存放的内存而是专门为中间节点服务的内存。在所有平台或客户端访问数据库时都通过这个中间节点进行管控。通过操作队列对来自不同客户端指令进行管理,基于当前操作实时更新数据标志位,以及在内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库而忽略数据库中的修改数据,从而能够数据修改操作的有序性和修改数据的正确性。
下文中,参考图1和图2,对数据库更新方法的步骤S102、步骤S104、步骤S106、步骤S108、步骤S110和步骤S112进行详细描述。
参考图1,步骤S102,通过中间节点从客户端接收操作指令。参考图2,通过中间节点206从一个或多个客户端208接收操作指令。具体地,通过中间节点206从多个客户端208接收操作指令的情况包括多个客户端同时访问数据库202中的数据,例如,同一个账号登录在PC端、iPad端和手机端。即,操作员经由不同客户端对数据库进行操作。数据库202与内存204进行数据通信,具体地,可以将数据从数据库202中读取至内存204,或者可以将内存204中的数据存储至数据库202。
具体地,中间节点206是在服务器上开辟的内存,该内存既不是数据库202,也不是数据存放的内存204,而是专门为中间节点206服务的内存。该中间节点206维护了一个对数据库中的数据和对内存中数据的操作队列,功能有三:1、对数据库中的数据和内存中数据的操作都通过该中间节点进行管理和分发;2、在中间节点上设置该数据的标志位作为Lock标志;3、在该中间节点建立操作队列,顺序缓存对数据的各种修改。所有平台访问数据库时都通过这个中间节点进行管控,比如手机和电脑同时访问数据库时,都要通过这个中间节点。
步骤S104,将操作指令存储在操作队列中。操作队列用于从多个客户端接收的操作指令,根据缓存的操作指令对数据库进行操作。操作指令包括:在数据库中操作、在内存中操作、正在读取操作和正在写入操作。
步骤S106,从数据标志位读取当前操作状态并且当前操作状态处于无操作状态时,从操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令。具体地,从数据标志位读取当前操作状态。数据标志位用于指示是否操作状态,包括锁定状态和操作状态。在数据标志位指示锁定状态时,无法对数据库中数据进行修改;而在数据标志位指示操作状态时,可以对数据库中数据进行修改。具体地,操作状态包括:无操作状态、在数据库中操作数据的状态、在内存中操作数据的状态、读取数据状态和写入数据状态。可以用三个二进制数据位指示以上所述的锁定状态和操作状态。例如,锁定状态表示为“111”;无操作状态表示为“000”;在数据库中操作数据的状态表示为“001”;在内存中操作数据的状态表示为“010”;读取数据状态表示为“011”以及写入数据状态可以表示为“100”。
在实施例中,在当前操作状态为读取数据状态或写入数据状态时,在正在读取操作和正在写入操作完成以后,从操作队列中按照先进先出的顺序获取操作指令并将获取的操作指令作为当前操作指令。在另一实施例中,在当前操作状态为在数据库中操作数据的状态或在内存中操作数据的状态时,在当前操作状态结束以后,从操作队列中按照先进先出的顺序获取最早存储的操作指令并将获取的操作指令作为当前操作指令。在又一实施例中,在操作状态处于无操作状态时,从操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令。
步骤S108,根据当前操作指令和数据存储位置对数据执行当前操作,同时基于当前操作将数据标志位修改为与操作相对应的操作状态。数据存储位置包括数据库和/或内存。下文中,对数据存储位置分别包括数据库和/或内存的情况下,对数据执行当前操作进行详细描述。
在实施例中,在数据存储位置为内存和数据库或者内存的情况下,根据当前操作指令和数据存储位置对数据执行当前操作,同时基于当前操作将数据标志位修改为与操作相对应的操作状态包括:在当前操作指令为在数据库中操作时,将当前操作更改为在内存中操作,同时将数据标志位修改为在数据库中操作数据的状态,以及在内存中对数据执行当前操作完成后,将操作记录存储至数据库中;以及在当前操作指令为在内存中操作时,对内存中的数据执行当前操作,并将数据标志位修改为在内存中操作数据的状态。
在另一实施例中,在数据存储位置为数据库的情况下,根据当前操作指令和数据存储位置对数据执行当前操作,同时基于当前操作将数据标志位修改为与操作相对应的操作状态包括:在当前操作指令为在数据库中操作时,对数据库中的数据执行当前操作,并将数据标志位修改为在内存中操作数据的状态;以及在当前操作指令为在内存中操作时,将数据库中的数据读取到内存中,然后对内存中的数据执行当前操作,同时基于当前操作将数据标志位修改为在内存中操作数据的状态。
步骤S110,在当前操作完成以后,将数据标志位修改为无操作状态。
步骤S112,当内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库。具体地,当内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库包括:当内存中存在修改操作记录时,根据预先设置的更新周期,将存储在内存中的修改操作记录写入数据库中以更新数据库。
下文中,参考图3,对数据库更新装置的各个部件进行详细描述。
参考图3,数据库更新装置包括:接收模块302、操作队列304、数据标志位模块306、读取和操作指令获取模块308、操作处理模块310和更新模块312。
接收模块302,用于从客户端接收操作指令。具体地,通过中间节点从多个客户端接收操作指令的情况包括多个客户端同时访问数据库中的数据,例如,同一个账号登录在PC端、iPad端和手机端。即,操作员经由不同客户端对数据库进行操作。
操作队列304,用于将操作指令存储在操作队列中。操作指令包括:在数据库中操作、在内存中操作、正在读取操作和正在写入操作。
数据标志位模块306,用于基于当前操作将数据标志位修改为与操作相对应的操作状态以及在当前操作完成以后,将数据标志位修改为无操作状态。数据标志位模块306包括数据标志位,数据标志位包括锁定状态和操作状态,其中,操作状态还包括:无操作状态、在数据库中操作数据的状态、在内存中操作数据的状态、读取数据状态和写入数据状态。在实施例中,数据标志位模块306用于在将当前操作更改为在内存中操作的同时,将数据标志位修改为在数据库中操作数据的状态,以及在内存中对数据执行当前操作完成后,将操作记录存储至数据库中;以及在对内存中的数据执行当前操作的同时将数据标志位修改为在内存中操作数据的状态。数据标志位模块306用于对数据库中的数据执行当前操作的同时将数据标志位修改为在内存中操作数据的状态;以及在对内存中的数据执行当前操作的同时基于当前操作将数据标志位修改为在内存中操作数据的状态。
读取和操作指令获取模块308,用于从数据标志位读取当前操作状态并且在当前操作状态处于无操作状态时,从操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令。读取和操作指令获取模块308还用于在当前操作状态为读取数据状态或写入数据状态时,在正在读取操作和正在写入操作完成以后,从操作队列中按照先进先出的顺序获取操作指令并将获取的操作指令作为当前操作指令。
操作处理模块310,用于根据当前操作指令和数据存储位置对数据执行当前操作。数据存储位置包括数据库和/或内存。在数据存储位置为内存和数据库或者内存的情况下,其中,操作处理模块310用于在当前操作指令为在数据库中操作时,将当前操作更改为在内存中操作;以及在当前操作指令为在内存中操作时,对内存中的数据执行当前操作。操作处理模块310用于在当前操作指令为在数据库中操作时,对数据库中的数据执行当前操作;以及在当前操作指令为在内存中操作时,将数据库中的数据读取到内存中,然后对内存中的数据执行当前操作。
更新模块312,用于当内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库。更新模块312还用于当内存中存在修改操作记录时,基于预先设置的更新周期,将存储在内存中的修改操作记录写入数据库中以更新数据库。
下文中,以具体实例的方式,对数据库更新方法进行详细描述。
本申请考虑引入一个中间节点,该中间节点维护了一个对数据库中的数据和对内存中数据的操作队列,功能有三:1、对数据库中的数据和内存中数据的操作都通过该中间节点进行管理和分发;2、在中间节点上设置该数据的标志位作为Lock标志;3、在该中间节点建立操作队列,顺序缓存对数据的各种修改。例如,中间节点实际上是新开辟一块的内存,这块内存既不是数据库,也不是数据存放的内存,是专门为中间节点服务的内存。所有平台访问数据库时都通过这个中间节点进行管控,比如手机和电脑同时访问数据库时,都要通过这个中间节点。以上内存均为开辟在服务器上的内存。
标志位状态包括lock和操作状态,其中,lock是锁状态,操作状态分包括:1、无操作(即,等待状态);2、在数据库中被操作;3、在内存中被操作;4、正在读取数据(即,从数据库中读到内存);和5、正在存盘(即,从内存存到数据库)五种。每一种操作在操作时将操作状态同步给中间节点。
2)中间节点维护了操作队列,按照先进先出的顺序,负责对该条数据的操作,并且按照获得的操作顺序根据下列方法对该数据进行操作。
3)当该数据只存在于数据库中时,中间节点上对于该数据的操作标志位标记为无操作,此时只对数据库内的数据进行操作。此时无论收到在数据库中操作或者在内存中操作的指令时,都等同于在数据库中对该数据进行操作。
4)当该数据存在于数据库,并且正在处于读入内存的操作时(读入内存后,数据库和内存都存着这条数据,但以内存为基准,并定期写入数据库中),中间节点接收从内存中修改该数据的指令缓存于队列中,该数据读入内存后,操作状态变为无操作状态时,再在内存中对该数据进行上述操作,即,根据修改指令进行修改。
5)当该数据存在于内存中时,接收到对数据库操作的指令时,需要更改为对内存中数据进行操作,在操作结束后,将修改记录存入数据库中。例如,当数据写入内存中时,一切以内存中的数据为准,此时修改数据库中的数据,最终也会被内存中的数据覆盖,所以不需要修改数据库。
6)当该数据处于正在读取数据和正在存盘状态时,各种修改状态缓存于队列中,当读取数据和存盘状态结束,转变为无操作状态时,再进行后续操作。
7)当该数据加载到内存中时,实质上同时存在于数据库和内存中,在这个时候该数据以内存中的值为基准,所有关于数据库的操作都可以被丢弃掉。同时,假如接收到修改内存数据的操作时,只需要修改内存中的数据,并且定时将该数据存储于数据库中。
有益效果:
通过在根据本安全的数据修改方法下,进行多次的数据的修改,测算一致性和操作速度,可以验证该算法的安全性。通过本方法,可以强保障在这种环境下数据更新的一致性和正确性,用户体验更加良好。
本申请是服务器内对于数据操作安全的方法或装置,无论是PC端还是移动端,均为客户端,它们是操作的发起者,也可以认为它们仅仅是指令的发出者,该指令是否可以完成以及正确性的保证完全由服务器来保证,所有的数据操作和安全保证都是在服务器内进行。客户端最后所看到的只是服务器最后的处理结果。
与现有技术相比,本发明至少可实现如下有益效果之一:
1、通过在内存中开辟一块内存,这块内存既不是数据库,也不是数据存放的内存而是专门为中间节点服务的内存。在所有平台或客户端访问数据库时都通过这个中间节点进行管控。
2、通过操作队列对来自不同客户端指令进行管理,基于当前操作实时更新数据标志位,以及在内存中存在修改数据时,用存储在内存中的最近修改数据定时更新数据库而忽略数据库中的修改数据,从而能够数据修改操作的有序性和修改数据的正确性。
3、在数据存储位置为内存和数据库或者内存的情况下,根据当前操作指令,对内存中的数据进行修改为基准。另外,在当前操作指令为在数据库中操作时,将当前操作更改为在内存中操作,同时将数据标志位修改为在数据库中操作数据的状态。
4、在数据存储位置为数据库的情况下,根据当前操作指令,以对内存中的数据进行修改为基准。另外,只有在当前操作指令为在数据库中操作时,对数据库中的数据执行当前操作,同时将数据标志位修改为在数据库中操作数据的状态。
5、在当前操作状态为读取数据状态或写入数据状态时,在正在读取操作和正在写入操作完成以后,再获取操作指令。
6、数据库更新方法可以保障在这种环境下数据更新的一致性和正确性,用户体验更加良好。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种数据库更新方法,其特征在于,包括:
通过中间节点从客户端接收操作指令;
将所述操作指令存储在操作队列中;
从数据标志位读取当前操作状态并且所述当前操作状态处于无操作状态时,从所述操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令;
根据所述当前操作指令和数据存储位置对数据执行当前操作,同时基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态;
在所述当前操作完成以后,将所述数据标志位修改为无操作状态;以及
当所述内存中存在修改数据时,用存储在所述内存中的最近修改数据定时更新所述数据库。
2.根据权利要求1所述的数据库更新方法,其特征在于,所述操作指令包括:在数据库中操作、在内存中操作、正在读取操作和正在写入操作。
3.根据权利要求2所述的数据库更新方法,其特征在于,数据标志位包括锁定状态和操作状态,其中,所述操作状态包括:无操作状态、在数据库中操作数据的状态、在内存中操作数据的状态、读取数据状态和写入数据状态。
4.根据权利要求3所述的数据库更新方法,其特征在于,所述数据存储位置包括所述数据库和/或所述内存。
5.根据权利要求4所述的数据库更新方法,其特征在于,在所述数据存储位置为所述内存和所述数据库或者所述内存的情况下,根据所述当前操作指令和数据存储位置对数据执行当前操作,同时基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态包括:
当所述当前操作指令为在数据库中操作时,将所述当前操作更改为在内存中操作,同时将所述数据标志位修改为在数据库中操作数据的状态,以及在所述内存中对数据执行所述当前操作完成后,将操作记录存储至所述数据库中;以及
当所述当前操作指令为在所述内存中操作时,对所述内存中的数据执行所述当前操作,并将所述数据标志位修改为在内存中操作数据的状态。
6.根据权利要求4所述的数据库更新方法,其特征在于,在所述数据存储位置为所述数据库的情况下,根据所述当前操作指令和数据存储位置对数据执行当前操作,同时基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态包括:
当所述当前操作指令为在所述数据库中操作时,对所述数据库中的数据执行所述当前操作,并将所述数据标志位修改为在内存中操作数据的状态;以及
当所述当前操作指令为在所述内存中操作时,将所述数据库中的数据读取到所述内存中,然后对所述内存中的数据执行所述当前操作,同时基于所述当前操作将所述数据标志位修改为在内存中操作数据的状态。
7.根据权利要求4所述的数据库更新方法,其特征在于,从数据标志位读取当前操作状态之后还包括:
当所述当前操作状态为所述读取数据状态或所述写入数据状态时,在所述正在读取操作和所述正在写入操作完成以后,从所述操作队列中按照先进先出的顺序获取操作指令并将获取的操作指令作为所述当前操作指令。
8.根据权利要求1至7中的任一项所述的数据库更新方法,其特征在于,当所述内存中存在修改数据时,用存储在所述内存中的最近修改数据定时更新所述数据库包括:
当所述内存中存在修改操作记录时,根据预先设置的更新周期,将存储在所述内存中的所述修改操作记录写入所述数据库中以更新所述数据库。
9.一种数据库更新装置,其特征在于,包括:接收模块、操作队列、读取和操作指令获取模块、操作处理模块、数据标志位模块和更新模块,其中,
所述接收模块,用于从客户端接收操作指令;
所述操作队列,用于将所述操作指令存储在所述操作队列中;
所述读取和操作指令获取模块,用于从数据标志位读取当前操作状态并且在所述当前操作状态处于无操作状态时,从所述操作队列中获取最早存储的操作指令并将获取的操作指令作为当前操作指令;
所述操作处理模块,用于根据所述当前操作指令和数据存储位置对数据执行当前操作;
所述数据标志位模块,用于基于所述当前操作将所述数据标志位修改为与所述操作相对应的操作状态以及在所述当前操作完成以后,将所述数据标志位修改为无操作状态;以及
所述更新模块,用于当所述内存中存在修改数据时,用存储在所述内存中的最近修改数据定时更新所述数据库。
10.根据权利要求9所述的数据库更新装置,其特征在于,所述操作指令包括:在数据库中操作、在内存中操作、正在读取操作和正在写入操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011583756.5A CN112667650B (zh) | 2020-12-28 | 一种数据库更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011583756.5A CN112667650B (zh) | 2020-12-28 | 一种数据库更新方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667650A true CN112667650A (zh) | 2021-04-16 |
CN112667650B CN112667650B (zh) | 2024-05-28 |
Family
ID=
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369283A (zh) * | 2008-09-25 | 2009-02-18 | 中兴通讯股份有限公司 | 一种内存数据库与物理数据库间的数据同步方法及系统 |
CN101430705A (zh) * | 2008-11-29 | 2009-05-13 | 中兴通讯股份有限公司 | 基于嵌入式数据库的存储方法和装置 |
CN101819695A (zh) * | 2009-12-15 | 2010-09-01 | 北京华大智宝电子系统有限公司 | 一种实现ic卡钱包交易与系统记账同步的方法 |
CN106202365A (zh) * | 2016-07-07 | 2016-12-07 | 帅斌鹏 | 数据库更新同步的方法、系统及数据库集群 |
CN106503186A (zh) * | 2016-10-25 | 2017-03-15 | 广东浪潮大数据研究有限公司 | 一种数据管理方法、客户端及系统 |
CN109542636A (zh) * | 2018-10-18 | 2019-03-29 | 新浪网技术(中国)有限公司 | 一种数据更新的方法及装置 |
CN111143382A (zh) * | 2019-12-13 | 2020-05-12 | 新华三大数据技术有限公司 | 数据处理方法、系统和计算机可读存储介质 |
CN111291008A (zh) * | 2020-01-22 | 2020-06-16 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、系统、电子设备及计算机存储介质 |
CN111708626A (zh) * | 2020-06-17 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 数据访问方法、装置、计算机设备和存储介质 |
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369283A (zh) * | 2008-09-25 | 2009-02-18 | 中兴通讯股份有限公司 | 一种内存数据库与物理数据库间的数据同步方法及系统 |
CN101430705A (zh) * | 2008-11-29 | 2009-05-13 | 中兴通讯股份有限公司 | 基于嵌入式数据库的存储方法和装置 |
CN101819695A (zh) * | 2009-12-15 | 2010-09-01 | 北京华大智宝电子系统有限公司 | 一种实现ic卡钱包交易与系统记账同步的方法 |
CN106202365A (zh) * | 2016-07-07 | 2016-12-07 | 帅斌鹏 | 数据库更新同步的方法、系统及数据库集群 |
CN106503186A (zh) * | 2016-10-25 | 2017-03-15 | 广东浪潮大数据研究有限公司 | 一种数据管理方法、客户端及系统 |
CN109542636A (zh) * | 2018-10-18 | 2019-03-29 | 新浪网技术(中国)有限公司 | 一种数据更新的方法及装置 |
CN111143382A (zh) * | 2019-12-13 | 2020-05-12 | 新华三大数据技术有限公司 | 数据处理方法、系统和计算机可读存储介质 |
CN111291008A (zh) * | 2020-01-22 | 2020-06-16 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、系统、电子设备及计算机存储介质 |
CN111708626A (zh) * | 2020-06-17 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 数据访问方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100906262B1 (ko) | 원자적으로 갱신되는 중앙 캐시 메모리를 위한 방법 및시스템 | |
CA2649369C (en) | Synchronizing structured web site contents | |
CN106021445B (zh) | 一种加载缓存数据的方法及装置 | |
CN107122410A (zh) | 一种缓存更新方法及装置 | |
US20050228812A1 (en) | System and method for accessing different types of back end data stores | |
JPH0962570A (ja) | データベース管理装置及び方法 | |
CN105224255B (zh) | 一种存储文件管理方法及装置 | |
CN106326499B (zh) | 一种数据处理方法及装置 | |
WO2008074663A1 (en) | Data synchronization mechanism for change-request-management repository interoperation | |
CN103856516A (zh) | 数据存储、读取方法及数据存储、读取装置 | |
CN107888687A (zh) | 一种基于分布式存储系统的代理客户端存储加速方法及系统 | |
CN101217449A (zh) | 远程调用管理方法 | |
US20090248620A1 (en) | Interacting methods of data extraction | |
CN109871338A (zh) | 一种数据存储方法、装置及计算机设备 | |
CN108228624A (zh) | 数据获取及更新方法、片单服务系统及片单系统 | |
CN112667650B (zh) | 一种数据库更新方法和装置 | |
CN115712397B (zh) | 缓存验证装置、方法及系统 | |
CN112667650A (zh) | 一种数据库更新方法和装置 | |
CN114884883B (zh) | 一种流量转发方法、装置、设备及存储介质 | |
US20090240700A1 (en) | Distributed file management system | |
CN112286448B (zh) | 对象访问方法、装置、电子设备及机器可读存储介质 | |
CN112286947B (zh) | 保持不同存储系统的数据一致的方法以及装置 | |
CN109165365B (zh) | 一种安卓原生应用中利用缓存框架和时间戳更新图片的方法 | |
KR20210088511A (ko) | 셀렉트 쿼리 처리 시 네트워크 비용 절감을 위해 멀티 캐시를 구비한 클라우드 데이터베이스 시스템 | |
CN106940660A (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 |