数据访问方法和装置、数据存储方法和装置制造方法及图纸

技术编号:34204834 阅读:14 留言:0更新日期:2022-07-20 11:36
本申请涉及数据存储和数据读取,具体涉及一种数据访问方法和装置。所述方法包括:获取与待访问对象对应的、且携带有目标索引信息的数据访问指令;根据目标索引信息,确定加载有共享内存文件的目标地址空间的第一首地址、及待访问对象中的初始对象在目标共享空间中的初始位置信息;共享内存文件是对目标共享空间中的各数据对象进行映射得到;基于第一首地址对初始位置信息进行调整,得到与目标地址空间相匹配的对象位置信息;根据对象位置信息,并通过调用目标地址空间,获取与初始对象对应的数据内容;依次对待访问对象中除初始对象之外的各个目标对象进行轮询处理,以得到每个目标对象各自所对应的数据内容。采用本方法能够节约计算机资源。约计算机资源。约计算机资源。

【技术实现步骤摘要】
数据访问方法和装置、数据存储方法和装置


[0001]本申请涉及计算机
,特别是涉及一种数据访问方法和装置、数据存储方法和装置。

技术介绍

[0002]随着计算机技术的发展,可在堆外申请一个堆外内存空间,用以存储较为常用的数据。但是,由于JVM(Java Virtual Machine,Java执行引擎)的限制,在堆外内存空间中无法直接存储数据对象,只能存储对象字节流,在将数据对象存储于堆外内存空间时,需对数据对象进行序列化,将其转换为对象字节流,当需要借助JVM对堆外内存数据的访问时,就需要通过反序列化将对象字节流转换为数据对象。
[0003]然而,通过序列化和反序列化算法来实现JVM对其内部数据的访问,会耗费CPU等计算机资源,从而造成资源的浪费。

技术实现思路

[0004]基于此,有必要针对上述技术问题,提供一种节约计算机资源的数据访问方法、装置、计算机设备、存储介质和计算机程序,以及数据存储方法、装置、计算机设备、存储介质和计算机程序。
[0005]一种数据访问方法,所述方法包括:
[0006]获取与待访问对象对应的、且携带有目标索引信息的数据访问指令,所述待访问对象为写入至目标共享空间中的数据对象的至少一部分,且所述待访问对象中包括有至少一个目标对象;
[0007]根据所述目标索引信息,确定加载有共享内存文件的目标地址空间的第一首地址、及所述待访问对象中的初始对象在所述目标共享空间中的初始位置信息;所述共享内存文件是对所述目标共享空间中的各数据对象进行映射得到;
[0008]基于所述第一首地址对所述初始位置信息进行调整,得到与所述目标地址空间相匹配的对象位置信息;
[0009]根据所述对象位置信息,并通过调用所述目标地址空间,获取与所述初始对象对应的数据内容;
[0010]依次对所述待访问对象中除初始对象之外的各个目标对象进行轮询处理,以得到每个目标对象各自所对应的数据内容;其中,对于每次轮询至的当前目标对象,根据前次轮询至的前序目标对象的对象位置信息,确定当次轮询至的当前目标对象的对象位置信息,并根据所述当前目标对象的对象位置信息,通过调用所述目标地址空间,获取与所述当前目标对象对应的数据内容。在一个实施例中,所述方法还包括:
[0011]当与所述目标地址空间相对应的目标物理内存中的待访问对象符合删除条件时,将所述待访问对象从所述目标物理内存中删除。
[0012]在一个实施例中,所述根据所述当前目标对象的对象位置信息,通过调用所述目
标地址空间,获取与所述当前目标对象对应的数据内容,包括:
[0013]根据所述当前目标对象的对象位置信息,通过调用所述目标地址空间,获取所述当前目标对象中的数据内容;
[0014]当所述当前目标对象中的数据内容表征所述当前目标对象引用了至少一层的引用对象时,基于各层引用对象各自所对应的引用位置信息,确定各层引用对象各自所包括的数据内容;
[0015]将所述当前目标对象中的数据内容和各层引用对象各自所包括的数据内容,共同作为与所述当前目标对象对应的数据内容。
[0016]在一个实施例中,所述当所述当前目标对象中的数据内容表征所述当前目标对象引用了至少一层的引用对象时,基于各层引用对象各自所对应的引用位置信息,确定各层引用对象各自所包括的数据内容,包括:
[0017]当所述当前目标对象中的数据内容表征所述当前目标对象引用了至少一层的引用对象时,对于每层的引用对象,分别基于所述第一首地址、以及所述目标共享空间的第二首地址中的至少一种,对相应层级的引用对象的引用位置信息进行调整,得到相应层级的引用对象所对应的、且与所述目标地址空间相匹配的对象位置信息;
[0018]根据每个层级的引用对象各自所对应的对象位置信息,并通过调用所述目标地址空间,获取与每个层级的引用对象各自对应的数据内容。
[0019]在一个实施例中,获取与待访问对象对应的、且携带有目标索引信息的数据访问指令之前,所述方法还包括:
[0020]获取共享内存文件的文件存储路径,通过所述文件存储路径将对应的所述共享内存文件加载至所述目标地址空间,得到所述目标地址空间的第一首地址;
[0021]根据所述目标地址空间的第一首地址,获取所述共享内存文件中的校验信息,并根据所述校验信息对所述共享内存文件的完整性进行校验。
[0022]一种数据访问装置,包括:
[0023]初始位置确定模块,用于获取与待访问对象对应的、且携带有目标索引信息的数据访问指令,所述待访问对象为写入至目标共享空间中的数据对象的至少一部分,且所述待访问对象中包括有至少一个目标对象;根据所述目标索引信息,确定加载有共享内存文件的目标地址空间的第一首地址、及所述待访问对象中的初始对象在所述目标共享空间中的初始位置信息;所述共享内存文件是对所述目标共享空间中的各数据对象进行映射得到;
[0024]初始对象获取模块,用于基于所述第一首地址对所述初始位置信息进行调整,得到与所述目标地址空间相匹配的对象位置信息;根据所述对象位置信息,并通过调用所述目标地址空间,获取与所述初始对象对应的数据内容;
[0025]目标对象获取模块,用于依次对所述待访问对象中除初始对象之外的各个目标对象进行轮询处理,以得到每个目标对象各自所对应的数据内容;其中,对于每次轮询至的当前目标对象,根据前次轮询至的前序目标对象的对象位置信息,确定当次轮询至的当前目标对象的对象位置信息,并根据所述当前目标对象的对象位置信息,通过调用所述目标地址空间,获取与所述当前目标对象对应的数据内容。
[0026]在一个实施例中,所述目标索引信息包括共享内存文件的文件存储路径和目标片
段标识;所述初始位置确定模块还包括目标片段确定模块,用于根据所述文件存储路径,确定加载有共享内存文件的目标地址空间的第一首地址,并基于所述第一首地址确定与所述共享内存文件对应的文件元数据;根据所述文件元数据和所述目标片段标识,确定与所述待访问对象对应的目标片段;根据所述目标片段的片段内容,确定所述待访问对象中的初始对象在所述目标共享空间中的初始位置信息。
[0027]在一个实施例中,所述文件元数据包括所述共享内存文件中的头部所占用内存的空间大小;所述目标片段确定模块还用于根据所述目标片段标识和所述空间大小,确定与所述待访问对象对应的目标片段在所述目标共享空间中的第一偏移位置信息;根据所述第一首地址和所述第一偏移位置信息,确定与所述目标片段对应、且与所述目标地址空间相匹配的片段位置信息;根据所述目标片段的片段位置信息,确定所述目标片段的片段内容。
[0028]在一个实施例中,所述数据访问指令通过数据访问进程触发,所述初始对象获取模块还用于响应于所述数据访问指令,根据与所述初始对象对应的对象位置信息,并通过所述数据访问进程调用所述目标地址空间,从与所述目标地址空间相对应的目标物理内存中读取所述初始对象的数据内容并反馈;其中,所述目标物理内存中的数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据访问方法,其特征在于,所述方法包括:获取与待访问对象对应的、且携带有目标索引信息的数据访问指令,所述待访问对象为写入至目标共享空间中的数据对象的至少一部分,且所述待访问对象中包括有至少一个目标对象;根据所述目标索引信息,确定加载有共享内存文件的目标地址空间的第一首地址、及所述待访问对象中的初始对象在所述目标共享空间中的初始位置信息;所述共享内存文件是对所述目标共享空间中的各数据对象进行映射得到;基于所述第一首地址对所述初始位置信息进行调整,得到与所述目标地址空间相匹配的对象位置信息;根据所述对象位置信息,并通过调用所述目标地址空间,获取与所述初始对象对应的数据内容;依次对所述待访问对象中除初始对象之外的各个目标对象进行轮询处理,以得到每个目标对象各自所对应的数据内容;其中,对于每次轮询至的当前目标对象,根据前次轮询至的前序目标对象的对象位置信息,确定当次轮询至的当前目标对象的对象位置信息,并根据所述当前目标对象的对象位置信息,通过调用所述目标地址空间,获取与所述当前目标对象对应的数据内容。2.根据权利要求1所述的方法,其特征在于,所述目标索引信息包括共享内存文件的文件存储路径和目标片段标识;所述根据所述目标索引信息,确定加载有共享内存文件的目标地址空间的第一首地址、及所述待访问对象中的初始对象在所述目标共享空间中的初始位置信息,包括:根据所述文件存储路径,确定加载有共享内存文件的目标地址空间的第一首地址,并基于所述第一首地址确定与所述共享内存文件对应的文件元数据;根据所述文件元数据和所述目标片段标识,确定与所述待访问对象对应的目标片段;根据所述目标片段的片段内容,确定所述待访问对象中的初始对象在所述目标共享空间中的初始位置信息。3.根据权利要求2所述的方法,其特征在于,所述文件元数据包括所述共享内存文件中的头部所占用内存的空间大小;所述根据所述文件元数据和所述目标片段标识,确定与所述待访问对象对应的目标片段,包括:根据所述目标片段标识和所述空间大小,确定与所述待访问对象对应的目标片段在所述目标共享空间中的第一偏移位置信息;根据所述第一首地址和所述第一偏移位置信息,确定与所述目标片段对应、且与所述目标地址空间相匹配的片段位置信息;根据所述目标片段的片段位置信息,确定所述目标片段的片段内容。4.根据权利要求1所述的方法,其特征在于,所述数据访问指令通过数据访问进程触发;所述根据所述对象位置信息,并通过调用所述目标地址空间,获取与所述初始对象对应的数据内容,包括:响应于所述数据访问指令,根据与所述初始对象对应的对象位置信息,并通过所述数据访问进程调用所述目标地址空间,从与所述目标地址空间相对应的目标物理内存中读取所述初始对象的数据内容并反馈;其中,所述目标物理内存中的数据内容是通过计算机内
核从所述共享内存文件中调入并存储至的。5.根据权利要求1所述的方法,其特征在于,所述对于每次轮询至的当前目标对象,根据前次轮询至的前序目标对象的对象位置信息,确定当次轮询至的当前目标对象的对象位置信息,包括:确定前次轮询至的前序目标对象的对象位置信息和所述前序目标对象所占用内存的空间大小;基于所述前序目标对象的对象位置信息和所述前序目标对象所占用内存的空间大小,确定当次轮询至的当前目标对象的对象位置信息。6.根据权利要求1所述的方法,其特征在于,所述根据所述当前目标对象的对象位置信息,通过调用所述目标地址空间,获取与所述当前目标对象对应的数据内容,包括:根据所述当前目标对象的对象位置信息,通过调用所述目标地址空间,获取所述当前目标对象中的数据内容;当所述当前目标对象中的数据内容表征所述当前目标对象引用了至少一层的引用对象时,基于各层引用对象各自所对应的引用位置信息,确定各层引用对象各自所包括的数据内容;将所述当前目标对象中的数据内容和各层引用对象各自所包括的数据内容,共同作为与所述当前目标对象对应的数据内容。7.根据权利要求6所述的方法,其特征在于,所述当所述当前目标对象中的数据内容表征所述当前目标对象引用了至少一层的引用对象时,基于各层引用对象各自所对应的引用位置信息,确定各层引用对象各自所包括的数据内容,包括:当所述当前目标对象中的数据内容包括所述当前目标对象在当前层级所引用的引用对象的引用位置信息时,基于所述第一首地址、以及所述目标共享空间的第二首地址中的至少一种,对当前层级的引用对象的引用位置信息进行调整,得到当前层级的引用对象所对应的、且与所述目标地址空间相匹配的对象位置信息;根据当前层级的引用对象的对象位置信息,并通过调用所述目标地址空间,获取与所述当前层级的引用对象对应的数据内容;当所述当前层级的引用对象中的数据内容包括下一层级的引用对象在所述目标共享空间中的引用位置...

【专利技术属性】
技术研发人员:孙宇
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1