《一种缓存服务器中数据更新的控制方法和设备.pdf》由会员分享,可在线阅读,更多相关《一种缓存服务器中数据更新的控制方法和设备.pdf(34页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103324679 A (43)申请公布日 2013.09.25 CN 103324679 A *CN103324679A* (21)申请号 201310205353.0 (22)申请日 2013.05.28 G06F 17/30(2006.01) (71)申请人 杭州朗和科技有限公司 地址 310013 浙江省杭州市西湖区教工路 1 号 18 号楼 6 层 604-605 室 (72)发明人 邱似峰 汪源 王磊 (74)专利代理机构 北京集佳知识产权代理有限 公司 11227 代理人 王宝筠 (54) 发明名称 一种缓存服务器中数据更新的控制方法和设 备 (57) 。
2、摘要 本发明的实施方式提供了一种缓存服务器中 数据更新的控制方法。该方法例如可以包括 : 响 应于用户对底层数据库服务器中数据的操作, 从 缓存服务器中保存的该数据的数据信息中获取该 数据的当前数据状态作为第一数据状态 ; 响应于 确定第一数据状态表示缓存服务器对该数据当前 正在执行数据更新动作, 控制缓存服务器拒绝对 该数据执行该操作对应的目标数据更新动作。通 过由数据状态来控制缓存服务器中数据更新动作 的执行, 本发明的方法可以显著地降低在底层数 据库服务器与缓存服务器中数据副本不一致的发 生几率, 为用户带来了更好的体验。此外, 本发明 的实施方式提供了一种缓存服务器中数据更新的 控制设。
3、备。 (51)Int.Cl. 权利要求书 4 页 说明书 19 页 附图 10 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书4页 说明书19页 附图10页 (10)申请公布号 CN 103324679 A CN 103324679 A *CN103324679A* 1/4 页 2 1. 一种方法, 包括 : 响应于用户对底层数据库服务器中数据的操作, 从缓存服务器中保存的所述数据的数 据信息中获取所述数据的当前数据状态, 作为第一数据状态 ; 其中, 所述当前数据状态是根 据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信 息中设置的 ;。
4、 响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更 新动作, 控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据更新动作。 2. 根据权利要求 1 所述的方法, 所述从缓存服务器中保存的所述数据的数据信息中获 取所述数据的当前数据状态, 作为第一数据状态, 包括 : 从底层数据库服务器中获取所述数据的特征码 ; 根据所述特征码, 在所述缓存服务器中查找所述数据的当前数据状态, 作为第一数据 状态。 3. 根据权利要求 1 所述的方法, 还包括 : 响应于确定所述第一数据状态属于触发执行所述操作对应的所述目标数据更新动作 的数据状态, 在所述数据信息中将所述数据的。
5、当前数据状态修改为表示所述目标数据更新 动作正在执行的数据状态, 并控制所述缓存服务器对所述数据执行所述目标数据更新动 作 ; 响应于所述目标数据更新动作的完成, 在所述数据信息中将所述数据的当前数据状态 修改为表示所述目标数据更新动作执行完成的数据状态。 4. 根据权利要求 3 所述的方法, 所述操作为读取数据的操作, 所述目标数据更新动作 为数据存储 ; 所述触发执行所述操作对应的所述目标数据更新动作的数据状态为空置状态, 所述空 置状态表示在所述缓存服务器中不存在所述数据 ; 所述表示所述目标数据更新动作正在执行的数据状态为存储中状态, 所述存储中状态 表示所述缓存服务器正在存储所述数据。
6、 ; 所述表示所述目标数据更新动作执行完成的数据状态为已储存状态, 所述已储存状态 表示所述数据已经存储在所述缓存服务器中 ; 所述控制所述缓存服务器对所述数据执行目标数据更新动作, 包括 : 从底层数据库服 务器中提取所述数据, 并将所述数据储存到所述缓存服务器中。 5. 根据权利要求 4 所述的方法, 所述在所述数据信息中将所述数据的当前数据状态修 改为存储中状态之后, 还包括 : 在所述数据信息中再次获取所述数据在所述缓存服务器中的当前数据状态, 作为第二 数据状态 ; 响应于确定所述第二数据状态不属于删除中状态和已删除状态, 进入所述从底层数据 库服务器中提取所述数据并将所述数据储存到。
7、所述缓存服务器中的步骤 ; 其中, 所述删除 中状态表示所述缓存服务器中正在删除所述数据, 所述已删除状态表示所述缓存服务器完 成对所述数据的删除。 6. 根据权利要求 4 所述的方法, 还包括 : 响应于确定所述第一数据状态为已储存状态, 从所述缓存服务器中读取所述数据, 并 权 利 要 求 书 CN 103324679 A 2 2/4 页 3 控制缓存服务器拒绝所述目标数据存储动作。 7. 根据权利要求 3 所述的方法, 所述操作为更改或删除所述数据的操作, 所述目标数 据更新动作为数据删除 ; 所述触发执行所述操作对应的所述目标数据更新动作的数据状态为已储存状态, 所述 已储存状态表示所。
8、述数据已经存储在所述缓存服务器中 ; 所述表示所述目标数据更新动作正在执行的数据状态为删除中状态, 所述删除中状态 表示所述缓存服务器中正在删除所述数据 ; 所述表示所述目标数据更新动作执行完成的数据状态为空置状态, 所述空置状态表示 在所述缓存服务器中不存在所述数据 ; 所述控制所述缓存服务器对所述数据执行目标数据更新动作, 具体为 : 将所述数据从 所述缓存服务器中删除。 8. 根据权利要求 7 所述的方法, 所述将所述数据从所述缓存服务器中删除之后, 还包 括 : 根据所述操作, 更改或删除底层数据库服务器中所述数据, 并进入在所述数据信息中 将所述数据的当前数据状态修改为空置状态的步骤。
9、。 9. 根据权利要求 8 所述的方法, 还包括 : 响应于确定所述第一数据状态属于空置状态, 将所述数据的当前数据状态修改为删除 中状态, 并进入所述根据所述操作更改或删除底层数据库服务器中所述数据的步骤。 10. 根据权利要求 8 所述的方法, 还包括 : 响应于确定所述第一数据状态属于已删除状态, 将所述数据的当前数据状态修改为删 除中状态, 并进入所述根据所述操作更改或删除底层数据库服务器中所述数据的步骤。 11. 根据权利要求 7 10 任意一项所述的方法, 所述在所述数据信息中将所述数据的 当前数据状态修改为空置状态, 包括 : 在所述数据信息中再次获取所述数据的当前数据状态, 作。
10、为第三数据状态 ; 响应于确定所述第三数据状态属于删除中状态, 在所述数据信息中将所述数据的当前 数据状态修改为已删除状态, 并返回所述在所述数据信息中再次获取所述数据的当前数据 状态, 作为第三数据状态的步骤 ; 所述已删除状态表示所述缓存服务器完成对所述数据的 删除 ; 响应于确定所述第三数据状态属于已删除状态, 在所述数据信息中将所述数据的当前 数据状态修改为空置状态。 12. 一种设备, 包括 : 第一获取模块, 用于响应于用户对底层数据库服务器中数据的操作, 从缓存服务器中 保存的所述数据的数据信息中获取所述数据的当前数据状态, 作为第一数据状态 ; 其中, 所 述当前数据状态是根据。
11、所述缓存服务器对所述数据当前正在执行的数据更新动作的执行 情况而在所述数据信息中设置的 ; 第一控制模块, 用于响应于确定所述第一数据状态表示所述缓存服务器对所述数据当 前正在执行数据更新动作, 控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标 数据更新动作。 13. 根据权利要求 12 所述的设备, 所述第一获取模块包括 : 权 利 要 求 书 CN 103324679 A 3 3/4 页 4 特征码获取子模块, 用于响应于用户对底层数据库服务器中数据的操作, 从底层数据 库服务器中获取所述数据的特征码 ; 查找子模块, 用于根据所述特征码, 在所述缓存服务器中查找所述数据的当前数据状。
12、 态, 作为第一数据状态。 14. 根据权利要求 12 所述的设备, 还包括 : 第一修改模块, 用于响应于确定所述第一数据状态属于触发执行所述操作对应的所述 目标数据更新动作的数据状态, 在所述数据信息中将所述数据的当前数据状态修改为表示 所述目标数据更新动作正在执行的数据状态 ; 第二控制模块, 用于控制所述缓存服务器对所述数据执行所述目标数据更新动作 ; 第二修改模块, 用于响应于所述目标数据更新动作的完成, 在所述数据信息中将所述 数据的当前数据状态修改为表示所述目标数据更新动作执行完成的数据状态。 15. 根据权利要求 14 所述的设备, 所述操作为读取数据的操作, 所述目标数据更新。
13、动 作为数据存储 ; 所述触发执行所述操作对应的所述目标数据更新动作的数据状态为空置状态, 所述空 置状态表示在所述缓存服务器中不存在所述数据 ; 所述表示所述目标数据更新动作正在执行的数据状态为存储中状态, 所述存储中状态 表示所述缓存服务器正在存储所述数据 ; 所述表示所述目标数据更新动作执行完成的数据状态为已储存状态, 所述已储存状态 表示所述数据已经存储在所述缓存服务器中 ; 所述第二控制模块, 包括 : 提取子模块, 用于从底层数据库服务器中提取所述数据 ; 储存子模块, 用于将所述数据储存到所述缓存服务器中。 16. 根据权利要求 15 所述的设备, 还包括 : 第二获取模块, 用。
14、于在所述数据信息中再次获取所述数据在所述缓存服务器中的当前 数据状态, 作为第二数据状态 ; 第一触发模块, 用于响应于确定所述第二数据状态不属于删除中状态和已删除状态, 触发所述第二控制模块 ; 其中, 所述删除中状态表示所述缓存服务器中正在删除所述数据, 所述已删除状态表示所述缓存服务器完成对所述数据的删除。 17. 根据权利要求 15 所述的设备, 还包括 : 读取控制模块, 用于响应于确定所述第一数据状态为已储存状态, 从所述缓存服务器 中读取所述数据, 并控制缓存服务器拒绝所述目标数据存储动作。 18. 根据权利要求 14 所述的设备, 所述操作为更改或删除所述数据的操作, 所述目标。
15、 数据更新动作为数据删除 ; 所述触发执行所述操作对应的所述目标数据更新动作的数据状态为已储存状态, 所述 已储存状态表示所述数据已经存储在所述缓存服务器中 ; 所述表示所述目标数据更新动作正在执行的数据状态为删除中状态, 所述删除中状态 表示所述缓存服务器中正在删除所述数据 ; 所述表示所述目标数据更新动作执行完成的数据状态为空置状态, 所述空置状态表示 在所述缓存服务器中不存在所述数据 ; 权 利 要 求 书 CN 103324679 A 4 4/4 页 5 所述第二控制模块, 具体用于将所述数据从所述缓存服务器中删除。 19. 根据权利要求 18 所述的设备, 还包括 : 操作模块, 用。
16、于在所述第二控制模块启动完成之后, 根据所述操作, 更改或删除底层数 据库服务器中所述数据, 并触发所述第二修改模块。 20. 根据权利要求 19 所述的设备, 还包括 : 第三修改模块, 用于响应于确定所述第一数据状态属于空置状态, 将所述数据的当前 数据状态修改为删除中状态 ; 第二触发模块, 用于在所述第三修改模块启动完成之后, 触发所述操作模块。 21. 根据权利要求 19 所述的设备, 还包括 : 第四修改模块, 用于响应于确定所述第一数据状态属于已删除状态, 将所述数据的当 前数据状态修改为删除中状态 ; 第三触发模块, 用于在所述第四修改模块启动完成之后, 触发所述操作模块。 2。
17、2. 根据权利要求 18 21 所述的设备, 所述第二修改模块包括 : 第三获取子模块, 用于在所述数据信息中再次获取所述数据的当前数据状态, 作为第 三数据状态 ; 第五修改子模块, 用于响应于确定所述第三数据状态属于删除中状态, 在所述数据信 息中将所述数据的当前数据状态修改为已删除状态 ; 第四触发子模块, 用于在所述第五修改模块启动完成之后, 触发所述第五修改模块, 触 发所述第三获取模块 ; 第六修改子模块, 用于响应于确定所述第三数据状态属于已删除状态, 在所述数据信 息中将所述数据的当前数据状态修改为空置状态。 权 利 要 求 书 CN 103324679 A 5 1/19 页 。
18、6 一种缓存服务器中数据更新的控制方法和设备 技术领域 0001 本发明的实施方式涉及数据处理领域, 更具体地, 本发明的实施方式涉及一种缓 存服务器中数据更新的控制方法和设备。 背景技术 0002 本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。 此处的 描述可包括可以探究的概念, 但不一定是之前已经想到或者已经探究的概念。因此, 除非 在此指出, 否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技 术, 并且并不因为包括在本部分中就承认是现有技术。 0003 在例如整个互联网中, 由于大量用户同时在线, 网络应用服务产品的底层数据库 需要能够同时满足大量用。
19、户对数据的操作请求, 并且还需要保证用户响应时间较短。由于 底层数据库服务器的数据在一次更新之后会被用户多次读取, 为了提高数据读取速度以及 减小对用户读取数据操作的响应时间, 底层数据库服务器会将用户需要读取的数据存入外 部的缓存服务器, 用户在读取数据时是从性能更加强大的缓存服务器中读取。 0004 对于由缓存服务器和底层数据库服务器组成的数据库系统, 同一数据在底层数据 库服务器和缓存服务器中各具有一个副本, 所以, 在用户对底层数据库服务器中数据的副 本进行更新的操作时也需要更新缓存服务器中同一数据的副本, 这样才能保证缓存服务器 和底层数据库服务器中同一数据的副本一致, 从而保证在用。
20、户读取数据时缓存服务器所提 供的数据与底层数据库服务器中的数据一致。 0005 为了保证缓存服务器中数据与底层数据库服务器中数据相一致, 现有技术中最常 用的方法是 : 根据用户对数据的操作, 立即更新底层数据库服务器中的数据, 并根据底层数 据库服务器中数据的更新情况来更新缓存服务器中的数据。其中, 数据更新动作可以包括 数据存储、 数据更改和 / 或数据删除 ; 数据存储是指存入原先不存在的新数据, 而数据更改 是指将在已存储的数据中将原存储的内容替换为新的内容。 发明内容 0006 但是, 由于大量用户同时对数据进行操作, 同一条数据常常存在多个并发操作, 也 即, 多个用户同时对同一条。
21、数据进行多个操作。 当出现对同一条数据的大量并发操作时, 现 有技术中对每一个并发操作都会根据底层数据库服务器中的数据更新动作来完成缓存服 务器中的数据更新动作, 而各个并发操作触发的缓存服务器数据更新动作是同时对同一条 数据进行的, 也即, 缓存服务器中各个并发的数据更新动作是不加区分地同时进行和完成 的, 这样, 各个并发的数据更新动作之间就会由于彼此完成情况的干扰影响而导致两个服 务器中同一数据的数据副本不一致。例如, 假设当前具有两个并发的操作, 一个操作 (第一 操作) 是要对底层数据库服务器中的目标数据执行数据更改并将对缓存服务器中的目标数 据执行数据删除, 另一个操作 (第二操作。
22、) 是要将底层数据库服务器中的目标数据储存到缓 存服务器中, 则当这两个操作同时进行数据更新动作时, 如果第一操作在第二操作对底层 说 明 书 CN 103324679 A 6 2/19 页 7 数据库服务器中的目标数据更改之前从底层数据库服务器提取了目标数据, 又在第二操作 对缓存服务器中的目标数据删除之后将提取的目标输入储存到缓存服务器, 则第一操作和 第二操作所对应的数据更新互相之间就产生了干扰, 这样就会使得底层数据库服务器中的 目标数据与缓存服务器中的目标数据不一致。 0007 因此, 在现有技术中由于缓存服务器对同一数据的所有并发操作触发的数据更新 过程都不加区分地同时进行并完成,。
23、 就会使得各个并发的数据更新动作受到彼此完成情况 之间的干扰影响, 从而使得底层数据库服务器与缓存服务器中同一数据的数据副本不一致 的情况具有很高的发生几率。 0008 为此, 非常需要一种改进的缓存服务器中数据更新的控制方法和设备, 以避免对 同一数据的所有并发操作缓存服务器都不加区分地同时进行并完成数据更新, 从而避免每 个数据更新的完成情况都会受到其他所有并发的数据更新的完成情况的干扰影响而减小 底层数据库服务器与缓存服务器中同一数据的数据副本不一致的发生几率。 0009 在本上下文中, 本发明的实施方式期望提供一种缓存服务器中数据更新的控制方 法和设备。 0010 在本发明实施方式的第。
24、一方面中, 提供了一种缓存服务器中数据更新的控制方 法, 例如可以包括 : 响应于用户对底层数据库服务器中数据的操作, 从缓存服务器中保存的 所述数据的数据信息中获取所述数据的当前数据状态, 作为第一数据状态 ; 其中, 所述当前 数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而 在所述数据信息中设置的 ; 响应于确定所述第一数据状态表示所述缓存服务器对所述数据 当前正在执行数据更新动作, 控制所述缓存服务器拒绝对所述数据执行所述操作对应的目 标数据更新动作。 0011 在本发明实施方式的第二方面中, 提供了一种缓存服务器中数据更新的控制设 备, 例如可以包括 : 。
25、第一获取模块, 用于响应于用户对底层数据库服务器中数据的操作, 从 缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态, 作为第一数据 状态 ; 其中, 所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更 新动作的执行情况而在所述数据信息中设置的 ; 第一控制模块, 用于响应于确定所述第一 数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作, 控制所述缓存服务 器拒绝对所述数据执行所述操作对应的目标数据更新动作。 0012 根据本发明实施方式中缓存服务器中数据更新的控制方法和设备, 由于在缓存服 务器中保存的数据信息中为数据根据缓存服务器对该数据当前正在。
26、执行的数据更新动作 而设置了数据状态, 当用户对底层数据库服务器中的数据触发操作时, 可以通过此时该数 据在缓存服务器中的当前数据状态来判断缓存服务器中该数据的数据更新动作的执行情 况, 从而在此时的当前数据状态表示缓存服务器对该数据当前正在执行数据更新动作时, 可以控制缓存服务器拒绝执行该操作对应的目标数据更新动作, 这样, 当存在多个对同一 数据的并发操作时, 就可以使得各个操作对应的目标数据更新动作在缓存服务器当前正在 对该数据执行其他数据更新动作时被拒绝执行, 从而就可以避免缓存服务器对同一数据的 所有并发操作触发的数据更新过程都不加区分地同时进行并完成, 避免在缓存服务器中同 时执行。
27、具有导致两个数据副本不一致风险的并发数据更新动作, 从而减少未被拒绝的数据 更新动作所受到的干扰影响, 从而减少了同一数据在底层数据库服务器与缓存服务器中的 说 明 书 CN 103324679 A 7 3/19 页 8 数据副本不一致的发生几率, 并减少了响应用户的数据操作时响应错误的次数, 为用户带 来了更好的体验。 附图说明 0013 通过参考附图阅读下文的详细描述, 本发明示例性实施方式的上述以及其他目 的、 特征和优点将变得易于理解。 在附图中, 以示例性而非限制性的方式示出了本发明的若 干实施方式, 其中 : 0014 图 1 示意性地示出了适于实现本发明实施方式的示例性计算系统 。
28、100 的框图 ; 0015 图 2 示意性地示出了本发明的实施方式的一个示例性应用场景的框架示意图 ; 0016 图 3 示意性地示出了本发明中缓存服务器中数据更新的控制方法一实施例的流 程图 ; 0017 图 4 示意性地示出了本发明的控制方法一实施例中的一种执行目标数据更新动 作的实施方式的流程图 ; 0018 图 5 示意性地示出了本发明中缓存服务器中数据更新的控制方法又一实施例的 流程图 ; 0019 图 6 示意性地示出了本发明的控制方法又一实施例中的又一种实施方式的流程 图 ; 0020 图 7 示意性地示出了本发明中缓存服务器中数据更新的控制方法再一实施例的 流程图 ; 002。
29、1 图8示意性地示出了本发明的控制方法再一实施例中的一种步骤705的实施方式 的流程图 ; 0022 图 9 示意性地示出了本发明中缓存服务器中数据更新的控制方法又再一实施例 的流程图 ; 0023 图 10 示意性地示出了本发明中缓存服务器中数据更新的控制方法又再一实施例 的流程图 ; 0024 图 11 示意性地示出了本发明中缓存服务器中数据更新的控制设备一实施例的结 构示意图 ; 0025 图12示意性地示出了本发明中控制设备一实施例中的一种第一获取模块1101的 结构框图 ; 0026 图 13 示意性地示出了本发明中缓存服务器中数据更新的控制设备又一实施例的 结构示意图 ; 0027。
30、 图 14 示意性地示出了本发明中缓存服务器中数据更新的控制设备再一实施例的 结构示意图 ; 0028 图 15 示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例 的结构示意图 ; 0029 图 16 示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例 的结构示意图 ; 0030 图 17 示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例 的结构示意图 ; 说 明 书 CN 103324679 A 8 4/19 页 9 0031 图 18 示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例 的结构示意图 ; 0032 图 19 示意性。
31、地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例 的结构示意图 ; 0033 图 20 示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例 的结构示意图 ; 0034 图 21 示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例 的结构示意图。 0035 在附图中, 相同或对应的标号表示相同或对应的部分。 具体实施方式 0036 下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解, 给出这 些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明, 而并非以任何 方式限制本发明的范围。 相反, 提供这些实施方式是为了使本公开更加透彻和完。
32、整, 并且能 够将本公开的范围完整地传达给本领域的技术人员。 0037 图1示出了适于实现本发明实施方式的示例性计算系统100的框图。 如图1所示, 计算系统 100 可以包括 : 中央处理单元 (CPU) 101、 随机存取存储器 (RAM) 102、 只读存储器 (ROM) 103、 系统总线 104、 硬盘控制器 105、 键盘控制器 106、 串行接口控制器 107、 并行接口 控制器108、 显示控制器109、 硬盘110、 键盘111、 串行外部设备112、 并行外部设备113和显 示器114。 这些设备中, 与系统总线104耦合的有CPU101、 RAM102、 ROM103、 。
33、硬盘控制器105、 键盘控制器 106、 串行控制器 107、 并行控制器 108 和显示控制器 109。硬盘 110 与硬盘控 制器 105 耦合, 键盘 111 与键盘控制器 106 耦合, 串行外部设备 112 与串行接口控制器 107 耦合, 并行外部设备 113 与并行接口控制器 108 耦合, 以及显示器 114 与显示控制器 109 耦 合。应当理解, 图 1 所述的结构框图仅仅是为了示例的目的, 而不是对本发明范围的限制。 在某些情况下, 可以根据具体情况增加或减少某些设备。 0038 本领域技术技术人员知道, 本发明的实施方式可以实现为一种系统、 方法或计算 机程序产品。因此。
34、, 本公开可以具体实现为以下形式, 即 : 完全的硬件、 完全的软件 (包括固 件、 驻留软件、 微代码等) , 或者硬件和软件结合的形式, 本文一般称为 “电路” 、“模块” 或 “系 统” 。此外, 在一些实施例中, 本发明还可以实现为在一个或多个计算机可读介质中的计算 机程序产品的形式, 该计算机可读介质中包含计算机可读的程序代码。 0039 可以采用一个或多个计算机可读的介质的任意组合。 计算机可读介质可以是计算 机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是, 但不限于, 电、 磁、 光、 电磁、 红外线、 或半导体的系统、 装置或器件, 或者任意以上的组合。计算。
35、机可读 存储介质的更具体的例子 (非穷举示例) 例如可以包括 : 具有一个或多个导线的电连接、 便 携式计算机磁盘、 硬盘、 随机存取存储器 (RAM) 、 只读存储器 (ROM)、 可擦式可编程只读存储 器(EPROM或闪存)、 光纤、 便携式紧凑磁盘只读存储器(CD-ROM)、 光存储器件、 磁存储器件、 或者上述的任意合适的组合。在本文件中, 计算机可读存储介质可以是任何包含或存储程 序的有形介质, 该程序可以被指令执行系统、 装置或者器件使用或者与其结合使用。 0040 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 说 明 书 CN 103324679 A 9。
36、 5/19 页 10 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式, 包括但不限 于电磁信号、 光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可 读存储介质以外的任何计算机可读介质, 该计算机可读介质可以发送、 传播或者传输用于 由指令执行系统、 装置或者器件使用或者与其结合使用的程序。 0041 计算机可读介质上包含的程序代码可以用任何适当的介质传输, 包括但不限于无 线、 电线、 光缆、 RF 等等, 或者上述的任意合适的组合。 0042 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机 程序代码, 所述程序设计语言包括面向对象的。
37、程序设计语言诸如 Java、 Smalltalk、 C+, 还包括常规的过程式程序设计语言诸如 “C” 语言或类似的程序设计语言。程序代码可以 完全地在用户计算机上执行、 部分地在用户计算机上执行、 作为一个独立的软件包执行、 部 分在用户计算机上部分在远程计算机上执行、 或者完全在远程计算机或服务器上执行。在 涉及远程计算机的情形中, 远程计算机可以通过任意种类的网络 (包括局域网 (LAN) 或广 域网 (WAN)) 连接到用户计算机, 或者, 可以连接到外部计算机 (例如利用因特网服务提供商 来通过因特网连接) 。 0043 下面将参照本发明实施例的方法的流程图和设备 (或系统) 的框图。
38、描述本发明的 实施方式。应当理解, 流程图和 / 或框图的每个方框以及流程图和 / 或框图中各方框的组 合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、 专用计算 机或其它可编程数据处理装置的处理器, 从而生产出一种机器, 这些计算机程序指令通过 计算机或其它可编程数据处理装置执行, 产生了实现流程图和 / 或框图中的方框中规定的 功能 / 操作的装置。 0044 也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置 以特定方式工作的计算机可读介质中, 这样, 存储在计算机可读介质中的指令就产生出一 个包括实现流程图和 / 或框图中的方框中规定的功能 / 。
39、操作的指令装置的产品。 0045 也可以把计算机程序指令加载到计算机、 其它可编程数据处理装置、 或其它设备 上, 使得在计算机、 其它可编程数据处理装置或其它设备上执行一系列操作步骤, 以产生计 算机实现的过程, 从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图 和 / 或框图中的方框中规定的功能 / 操作的过程。 0046 根据本发明的实施方式, 提出了一种控制缓存服务器中数据更新的方法和设备。 0047 在本文中, 需要理解的是, 附图中的任何元素数量均用于示例而非限制, 以及任何 命名都仅用于区分, 而不具有任何限制含义。 0048 下面参考本发明的若干代表性实施方式, 。
40、详细阐释本发明的原理和精神。 0049 发明概述 0050 本发明人发现, 在大量用户触发对同一数据的并发操作时, 现有技术中底层数据 库服务器与缓存服务器中数据副本不一致的发生几率高, 是因为对缓存服务器中该数据的 所有并发的数据更新动作会不加区分地同时进行。 由于各个并发的数据更新动作需要的执 行速度、 完成时间都不同, 这样就会造成很多后执行的数据更新动作在前执行的数据更新 动作完成之前完成, 从而使得每个数据更新动作的完成情况都会受到其他所有并发的数据 更新动作的完成情况的干扰影响, 从而造成两个服务器中的数据副本不一致的情况具有很 高的发生几率。因此, 为了解决这一问题, 在出现对同。
41、一数据的多个并发操作时, 就需要尽 说 明 书 CN 103324679 A 10 6/19 页 11 量避免在缓存服务器中对该数据同时执行具有导致两个服务器中数据副本不一致风险的 并发数据更新动作。 0051 基于上述发现, 本发明的基本思想是 : 在缓存服务器中保存的每个数据的数据信 息中设置一个数据状态, 用来表示缓存服务器对该数据当前正在执行的数据更新动作的执 行情况 ; 当用户对底层数据库服务器中该数据触发操作时, 通过该数据当前在数据信息中 的数据状态来判断缓存服务器中该数据的数据更新动作的执行情况, 并在当前的数据状态 表示缓存服务器对该数据当前正在执行数据更新动作时, 控制缓存。
42、服务器拒绝执行该操作 对应的目标数据更新动作。这样, 由于每次触发数据更新动作时都通过数据状态的判断来 实现在缓存服务器中当前对该数据正在执行其他数据更新动作时拒绝执行本次的目标数 据更新动作, 就可以避免对同一数据在缓存服务器中同时执行具有导致两个服务器中同一 数据的数据副本不一致风险的数据更新动作, 从而避免未被拒绝的数据更新动作受到的干 扰影响, 从而减少了同一数据在底层数据库服务器与缓存服务器中的数据副本不一致的发 生几率。 0052 在介绍了本发明的基本原理之后, 下面具体介绍本发明的各种非限制性实施方 式。 0053 应用场景总览 0054 首先参考图2, 图2是本发明的实施方式的。
43、一个示例性应用场景的框架示意图。 其 中, 用户通过用户界面交互设备 (例如客户端 202) 与控制服务器 201 进行交互, 该控制服务 器 201 分别与底层数据库服务器 203、 缓存服务器 204 进行交互, 从而实现客户端 202 与底 层数据库服务器 203 和缓存服务器 204 进行对数据的交互。本领域技术人员可以理解, 图 2 所示的框架示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施 方式的适用范围不受到该框架任何方面的限制。 0055 需要注意的是, 此处的客户端 202 可以是现有的、 正在研发的或将来研发的、 能够 通过任何形式的有线或无线连接 (例如。
44、, Wi-Fi、 LAN、 WAN、 因特网等) 与控制服务器 201 交互 的任何客户端, 包括但不限于 : 现有的、 正在研发的或将来研发的、 台式计算机、 膝上型计算 机、 移动终端 (包括智能手机、 非智能手机、 各种平板电脑) 等。 0056 还需要注意的是, 此处的控制服务器 201、 底层数据库服务器 203 和缓存服务器 204 都仅是现有的、 正在研发的或将来研发的、 能够向用户提供具有数据库系统的网络产品 应用的设备的一个示例。本发明的实施方式在此方面不受任何限制。 0057 在图 2 所示的示例性应用场景中, 控制服务器 201 可以响应于用户对底层数据库 服务器 203。
45、 中数据的操作, 从缓存服务器 204 中保存的所述数据的数据信息中获取所述数 据的当前数据状态, 作为第一数据状态 ; 其中, 所述当前数据状态是根据所述缓存服务器 204 对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的。然 后控制服务器201可以响应于确定所述第一数据状态表示所述缓存服务器204对所述数据 当前正在执行数据更新动作, 控制所述缓存服务器 204 拒绝对所述数据执行所述操作对应 的目标数据更新动作。需要说明的是, 此处的用户对底层数据库服务器 203 中数据的操作 例如可以是用户通过点击客户端 202 提供的、 用于触发数据库系统数据应用服务的快捷链 。
46、接而发送至控制服务器 201 的指令。根据本发明的某些示例性实施方式, 所述数据应用服 务例如可以读取数据库系统中的数据而显示在客户端 202 上。 说 明 书 CN 103324679 A 11 7/19 页 12 0058 需要注意的是, 虽然此处将本发明实施方式的动作描述为由控制服务器 201 执 行, 但是这些动作也可以由客户端 202 执行, 或者也可以由底层数据库服务器 203 来执行, 或者也可以由缓存服务器204来执行, 当然也可以由客户端202、 控制服务器201、 底层数据 库服务器 203 和缓存服务器 204 分别执行一部分动作, 或者也可以是由客户端 202、 底层数。
47、 据库服务器203和缓存服务器204分别执行一部分动作。 本发明在执行主体方面不受限制, 只要执行了本发明实施方式所公开的动作即可。 0059 示例性方法 0060 下面结合图 2 的应用场景, 参考图 3 来描述根据本发明示例性实施方式的用于控 制缓存服务器中数据更新的方法。需要注意的是, 上述应用场景仅是为了便于理解本发明 的精神和原理而示出, 本发明的实施方式在此方面不受任何限制。 相反, 本发明的实施方式 可以应用于适用的任何场景。 0061 参见图 3, 示出了本发明中缓存服务器中数据更新的控制方法一实施例的流程图, 本实施例例如具体可以包括 : 0062 步骤 301、 响应于用户。
48、对底层数据库服务器中数据的操作, 从缓存服务器中保存的 所述数据的数据信息中获取所述数据的当前数据状态, 作为第一数据状态 ; 其中, 所述当前 数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而 在所述数据信息中设置的。 0063 其中, 所述数据的数据信息可以是在缓存服务器中与该数据对应保存的信息, 例 如可以包括该数据的特征码和该数据的当前数据状态, 特征码可以用于区分各个数据以及 与底层数据库服务器中的数据对应, 例如可以是字符串或可以是数字, 当前数据状态可以 是一个允许修改的值, 用于在每次缓存服务器对该数据的数据更新动作的执行情况发生变 化时, 对应地修。
49、改数据状态的值, 例如, 当前数据状态的值为 Empty 时表示缓存服务器中没 有该数据, 如果缓存服务器要存储该数据时当前数据状态的值可以修改为Mock。 例如, 采用 如 memcached(一种分布式内存的缓存系统) 或 redis(一种分布式内存的缓存系统) 的 KV 系统 (Key Value, 数据带有特征码和状态值的数据库) 的缓存服务器, 每条数据除了数据内 容可以包括 Key 和 Value 两部分, 其中 Key 为该条数据的特征码, Value 值为该条数据的当 前数据状态。 0064 在本实施例中, 需要根据缓存服务器对数据当前正在执行的数据更新动作的执行 情况来设置该数据的当前数据状态, 这样才能实现通过当前数据状态来确定该缓存服务器 对该数据是否正在进行数据更新动作。 例如, 可供设置的当前数据状态可以包括 : 空置状态 (Empty) 、 已存储状态 (Cache) 、 存储中状态 (Mock) 、 删除中状态 (Deleting) 和已删除状态 (Deleted) 。其中, 空置状态表。