《数据存储、读取方法及数据存储、读取装置.pdf》由会员分享,可在线阅读,更多相关《数据存储、读取方法及数据存储、读取装置.pdf(16页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103856516 A (43)申请公布日 2014.06.11 CN 103856516 A (21)申请号 201210507382.8 (22)申请日 2012.12.03 H04L 29/08(2006.01) G06F 3/06(2006.01) (71)申请人 腾讯科技 (深圳) 有限公司 地址 518044 广东省深圳市福田区振兴路赛 格科技园 2 栋东 403 室 (72)发明人 吴宏杰 李钟伟 田明 (74)专利代理机构 上海波拓知识产权代理有限 公司 31264 代理人 杨波 (54) 发明名称 数据存储、 读取方法及数据存储、 读取装置 (57)。
2、 摘要 本发明涉及数据存储、 读取方法及数据存储、 读取装置, 其中数据存储方法包括 : 接收至少一 写请求, 并根据客户端关键数据将各写请求映射 到相应的写服务处理单元, 写请求用于请求将客 户端当前待存储数据存储到第一存储设备中 ; 判 断第一存储设备的文件中是否存储有相应的客户 端数据 ; 以及若是, 则从第一存储设备的文件对 应的第二存储设备中获得相应的客户端数据在文 件中的起始存储位置, 根据起始存储位置读取存 储于文件中的相应的客户端数据, 将相应的客户 端当前待存储数据更新到文件的相应的客户端数 据中。本发明可以提高数据存储、 读取的速度、 解 决数据存储、 读取过程中网络流量消。
3、耗过大的问 题。 (51)Int.Cl. 权利要求书 2 页 说明书 9 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书9页 附图4页 (10)申请公布号 CN 103856516 A CN 103856516 A 1/2 页 2 1. 一种数据存储方法, 其特征是 : 包括步骤 : 接收至少一写请求, 并根据客户端关键数据将各写请求映射到相应的写服务处理单 元, 该写请求用于请求将客户端当前待存储数据存储到第一存储设备中 ; 判断第一存储设备的文件中是否存储有相应的客户端数据 ; 以及 若是, 则从该第一存储设备的文件对应的第二存储设备中。
4、获得相应的客户端数据在该 文件中的起始存储位置, 根据该起始存储位置读取存储于该文件中的相应的客户端数据, 将相应的客户端当前待存储数据更新到该文件的相应的客户端数据中。 2. 根据权利要求 1 所述的数据存储方法, 其特征是 : 在执行判断该文件中是否存储有 相应的客户端数据的步骤中, 还包括步骤 : 若该文件中未存储有相应的客户端数据, 则将相应的客户端当前待存储数据存储至该 文件的末尾 ; 以及 记录该客户端数据在该文件中的起始存储位置。 3. 根据权利要求 1 所述的数据存储方法, 其特征是 : 还包括步骤 : 判断相应的客户端当前待存储数据更新到该文件中是否更新成功, 若成功, 则将。
5、相应 的客户端当前待存储数据更新到该文件的对应的第二存储设备中, 以保证该第一存储设备 的文件中与对应的该第二存储设备中的各客户端数据保持一致。 4. 根据权利要求 3 所述的数据存储方法, 其特征是 : 还包括步骤 : 判断相应的客户端当前待存储数据更新到第二存储设备是否更新成功, 若不成功, 则 记录未更新成功的错误校正日志, 该错误校正日志包括将相应的客户端当前待存储数据更 新到该第二存储设备的操作类型、 出错时间、 相应的客户端关键数据、 出错前后文件中的相 应的客户端数据。 5. 根据权利要求 4 所述的数据存储方法, 其特征是 : 还包括步骤 : 根据该错误校正日志校正该文件中的相。
6、应的客户端数据, 以使该第一存储设备的文件 中与对应的该第二存储设备中的各客户端数据保持一致。 6. 根据权利要求 5 所述的数据存储方法, 其特征是 : 还包括步骤 : 将预先存储于该文件中的相应的客户端数据的键值与该校正日志的键值进行比较, 若 两者的键值相同, 则将该校正日志中记录的出错前文件中的相应的客户端数据更新到该文 件的相应的客户端数据中, 以对该文件的相应的客户端数据进行恢复。 7. 一种数据存储装置, 其特征在于, 其包括 : 请求接收模块, 用于接收至少一写请求, 并根据客户端关键数据将各写请求映射到相 应的写服务处理单元, 该写请求用于请求将客户端当前待存储数据存储到第一。
7、存储设备 中 ; 以及 判断模块, 用于判断第一存储设备的文件中是否存储有相应的客户端数据, 若是, 则从 该第一存储设备的文件对应的第二存储设备中获得相应的客户端数据在该文件中的起始 存储位置, 根据该起始存储位置读取存储于该文件中的相应的客户端数据, 将相应的客户 端当前待存储数据更新到该文件的相应的客户端数据中。 8. 根据权利要求 7 所述的数据存储装置, 其特征在于, 该判断模块, 还用于判断若该 文件中未存储有相应的客户端数据, 则将相应的客户端当前待存储数据存储至该文件的末 尾, 并记录该客户端数据在该文件中的起始存储位置。 权 利 要 求 书 CN 103856516 A 2 。
8、2/2 页 3 9. 根据权利要求 7 所述的数据存储装置, 其特征在于, 其进一步包括 : 更新模块, 用于判断相应的客户端当前待存储数据更新到该文件中是否更新成功, 若 成功, 则将相应的客户端当前待存储数据更新到该文件的对应的第二存储设备中, 以保证 该第一存储设备的文件中与对应的该第二存储设备中的各客户端数据保持一致。 10. 根据权利要求 9 所述的数据存储装置, 其特征在于, 其进一步包括 : 错误校正模块, 用于判断相应的客户端当前待存储数据更新到第二存储设备是否更新 成功, 若不成功, 则记录未更新成功的错误校正日志, 该错误校正日志包括将相应的客户端 当前待存储数据更新到该第。
9、二存储设备的操作类型、 出错时间、 相应的客户端关键数据、 出 错前后文件中的相应的客户端数据。 11. 根据权利要求 10 所述的数据存储装置, 其特征在于, 该错误校正模块, 还用于根据 该错误校正日志校正该文件中的相应的客户端数据, 以使该第一存储设备的文件中与对应 的该第二存储设备中的各客户端数据保持一致。 12. 根据权利要求 11 所述的数据存储装置, 其特征在于, 该错误校正模块, 还用于将预 先存储于该文件中的相应的客户端数据的键值与该校正日志的键值进行比较, 若两者的键 值相同, 则将该校正日志中记录的出错前文件中的相应的客户端数据更新到该文件的相应 的客户端数据中, 以对该。
10、文件的相应的客户端数据进行恢复。 13. 一种数据读取方法, 其特征是 : 包括步骤 : 接收至少一读请求, 根据客户端关键数据将各读请求映射到相应的读服务处理单元, 该读请求用于请求读取客户端数据, 该读服务处理单元对应第一存储设备的文件及第二存 储设备 ; 以及 从该服务处理单元对应的该第二存储设备中获得相应的客户端数据的起始存储位置, 根据该起始存储位置读取存储于该第二存储设备中的相应的客户端数据。 14. 根据权利要求 13 所述的数据读取方法, 其特征是 : 还包括步骤 : 在该第一存储设备文件中的客户端数据更新后, 判断该第二存储设备中是否存储有相 应的客户端数据 ; 若是, 则从。
11、该第二存储设备中获得相应的客户端数据的起始存储位置, 根据该起始存 储位置读取存储于该第二存储设备中的相应的客户端数据, 将该第一存储设备文件中的客 户端数据更新到该第二存储设备的相应的客户端数据中。 15. 一种数据读取装置, 其特征是 : 其包括 : 接收模块, 用于接收至少一读请求, 根据客户端关键数据将各读请求映射到相应的读 服务处理单元, 该读请求用于请求读取客户端数据, 该读服务处理单元对应第一存储设备 的文件及第二存储设备 ; 以及 读取模块, 用于从该服务处理单元对应的该第二存储设备中获得相应的客户端数据的 起始存储位置, 根据该起始存储位置读取存储于该第二存储设备中的相应的客。
12、户端数据。 16. 根据权利要求 15 所述的数据读取装置, 其特征在于, 其进一步包括 : 更新模块, 用于在该第一存储设备文件中的客户端数据更新后, 判断该第二存储设备 中是否存储有相应的客户端数据 ; 若是, 则从该第二存储设备中获得相应的客户端数据的 起始存储位置, 根据该起始存储位置读取存储于该第二存储设备中的相应的客户端数据, 将该第一存储设备文件中的客户端数据更新到该第二存储设备的相应的客户端数据中。 权 利 要 求 书 CN 103856516 A 3 1/9 页 4 数据存储、 读取方法及数据存储、 读取装置 技术领域 0001 本发明涉及数据存取技术领域, 尤其涉及数据存储。
13、方法、 数据存储装置、 数据读取 方法以及数据读取装置。 背景技术 0002 随着互联网技术的不断发展, 各类网络应用及其产生的网络信息量也在逐渐增 涨。 例如微博是用户在互联网上进行消息分享、 传播的一种新方式, 微博系统具有亿级别的 用户, 生产着海量级的用户数据, 如何有效对这些海量数据进行存储同时又能支持快速、 可 靠的对外服务是目前面临的主要问题, 因此, 设计一种高效的数据存储、 读取系统及数据存 储、 读取方法是非常有意义的。 0003 现有的数据存储、 读取系统其主要的存储介质是用于服务读请求的单个读服务处 理单元和存储器、 用于服务写请求的单个写服务处理单元和数据库、 及其它。
14、备份设备。 其存 储方法为 : 当接收到对数据的写入请求时, 此单个写服务处理单元将数据存储到此数据库 中, 再将存储到数据库中的数据更新到各个存储器和其它的备份设备中, 以使各个存储器 和其它的备份设备中的数据同步更新。其读取方法为 : 当接收到对数据的读取请求时, 此 读取服务处理单元从存储器中读取数据。但是, 这种数据存储、 读取系统及数据存储、 读取 方法存在如下缺点 : 首先, 由于写服务处理单元及读服务处理单元是一个单点模块, 因此成 为整个系统的瓶颈, 严重影响了存储、 读取速度。此外, 写服务处理单元负责将数据的更新 操作同步到各个存储器及其它的备份设备, 这是一个一对多的操作。
15、, 该操作及读取服务处 理单元从存储器中读取数据的操作产生的网络包量和数据流量对网络的带宽消耗很大。 再 者, 写服务请求处理模块对数据库的操作会产生锁表现象, 从而导致系统的性能不理想。 发明内容 0004 因此, 本发明提供数据存储方法、 数据存储装置、 数据读取方法以及数据读取装 置, 可以提高数据存储、 读取的速度、 解决数据存储、 读取过程中网络流量消耗过大的问题。 0005 具体地, 本发明实施例提出的一种数据存储方法, 包括步骤 : 接收至少一写请求, 并根据客户端关键数据将各写请求映射到相应的写服务处理单元, 写请求用于请求将客户 端当前待存储数据存储到第一存储设备中 ; 判断。
16、第一存储设备的文件中是否存储有相应的 客户端的数据 ; 以及若是, 则从第一存储设备的文件对应的第二存储设备中获得相应的客 户端数据在文件中的起始存储位置, 根据起始存储位置读取存储于文件中的相应的客户端 数据, 将相应的客户端当前待存储数据更新到文件的相应的客户端数据中。 0006 另外, 本发明实施例提出的一种数据存储装置, 包括请求接收模块、 以及判断模 块, 请求接收模块, 用于接收至少一写请求, 并根据客户端关键数据将各写请求映射到相应 的写服务处理单元, 写请求用于请求将客户端当前待存储数据存储到第一存储设备中 ; 判 断模块, 用于判断第一存储设备的文件中是否存储有相应的客户端数。
17、据, 若是, 则从第一存 储设备的文件对应的第二存储设备中获得相应的客户端数据在文件中的起始存储位置, 根 说 明 书 CN 103856516 A 4 2/9 页 5 据起始存储位置读取存储于文件中的相应的客户端数据, 将相应的客户端当前待存储数据 更新到文件的相应的客户端数据中。 0007 此外, 本发明实施例提出的一种数据读取方法, 包括步骤 : 接收至少一读请求, 根 据客户端关键数据将各读请求映射到相应的读服务处理单元, 读请求用于请求读取客户端 数据, 读服务处理单元对应第一存储设备的文件及第二存储设备 ; 以及从服务处理单元对 应的第二存储设备中获得相应的客户端数据的起始存储位置。
18、, 根据起始存储位置读取存储 于第二存储设备中的相应的客户端数据。 0008 再者, 本发明实施例提出的一种数据读取装置, 包括接收模块、 以及读取模块, 接 收模块, 用于接收至少一读请求, 根据客户端关键数据将各读请求映射到相应的读服务处 理单元, 读请求用于请求读取客户端数据, 读服务处理单元对应第一存储设备的文件及第 二存储设备 ; 读取模块, 用于从服务处理单元对应的第二存储设备中获得相应的客户端数 据的起始存储位置, 根据起始存储位置读取存储于第二存储设备中的相应的客户端数据。 0009 由上述实施例可知, 本发明通过各写请求根据客户端关键数据将各写请求映射到 相应的写服务处理单元。
19、, 判断文件中是否存储有相应的客户端数据, 若是, 则从第一存储设 备的文件对应的第二存储设备中获得相应的客户端数据在文件中的起始存储位置, 根据起 始存储位置读取存储于文件中的相应的客户端数据, 将客户端当前待存储数据更新到文件 的相应的客户端数据中。还根据客户端关键数据将各读请求映射到相应的读服务处理单 元, 再从第二存储设备中获得相应的客户端数据的起始存储位置, 根据起始存储位置读取 存储于第二存储设备中的相应的客户端数据。这样, 采用第一存储设备结合第二存储设备 实现了对客户端数据的双层存储。 另外, 多个写操作及读操作可以同时进行, 可以将写请求 及读请求分别均摊到各个写操作及读操作。
20、中, 从而解决了仅有单个写操作及读操作时数据 存储、 读取过程中网络流量消耗过大的问题, 不会出现存储时的锁表问题, 还提高了存储、 读取速度。 0010 上述说明仅是本发明技术方案的概述, 为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予以实施, 并且为了让本发明的上述和其他目的、 特征和优点能够 更明显易懂, 以下特举较佳实施例, 并配合附图, 详细说明如下。 附图说明 0011 图 1 是本发明实施例提出的数据存储方法的步骤流程图 ; 0012 图 2 是本发明另一实施例提出的数据存储方法的步骤流程图 ; 0013 图 3 是本发明实施例提出的客户端数据在文件中存储的示意图 。
21、; 0014 图 4 是本发明实施例提出的数据存储装置的主要架构框图 ; 0015 图 5 是本发明实施例提出的数据读取方法的步骤流程图 ; 0016 图 6 是本发明实施例提出的数据读取装置的主要架构框图。 具体实施方式 0017 为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效, 以下结合 附图及较佳实施例, 对依据本发明提出的数据存储方法、 数据存储装置、 数据读取方法以及 数据读取装置其具体实施方式、 结构、 特征及功效, 详细说明如后。 说 明 书 CN 103856516 A 5 3/9 页 6 0018 有关本发明的前述及其他技术内容、 特点及功效, 在以下配合参考图。
22、式的较佳实 施例详细说明中将可清楚的呈现。通过具体实施方式的说明, 当可对本发明为达成预定目 的所采取的技术手段及功效得以更加深入且具体的了解, 然而所附图式仅是提供参考与说 明之用, 并非用来对本发明加以限制。 0019 图 1 是本发明实施例提出的数据存储方法的步骤流程图。图 3 是本发明实施例提 出的客户端数据在文件中存储的示意图。 请参阅图1及图3, 本发明实施例的数据存储方法 可包括以下步骤 S101-S105 : 0020 步骤 S101 : 接收至少一写请求, 并根据客户端关键数据将各写请求映射到相应的 写服务处理单元。 其中, 写请求用于请求将客户端当前待存储数据存储到第一存储。
23、设备中。 0021 本步骤中, 各个客户端当前待存储数据可以为各个客户端的操作数据, 例如客户 端用户更新微博等的内容, 包括对微博的修改、 删除或新增的内容, 修改、 删除或新增的时 间等。如图 3 所示, 客户端数据包括键值和独立数据逻辑结构, 键值包括时间戳和客户端关 键数据。时间戳可以为客户端数据更新的时间信息。客户端关键数据可以为客户端的识别 信息, 例如客户端的账号或 ID 等信息。独立数据逻辑结构可以为客户端的操作数据。可以 有多个写服务处理单元, 各个写服务处理单元将写请求进行合理映射 (即各个写请求对应 到相应的写服务处理单元中) , 以达到同时可以处理多个写操作的目的。 0。
24、022 步骤 S103 : 判断第一存储设备的文件中是否存储有相应的客户端数据, 若是, 则 进行步骤 S105。 0023 本步骤中, 可以通过判断文件中是否存储有客户端名称而获知文件中是否存储有 相应的客户端数据。即若判断文件中存储有客户端名称, 则表示文件中存储有相应的客户 端数据, 反之, 则表示文件中未存储有此客户端数据。 0024 步骤 S105 : 从第一存储设备的文件对应的第二存储设备中获得相应的客户端数 据在文件中的起始存储位置, 根据起始存储位置读取存储于文件中的相应的客户端数据, 将相应的客户端当前待存储数据更新到文件的相应的客户端数据中。 0025 本步骤中, 可以根据。
25、实际需要预先将相应的客户端数据在文件中的起始存储位置 存储在第二存储设备中。 第二存储设备例如可以为缓存, 其存取速度快, 因此, 本步骤中, 通 过快速从第二存储设备中读取客户端数据在文件中的起始存储位置, 从而可以快速获得客 户端数据在文件中的起始存储位置。得到客户端数据在文件中的起始存储位置后, 再从文 件中读取客户端的原始数据进行修改后并覆盖式写回到文件中。 客户端数据在文件中存储 的格式可以如图 3 所示, 即可以采用定长的数据组织方式, 包括 4K (可以根据实际需要自行 定义) 的文件头和文件内容。文件头可以记录文件名、 文件编号、 存储的客户端数据的数量 等头部信息, 而文件内。
26、容包括多个定长的客户端数据块。客户端数据块的具体长度根据实 际需要进行相应设定。 0026 在本发明实施例中, 本发明通过各写请求根据客户端关键数据将各写请求映射到 相应的写服务处理单元, 判断第一存储设备的文件中是否存储有相应的客户端数据, 若是, 则从第一存储设备的文件对应的第二存储设备中获得相应的客户端数据在文件中的起始 存储位置, 根据起始存储位置读取存储于文件中的相应的客户端数据, 将客户端当前待存 储数据更新到文件的相应的客户端数据中。这样, 采用第一存储设备结合第二存储设备实 现了对客户端数据的双层存储。另外, 多个写操作可以同时进行, 解决了单点问题, 可以将 说 明 书 CN。
27、 103856516 A 6 4/9 页 7 写请求均摊到各个写操作中, 从而解决了仅有单个写操作时数据存储过程中网络流量消耗 过大的问题, 不会出现锁表的问题, 还提高了存储速度。 0027 图 2 是本发明另一实施例提供的数据存储方法的步骤流程图。图 2 是在图 1 的 基础上改进而来的。请参阅图 2 及图 3, 本发明实施例的数据存储方法可包括以下步骤 S201-S211 : 0028 步骤 S201 : 接收至少一写请求, 并根据客户端关键数据将各写请求映射到相应的 写服务处理单元。 其中, 写请求用于请求将客户端当前待存储数据存储到第一存储设备中。 0029 本步骤中, 各个客户端当。
28、前待存储数据可以为各个客户端的操作数据, 例如客户 端用户更新微博等的内容, 包括对微博的修改、 删除或新增的内容, 修改、 删除或新增的时 间等。如图 3 所示, 客户端数据包括键值和独立数据逻辑结构, 键值包括时间戳和客户端关 键数据。时间戳可以为客户端数据更新的时间信息。客户端关键数据可以为客户端的识别 信息, 例如客户端的账号或 ID 等信息。独立数据逻辑结构可以为客户端的操作数据。可以 有多个写服务处理单元, 各个写服务处理单元将写请求进行合理映射 (即各个写请求对应 到相应的写服务处理单元中) , 以达到同时可以处理多个写操作的目的。 0030 步骤 S202 : 判断第一存储设备。
29、的文件中是否存储有相应的客户端数据, 若是, 则 进行步骤 S203。若否, 则进行步骤 S205。 0031 本步骤中, 可以通过判断文件中是否存储有客户端名称而获知文件中是否存储有 相应的客户端数据。即若判断文件中存储有客户端名称, 则表示文件中存储有相应的客户 端数据, 反之, 则表示文件中未存储有此客户端数据。 0032 步骤 S203 : 从第一存储设备的文件对应的第二存储设备中获得相应的客户端数 据在文件中的起始存储位置, 根据起始存储位置读取存储于文件中的相应的客户端数据, 将相应的客户端当前待存储数据更新到文件的相应的客户端数据中。 0033 本步骤中, 可以根据实际需要预先将。
30、相应的客户端数据在文件中的起始存储位置 存储在第二存储设备中。 第二存储设备例如可以为缓存, 其存取速度快, 因此, 本步骤中, 通 过快速从第二存储设备中读取客户端数据在文件中的起始存储位置, 从而可以快速获得客 户端数据在文件中的起始存储位置。得到客户端数据在文件中的起始存储位置后, 再从文 件中读取客户端的原始数据进行修改后并覆盖式写回到文件中。 客户端数据在文件中存储 的格式可以如图 3 所示, 即可以采用定长的数据组织方式, 包括 4K (可以根据实际需要自行 定义) 的文件头和文件内容。文件头可以记录文件名、 文件编号、 存储的客户端数据的数量 等头部信息, 而文件内容包括多个定长。
31、的客户端数据块。客户端数据块的具体长度根据实 际需要进行相应设定。 0034 步骤 S205 : 将相应的客户端当前待存储数据存储至文件的末尾。 0035 本步骤中, 以图 3 为例进行说明, 客户端数据在文件中的存储方式是将客户端数 据按照存储时间先后的次序依次进行存储。 因此, 本步骤中, 新增的客户端数据存储在文件 的末尾。在其他实施方式中, 也可以根据实际需要而采用其他方式设置各客户端数据在文 件中的存储位置。 0036 步骤 S205 中具体还可包括步骤 : 记录客户端数据在文件中的起始存储位置。 0037 本步骤中, 可以将客户端数据在文件中的起始存储位置记录在文件中的某一位 置,。
32、 以便于通过起始存储位置查找到各个客户端数据。 说 明 书 CN 103856516 A 7 5/9 页 8 0038 步骤 S206 : 判断相应的客户端当前待存储数据更新到文件中是否更新成功, 若成 功, 则进行步骤 S207, 若不成功, 则结束。 0039 步骤 S207 : 将相应的客户端当前待存储数据更新到文件的对应的第二存储设备 中, 以保证第一存储设备的文件中与对应的第二存储设备中的各客户端数据保持一致。 0040 本步骤中, 更新文件成功后, 会继续更新第二存储设备中的客户端数据, 以保证第 二存储设备与第一存储设备的文件中的内容保持一致。 0041 步骤 S207 中具体还。
33、可包括步骤 : 0042 若客户端数据首次更新到第二存储设备中, 则将相应的客户端数据在文件中的起 始存储位置更新到第二存储设备中。 0043 步骤 S209 : 判断相应的客户端当前待存储数据更新到第二存储设备是否更新成 功, 若成功, 则结束, 若不成功, 则进行步骤 S210。 0044 步骤 S210 : 记录未更新成功的错误校正日志。 0045 本步骤中, 错误校正日志包括将相应的客户端当前待存储数据更新到第二存储设 备的操作类型、 出错时间、 相应的客户端关键数据、 出错前后文件中的相应的客户端数据 等。 例如对于不同的操作类型, 错误日志的格式分别可以表示如下 :“操作类型 (新。
34、增类型) + 键值 ( 时间戳 + 客户端关键数据 )+ 原始文件记录内容 (即更新前的文件的内容) ” 或者 “操 作类型 (修改类型) + 键值 ( 时间戳 + 客户端关键数据 )+ 新文件记录内容 (即更新后的文件 的内容) + 原始文件记录内容 (即更新前的文件的内容) ” 。其中, 时间戳可以为出错时间, 客 户端关键数据可以为客户端的识别信息, 例如客户端的账号或 ID 等信息。 0046 步骤 S211 : 根据错误校正日志校正文件中的相应的客户端数据, 以使文件中与对 应的第二存储设备中的各客户端的数据保持一致。 0047 本步骤中, 当数据成功更新到第一存储设备的文件和第二存。
35、储设备中, 这样, 第一 存储设备的文件中和第二存储设备中数据一致, 则整个操作成功。当数据未更新成功到第 二存储设备与第一存储设备的文件中的任意一个, 则可以认为整个操作失败。若将文件中 的数据更新到第二存储设备时失败, 则认为文件中的此部分数据也存在错误, 可以通过文 件中的数据与错误校正日志对文件中的数据进行恢复。如果文件中的数据记录的键值 (包 括时间戳和客户端关键数据) 与错误校正日志记录的键值相同, 则表明出现了数据更新到 文件成功但更新到第二存储设备中失败的情况。在这种情况下, 可以通过错误校正日志校 正文件中的相应的客户端数据, 以使第一存储设备的文件中与对应的第二存储设备中的。
36、各 客户端数据保持一致。 0048 步骤 S211 中具体还可包括步骤 : 0049 若将客户端当前待存储数据更新到第二存储设备的操作类型为新增数据操作, 则 将预先存储于文件中的各客户端数据的键值与校正日志的键值进行比较, 若两者的键值相 同, 则判断为与校正日志相同的键值下的文件中的客户端数据记录无效, 将校正日志中记 录的出错前文件中的相应的客户端数据更新到文件的相应的客户端数据中, 以对文件的相 应的客户端数据进行恢复。 0050 若将客户端当前待存储数据更新到第二存储设备的操作类型为修改数据操作, 则 将预先存储于文件中的各用户操作数据的键值与校正日志的键值进行比较, 若两者的键值 。
37、相同, 则将校正日志中记录的出错前文件中的相应的客户端数据更新到文件的相应的客户 说 明 书 CN 103856516 A 8 6/9 页 9 端数据中, 以对文件的相应的客户端数据进行恢复。 若校正日志中记录有文件的原始数据, 则用校正日志中记录的文件的原始数据替换客户端的当前数据。 0051 若将客户端当前待存储数据更新到第二存储设备的更新操作类型为删除数据操 作, 则将预先存储于文件中的各客户端数据的键值与校正日志的键值进行比较, 若两者的 键值相同, 则将校正日志中记录的出错前文件中的相应的客户端数据更新到文件的相应的 客户端数据中, 以对文件的相应的客户端数据进行恢复。 0052 在。
38、本发明的实施例中, 本发明通过各写请求根据客户端关键数据将各写请求映射 到相应的写服务处理单元, 判断第一存储设备的文件中是否存储有相应的客户端数据, 若 是, 则从第一存储设备的文件对应的第二存储设备中获得相应的客户端数据在文件中的起 始存储位置, 根据起始存储位置读取存储于文件中的相应的客户端数据, 将客户端当前待 存储数据更新到文件的相应的客户端数据中。还在数据成功更新到文件中后, 再将各客户 端当前待存储数据更新到文件的对应的第二存储设备中, 以保证第一存储设备的文件中与 对应的第二存储设备中的各客户端数据保持一致。并在数据未成功更新到第二存储设备 时, 记录未更新成功的错误校正日志。。
39、并根据错误校正日志校正文件中的相应的客户端数 据, 以使第一存储设备的文件中与对应的第二存储设备中的各客户端数据保持一致。 这样, 采用第一存储设备结合第二存储设备实现了对客户端数据的双层存储。另外, 多个写操作 可以同时进行, 可以将写请求均摊到各个写操作中, 从而解决了仅有单个写操作时数据存 储过程中网络流量消耗过大的问题, 不会出现锁表的问题, 还提高了存储速度。此外, 通过 将数据更新到文件和第二存储设备中以及出错时通过记录错误日志的方式进行数据恢复, 从而保证了第二存储设备和第一存储设备的文件中存储的数据的强一致性, 并且出错时能 够对数据进行有效恢复。 0053 图4是本发明实施例。
40、提出的数据存储装置的主要架构框图。 请参阅图4, 数据存储 装置包括 : 请求接收模块 401、 以及写服务处理单元, 写服务处理单元包括判断模块 403。 0054 更具体地, 请求接收模块 401, 用于接收至少一写请求, 并根据客户端关键数据将 各写请求映射到相应的写服务处理单元。 0055 其中, 写请求用于请求将客户端当前待存储数据存储到第一存储设备 409 中。客 户端关键数据可以为客户端的识别信息, 例如客户端的账号或 ID 等信息。 0056 判断模块 403, 用于判断第一存储设备 409 的文件中是否存储有相应的客户端数 据, 若是, 则从第一存储设备 409 的文件对应的。
41、第二存储设备 411(例如缓存) 中获得相应 的客户端数据在文件中的起始存储位置, 根据起始存储位置读取存储于文件中的相应的客 户端数据, 将相应的客户端当前待存储数据更新到文件的相应的客户端数据中。 0057 此外, 判断模块 403, 还用于判断若文件中未存储有相应的客户端数据, 则将相应 的客户端当前待存储数据存储至文件的末尾, 并记录客户端数据在文件中的起始存储位 置。 0058 此外, 数据存储装置的写服务处理单元还可以包括 : 更新模块 405、 以及错误校正 模块 407。 0059 更新模块 405, 用于判断相应的客户端当前待存储数据更新到文件中是否更新成 功, 若成功, 则。
42、将相应的客户端当前待存储数据更新到文件的对应的第二存储设备 411 中, 以保证第一存储设备 409 的文件中与对应的第二存储设备 411 中的各客户端数据保持一 说 明 书 CN 103856516 A 9 7/9 页 10 致。 0060 错误校正模块 407, 用于判断相应的客户端当前待存储数据更新到第二存储设备 411 是否更新成功, 若不成功, 则记录未更新成功的错误校正日志。 0061 其中, 错误校正日志包括将相应的客户端当前待存储数据更新到第二存储设备 411 的操作类型、 出错时间、 相应的客户端关键数据、 出错前后文件中的相应的客户端数据。 0062 此外, 错误校正模块 。
43、407, 还用于根据错误校正日志校正文件中的相应的客户端数 据, 以使第一存储设备 409 的文件中与对应的第二存储设备 411 中的各客户端数据保持一 致。 0063 此外, 错误校正模块 407, 还用于将预先存储于文件中的相应的客户端数据的键值 与校正日志的键值进行比较, 若两者的键值相同, 则将校正日志中记录的出错前文件中的 相应的客户端数据更新到文件的相应的客户端数据中, 以对文件的相应的客户端数据进行 恢复。 0064 在本发明实施例中, 本发明通过各写请求根据客户端关键数据将各写请求映射到 相应的写服务处理单元, 判断第一存储设备的文件中是否存储有相应的客户端数据, 若是, 则从。
44、第一存储设备的文件对应的第二存储设备中获得相应的客户端数据在文件中的起始 存储位置, 根据起始存储位置读取存储于文件中的相应的客户端数据, 将客户端当前待存 储数据更新到文件的相应的客户端数据中。还在数据成功更新到文件中后, 再将各客户端 当前待存储数据更新到文件的对应的第二存储设备中, 以保证第一存储设备的文件中与对 应的第二存储设备中的各客户端数据保持一致。并在数据未成功更新到第二存储设备时, 记录未更新成功的错误校正日志。并根据错误校正日志校正文件中的相应的客户端数据, 以使第一存储设备的文件中与对应的第二存储设备中的各客户端数据保持一致。这样, 采 用第一存储设备结合第二存储设备实现了。
45、对客户端数据的双层存储。另外, 多个写操作可 以同时进行, 可以将写请求均摊到各个写操作中, 从而解决了仅有单个写操作时数据存储 过程中网络流量消耗过大的问题, 不会出现锁表的问题, 还提高了存储速度。此外, 通过将 数据更新到文件和第二存储设备中以及出错时通过记录错误日志的方式进行数据恢复, 从 而保证了第二存储设备和第一存储设备的文件中存储的数据的强一致性, 并且出错时能够 对数据进行有效恢复。 0065 图5是本发明实施例提出的数据读取方法的步骤流程图。 请参阅图5, 本发明实施 例的数据读取方法可包括以下步骤 S501-S503 : 0066 步骤 S501 : 接收至少一读请求, 根。
46、据客户端关键数据将各读请求映射到相应的读 服务处理单元。 其中, 此读请求用于请求读取客户端数据, 此读服务处理单元对应第一存储 设备的文件及第二存储设备。 0067 本步骤中, 客户端关键数据可以为客户端的识别信息, 例如客户端的账号或 ID 等 信息。 可以有多个读服务处理单元, 各个读服务处理单元将读请求进行合理映射 (即各个读 请求对应到相应的读服务处理单元中) , 以达到同时可以处理多个读操作的目的。 0068 步骤 S501 前具体还可包括步骤 : 在第一存储设备文件中的客户端数据更新后, 将 第一存储设备文件中的客户端数据实时更新到第一存储设备的文件对应的第二存储设备 中。 00。
47、69 其中, 第一存储设备文件中的客户端数据与第一存储设备的文件对应的第二存储 说 明 书 CN 103856516 A 10 8/9 页 11 设备中存储的客户端数据的存储方式可以相同, 即都以相同的文件存储形式。 0070 将第一存储设备文件中的客户端数据实时更新到第一存储设备的文件对应的第 二存储设备中的方法可以如下 : 判断第二存储设备中是否存储有相应的客户端数据 ; 若 是, 则从第二存储设备中获得相应的客户端数据的起始存储位置, 根据起始存储位置读取 存储于第二存储设备中的相应的客户端数据, 将第一存储设备文件中的客户端数据更新到 第二存储设备的相应的客户端数据中。若第二存储设备中。
48、未存储有相应的客户端数据, 则 将相应的第一存储设备文件中的客户端数据存储至第二存储设备的文件的末尾。 0071 步骤 S503 : 从服务处理单元对应的第二存储设备中获得相应的客户端数据的起 始存储位置, 根据起始存储位置读取存储于第二存储设备中的相应的客户端数据。 0072 本步骤中, 可以根据实际需要预先将相应的客户端数据的起始存储位置存储在存 储设备中。 该第二存储设备例如可以为缓存, 其存取速度快, 因此, 本步骤中, 通过快速从第 二存储设备中读取客户端数据的起始存储位置, 从而可以快速读取存储于第二存储设备中 的客户端的数据。 0073 在本发明实施例中, 本发明根据客户端关键数。
49、据将各读请求映射到相应的读服务 处理单元, 再从第二存储设备中获得相应的客户端数据的起始存储位置, 根据起始存储位 置读取存储于第二存储设备中的相应的客户端数据。 这样, 多个读操作可以同时进行, 可以 将读请求均摊到各个读操作中, 从而解决了仅有单个读操作时数据读取过程中网络流量消 耗过大的问题, 此外, 还通过读取起始位置再获取客户端数据的流程, 极大地提高了读取速 度。 0074 图6是本发明实施例提出的数据读取装置的主要架构框图。 请参阅图6, 数据读取 装置包括 : 接收模块 601、 以及读服务处理单元, 读服务处理单元包括读取模块 603。 0075 更具体地, 接收模块 601, 用于接收至少一读请求, 根据客户端关键数据将各读请 求映射到相应的读服务处理单元, 读请求用于请求读取客户端数据, 读服务处理单元对应 第一存储设备的文件及第二存储设备。 0076 读取模块 603, 用于从服务处理单元对应的第二存储设备 (例如存储设备 605) 中 获得相应的客户端数据的。