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

文档序号:8487848阅读:来源:国知局
发明实施例设置有关系数据表,该关系数据表可以包括多个数据记录标识及与 该数据记录标识对应的数据记录虚拟地址的关联关系。当接收到数据读取请求以后,可以 在该关系数据表中匹配该目标数据记录标识,若匹配成功,则获得对应的目标数据记录虚 拟地址。
[0114] 应用于本发明实施例,可以将该关系数据表保存在共享内存中,以供多个进程共 享使用。其中,共享内存是被多个进程共享的一部分物理内存,共享内存允许两个或多个进 程共享同一块内存(这块内存会映射到各个进程独立的地址空间)从而使得这些进程可以 相互通信。
[0115] 在单机系统中,内存数据和文件数据完全一致,因此本发明实施例可以基于文件 映射file mapping实现共享内存,其中,文件映象file mapping是由一个文件到一块内存 的映射,文件映射的一个重要应用就是用来支持永久命名的共享内存。要在两个进程之间 共享内存,可以在一个进程中创建一个文件并映射之,然后另一个进程可以通过打开和映 射此文件把它作为共享的内存来使用。
[0116] 关系数据表在共享内存中的内存结构可以如图2所示,关系数据表可以包括数据 头 header、索引记录 index record 以及数据记录 key-value record(或写成 key/value record),而数据头header进一步可以包括索引根节点index root,空闲数据记录索引根 节点 free record index root,空闲索弓|记录根节点 free index record root。
[0117] 其中,索引根节点用于记录数据记录标识及对应的已使用的索引节点的虚拟地 址;
[0118] 索引记录index record用于记录索引节点index的信息,索引节点如图2所示的 indexl、index2、......、:Lndexn、indexn+1,等等。在一种实施方式中,本发明实施例的索引 节点index可以采用平衡二叉树结构,索引节点index的信息可以包括索引key名称(即 数据记录标识)、指向数据记录key-value record的指针(即数据记录key-value record 的地址)、指向左子树的虚拟地址(VA)的指针、指向右子树的虚拟地址(VA)的指针等信息。
[0119] 在本发明实施例中,索引节点index中记录的数据记录key-value record的地 址为自定义的虚拟地址VA (Virtual Address Space),虚拟地址并不真实存在于计算机中。 其中,虚拟地址可以包括高16位及低16位两部分,所述高16位中记录对应的索引节点的 地址相对数据头的偏移,所述低16位中记录所述索引节点内部的偏移,即虚拟地址VA = index record〈〈16+offset in record,index record〈〈16 为高 16位,表不对应的索引节点 的地址相对数据头的偏移;offset in record为低16位,表示所述索引节点内部的偏移。
[0120] 需要说明的是,该自定义的虚拟地址VA与进程无关。
[0121] 数据记录key-value record用于存储数据记录,即记录已写入的数据记录标识 key和对应的数据内容value。作为一种示例,数据记录key-value record的结构可以如 下表1所示。
【主权项】
1. 一种数据读取方法,其特征在于,所述方法包括: 接收数据读取请求,所述数据读取请求包括目标数据记录标识; 当在预设的关系数据表中匹配到所述目标数据记录标识时,获得与所述目标数据记录 标识对应的目标数据记录虚拟地址;其中,所述关系数据表包括多个数据记录标识与对应 的数据记录的虚拟地址的关联关系; 计算所述目标数据记录虚拟地址对应的物理地址,其中,所述物理地址中存储数据记 录标识与对应的数据内容的键值对; 从所述物理地址中获得与所述目标数据记录标识对应的数据内容。
2. 根据权利要求1所述的方法,其特征在于,所述关系数据表保存在共享内存中。
3. 根据权利要求2所述的方法,其特征于,所述关系数据表包括数据头、索引记录以及 数据记录; 所述数据头进一步包括索引根节点,空闲数据记录索引根节点,空闲索引记录根节 占. 其中,所述索引根节点用于记录数据记录标识及对应的已使用的索引节点的虚拟地 址; 所述索引记录用于记录所述索引节点的信息,所述索引节点的信息包括数据记录标识 与对应的数据记录的虚拟地址; 所述数据记录用于记录已写入的数据记录标识和对应的数据内容; 所述空闲数据记录索引根节点用于记录未使用的数据记录的虚拟地址; 所述空闲索引记录根节点用于记录未使用的索引节点的虚拟地址。
4. 根据权利要求3所述的方法,其特征在于,所述虚拟地址包括高16位及低16位两部 分,所述高16位中记录对应的索引节点的地址相对数据头的偏移,所述低16位中记录所述 索引节点内部的偏移。
5. 根据权利要求4所述的方法,其特征在于,在所述当在预设的关系数据表中匹配到 所述目标数据记录标识时,获得与所述目标数据记录标识对应的目标数据记录虚拟地址的 步骤之前,还包括: 在所述索引根节点中匹配所述目标数据记录标识,获取对应的索引节点的虚拟地址; 计算所述索引节点的虚拟地址对应的索引节点物理地址; 在所述索引节点物理地址中获得所述索引节点中记录的数据记录标识与所述数据记 录虚拟地址的关联关系。
6. 根据权利要求4所述的方法,其特征在于,采用如下公式计算所述目标数据记录虚 拟地址对应的物理地址: 物理地址=(所述共享内存基地址+所述数据头大小+当前数据记录的位置*每条数 据记录的大小+offset in record) 〇
7. 根据权利要求2所述的方法,其特征在于,还包括: 封装所述共享内存的数据访问接口。
8. -种数据写入方法,其特征在于,所述方法包括: 接收数据写入请求,所述数据写入请求包括目标数据记录标识及对应的数据内容; 判断在预设的关系数据表中是否匹配到所述目标数据记录标识,其中,所述关系数据 表包括多个数据记录标识与对应的数据记录的虚拟地址的关联关系,所述关系数据表还包 括空闲索引资源; 若是,则获得与所述目标数据记录标识对应的目标数据记录虚拟地址,计算所述目标 数据记录虚拟地址对应的物理地址,并将所述目标数据的数据内容写入所述物理地址中的 对应位置; 若否,则获取所述空闲索引资源,并将所述目标数据记录标识及对应的数据内容写入 所述空闲索引资源中。
9. 根据权利要求8所述的方法,其特征在于,所述关系数据表保存在共享内存中。
10. 根据权利要求9所述的方法,其特征于,所述关系数据表包括数据头、索引记录以 及数据记录;所述数据头进一步包括索引根节点,空闲数据记录索引根节点,空闲索引记录 根节点; 其中,所述索引根节点用于记录数据记录标识及对应的已使用的索引节点的虚拟地 址; 所述索引记录用于记录所述已使用索引节点的信息,所述已使用索引节点的信息包括 数据记录标识与对应的数据记录的虚拟地址; 所述数据记录用于记录已写入的数据记录标识和对应的数据内容; 所述空闲数据记录索引根节点用于记录未使用的数据记录的虚拟地址; 所述空闲索引记录根节点用于记录未使用的索引节点的虚拟地址。
11. 根据权利要求10所述的方法,其特征在于,所述空闲索引资源包括所述空闲索引 记录根节点及所述空闲数据记录根节点;所述获取所述空闲索引资源,并将所述目标数据 记录标识及对应的数据内容写入所述空闲索引资源中的步骤包括: 从所述空闲索引记录根节点中选取一虚拟地址,将所述虚拟地址对应的索引节点作为 新索引节点; 从所述空闲数据记录根节点中选取一虚拟地址,将所述虚拟地址对应的数据记录作为 新的数据记录; 将所述目标数
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1