CN114691681A - 数据处理方法、装置、电子设备及可读存储介质 - Google Patents
数据处理方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN114691681A CN114691681A CN202210287639.7A CN202210287639A CN114691681A CN 114691681 A CN114691681 A CN 114691681A CN 202210287639 A CN202210287639 A CN 202210287639A CN 114691681 A CN114691681 A CN 114691681A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- data block
- storage
- target
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、电子设备及计算机可读存储介质,涉及数据存储技术领域。该方法包括:获取数据存储请求,数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存至内存中;当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块;从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,从各数据文件中确定用于存储数据块的目标数据文件以及数据块在目标数据文件的存储位置;将数据块移动至存储位置进行存储。本申请实施例避免了列式存储***在频繁更新的状态下产生过多写IO,以及避免产生大量的小文件。
Description
技术领域
本申请涉及数据存储技术领域,具体而言,本申请涉及一种数据处理方法、装置、电子设备、可读存储介质。
背景技术
在分析型数据库领域,为了加快对数据的分析性能,通常使用列式存储***来存储数据。在列式存储***中,表的数据按列来组织,比如一个列用一个数据文件存储。这样查询过程中只需要读取涉及的列,避免读取无关列数据。
在列式存储***写入一批更新数据,需要IO次数等于列的数量,因此现有的数据更新过程存在IOPS过高以及产生多个文件的问题,进而导致列式存储***写入能力变差,甚至引起写入失速(Write Stall)。
发明内容
本申请实施例提供了一种数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品,可以解决现有技术的上述问题。技术方案如下:
根据本申请实施例的一个方面,提供了一种数据处理方法,该方法包括:
获取数据存储请求,数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存至内存中;
当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块;
从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,从所述各数据文件中确定用于存储数据块的目标数据文件以及数据块在目标数据文件的存储位置;
将数据块移动至存储位置进行存储;
其中,各数据文件均位于持久性存储设备中。
作为一种可选的实施方式,将缓存数据压缩获得数据块,包括:
对内存中每个列数组进行序列化并压缩,获得对应的子数据块;
汇总所有子数据块,获得数据块。
作为一种可选的实施方式,将数据块移动至目标存储位置进行存储,之后还包括:
确定数据块的、与存储相关的元信息;
将元信息存储在内存中的第一元信息文件。
作为一种可选的实施方式,元信息包括以下信息中的至少一种:
数据块的数据块标识以及对应的第一偏移量;
目标数据文件的文件标识;
各子数据块的子数据块标识以及对应的第二偏移量;
其中,第一偏移量用于表示对应的数据块在目标数据文件中的存储位置;第二偏移量用于表示对应的数据子块在存储位置中的相对位置。
作为一种可选的实施方式,将数据块移动至目标存储位置进行存储,之后还包括:
接收数据读取请求,数据读取请求包括目标子数据块的目标子数据块标识以及目标子数据块对应的目标数据块的目标数据块标识;
在第一元信息文件中查找包括目标数据块标识的目标元信息;
根据目标元信息中的目标数据文件的文件标识、与目标数据块标识对应的第一偏移量以及与目标子数据块标识对应的第二偏移量,从目标数据文件中读取目标子数据块至内存;
在内存中将目标子数据块解压缩,并解码获得作为读取结果的列数组。
作为一种可选的实施方式,还包括:将元信息存储在持久性存储设备中的第二元信息文件。
作为一种可选的实施方式,空间管理文件为保序的数据结构;
其中,数据结构中的节点用于表征数据文件;节点的节点信息包括对应数据文件的第一偏移量和剩余空间;各节点以对应的偏移量进行排序。
根据本申请实施例的另一个方面,提供了一种数据处理装置,该装置包括:
缓存模块,用于获取数据存储请求,数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存至内存中;
压缩模块,用于当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块;
存储位置确定模块,用于从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,从各数据文件中确定用于存储数据块的目标数据文件以及数据块在目标数据文件的存储位置;
存储模块,用于将数据块移动至存储位置进行存储;
其中,各数据文件均位于持久性存储设备中。
作为一种可选的实施方式,压缩模块包括:
列数组压缩子模块,用于对内存中每个列数组进行序列化并压缩,获得对应的子数据块;
汇总子模块,用于汇总所有子数据块,获得数据块。
作为一种可选的实施方式,数据处理装置还包括:
元信息确定模块,用于确定数据块的、与存储相关的元信息;
第一存储模块,用于将元信息存储在内存中的第一元信息文件。
作为一种可选的实施方式,元信息包括以下信息中的至少一种:
数据块的数据块标识以及对应的第一偏移量;
目标数据文件的文件标识;
各子数据块的子数据块标识以及对应的第二偏移量;
其中,第一偏移量用于表示对应的数据块在目标数据文件中的存储位置;第二偏移量用于表示对应的数据子块在存储位置中的相对位置。
作为一种可选的实施方式,数据处理装置还包括:
读取请求接收模块,用于接收数据读取请求,数据读取请求包括目标子数据块的目标子数据块标识以及目标子数据块对应的目标数据块的目标数据块标识;
元信息搜索模块,用于在第一元信息文件中查找包括目标数据块标识的目标元信息;
子数据块搜索模块,用于根据目标元信息中的目标数据文件的文件标识、与目标数据块标识对应的第一偏移量以及与目标子数据块标识对应的第二偏移量,从目标数据文件中读取目标子数据块至内存;
解压缩模块,用于在内存中将目标子数据块解压缩,并解码获得作为读取结果的列数组。
作为一种可选的实施方式,数据处理装置,包括:
第二存储模块,用于将元信息存储在持久性存储设备中的第二元信息文件。
作为一种可选的实施方式,空间管理文件为保序的数据结构;
其中,数据结构中的节点用于表征数据文件;节点的节点信息包括对应数据文件的第一偏移量和剩余空间;各节点以对应的偏移量进行排序。
根据本申请实施例的另一个方面,提供了一种电子设备,该电子设备包括:存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现上述方法的步骤。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤
本申请实施例提供的技术方案带来的有益效果是:
通过获取数据存储请求,其中数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存,当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块,从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,确定用于存储数据块的目标数据文件以及数据块在目标数据文件的存储位置,将数据块移动至存储位置进行存储,避免了列式存储***在频繁更新的状态下产生过多写IO,以及避免产生大量的小文件。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的列式存储***写入数据的示意图;
图2为本申请实施例提供的一种数据处理***的结构示意图;
图3为本申请实施例提供的一种数据处理方法的流程示意图;
图4为本申请实施例提供的确定目标数据文件的流程示意图;
图5为本申请实施例提供的另一个实施例的数据处理***的结构示意图;
图6为本申请实施例提供的一种数据处理方法的数据读取流程的示意图;
图7为本申请实施例提供的一种数据处理装置的结构示意图;
图8为本申请实施例提供的一种的电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指对应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在列式存储***写入一批更新数据,需要的IO次数等于列的数量,请参见图1,其示例性地示出了列式存储***写入数据的示意图,该列式存储***中包括3个列数组,分别为ColA、ColB、ColC、每当有新的数据需要写入***时,就需要在3个列数组的末尾分别新建数据结构,当新的数据写入到新建的数据结构后,意味这列式存储***中又增加了一个行数据Row3。
由于现有技术每次更新数据时都会生成一个新的文件,在更新速度快的情况下会生成大量的小文件,拖慢查询性能;为了避免太多小文件,需要后台不断的做数据合并,消耗大量CPU和IO,影响***稳定性。
本申请提供的数据处理方法、装置、电子设备、计算机可读存储介质以及计算机程序产品,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
本申请提供的数据处理方法,可应用于图2的数据处理***,该***包括终端110和服务器120。应当理解的是,本申请实施例提供的数据存储***可以是目标应用程序的后台数据存储***,该数据存储***中的服务器120可以与运行有目标应用程序的终端设备110进行通信。
示例性地,终端设备110上运行的目标应用程序产生的待存储数据后,由终端设备110向服务器120发送数据存储请求,数据存储请求中包括待存储的数据。服务器120包括内存和持久性存储设备例如磁盘、固态驱动器(SSD)或NVMe固态驱动器(NVMe SSD)等,相对于内存而言,持久性存储设备为持久化存储数据的设备。
服务器120将待存储的数据以列数组的形式缓存至内存中,当内存中缓存的数据达到预设大小时,服务器120对缓存的数据进行压缩获得数据块,并从持久性存储设备上的空间管理文件中搜索各数据文件的空闲存储空间,应当理解的是,空间管理文件是持久性存储设备上用于记录各数据文件的空闲存储空间的文件,数据文件则是用于存储数据库的文件,服务器120进一步根据数据块的大小,确定存储该数据块的目标数据文件以及数据块在目标数据文件的存储位置,将数据块移动至该存储位置进行存储,服务器将数据块的与存储相关的元信息存储至内存中的第一元信息文件,以便在数据读取时快速获取目标数据。
本申请实施例的元信息包括:数据块的数据块标识以及对应的第一偏移量;目标数据文件的文件标识;各子数据块的子数据块标识以及对应的第二偏移量中的至少一种。其中,第一偏移量用于表示对应的数据块在目标数据文件中的存储位置;第二偏移量用于表示对应的数据子块在存储位置中的相对位置。
终端设备110上运行的目标应用程序需要读取数据时,由终端设备110向服务器120发送数据读取请求,数据读取请求中包括目标子数据块的目标子数据块标识以及目标子数据块对应的目标数据块的目标数据块标识。服务器120在第一元信息文件中查找包括目标数据块标识的目标元信息;根据目标元信息中的目标数据文件的文件标识、与目标数据块标识对应的第一偏移量以及与目标子数据块标识对应的第二偏移量,从持久性存储设备的目标数据文件中读取目标子数据块至内存;在内存中将目标子数据块解压缩,并解码获得作为读取结果的列数组。
请参见图3,其示例性地示出了本申请实施例的数据处理方法的流程示意图,如图所示,包括:
S101、获取数据存储请求,数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存至内存中。
本申请实施例在内存中处理待存储数据的存储请求,把待存储数据解析成内存中的列式存储形态,并缓存在内存中。例如,若内存包括3个列数组,若某时刻每个列数组中包括3个子数据,当后续获得一个待存储的数据时,则该待存储的数据会拆分为3个子数据,并按顺序分别存入3个列数组的末尾。
S102、当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块。
本申请实施例针对内存中缓存的数据设置了数据量阈值,当缓存的数据达到数据量阈值时,则将数据进行压缩,应当理解的是,本申请设置的数据量阈值较小。本申请不需要积攒太多的数据,保证了数据更新的及时性。
S103、从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,从各数据文件中确定用于存储数据块的目标数据文件以及数据块在目标数据文件的存储位置。
需要说明的是,本申请实施例的空间管理文件可以位于内存中,从而提升获取数据文件的空闲存储空间的效率,各数据文件则均位于持久性存储设备例如磁盘、固态驱动器(SSD)或NVMe固态驱动器(NVMe SSD)中,其中空间管理文件用于存储各数据文件的空闲存储空间,空闲存储空间的大小决定了数据文件后续可存储的数据块的大小。因此在从空间管理文件中获取各数据文件的空闲存储空间后,可以结合数据块的大小,选择可容纳该数据块的数据文件,当存在多个可容纳该数据块的数据文件时,可以以随机的方式确定目标数据文件。
S104、将数据块移动至存储位置进行存储。
本申请实施例的数据处理方法,通过获取数据存储请求,其中数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存,当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块,从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,确定用于存储数据块的目标数据文件以及数据块在目标数据文件的存储位置,将数据块移动至存储位置进行存储,避免了列式存储***在频繁更新的状态下产生过多写IO,以及避免产生大量的小文件。
在上述各实施例的基础上,作为一种可选实施例,将缓存数据压缩获得数据块,包括:
对内存中每个列数组进行序列化并压缩,获得对应的子数据块;
汇总所有子数据块,获得数据块。
以图1为例,图1中共有3个列数组,通过对每个列数组进行序列号并压缩,可以获得3个子数据块。将3个子数据块打包,获得数据块。
在上述各实施例的基础上,作为一种可选实施例,将缓存数据压缩成数据块,包括:
确定数据块的、与存储相关的元信息;
具体的,本申请实施例的元信息可以包括以下信息:
数据块的数据块标识以及对应的第一偏移量,第一偏移量用于表示对应的数据块在目标数据文件中的存储位置;
目标数据文件的文件标识;
各子数据块的子数据块标识以及对应的第二偏移量,第二偏移量用于表示对应的数据子块在存储位置中的相对位置。
将元信息存储在内存中的第一元信息文件。通过将元信息缓存在内存中,有利于快速访问,保证读效率。具体的,本申请实施例可以以元信息中的数据块的数据块标识为键,以元信息中除数据块标识以外的其他信息为值进行存储。
在上述各实施例的基础上,作为一种可选实施例,空间管理文件为保序的数据结构;例如,可以为红黑树(也称之为自平衡二叉查找树)结构。该数据结构中的节点用于表征数据文件;节点的节点信息包括对应数据文件的第一偏移量和剩余空间;各节点以对应的偏移量进行排序。
请参见图4,其示例性地示出了本申请实施例确定目标数据文件的流程示意图,如图所示,红黑树中包括3个节点,其中节点1的第一偏移量为200字节,剩余空间为50字节,节点2的第一偏移量为0字节,剩余空间为100字节,节点3的第一偏移量为400字节,剩余空间为300字节,若数据块的大小为200字节,则从红黑树的根节点,也即节点1向下遍历,确定节点3的剩余空间满足存储该数据块,那么将该数据块移动至节点3对应的数据文件中,并在空间管理文件中更新数据文件的第一偏移量和剩余空间,对应的,节点3记录的第一偏移量为600(400+200),剩余空间为100(300-200)。
请参见图5,其示例性地示出了本申请另一个实施例的数据处理***的结构示意图,如图所示,该***整体结构分为三个部分,包括内存表MemTable101、数据块存储模块BlobStore102和元数据存储模块PageMetaStore103:
MemTable101是一个内存结构,用于存储最新写入的数据。在MemTable中的数据已经被解析,并使用列存的格式存储(称为列数组)。MemTable的数据会达到预设大小时,被内存持久化(Flush)到BlobStore102中。
MemTable101的数据在被Flush之前,会首先被序列化并压缩,获得一个数据块,这个数据块称之为Page。每一个Page拥有唯一的ID,即数据块标识PageID。需要注意的是,本申请实施例的Page的大小由Memtable的大小决定,所以Page的大小并不固定。
作为一种可选实施例,MemTable101,采用列式数据形态,即使用数组来存储每一列的数据,一个数组对应一列(列数组)。数据的写入只需要附加(Append)到数组的末尾。MemTable101包含Immutable(不可修改表,是Mutable flush阶段的临时形态)和Mutable(可修改表,更新数据可以正常写入)两个部分。只有Mutable才能被写入,Immutable即Flush过程中Mutable的中间状态。
BlobStore102,用于实际存储Page的内容。BlobStore102使用持久性存储设备上的数据文件(BlobFile)1022来实际存储数据,通过空间管理文件(SpaceMap)1021记录对应的BlobFile1022的空闲空间(Free Space)。BlobStore102可以包含多对SpaceMap1021和BlobFile1022,且BlobFile1022有容量上限。
作为一种可选实施例,SpaceMap1021,采用红黑树(自平衡二叉查找树)的数据结构。树上的每个节点记录了对应的空闲空间,节点信息包括(偏移量Offset、剩余空间Length),并按照Offset进行排序。
PageMetaStore103,用于存储Page的元信息(PageMeta)。使用内存中的第一元信息文件(PageDirectory)1031来缓存PageMeta,利于快速访问,同时PageMeta被持久化存储到持久性存储设备上的第二元信息文件(PageMate WAL File)1032。
作为一种可选实施例,PageDirectory1031,使用哈希表的数据结构存储元信息,以方便根据PageID快速获取对应Page的元信息。
图5所示的数据处理***的处理流程包括:
S201、在内存中处理待存储数据的写入请求,并将待存储数据缓存在MemTable101中。
MemTable内部细分为两个部分:Mutable和Immutable。当数据写满了Mutable,或者上层手动调用,会触发当前的Mutable转化为Immutable,并生成新的Mutable以供未来写入;而刚生成的Immutable会被序列化并压缩成Page。
由于列式存储的一个特点是支持只读取部分列,所以Page之内需要带有每个列的索引,用于快速获取具体列的Offset。
S202,根据Page的大小,向BlobStore 102中的SpaceMap 1021申请合适的FreeSpace,并生成PageMeta。
PageMeta的内容包括BlobFile ID、第一偏移量Page Offset、数据块大小PageSize、每个列在Page中的第二偏移量Column Offset等等。
S203,将Page写入对应BlobFile1022的具***置。
S204,将PageMeta写入持久性存储设备的PageMeta WAL File1032。
S205,将PageMeta缓存在内存中的PageDirectory1031。通过将元信息存储在持久性存储设备中,可在启动过程中把数据恢复到内存中的PageDirectory,并且,PageMetaWAL File中PageID、Offset、Size等信息,还可用来恢复空间管理文件SpaceMap,为应对***重启提供了备份。
请参见图6,其示例性地示出了本申请实施例的数据处理方法的数据读取流程,包括:
S301、接收数据读取请求,数据读取请求包括目标子数据块的目标子数据块标识以及目标子数据块对应的目标数据块的目标数据块标识;
S302、在第一元信息文件中查找包括目标数据块标识的目标元信息。
本申请实施例在存储第一元信息文件时,可以以目标数据块标识作为键,以其他元信息作为值进行存储,在数据读取阶段,就可以在第一元信息文件中搜索目标数据库标识对应的键,快速定位到目标元信息。
S303、根据目标元信息中的目标数据文件的文件标识、与目标数据块标识对应的第一偏移量以及与目标子数据块标识对应的第二偏移量,从目标数据文件中读取目标子数据块至内存。
具体的,根据目标元信息中的目标数据文件的文件标识,从持久性存储设备中确定目标数据文件的位置,进一步根据目标数据块标识对应的第一偏移量确定目标数据在持久性存储设备中的存储位置,进一步根据目标子数据块标识对应的第二偏移量,确定目标子数据块的存储位置,根据该存储位置从目标数据文件中读取目标子数据块至内存。
S304、在内存中把目标子数据块解压缩,并解码成列数组,作为读取结果。
本申请实施例提供了一种数据处理装置,如图7所示,该数据处理装置可以包括:缓存模块101、压缩模块102、存储位置确定模块103以及存储模块103,其中,
缓存模块101,用于获取数据存储请求,数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存至内存中;
压缩模块102,用于当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块;
存储位置确定模块103,用于从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,从各数据文件中确定用于存储数据块的目标数据文件以及数据块在目标数据文件的存储位置;
存储模块104,用于将数据块移动至存储位置进行存储;
其中,各数据文件均位于持久性存储设备中。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
作为一种可选的实施方式,压缩模块包括:
列数组压缩子模块,用于对内存中每个列数组进行序列化并压缩,获得对应的子数据块;
汇总子模块,用于汇总所有子数据块,获得数据块。
作为一种可选的实施方式,数据处理装置还包括:
元信息确定模块,用于确定数据块的、与存储相关的元信息;
第一存储模块,用于将元信息存储在内存中的第一元信息文件。
作为一种可选的实施方式,元信息包括以下信息中的至少一种:
数据块的数据块标识以及对应的第一偏移量;
目标数据文件的文件标识;
各子数据块的子数据块标识以及对应的第二偏移量;
其中,第一偏移量用于表示对应的数据块在目标数据文件中的存储位置;第二偏移量用于表示对应的数据子块在存储位置中的相对位置。
作为一种可选的实施方式,数据处理装置还包括:
读取请求接收模块,用于接收数据读取请求,数据读取请求包括目标子数据块的目标子数据块标识以及目标子数据块对应的目标数据块的目标数据块标识;
元信息搜索模块,用于在第一元信息文件中查找包括目标数据块标识的目标元信息;
子数据块搜索模块,用于根据目标元信息中的目标数据文件的文件标识、与目标数据块标识对应的第一偏移量以及与目标子数据块标识对应的第二偏移量,从目标数据文件中读取目标子数据块至内存;
解压缩模块,用于在内存中将目标子数据块解压缩,并解码获得作为读取结果的列数组。
作为一种可选的实施方式,数据处理装置,包括:
第二存储模块,用于将元信息存储在持久性存储设备中的第二元信息文件。
作为一种可选的实施方式,空间管理文件为保序的数据结构;
其中,数据结构中的节点用于表征数据文件;节点的节点信息包括对应数据文件的第一偏移量和剩余空间;各节点以对应的偏移量进行排序。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现数据处理方法的步骤,与相关技术相比可实现:通过获取数据存储请求,其中数据存储请求中包括待存储的数据,将待存储的数据以列数组的形式缓存,当内存中缓存的数据达到预设大小时,对缓存的数据进行压缩获得数据块,从空间管理文件中搜索各数据文件的空闲存储空间,并结合数据块的大小,确定用于存储所述数据块的目标数据文件以及所述数据块在所述目标数据文件的存储位置,将所述数据块移动至所述存储位置进行存储,避免了列式存储***在频繁更新的状态下产生过多写IO,以及避免产生大量的小文件。
在一个可选实施例中提供了一种电子设备,如图8所示,图8所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及对应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及对应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取数据存储请求,所述数据存储请求中包括待存储的数据,将所述待存储的数据以列数组的形式缓存至内存中;
当所述内存中缓存的数据达到预设大小时,对所述缓存的数据进行压缩获得数据块;
从空间管理文件中搜索各数据文件的空闲存储空间,并结合所述数据块的大小,从所述各数据文件中确定用于存储所述数据块的目标数据文件以及所述数据块在所述目标数据文件的存储位置;
将所述数据块移动至所述存储位置进行存储;
其中,所述各数据文件均位于持久性存储设备中。
2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述缓存数据压缩获得数据块,包括:
对所述内存中每个列数组进行序列化并压缩,获得对应的子数据块;
汇总所有所述子数据块,获得所述数据块。
3.根据权利要求2所述的数据处理方法,其特征在于,所述将所述数据块移动至所述目标存储位置进行存储,之后还包括:
确定所述数据块的、与存储相关的元信息;
将所述元信息存储在所述内存中的第一元信息文件。
4.根据权利要求3所述的数据处理方法,其特征在于,所述元信息包括以下信息中的至少一种:
所述数据块的数据块标识以及对应的第一偏移量;
所述目标数据文件的文件标识;
所述各子数据块的子数据块标识以及对应的第二偏移量;
其中,所述第一偏移量用于表示对应的数据块在所述目标数据文件中的存储位置;所述第二偏移量用于表示对应的数据子块在所述存储位置中的相对位置。
5.根据权利要求4所述的数据处理方法,其特征在于,所述将所述数据块移动至所述目标存储位置进行存储,之后还包括:
接收数据读取请求,所述数据读取请求包括目标子数据块的目标子数据块标识以及所述目标子数据块对应的目标数据块的目标数据块标识;
在所述第一元信息文件中查找包括所述目标数据块标识的目标元信息;
根据所述目标元信息中的目标数据文件的文件标识、与所述目标数据块标识对应的第一偏移量以及与所述目标子数据块标识对应的第二偏移量,从所述目标数据文件中读取所述目标子数据块至所述内存;
在所述内存中将所述目标子数据块解压缩,并解码获得作为读取结果的列数组。
6.根据权利要求3所述的数据处理方法,其特征在于,还包括:
将所述元信息存储在所述持久性存储设备中的第二元信息文件。
7.根据权利要求1所述的数据处理方法,其特征在于,所述空间管理文件为保序的数据结构;
其中,所述数据结构中的节点用于表征所述数据文件;所述节点的节点信息包括对应数据文件的第一偏移量和剩余空间;各所述节点以对应的偏移量进行排序。
8.一种数据处理装置,其特征在于,包括:
缓存模块,用于获取数据存储请求,所述数据存储请求中包括待存储的数据,将所述待存储的数据以列数组的形式缓存至内存中;
压缩模块,用于当所述内存中缓存的数据达到预设大小时,对所述缓存的数据进行压缩获得数据块;
存储位置确定模块,用于从空间管理文件中搜索各数据文件的空闲存储空间,并结合所述数据块的大小,从所述各数据文件中确定用于存储所述数据块的目标数据文件以及所述数据块在所述目标数据文件的存储位置;
存储模块,用于将所述数据块移动至所述存储位置进行存储;
其中,所述各数据文件均位于持久性存储设备中。
9.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210287639.7A CN114691681A (zh) | 2022-03-22 | 2022-03-22 | 数据处理方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210287639.7A CN114691681A (zh) | 2022-03-22 | 2022-03-22 | 数据处理方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691681A true CN114691681A (zh) | 2022-07-01 |
Family
ID=82138685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210287639.7A Pending CN114691681A (zh) | 2022-03-22 | 2022-03-22 | 数据处理方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691681A (zh) |
-
2022
- 2022-03-22 CN CN202210287639.7A patent/CN114691681A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9977802B2 (en) | Large string access and storage | |
US8838551B2 (en) | Multi-level database compression | |
US11537578B2 (en) | Paged column dictionary | |
CN107577436B (zh) | 一种数据存储方法及装置 | |
US10678779B2 (en) | Generating sub-indexes from an index to compress the index | |
CN110532347B (zh) | 一种日志数据处理方法、装置、设备和存储介质 | |
CN106407360B (zh) | 一种数据的处理方法及装置 | |
US11221999B2 (en) | Database key compression | |
CN110764706A (zh) | 存储***、数据管理方法及存储介质 | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及*** | |
CN111949710A (zh) | 数据存储方法、装置、服务器及存储介质 | |
CN113901279B (zh) | 一种图数据库的检索方法和装置 | |
CN104424219A (zh) | 一种数据文件的管理方法及装置 | |
CN111324665A (zh) | 一种日志回放方法及装置 | |
CN111611250A (zh) | 数据存储设备、数据查询方法、装置、服务器及存储介质 | |
CN116257523A (zh) | 一种基于非易失存储器的列式存储索引方法及装置 | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN113253932B (zh) | 一种分布式存储***的读写控制方法和*** | |
US20240220470A1 (en) | Data storage device and storage control method based on log-structured merge tree | |
CN115080684B (zh) | 网盘文档索引方法、装置、网盘及存储介质 | |
CN114896250B (zh) | 一种键值分离的键值存储引擎索引优化方法及装置 | |
CN114297196B (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 |