CN115374069A - 数据保存和读取的方法、装置 - Google Patents

数据保存和读取的方法、装置 Download PDF

Info

Publication number
CN115374069A
CN115374069A CN202210904510.6A CN202210904510A CN115374069A CN 115374069 A CN115374069 A CN 115374069A CN 202210904510 A CN202210904510 A CN 202210904510A CN 115374069 A CN115374069 A CN 115374069A
Authority
CN
China
Prior art keywords
data
data block
variable
name
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210904510.6A
Other languages
English (en)
Inventor
高翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingwei Hirain Tech Co Ltd
Original Assignee
Beijing Jingwei Hirain Tech Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingwei Hirain Tech Co Ltd filed Critical Beijing Jingwei Hirain Tech Co Ltd
Priority to CN202210904510.6A priority Critical patent/CN115374069A/zh
Publication of CN115374069A publication Critical patent/CN115374069A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据保存和读取的方法、装置,包括获取值和键的对应关系信息,值表示存放变量数据的第一数据块的名称,键表示变量的名称;在目标文件中写入值和键的对应关系信息;将变量的数据存储至数据缓存区的第二数据块;当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值;基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息;其中,第三数据块为第二数据块中除第一数据块之外的数据块。根据本申请实施例,通过数据分块化存储提高了保存和读取数据的效率。

Description

数据保存和读取的方法、装置
技术领域
本申请属于硬件在环仿真技术领域,尤其涉及一种数据保存和读取的方法、装置。
背景技术
目前,通常将硬件在环仿真中模型的实时数据保存为MAT格式类型的文件,并支持对含有大数据量的MAT格式文件进行快速的读取。
现有技术中,通常利用保存MAT格式文件的插件对数据进行处理,进而将数据保存为MAT格式类型的文件,然而,该方法在保存时每个MAT文件的大小是预先设定的,无法追加保存数据至MAT文件,因此,在保存大数据量时,生成的MAT文件数量过多,导致保存和读取数据的效率较低。
发明内容
本申请实施例提供一种数据保存和读取的方法、装置,能够解决现有技术中在保存大数据量时,生成的MAT文件数量过多,导致保存和读取数据的效率较低的问题。
第一方面,本申请实施例提供一种数据保存的方法,该方法包括:
获取值和键的对应关系信息,值表示存放变量数据的第一数据块的名称,键表示变量的名称;
在目标文件中写入值和键的对应关系信息;
将变量的数据存储至数据缓存区的第二数据块,第二数据块包括第一数据块;
当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值;
基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息;其中,第三数据块为第二数据块中除第一数据块之外的数据块。
在一些实施方式中,获取值和键的对应关系信息,包括:
获取第一字典,第一字典包括值和键的对应关系信息。
在一些实施方式中,该数据保存的方法还包括:
将第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息写入第一字典。
在一些实施方式中,基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息,包括:
获取第一数据块的在二进制流中的起始位置;
基于第一数据块的在二进制流中的起始位置、第一字典中第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息,增添写入至目标文件的值和键的对应关系信息。
在一些实施方式中,该数据保存的方法还包括:
将第二数据块在二进制流中的起始位置记录在第二字典;
获取第二数据块在二进制流中的起始位置;
在目标文件中写入位置矩阵,位置矩阵包括第二数据块在二进制流中的起始位置。
在一些实施方式中,在基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息之后,方法还包括:
清空数据缓存区中的数据。
第二方面,本申请实施例提供一种数据读取方法,该方法包括:
从目标文件中读取值和键的对应关系信息,值表示存放变量数据的第二数据块的名称,键表示变量的名称;
根据第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置;
基于第二数据块在二进制流中的起始位置,读取第二数据块中存放的变量的数据。
在一些实施方式中,根据第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置,包括:
构建第三字典,第三字典包括值和键的对应关系信息;
根据第三字典中第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。
第三方面,本申请实施例提供了一种数据保存的装置,该数据保存的装置包括:
获取模块,用于获取值和键的对应关系信息,值表示存放变量数据的第一数据块的名称,键表示变量的名称;
写入模块,用于在目标文件中写入值和键的对应关系信息;
存储模块,用于将变量的数据存储至数据缓存区的第二数据块,第二数据块包括第一数据块;
写入模块,还用于当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值;
写入模块,还用于基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息;其中,第三数据块为第二数据块中除第一数据块之外的数据块。
在一些实施方式中,获取模块,还用于获取第一字典,第一字典包括值和键的对应关系信息。
在一些实施方式中,写入模块,还用于将第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息写入第一字典。
在一些实施方式中,获取模块,还用于获取第一数据块的在二进制流中的起始位置;
写入模块,还用于基于第一数据块的在二进制流中的起始位置、第一字典中第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息,增添写入至目标文件的值和键的对应关系信息。
在一些实施方式中,该数据保存的装置还包括记录模块;
记录模块,用于将第二数据块在二进制流中的起始位置记录在第二字典;
获取模块,还用于获取第二数据块在二进制流中的起始位置;
写入模块,还用于在目标文件中写入位置矩阵,位置矩阵包括第二数据块在二进制流中的起始位置。
在一些实施方式中,该数据保存的装置还包括清空模块;
清空模块,用于在基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息之后,清空数据缓存区中的数据。
第四方面,本申请实施例提供了一种数据读取装置,该数据读取装置包括:
读取模块,用于从目标文件中读取值和键的对应关系信息,值表示存放变量数据的第二数据块的名称,键表示变量的名称;
获取模块,用于根据第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置;
读取模块,还用于基于第二数据块在二进制流中的起始位置,读取第二数据块中存放的变量的数据。
在一些实施方式中,该数据读取装置还包括构建模块;
构建模块,用于构建第三字典,第三字典包括值和键的对应关系信息;
获取模块,还用于根据第三字典中第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现如第一方面的任一项实施例中所述的数据保存的方法,以及如第二方面的任一项实施例中所述的数据读取方法。
第六方面,本申请实施例提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面的任一项实施例中所述的数据保存的方法,以及如第二方面的任一项实施例中所述的数据读取方法。
第七方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行如第一方面的任一项实施例中所述的数据保存的方法,以及如第二方面的任一项实施例中所述的数据读取方法。
本申请实施例的数据保存和读取的方法、装置,通过获取值和键的对应关系信息,即存放变量数据的第一数据块的名称与变量名称的对应关系,在目标文件中写入值和键的对应关系信息,这样,可以预设每个变量对应存放的数据块,起到占位作用,便于后续向目标文件写入完整的变量数据。接着,将变量的数据向数据缓存区的第二数据块存储。当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值。这样,可以将数据进行分块化存储。从而基于第二数据块中除第一数据块之外的第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息。这样,可以通过数据分块化存储的方式对目标文件进行追加保存,提高保存数据和读取数据的效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的数据保存的方法的流程示意图;
图2是本申请一个实施例提供的数据缓存区的结构示意图;
图3是本申请一个实施例提供的数据读取方法的流程示意图;
图4是本申请一个实施例提供的数据保存的装置的结构示意图;
图5是本申请一个实施例提供的数据读装置的结构示意图;
图6是本申请一个实施例提供的电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
如背景技术所述,现有技术中的软件将数据保存为MAT格式类型的文件,主要通过使用自己开发的保存MAT格式文件的插件对数据进行处理后保存,在保存时每个MAT文件的大小是开发者自定义的。因为软件需要支持大数据量的保存和读取,但是该方法下生成的MAT文件不能对其进行追加,所以会导致在保存大数据量时生成的MAT文件数量过多,读取数据和二次处理数据会很麻烦。若自定义MAT文件的大小过大,在保存的过程中会导致计算机内存溢出的问题。
为了解决上述问题,本申请实施例提供了一种数据保存和读取的方法、装置,该数据保存的方法可以通过获取值和键的对应关系信息,即存放变量数据的第一数据块的名称与变量名称的对应关系,在目标文件中写入值和键的对应关系信息,这样,可以预设每个变量对应存放的数据块,起到占位作用,便于后续向目标文件写入完整的变量数据。接着,将变量的数据向数据缓存区的第二数据块存储。当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值。这样,可以将数据进行分块化存储。从而基于第二数据块中除第一数据块之外的第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息。这样,可以通过数据分块化存储的方式对目标文件进行追加保存,提高保存数据和读取数据的效率。下面首先对本申请实施例所提供的数据保存的方法进行介绍。
图1示出了本申请一个实施例提供的数据保存的方法的流程示意图。
如图1所示,该数据保存的方法具体可以包括如下步骤:
S110,获取值和键的对应关系信息,值表示存放变量数据的第一数据块的名称,键表示变量的名称。
这里的值和键的对应关系信息可以是存放变量数据的第一数据块的名称与变量名称的对应关系,即表示每个变量存放的第一数据块的名称,其中,第一数据块可以是存放变量数据的数据块。
示例性地,值和键的对应关系信息可以存储于用于存放变量名和变量信息的数字字典中,该数字字典的键Key为变量的完整名称,该数字字典的值Value为一个存放变量数据的第一数据块的名称的集合。例如,当多个变量的数据进行保存时,第一个变量的数据块我们对其命名为V_1_1,第二个变量的数据块命名为V_2_1,以此类推,数据块名称中的第一个值表示这该数据块是属于变量的,第二个值表示该数据块属于哪一个变量,第三个值表示该数据块属于该变量的第几个数据块。
S120,在目标文件中写入值和键的对应关系信息。
目标文件可以是能够保存数据的文件,例如可以是MAT格式类型的文件。在目标文件中写入存放变量数据的第一数据块的名称与变量名称的对应关系。
作为一个示例,在保存硬件在环(hardware-in-the-loop,HIL)仿真中的实时数据时,获取到存放变量数据的数据块与变量的对应关系之后,在MAT文件中写入一个名为变量信息VARIABLE_INFO的矩阵,该矩阵包括每个数据块存储不同变量的名称,即数据块与变量的对应关系,这里写入的VARIABLE_INFO矩阵实际上起到占位的作用,由于MAT文件中还未开始保存数据,因此该矩阵存放的数据不完整。
在一些实施例中,在目标文件中写入值和键的对应关系信息之前,对目标文件进行头文件写入。例如,在数据进行保存前,对MAT文件写入128字节的头文件,完成对文件的初始化。
S130,将变量的数据存储至数据缓存区的第二数据块,第二数据块可以包括第一数据块。
数据缓存区可以用于暂时存放变量的数据,数据缓存区例如可以是数据缓冲器Buffer对象,第二数据块可以是数据缓存区中存放变量数据的数据块,第二数据块可以包括第一数据块。
作为一个示例,在对变量数据进行分块存储时,向数据缓冲器Buffer中填充获取到的变量的数据,包括存放变量的时刻(Time)和存放该变量数据的数据块的名称(Value)。
在一些实施例中,将变量的数据存储至数据缓存区的第二数据块可以是每个变量的数据同时存储,也可以是一次存储单个变量的数据。
S140,当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件可以包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值。
目标变量可以是存储在数据缓存区的变量中的任一变量。在将变量的数据向数据缓存区的第二数据块存储时,检测数据缓存区中存放的每个变量的数据大小,若有任一变量(目标变量)的数据大小达到数据缓存区的大小与变量个数的比值,则将数据缓存区中变量的数据写入目标文件,其中,数据缓存区的大小与变量个数的比值表示每个变量占用数据缓存区的空间大小。
作为一个示例,在对多变量保存为MAT文件时,由于多变量存储中每个变量的数据量无法预计大小,无法精确地开辟二进制流文件的空间,每个变量的数据无法连续,所以需要把数据分块的进行存储。在对数据分块的进行存储时,计数据缓冲器Buffer的大小为M,通过预先写入MAT文件中的VARIABLE_INFO矩阵,获取该MAT文件中存储的变量个数为C。当对数据缓冲器Buffer进行填充的时候,预先分配每个变量的数据块占据了Buffer中M/C的空间,在每个变量存放完成后,检测该变量在Buffer中填充的数据是否达到了M/C的空间大小,若没有,则继续下一个变量的保存。当有一个变量的数据达到了M/C的大小,将Buffer中的变量数据向MAT文件中进行一次写入。
作为另一个示例,如图2所示的数据缓存区的结构,变量个数为C,第一个数据缓存区(Buffer)中存储的是数据块V_1_1至数据块V_C_1(V_1_1-V_C_1)的数据,第二个Buffer中存放的是V_1_2-V_C_2的数据,以此类推,第N个Buffer中存放的是V_1_N-V_C_N的数据,其中,数据块名称中的第一个值表示这该数据块是属于变量的,第二个值表示该数据块属于哪一个变量,第三个值表示该数据块属于该变量的第几个数据块。例如,数据块V_1_1表示该数据块属于变量1的第一个数据块,即该数据块是存放变量1的第一个数据块,这样,可以以数据分块化的方式对MAT文件进行追加写入。
S150,基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息;其中,第三数据块为第二数据块中除第一数据块之外的数据块。
在S140中将变量的数据写入目标文件之后,可以得到每个变量具体存放的第二数据块的名称,第二数据块中除第一数据块之外的第三数据块即新增的数据块。第三数据块的名称与存储于第三数据块的变量的名称的对应关系信息,可以表示第三数据块中每个数据块存储的变量的名称的集合,基于该对应关系信息增添写入至目标文件的值和键的对应关系信息。
作为一个示例,将数据缓冲器Buffer中的变量数据写入MAT文件中之后,可以得到存储每个变量数据的数据块A的名称,获取在MAT件中提前写入的VARIABLE_INFO矩阵中每个变量对应的数据块B的名称,将数据块A中除数据块B的数据块名称追加写入到MAT文件中。另外,也可以将数据块A列表的最后一个数据块的名称追加写入到MAT文件中。
另外,可以是将数据缓冲区中的变量数据全部写入目标文件中之后,或者将数据缓冲区中的变量数据进行一次写入目标文件中之后,增添写入至目标文件的值和键的对应关系信息。
本申请实施例中,通过获取值和键的对应关系信息,即存放变量数据的第一数据块的名称与变量名称的对应关系,在目标文件中写入值和键的对应关系信息,这样,可以预设每个变量对应存放的数据块,起到占位作用,便于后续向目标文件写入完整的变量数据。接着,将变量的数据向数据缓存区的第二数据块存储。当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值。这样,可以将数据进行分块化存储。从而基于第二数据块中除第一数据块之外的第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息。这样,可以通过数据分块化存储的方式对目标文件进行追加保存,提高保存数据和读取数据的效率。
在一些实施例中,S110具体可以包括:
获取第一字典,第一字典可以包括值和键的对应关系信息。
第一字典可以是预先建立的用于存放变量名和变量信息的数字字典,第一字典可以包括值和键的对应关系信息,即存放变量数据的数据块的名称与变量名称的对应关系信息。
作为一个示例,为完成对HIL仿真中的数据的分块化存储,建立用于存放变量名和变量信息的数据字典D1,该字典的键Key为变量的完整名称,该字典的值Value为一个存放变量数据块名称的集合,进而获取数据字典D1中值和键的对应关系,用于后续写入MAT文件中。
本申请实施例中,通过获取第一字典,第一字典可以包括值和键的对应关系信息,可以在保存数据前预先定义值和键的对应关系,便于后续对数据的分块化存储。
在一些实施例中,该数据保存的方法还可以包括:
将第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息写入第一字典。
作为一个示例,在建立用于存放变量名和变量信息的数据字典D1,且将数据缓冲器Buffer中的变量数据写入MAT文件中之后,可以得到存储每个变量数据的数据块A的名称。获取在MAT件中提前写入的VARIABLE_INFO矩阵中每个变量对应的数据块B的名称,将数据块A中除数据块B的数据块名称追加写入到数据字典D1中。另外,也可以将数据块A列表的最后一个数据块的名称追加写入到数据字典D1中。
本申请实施例中,通过将第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息写入第一字典,可以先将对应关系信息增添写入第一字典,便于在对大量数据写入目标文件时,提高数据写入的效率。
在一些实施例中,基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息,具体可以包括:
获取第一数据块的在二进制流中的起始位置;
基于第一数据块的在二进制流中的起始位置、第一字典中第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息,增添写入至目标文件的值和键的对应关系信息。
第一数据块的在二进制流中的起始位置可以是第一数据块在当前文件流中的文件指针位置。在建立第一字典中值和键的对应关系之后,记录该对应关系中的第一数据块的在二进制流中的起始位置,进而通过该起始位置,按照文件流将第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息增添写入至目标文件的值和键的对应关系信息。
作为一个示例,在对MAT文件初始化完成后,即使用数字字典D1在MAT文件中写入一个名为变量信息VARIABLE_INFO的占位矩阵后,记录下VARIABLE_INFO的矩阵在二进制流中的起始位置(Position)P1。将文件流定位到起始位置P1,通过数字字典D1向MAT文件中写入完整的VARIABLE_INFO矩阵。
本申请实施例中,通过获取第一数据块的在二进制流中的起始位置,并基于第一数据块的在二进制流中的起始位置、第一字典中第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息,增添写入至目标文件的值和键的对应关系信息。这样,可以准确定位第一数据块在目标文件的二进制流中的起始位置,便于按照文件流将第三数据块增添写入至目标文件。
在一些实施例中,该数据保存的方法还可以包括:
将第二数据块在二进制流中的起始位置记录在第二字典;
获取第二数据块在二进制流中的起始位置;
在目标文件中写入位置矩阵,位置矩阵可以包括第二数据块在二进制流中的起始位置。
第二字典可以是包括第二数据块在二进制流中的起始位置Position的数据字典,第二字典的键Key可以是第二数据块的名称,值Value可以是第二数据块在二进制文件流中的起始位置Position。从第二字典中获取第二数据块在二进制流中的起始位置,向目标文件中写入包括第二数据块在二进制流中的起始位置的位置矩阵。
作为一个示例,在向MAT文件写入变量数据时,将数据缓冲器Buffer中每一个数据块作为一个矩阵写入到MAT文件中,并记录下该矩阵在二进制流中的起始位置Position,并将该起始位置Position保存到数字字典D2中。进而从数字字典D2中获取每个数据块在二进制流中的起始位置Position,向MAT文件中写入一个位置信息POSITION_INFO的矩阵。
另外,将数据缓冲器Buffer中每一个数据块作为一个矩阵写入到MAT文件中之后,还可以将以下三个参数保存到全局字典中,分别是该矩阵中数据的Time最小值和最大值的数字字典D3(该字典Key为数据块的名称,Value为数据块中Time的最小值)和数字D4(该字典Key为数据块的名称,Value为数据块中Time的最大值)、矩阵中含有的HIL变量点的个数数字字典D5(该字典Key为数据块的名称,Value为数据块中存放的值的个数)。当MAT文件保存结束时,获取到上一次保存数据结束到现在的Buffer,并将获取到的数字字典D3、D4、D5分别作为该Buffer矩阵中的一个细胞数组Cell向MAT文件进行写入。
本申请实施例中,通过将第二数据块在二进制流中的起始位置记录在第二字典,进而获取第二数据块在二进制流中的起始位置,在目标文件中写入位置矩阵,位置矩阵可以包括第二数据块在二进制流中的起始位置,这样,可以提高数据读取时读取每一个数据块的效率。
在一些实施例中,在S150:基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息之后,该数据保存的方法还可以包括:
清空数据缓存区中的数据。
作为一个示例,在对数据分块的进行存储时,当检测有一个变量在Buffer中填充的数据达到了M/C的空间大小时,将Buffer中的变量数据向MAT文件中进行一次写入,并清空Buffer,用于下一次变量数据的写入。
本申请实施例中,通过清空数据缓存区中的数据,便于下一次变量数据的写入。
基于此,图3示出了本申请一个实施例提供的数据读取方法的流程示意图。
如图3所示,该数据读取方法具体可以包括如下步骤:
S310,从目标文件中读取值和键的对应关系信息,值表示存放变量数据的第二数据块的名称,键表示变量的名称。
S320,根据第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。
S330,基于第二数据块在二进制流中的起始位置,读取第二数据块中存放的变量的数据。
作为一个示例,在对MAT文件中的数据进行读取时,首先从MAT文件中读取出名为变量信息VARIABLE_INFO的矩阵,该矩阵中包括存放变量数据的数据块的名称与变量名称的对应关系。然后通过数据块的名称,从MAT文件中的位置信息POSITION_INFO矩阵中获取每个数据块在二进制流中的起始位置,把文件流定位到对应的起始位置,对数据块中的变量数据进行快速读取。
本申请实施例中,通过从目标文件中读取值和键的对应关系信息,值表示存放变量数据的第二数据块的名称,键表示变量的名称,并根据第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。进而基于第二数据块在二进制流中的起始位置,读取第二数据块中存放的变量的数据。这样,可以通过第二数据块在二进制流中的起始位置,对想要读取的数据块进行快速读取,提高了数据可读性和时效性。
在一些实施例中,S130具体可以包括:
构建第三字典,第三字典可以包括值和键的对应关系信息;
根据第三字典中第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。
第三字典可以是与第一字典结构相同的数字字典,可以通过从目标文件中读取的值和键的对应关系信息进行构建。第三字典可以包括值和键的对应关系信息,值Value表示存放变量数据的第二数据块的名称,键KEY表示变量的名称。
作为一个示例,在对MAT文件中的数据进行读取时,首先从MAT文件中读取出名为变量信息VARIABLE_INFO的矩阵,该矩阵中包括存放变量数据的数据块的名称与变量名称的对应关系,并构建包括该对应关系的数字字典D3。然后通过数字字典D3的Value值,即数据块的名称,从MAT文件中的位置信息POSITION_INFO矩阵中获取每个数据块在二进制流中的起始位置,把文件流定位到对应的起始位置,对数据块中的变量数据进行快速读取。
本申请实施例中,通过构建第三字典,第三字典可以包括值和键的对应关系信息,并根据第三字典中第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置,可以避免每次读取数据都需先读取值和键的对应关系信息,提高了对大量数据进行读取时的效率。
图4是根据一示例性实施例示出的一种数据保存的装置400的结构示意图。
如图4所示,该数据保存的装置400可以包括:
获取模块401,用于获取值和键的对应关系信息,值表示存放变量数据的第一数据块的名称,键表示变量的名称;
写入模块402,用于在目标文件中写入值和键的对应关系信息;
存储模块403,用于将变量的数据存储至数据缓存区的第二数据块,第二数据块包括第一数据块;
写入模块402,还用于当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值;
写入模块402,还用于基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息;其中,第三数据块为第二数据块中除第一数据块之外的数据块。
在一些实施方式中,获取模块401,还用于获取第一字典,第一字典包括值和键的对应关系信息。
在一些实施方式中,写入模块402,还用于将第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息写入第一字典。
在一些实施方式中,获取模块401,还用于获取第一数据块的在二进制流中的起始位置;
写入模块402,还用于基于第一数据块的在二进制流中的起始位置、第一字典中第三数据块的名称,以及存储于第三数据块的数据的变量的名称,对应的值和键的对应关系信息,增添写入至目标文件的值和键的对应关系信息。
在一些实施方式中,该数据保存的装置400还可以包括记录模块;
记录模块,用于将第二数据块在二进制流中的起始位置记录在第二字典;
获取模块401,还用于获取第二数据块在二进制流中的起始位置;
写入模块402,还用于在目标文件中写入位置矩阵,位置矩阵包括第二数据块在二进制流中的起始位置。
在一些实施方式中,该数据保存的装置400还可以包括清空模块;
清空模块,用于在基于第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息之后,清空数据缓存区中的数据。
由此,通过获取值和键的对应关系信息,即存放变量数据的第一数据块的名称与变量名称的对应关系,在目标文件中写入值和键的对应关系信息,这样,可以预设每个变量对应存放的数据块,起到占位作用,便于后续向目标文件写入完整的变量数据。接着,将变量的数据向数据缓存区的第二数据块存储。当检测到数据缓存区的变量中目标变量的数据大小满足条件时,将变量的数据写入目标文件,其中,条件包括数据缓存区的大小与键和值的对应关系信息中变量个数的比值。这样,可以将数据进行分块化存储。从而基于第二数据块中除第一数据块之外的第三数据块的名称,以及存储于第三数据块的变量的名称的对应关系信息,增添写入至目标文件的值和键的对应关系信息。这样,可以通过数据分块化存储的方式对目标文件进行追加保存,提高保存数据和读取数据的效率。
图5是根据一示例性实施例示出的一种数据读取装置500的结构示意图。
如图5所示,该数据读取装置500可以包括:
读取模块501,用于从目标文件中读取值和键的对应关系信息,值表示存放变量数据的第二数据块的名称,键表示变量的名称;
获取模块502,用于根据第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置;
读取模块501,还用于基于第二数据块在二进制流中的起始位置,读取第二数据块中存放的变量的数据。
在一些实施方式中,该数据读取装置500还可以包括构建模块;
构建模块,用于构建第三字典,第三字典包括值和键的对应关系信息;
获取模块502,还用于根据第三字典中第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。
由此,通过从目标文件中读取值和键的对应关系信息,值表示存放变量数据的第二数据块的名称,键表示变量的名称,并根据第二数据块的名称,从目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。进而基于第二数据块在二进制流中的起始位置,读取第二数据块中存放的变量的数据。这样,可以通过第二数据块在二进制流中的起始位置,对想要读取的数据块进行快速读取,提高了数据可读性和时效性。
图6示出了本申请实施例提供的电子的硬件结构示意图。
在电子设备可以包括处理器601以及存储有计算机程序指令的存储器602。
具体地,上述处理器601可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器602可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器602可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器602可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器602可在综合网关容灾设备的内部或外部。在特定实施例中,存储器602是非易失性固态存储器。
存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。
处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现上述实施例中的任意一种数据保存的方法。
在一个示例中,电子设备还可包括通信接口603和总线610。其中,如图6所示,处理器601、存储器602、通信接口603通过总线610连接并完成相互间的通信。
通信接口603,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线610包括硬件、软件或两者,将数据保存的设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线610可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该电子设备可以基于获取值和键的对应关系信息,值表示存放变量数据的第一数据块的名称,键表示变量的名称执行本申请实施例中的数据保存的方法,从而实现结合图1描述的数据保存的方法。
另外,结合上述实施例中的数据保存的方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据保存的方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种数据保存的方法,其特征在于,所述方法包括
获取值和键的对应关系信息,所述值表示存放变量数据的第一数据块的名称,所述键表示变量的名称;
在目标文件中写入所述值和键的对应关系信息;
将所述变量的数据存储至数据缓存区的第二数据块,所述第二数据块包括所述第一数据块;
当检测到所述数据缓存区的所述变量中目标变量的数据大小满足条件时,将所述变量的数据写入所述目标文件,其中,所述条件包括所述数据缓存区的大小与所述键和值的对应关系信息中变量个数的比值;
基于第三数据块的名称,以及存储于所述第三数据块的所述变量的名称的对应关系信息,增添写入至所述目标文件的值和键的对应关系信息;其中,所述第三数据块为所述第二数据块中除第一数据块之外的数据块。
2.根据权利要求1所述的方法,其特征在于,所述获取值和键的对应关系信息,包括:
获取第一字典,所述第一字典包括所述值和键的对应关系信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述第三数据块的名称,以及存储于第三数据块的数据的所述变量的名称,对应的值和键的对应关系信息写入所述第一字典。
4.根据权利要求3所述的方法,其特征在于,所述基于第三数据块的名称,以及存储于所述第三数据块的所述变量的名称的对应关系信息,增添写入至所述目标文件的值和键的对应关系信息,包括:
获取所述第一数据块的在二进制流中的起始位置;
基于所述第一数据块的在二进制流中的起始位置、所述第一字典中第三数据块的名称,以及存储于所述第三数据块的数据的变量的名称,对应的值和键的对应关系信息,增添写入至所述目标文件的值和键的对应关系信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第二数据块在二进制流中的起始位置记录在第二字典;
获取所述第二数据块在二进制流中的起始位置;
在所述目标文件中写入位置矩阵,所述位置矩阵包括所述第二数据块在二进制流中的起始位置。
6.根据权利要求1所述的方法,其特征在于,在所述基于第三数据块的名称,以及存储于所述第三数据块的所述变量的名称的对应关系信息,增添写入至所述目标文件的值和键的对应关系信息之后,所述方法还包括:
清空所述数据缓存区中的数据。
7.一种数据读取方法,其特征在于,所述方法包括:
从目标文件中读取值和键的对应关系信息,所述值表示存放变量数据的第二数据块的名称,所述键表示变量的名称;
根据所述第二数据块的名称,从所述目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置;
基于所述第二数据块在二进制流中的起始位置,读取所述第二数据块中存放的变量的数据。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第二数据块的名称,从所述目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置,包括:
构建第三字典,所述第三字典包括所述值和键的对应关系信息;
根据所述第三字典中所述第二数据块的名称,从所述目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置。
9.一种数据保存的装置,其特征在于,所述装置包括:
获取模块,用于获取值和键的对应关系信息,所述值表示存放变量数据的第一数据块的名称,所述键表示变量的名称;
写入模块,用于在目标文件中写入所述值和键的对应关系信息;
存储模块,用于将所述变量的数据存储至数据缓存区的第二数据块,所述第二数据块包括所述第一数据块;
所述写入模块,还用于当检测到所述数据缓存区的所述变量中目标变量的数据大小满足条件时,将所述变量的数据写入所述目标文件,其中,所述条件包括所述数据缓存区的大小与所述键和值的对应关系信息中变量个数的比值;
所述写入模块,还用于基于第三数据块的名称,以及存储于所述第三数据块的所述变量的名称的对应关系信息,增添写入至所述目标文件的值和键的对应关系信息;其中,所述第三数据块为所述第二数据块中除第一数据块之外的数据块。
10.一种数据读取装置,其特征在于,所述装置包括:
读取模块,用于从目标文件中读取值和键的对应关系信息,所述值表示存放变量数据的第二数据块的名称,所述键表示变量的名称;
获取模块,用于根据所述第二数据块的名称,从所述目标文件中的位置矩阵获取每个第二数据块在二进制流中的起始位置;
所述读取模块,还用于基于所述第二数据块在二进制流中的起始位置,读取所述第二数据块中存放的变量的数据。
CN202210904510.6A 2022-07-29 2022-07-29 数据保存和读取的方法、装置 Pending CN115374069A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210904510.6A CN115374069A (zh) 2022-07-29 2022-07-29 数据保存和读取的方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210904510.6A CN115374069A (zh) 2022-07-29 2022-07-29 数据保存和读取的方法、装置

Publications (1)

Publication Number Publication Date
CN115374069A true CN115374069A (zh) 2022-11-22

Family

ID=84064235

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210904510.6A Pending CN115374069A (zh) 2022-07-29 2022-07-29 数据保存和读取的方法、装置

Country Status (1)

Country Link
CN (1) CN115374069A (zh)

Similar Documents

Publication Publication Date Title
CN108090198B (zh) 图数据库创建及数据加载方法、设备及介质
CN109685805B (zh) 一种图像分割方法及装置
CN107608630B (zh) 数据读写方法及装置
CN114676161A (zh) 一种数据处理方法、装置、设备及存储介质
CN115374069A (zh) 数据保存和读取的方法、装置
CN116092066A (zh) 文本识别方法、装置、设备、介质及产品
CN115587143A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN115186741A (zh) 一种兴趣点poi融合数据验证的方法、装置及设备
CN114417830A (zh) 风险评价方法、装置、设备及计算机可读存储介质
CN111352825B (zh) 数据接口的测试方法、装置及服务器
CN113590581A (zh) 数据传输方法、装置、设备及存储介质
CN112306961B (zh) 日志处理方法、装置、设备及存储介质
CN116775110A (zh) 数据同步方法、装置、设备、介质及产品
CN116775673A (zh) 多数据源的数据整合方法及其装置、设备、介质、产品
CN115510823A (zh) 表头合并方法、装置、设备、介质及程序产品
CN117455072A (zh) 电量预测方法、装置、电子设备及存储介质
CN115935877A (zh) 一种芯片存储需求的部署方法、装置、设备及存储介质
CN117891500A (zh) 接口文档的生成方法、装置、设备、存储介质及程序产品
CN118052457A (zh) 数据获取方法、装置、设备、可读存储介质及程序产品
CN117216113A (zh) 用户的确定方法、装置、设备及计算机存储介质
CN118152119A (zh) 数据异步迁移方法、装置、设备及介质
CN118152134A (zh) 资源调整方法、装置、设备、介质及程序产品
CN115410054A (zh) 场景生成方法、模型测试方法及模型训练方法
CN114637795A (zh) 报表处理方法、装置、设备、介质及产品
CN117472430A (zh) 数据的获取方法、装置、设备及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination