一种数据读取及写入的方法和装置的制造方法

文档序号:8487848阅读:322来源:国知局
一种数据读取及写入的方法和装置的制造方法
【技术领域】
[0001] 本发明涉及数据存储技术领域,特别是涉及一种数据读取方法,一种数据写入方 法,一种数据读取装置和一种数据写入装置。
【背景技术】
[0002] 可靠性及可扩展性的海量数据存储对互联网公司来说是一个巨大的挑战,传统的 数据库往往很难满足该需求,并且很多时候对于特定的系统绝大部分的检索都是基于主键 的的查询,在这种情况下使用关系型数据库将使得效率低下,并且扩展也将成为未来很大 的难题。在这样的情况下,使用Key-value存储将会是一个很好的选择。
[0003] 然而,目前大部分的Key-value存储系统都用于分布式环境中,数据通过socket 传输,数据处理效率低下。

【发明内容】

[0004] 本发明实施例所要解决的技术问题是提供一种数据读取方法及一种数据写入方 法,提高数据处理效率。
[0005] 相应的,本发明实施例还提供了一种数据读取装置及一种数据写入装置,用以保 证上述方法的实现及应用。
[0006] 为了解决上述问题,本发明公开了一种数据读取方法,所述方法包括:
[0007] 接收数据读取请求,所述数据读取请求包括目标数据记录标识;
[0008] 当在预设的关系数据表中匹配到所述目标数据记录标识时,获得与所述目标数据 记录标识对应的目标数据记录虚拟地址;其中,所述关系数据表包括多个数据记录标识与 对应的数据记录的虚拟地址的关联关系;
[0009] 计算所述目标数据记录虚拟地址对应的物理地址,其中,所述物理地址中存储数 据记录标识与对应的数据内容的键值对;
[0010] 从所述物理地址中获得与所述目标数据记录标识对应的数据内容。
[0011] 优选地,所述关系数据表保存在共享内存中。
[0012] 优选地,所述关系数据表包括数据头、索引记录以及数据记录;
[0013] 所述数据头进一步包括索引根节点,空闲数据记录索引根节点,空闲索引记录根 节点;
[0014] 其中,所述索引根节点用于记录数据记录标识及对应的已使用的索引节点的虚拟 地址;
[0015] 所述索引记录用于记录所述索引节点的信息,所述索引节点的信息包括数据记录 标识与对应的数据记录的虚拟地址;
[0016] 所述数据记录用于记录已写入的数据记录标识和对应的数据内容;
[0017] 所述空闲数据记录索引根节点用于记录未使用的数据记录的虚拟地址;
[0018] 所述空闲索引记录根节点用于记录未使用的索引节点的虚拟地址。
[0019] 优选地,所述虚拟地址包括高16位及低16位两部分,所述高16位中记录对应的 索引节点的地址相对数据头的偏移,所述低16位中记录所述索引节点内部的偏移。
[0020] 优选地,在所述当在预设的关系数据表中匹配到所述目标数据记录标识时,获得 与所述目标数据记录标识对应的目标数据记录虚拟地址的步骤之前,还包括:
[0021] 在所述索引根节点中匹配所述目标数据记录标识,获取对应的索引节点的虚拟地 址;
[0022] 计算所述索引节点的虚拟地址对应的索引节点物理地址;
[0023] 在所述索引节点物理地址中获得所述索引节点中记录的数据记录标识与所述数 据记录虚拟地址的关联关系。
[0024] 优选地,采用如下公式计算所述目标数据记录虚拟地址对应的物理地址:
[0025] 物理地址=(所述共享内存基地址+所述数据头大小+当前数据记录的位置*每 条数据记录的大小+〇ffset in record)。
[0026] 优选地,所述方法还包括:
[0027] 封装所述共享内存的数据访问接口。
[0028] 本发明还公开了一种数据写入方法,所述方法包括:
[0029] 接收数据写入请求,所述数据写入请求包括目标数据记录标识及对应的数据内 容;
[0030] 判断在预设的关系数据表中是否匹配到所述目标数据记录标识,其中,所述关系 数据表包括多个数据记录标识与对应的数据记录的虚拟地址的关联关系,所述关系数据表 还包括空闲索引资源;
[0031] 若是,则获得与所述目标数据记录标识对应的目标数据记录虚拟地址,计算所述 目标数据记录虚拟地址对应的物理地址,并将所述目标数据的数据内容写入所述物理地址 中的对应位置;
[0032] 若否,则获取所述空闲索引资源,并将所述目标数据记录标识及对应的数据内容 写入所述空闲索引资源中。
[0033] 优选地,所述关系数据表保存在共享内存中。
[0034] 优选地,所述关系数据表包括数据头、索引记录以及数据记录;所述数据头进一步 包括索引根节点,空闲数据记录索引根节点,空闲索引记录根节点;
[0035] 其中,所述索引根节点用于记录数据记录标识及对应的已使用的索引节点的虚拟 地址;
[0036] 所述索引记录用于记录所述已使用索引节点的信息,所述已使用索引节点的信息 包括数据记录标识与对应的数据记录的虚拟地址;
[0037] 所述数据记录用于记录已写入的数据记录标识和对应的数据内容;
[0038] 所述空闲数据记录索引根节点用于记录未使用的数据记录的虚拟地址;
[0039] 所述空闲索引记录根节点用于记录未使用的索引节点的虚拟地址。
[0040] 优选地,所述空闲索引资源包括所述空闲索引记录根节点及所述空闲数据记录根 节点;所述获取所述空闲索引资源,并将所述目标数据记录标识及对应的数据内容写入所 述空闲索引资源中的步骤包括:
[0041] 从所述空闲索引记录根节点中选取一虚拟地址,将所述虚拟地址对应的索引节点 作为新索引节点;
[0042] 从所述空闲数据记录根节点中选取一虚拟地址,将所述虚拟地址对应的数据记录 作为新的数据记录;
[0043] 将所述目标数据记录标识及对应的数据内容写入所述新的数据记录中;
[0044] 在所述新索引节点下记录所述的目标数据记录标识及所述新的数据记录的虚拟 地址。
[0045] 优选地,所述方法还包括:
[0046] 当从所述空闲索引记录根节点中选取一虚拟地址后,更新所述空闲索引记录根节 点指向下一虚拟地址;
[0047] 当从所述空闲数据记录根节点中选取一虚拟地址后,更新所述空闲数据记录根节 点指向下一虚拟地址。
[0048] 优选地,所述虚拟地址包括高16位及低16位两部分,所述高16位中记录对应的 索引节点的地址相对数据头的偏移,所述低16位中记录所述索引节点内部的偏移。
[0049] 优选地,采用如下公式计算所述目标数据记录虚拟地址对应的物理地址:
[0050] 物理地址=(所述共享内存基地址+所述数据头大小+当前数据记录的位置*每 条数据记录的大小+〇ffset in record)。
[0051 ] 优选地,所述方法还包括:
[0052] 封装所述共享内存的数据访问接口。
[0053] 本发明还公开了一种数据读取装置,所述装置包括:
[0054] 请求接收模块,用于接收数据读取请求,所述数据读取请求包括目标数据记录标 识;
[0055] 虚拟地址获取模块,用于在预设的关系数据表中匹配到所述目标数据记录标识 时,获得与所述目标数据记录标识对应的目标数据记录虚拟地址;其中,所述关系数据表包 括多个数据记录标识与对应的数据记录的虚拟地址的关联关系;
[0056] 物理地址计算模块,用于计算所述目标数据记录虚拟地址对应的物理地址,其中, 所述物理地址中存储数据记录标识与对应的数据内容的键
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1