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

文档序号:8487848阅读:来源:国知局
值对;
[0057] 数据读取模块,用于从所述物理地址中获得与所述目标数据记录标识对应的数据 内容。
[0058] 优选地,所述关系数据表保存在共享内存中。
[0059] 优选地,所述关系数据表包括数据头、索引记录以及数据记录;
[0060] 所述数据头进一步包括索引根节点,空闲数据记录索引根节点,空闲索引记录根 节点;
[0061] 其中,所述索引根节点用于记录数据记录标识及对应的已使用的索引节点的虚拟 地址;
[0062] 所述索引记录用于记录所述索引节点的信息,所述索引节点的信息包括数据记录 标识与对应的数据记录的虚拟地址;
[0063] 所述数据记录用于记录已写入的数据记录标识和对应的数据内容;
[0064] 所述空闲数据记录索引根节点用于记录未使用的数据记录的虚拟地址;
[0065] 所述空闲索引记录根节点用于记录未使用的索引节点的虚拟地址。
[0066] 优选地,所述虚拟地址包括高16位及低16位两部分,所述高16位中记录对应的 索引节点的地址相对数据头的偏移,所述低16位中记录所述索引节点内部的偏移。
[0067] 优选地,所述装置还包括:
[0068] 地址获取模块,用于在所述索引根节点中匹配所述目标数据记录标识,获取对应 的索引节点的虚拟地址;
[0069] 计算模块,用于计算所述索引节点的虚拟地址对应的索引节点物理地址;
[0070] 关系获得模块,用于在所述索引节点物理地址中获得所述索引节点中记录的数据 记录标识与所述数据记录虚拟地址的关联关系。
[0071] 优选地,采用如下公式计算所述目标数据记录虚拟地址对应的物理地址:
[0072] 物理地址=(所述共享内存基地址+所述数据头大小+当前数据记录的位置*每 条数据记录的大小+〇ffset in record)。
[0073] 优选地,所述装置还包括:
[0074] 封装模块,用于封装所述共享内存的数据访问接口。
[0075] 本发明还公开了一种数据写入装置,所述装置包括:
[0076] 请求接收模块,用于接收数据写入请求,所述数据写入请求包括目标数据记录标 识及对应的数据内容;
[0077] 判断模块,用于判断在预设的关系数据表中是否匹配到所述目标数据记录标识, 其中,所述关系数据表包括多个数据记录标识与对应的数据记录的虚拟地址的关联关系, 所述关系数据表还包括空闲索引资源;
[0078] 第一写入模块,用于在判定在预设的关系数据表中匹配到所述目标数据记录标 识时,获得与所述目标数据记录标识对应的目标数据记录虚拟地址,计算所述目标数据记 录虚拟地址对应的物理地址,并将所述目标数据的数据内容写入所述物理地址中的对应位 置;
[0079] 第二写入模块,用于在判定在预设的关系数据表中没有匹配到所述目标数据记录 标识时,获取所述空闲索引资源,并将所述目标数据记录标识及对应的数据内容写入所述 空闲索引资源中。
[0080] 优选地,所述关系数据表保存在共享内存中。
[0081] 优选地,所述关系数据表包括数据头、索引记录以及数据记录;所述数据头进一步 包括索引根节点,空闲数据记录索引根节点,空闲索引记录根节点;
[0082] 其中,所述索引根节点用于记录数据记录标识及对应的已使用的索引节点的虚拟 地址;
[0083] 所述索引记录用于记录所述已使用索引节点的信息,所述已使用索引节点的信息 包括数据记录标识与对应的数据记录的虚拟地址;
[0084] 所述数据记录用于记录已写入的数据记录标识和对应的数据内容;
[0085] 所述空闲数据记录索引根节点用于记录未使用的数据记录的虚拟地址;
[0086] 所述空闲索引记录根节点用于记录未使用的索引节点的虚拟地址。
[0087] 优选地,所述空闲索引资源包括所述空闲索引记录根节点及所述空闲数据记录根 节点;所述第二写入模块包括:
[0088] 第一选取子模块,用于从所述空闲索引记录根节点中选取一虚拟地址,将所述虚 拟地址对应的索引节点作为新索引节点;
[0089] 第二选取子模块,用于从所述空闲数据记录根节点中选取一虚拟地址,将所述虚 拟地址对应的数据记录作为新的数据记录;
[0090] 写入子模块,用于将所述目标数据记录标识及对应的数据内容写入所述新的数据 记录中;
[0091] 更新子模块,用于在所述新索引节点下记录所述的目标数据记录标识及所述新的 数据记录的虚拟地址。
[0092] 优选地,所述装置还包括:
[0093] 第一更新模块,用于更新所述空闲索引记录根节点指向下一虚拟地址;
[0094] 第二更新模块,用于更新所述空闲数据记录根节点指向下一虚拟地址。
[0095] 优选地,所述虚拟地址包括高16位及低16位两部分,所述高16位中记录对应的 索引节点的地址相对数据头的偏移,所述低16位中记录所述索引节点内部的偏移。
[0096] 优选地,采用如下公式计算所述目标数据记录虚拟地址对应的物理地址:
[0097] 物理地址=(所述共享内存基地址+所述数据头大小+当前数据记录的位置*每 条数据记录的大小+〇ffset in record)。
[0098] 优选地,所述装置还包括:
[0099] 封装模块,用于封装所述共享内存的数据访问接口。
[0100] 与现有技术相比,本发明实施例包括以下优点:
[0101] 本发明实施例在接收到包括目标数据记录标识的数据访问请求时(包括读取请 求及写入请求),在关系数据表中匹配到该目标数据记录标识时,获得与所述目标数据记录 标识对应的目标数据记录虚拟地址;并根据虚拟地址与物理地址中的映射关系对数据进行 读写处理,数据处理通过地址映射进行,无需通过socket,避免了 socket协议栈的开销,并 且提高了数据处理效率。
【附图说明】
[0102] 图1是本发明的一种数据读取方法实施例的步骤流程图;
[0103] 图2是本发明的一种数据读取方法实施例的关系数据表内存结构示意图;
[0104] 图3是本发明的一种数据写入方法实施例的步骤流程图;
[0105] 图4是本发明的一种数据读取装置实施例的结构框图;
[0106] 图5是本发明的一种数据写入装置实施例的结构框图。
【具体实施方式】
[0107] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。
[0108] 参照图1,示出了本发明的一种数据读取方法实施例的步骤流程图,本发明实施例 可应用于单机系统中,具体可以包括如下步骤:
[0109] 步骤101,接收数据读取请求,所述数据读取请求包括目标数据记录标识;
[0110] 本发明实施例中,进程可以通过发出数据读取请求来请求读取目标数据记录,其 中,该数据读取请求包括该目标数据记录标识。目标数据记录标识可以为标识目标数据记 录的参数,例如,数字编号" 1",姓名"张三"等等。
[0111] 在具体实现中,本发明实施例可以提供CIpcKeyValue对象,CIpcKeyValue对象可 以提供Get、Add等方法,调用Get方法即读取数据,调用Add方法即写入数据。进程可以通 过调用CIpcKeyValue对象的Get方法来进行目标数据记录的读取。
[0112] 步骤102,当在预设的关系数据表中匹配到所述目标数据记录标识时,获取与所述 目标数据记录标识对应的数据记录虚拟地址;
[0113] 本
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1