CN112114753A - 一种数据写入方法、装置及设备 - Google Patents
一种数据写入方法、装置及设备 Download PDFInfo
- Publication number
- CN112114753A CN112114753A CN202010979211.XA CN202010979211A CN112114753A CN 112114753 A CN112114753 A CN 112114753A CN 202010979211 A CN202010979211 A CN 202010979211A CN 112114753 A CN112114753 A CN 112114753A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- block
- unit data
- cache
- 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.)
- Granted
Links
Images
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/2228—Indexing structures
- G06F16/2272—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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本申请提供一种数据写入方法、装置及设备,该方法包括:获取待写入数据,将待写入数据划分为至少一个单元数据,确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;针对每个单元数据,根据单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到缓存块组,根据所述单元数据的偏移位置将单元数据写入到缓存块组绑定的内存块;在缓存块组中的单元数据满足迁移条件时,将缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在数据区块中的存储位置的映射关系。通过本申请的技术方案,可以提高数据写入速度,提高数据写入性能。
Description
技术领域
本申请涉及存储技术领域,尤其是涉及一种数据写入方法、装置及设备。
背景技术
云存储是一种在线存储模式,能够将数据存储在由数据中心运营商提供的多台虚拟存储服务器,而非将数据存储在专属存储服务器。用户通过向数据中心运营商购买或租赁存储空间的方式,来满足数据存储需求。数据中心运营商根据用户需求,在后端准备虚拟化的存储资源,并将这些存储资源以存储资源池(storage pool)的方式提供,用户可以自行使用此存储资源池来存储数据。
云存储可以使用机械盘(即机械硬盘)作为存储介质,将存储介质称为云存储介质。在接收到单元数据后,将单元数据写入到云存储介质。显然,由于云存储介质是机械盘,而机械盘受到自身机械性限制,会导致数据写入速度较慢。例如,对象文件包括大量单元数据,这些单元数据需要通过多次写入过程才能写入到云存储介质,从而导致频繁的向云存储介质中写入单元数据,将这些单元数据写入到云存储介质时,数据写入性能较低,数据写入速度较慢。
发明内容
本申请提供一种数据写入方法,所述方法包括:
获取待写入数据,将所述待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;
针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;
在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
本申请提供一种数据写入装置,所述装置包括:
获取模块,用于获取待写入数据,将待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;
写入模块,用于针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
本申请提供一种存储设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下的步骤:
获取待写入数据,将所述待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;
针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;
在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
由以上技术方案可见,本申请实施例中,在接收到单元数据后,不是直接将单元数据写入到云存储介质,而是先将单元数据写入到固态缓存介质,如SSD(Solid State Disk,固态硬盘)缓存介质,由于SSD缓存介质是固态硬盘,固态硬盘启动快,数据写入速度快,因此,可以提高数据写入速度。例如,对象文件包括大量单元数据,这些单元数据通过多次写入过程写入到SSD缓存介质,即使频繁向SSD缓存介质写入单元数据,数据写入性能也比较高,数据写入速度较快。在单元数据满足迁移条件时,可以将SSD缓存介质中的单元数据迁移到云存储介质,在数据的迁移过程中,并不影响继续向SSD缓存介质写入数据,即,向SSD缓存介质写入数据和将单元数据迁移到云存储介质可以并行执行,因此,不会影响数据写入速度。上述方式能够为用户提供对象文件的分布式缓存服务,屏蔽云存储介质的数据写入速度影响,将高并发读写产生的大量操作转化为多级缓存,再异步的将数据写入到云存储介质进行持久化存储。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的数据写入方法的流程图;
图2是本申请一种实施方式中的数据写入过程的结构示意图;
图3是本申请一种实施方式中的两层缓存介质的示意图;
图4是本申请另一种实施方式中的数据写入方法的流程图;
图5是本申请一种实施方式中的单元数据的划分示意图;
图6是本申请一种实施方式中的单元数据迁移的示意图;
图7是本申请一种实施方式中的数据读取方法的流程图;
图8是本申请一种实施方式中的数据写入装置的结构图;
图9是本申请一种实施方式中的存储设备的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种数据写入方法,参见图1所示,为该数据写入方法的流程示意图,该方法可以应用于存储设备,该方法可以包括:
步骤101,获取待写入数据,将待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置。
示例性的,可以获取写请求,该写请求可以包括待写入数据,待写入数据所属对象文件的文件信息,待写入数据在该对象文件中的偏移位置。然后,根据待写入数据的偏移位置(即待写入数据在该对象文件中的偏移位置)将待写入数据划分为至少一个单元数据,并确定每个单元数据在该对象文件中的偏移位置。然后,根据单元数据的偏移位置确定该单元数据的编号,并根据待写入数据的文件信息和该单元数据的编号确定该单元数据的索引信息。
示例性的,根据待写入数据的偏移位置将待写入数据划分为至少一个单元数据,可以包括但不限于:基于预先配置的偏移区间和待写入数据的偏移位置,将待写入数据划分为至少一个单元数据;同一单元数据的起始偏移位置和结束偏移位置位于同一偏移区间,不同单元数据的起始偏移位置位于不同偏移区间;偏移区间的长度可以为长度阈值,每个单元数据的长度均不大于该长度阈值。
步骤102,针对每个单元数据,根据该单元数据的索引信息确定该单元数据对应的缓存块组;采用追加写方式将该单元数据写入到该缓存块组,并根据该单元数据的偏移位置将该单元数据写入到该缓存块组绑定的内存块。
示例性的,根据该单元数据的偏移位置将该单元数据写入到该缓存块组绑定的内存块,可以包括:根据该单元数据的偏移位置确定该单元数据所属的数据块;判断缓存块组绑定的内存块中是否已存在该数据块;如果否,则在缓存块组绑定的内存块中创建该单元数据所属的数据块,并将该单元数据写入到已创建的该数据块中;如果是,则将该单元数据更新到已存在的该数据块中。
步骤103,在缓存块组中的单元数据满足迁移条件时,将该缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在该数据区块中的存储位置的映射关系。
示例性的,缓存块组包括当前正在写入单元数据的第一缓存块和当前未写入单元数据的第二缓存块;采用追加写方式将该单元数据写入到缓存块组,可以包括:采用追加写方式将所述单元数据写入到第一缓存块。缓存块组中的单元数据满足迁移条件,可以包括:若第一缓存块被占用的存储空间达到空间阈值,则确定缓存块组中的单元数据满足迁移条件。将该缓存块组绑定的内存块中的单元数据迁移到数据区块之后,还可以删除第一缓存块中的单元数据,并从缓存块组绑定的内存块中删除与该第一缓存块对应的单元数据。
示例性的,将该缓存块组绑定的内存块中的单元数据迁移到数据区块,可以包括但不限于:根据单元数据的偏移位置确定该单元数据所属的数据块,并判断该数据区块中是否已存在数据块。如果否,则从云存储介质中读取与该数据块对应的已存储数据,并对该单元数据和该已存储数据进行合并,得到合并后数据;在数据区块中创建数据块,将合并后数据写入到已创建的该数据块中。如果是,则从该数据块中读取已存储数据,并对该单元数据和该已存储数据进行合并,得到合并后数据,并将合并后数据写入到该数据块中。
示例性的,对该单元数据和该已存储数据进行合并,得到合并后数据,可以包括但不限于:从该已存储数据中确定出与该单元数据匹配的子数据,并通过该单元数据替换该已存储数据中的该子数据,得到合并后数据。
示例性的,在从该已存储数据中确定出与该单元数据匹配的子数据时,该子数据的偏移位置与该单元数据的偏移位置可以相同。
在一种可能的实施方式中,将缓存块组绑定的内存块中的单元数据迁移到数据区块之后,当数据区块中的单元数据满足迁移条件时,还可以从数据区块存储的所有数据块中确定出目标数据块,并将目标数据块中的单元数据迁移到云存储介质,并从数据区块中删除已迁移到云存储介质的单元数据。然后,从数据库中删除该单元数据的索引信息与存储位置的映射关系。
示例性的,从数据区块存储的所有数据块中确定出目标数据块,可以包括但不限于:按照数据区块存储的每个数据块的数据写入时间,对所有数据块进行排序;基于排序结果,选取数据写入时间早的数据块作为目标数据块。
在一种可能的实施方式中,还可以获取读请求,并基于该读请求确定出至少一个读取单元,并确定每个读取单元的索引信息,及每个读取单元在对象文件中的偏移位置。然后,针对每个读取单元,可以根据该读取单元的索引信息确定该读取单元对应的缓存块组,并判断该缓存块组中是否存在该读取单元对应的单元数据。若是,则可以根据该读取单元的偏移位置从该缓存块组绑定的内存块中获取该读取单元对应的单元数据。若否,则可以基于该读取单元的索引信息查询数据库,得到与该读取单元的索引信息对应的存储位置,并基于该存储位置从该数据区块中获取该读取单元对应的单元数据。
示例性的,在基于该读取单元的索引信息查询数据库之后,若数据库中不存在与该读取单元的索引信息对应的存储位置,则从云存储介质中获取该读取单元对应的单元数据,而不是从数据区块中获取该读取单元对应的单元数据。
由以上技术方案可见,本申请实施例中,不是直接将单元数据写入到云存储介质,而是先将单元数据写入到固态缓存介质,如SSD缓存介质,由于SSD缓存介质是固态硬盘,数据写入速度快,因此,可以提高数据写入速度。例如,对象文件包括大量单元数据,这些单元数据通过多次写入过程写入到SSD缓存介质,即使频繁向SSD缓存介质写入单元数据,数据写入性能也比较高,数据写入速度较快。在单元数据满足迁移条件时,可以将SSD缓存介质中的单元数据迁移到云存储介质,在数据的迁移过程中,不影响继续向SSD缓存介质写入数据,即,向SSD缓存介质写入数据和将单元数据迁移到云存储介质可以并行执行,因此,不会影响数据写入速度。上述方式能够为用户提供对象文件的分布式缓存服务,屏蔽云存储介质的数据写入速度影响,将高并发读写产生的大量操作转化为多级缓存,再异步的将数据写入到云存储介质进行持久化存储。
以下结合具体应用场景,对本申请实施例的上述技术方案进行说明。
参见图2所示,为本申请实施例的结构示意图,客户端通过随机写方式向分布式缓存集群(也可以称为分布式缓存加速集群,如HOS等)写入数据。分布式缓存集群包括多个数据节点,这些数据节点能够将数据写入到SSD缓存介质,且数据节点通过异步方式将SSD缓存介质中的数据写入到云存储介质,比如说,在将数据写入到SSD缓存介质的过程中,数据节点也能够将SSD缓存介质中的数据写入到云存储介质。随机写方式是指,假设客户端需要写入对象文件A,对象文件A为512MB,则通过多次写入过程写入对象文件A,每次写入过程之间没有顺序关系,是采用随机写入的方式,例如,第一次写入对象文件A的第5-10MB数据,第二次写入对象文件A的第22-31MB数据,以此类推。
示例性的,数据节点在将数据写入到SSD缓存介质时,SSD缓存介质可以包括两层缓存介质,第一层缓存介质为缓存块层,第二层缓存介质为数据区块层。参见图3所示,缓存块层包括多个缓存块组,对此缓存块组的数量不做限制,每个缓存块组包括两个缓存块,将这两个缓存块分别记为第一缓存块和第二缓存块。数据区块层包括多个数据区块,对此数据区块的数量不做限制,每个数据区块的大小可以为固定,如32MB、64MB、128MB等,对此不做限制。
针对缓存块层的每个缓存块来说,该缓存块可以为SSD存储介质的缓存块,数据写入和数据读取速度较快。针对数据区块层的每个数据区块来说,该数据区块也可以为SSD存储介质的缓存块,数据写入和数据读取速度较快。
数据节点将SSD缓存介质中的数据写入到云存储介质时,云存储介质可以采用数据条带(如RAID(Redundant Arrays of Independent Disks,独立冗余磁盘阵列)条带)的方式存储数据,也可以采用其它方式存储数据,对此不做限制。
在上述应用场景下,参见图4所示,为数据写入方法的流程示意图。
步骤401,客户端向分布式缓存集群发送写请求,该写请求包括待写入数据,待写入数据所属对象文件的文件信息,待写入数据在该对象文件中的偏移位置。
比如说,当客户端需要向云存储介质中写入对象文件A中的数据A1,且数据A1是对象文件A中的第5MB-11MB数据时,则写请求可以包括数据A1(即待写入数据),对象文件A的文件信息,以及数据A1在对象文件A中的偏移位置,如偏移起始位置(如5MB,表示偏移起始位置是对象文件A的第5MB)和数据长度(如6MB,表示数据A1的长度是6MB)。显然,通过偏移起始位置和数据长度,能够确定数据A1是对象文件A中的第5MB-11MB数据。
示例性的,对象文件的文件信息可以包括但不限于:bucket(存储空间)和objectkey(对象键值)等,可以通过bucket表示对象文件存储在哪个存储空间,可以通过objectkey表示对象文件的唯一标识。偏移起始位置可以通过offset表示,数据长度可以通过len表示,即当前需要写入的待写入数据的长度。
步骤402,分布式缓存集群确定用于存储该待写入数据的数据节点。
比如说,基于预设hash策略,基于待写入数据的文件信息确定用于存储该待写入数据的数据节点(将该数据节点记为源数据节点)。例如,hash策略与文件信息有关,可以基于该文件信息确定源数据节点,对此确定方式不做限制。
步骤403,分布式缓存集群将该写请求发送给源数据节点,源数据节点在接收到该写请求后,根据待写入数据的偏移位置将该待写入数据划分为至少一个单元数据,并确定每个单元数据在该对象文件中的偏移位置。
示例性的,可以基于预先配置的偏移区间和待写入数据的偏移位置,将待写入数据划分为至少一个单元数据;同一单元数据的起始偏移位置和结束偏移位置位于同一偏移区间,不同单元数据的起始偏移位置位于不同偏移区间;偏移区间的长度可以为长度阈值,每个单元数据的长度均不大于该长度阈值。
假设偏移区间的长度为2MB,即长度阈值为2MB,则偏移区间包括(0MB,2MB]、(2MB,4MB]、(4MB,6MB]、以此类推。假设基于待写入数据的偏移位置确定待写入数据是对象文件A的第5MB-11MB,则将待写入数据划分为4个单元数据,这些单元数据组成unit列表,unit列表包括单元数据a1、单元数据a2、单元数据a3和单元数据a4。单元数据a1的起始偏移位置为5MB,数据长度为1MB,单元数据a1对应偏移区间(4MB,6MB],单元数据a1是对象文件A的第5MB-6MB。单元数据a2的起始偏移位置为6MB,数据长度为2MB,单元数据a2对应偏移区间(6MB,8MB],单元数据a2是对象文件A的第6MB-8MB。单元数据a3的起始偏移位置为8MB,数据长度为2MB,单元数据a3对应偏移区间(8MB,10MB],单元数据a3是对象文件A的第8MB-10MB。单元数据a4的起始偏移位置为10MB,数据长度为1MB,单元数据a4对应偏移区间(10MB,12MB],单元数据a4是对象文件A的第10MB-11MB。
假设偏移区间的长度为4MB,即长度阈值为4MB,则偏移区间包括(0MB,4MB]、(4MB,8MB]、(8MB,12MB]、以此类推。假设基于待写入数据的偏移位置确定待写入数据是对象文件A的第5MB-11MB,则将待写入数据划分为2个单元数据,单元数据a1的起始偏移位置为5MB,数据长度为3MB,单元数据a1对应偏移区间(4MB,8MB],单元数据a1是对象文件A的第5MB-8MB。单元数据a2的起始偏移位置为8MB,数据长度为3MB,单元数据a2对应偏移区间(8MB,12MB],单元数据a2是对象文件A的第8MB-11MB。
综上所述,基于待写入数据的偏移位置将待写入数据划分为至少一个单元数据,这些单元数据组成unit列表。参见图5所示,假设待写入数据的起始偏移位置为offset_u,待写入数据的数据长度为len_u,且长度阈值为1MB,则unit列表的第一个单元数据的起始偏移位置为offset_u,第一个单元数据的数据长度为1MB;unit列表的第二个单元数据的起始偏移位置为offset_u+1MB,第二个单元数据的数据长度为1MB;以此类推,unit列表的最后一个单元数据的起始偏移位置为offset_u+len_u-1MB,最后一个单元数据的数据长度为1MB。
在一种可能的实施方式中,在确定每个单元数据在该对象文件中的偏移位置之后,还可以根据单元数据的偏移位置(如起始偏移位置和数据长度)确定该单元数据的编号。例如,基于该单元数据的结束偏移位置(由该起始偏移位置和该数据长度确定)与该长度阈值的商确定该单元数据的编号,如编号可以为对结束偏移位置与该长度阈值的商向上取整。比如说,假设长度阈值为2MB,待写入数据是对象文件A的第5MB-11MB,则第一个单元数据a1的编号为6与2的商,即编号为3,第二个单元数据a2的编号为8与2的商,即编号为4,第三个单元数据a3的编号为5,第四个单元数据a4的编号为6。又例如,假设长度阈值为4MB,则第一个单元数据a1的编号为8与4的商,即编号为2,第二个单元数据a2的编号为对11与4的商向上取整,即编号为3。
又例如,参见图5所示,假设长度阈值为1MB,则第一个单元数据的编号为(offset_u+1MB)/1MB,第二个单元数据的编号为(offset_u+2MB)/1MB,以此类推,最后一个单元数据的编号为(offset_u+len_u)/1MB。
综上所述,单元数据的编号与单元数据的偏移位置和长度阈值有关。当然,上述过程中,是以单元数据的编号从1开始为例,若单元数据的编号从0开始,则将上述单元数据的编号减1即可,例如,若长度阈值为1MB,则第一个单元数据的编号为(offset_u)/1MB,第二个单元数据的编号为(offset_u+1MB)/1MB,以此类推,最后一个单元数据的编号为(offset_u+len_u-1MB)/1MB。
示例性的,由于客户端每次随机写入的待写入数据可能会包括多个单元数据,因此,将待写入数据划分为多个单元数据,确定每个单元数据的编号。
步骤404,针对每个单元数据,源数据节点确定该单元数据的索引信息,例如,根据待写入数据的文件信息和该单元数据的编号确定该单元数据的索引信息,比如说,将该文件信息和该单元数据的编号组成该单元数据的索引信息。
综上所述,针对每个单元数据,可以确定该单元数据的偏移位置(即单元数据在对象文件中的偏移位置)和该单元数据的索引信息。由于每个单元数据的处理方式相同,后续实施例中,以一个单元数据的处理过程为例进行说明。
步骤405,源数据节点根据该单元数据的索引信息确定该单元数据对应的缓存块组,并采用追加写方式将该单元数据写入到该缓存块组,并根据该单元数据的偏移位置将该单元数据写入到该缓存块组绑定的内存块。
示例性的,可以对该单元数据的索引信息与缓存块组的总数量进行hash运算(如hash取模算法),得到与该单元数据对应的缓存块组。当然,上述方式只是示例,只要具有相同索引信息的单元数据对应的缓存块组相同即可。
示例性的,针对每个缓存块组来说,该缓存块组可以包括第一缓存块和第二缓存块,将当前正在写入单元数据的缓存块称为第一缓存块,将当前未写入单元数据的缓存块称为第二缓存块,因此,采用追加写方式将该单元数据写入到缓存块组,可以包括:采用追加写方式将该单元数据写入到第一缓存块。
比如说,可以直接将该单元数据写入到第一缓存块的后面,在数据写入过程中,并不会对第一缓存块已写入的单元数据进行更新(即替换)。
示例性的,针对每个缓存块组来说,可以预先配置与该缓存块组绑定的内存块,在将单元数据写入到缓存块组后,还需要根据该单元数据的偏移位置将该单元数据写入到该缓存块组绑定的内存块,即,缓存块组可以存在等量的内存块空间,写入缓存块组内的单元数据均在内存块中保持一份。比如说,可以采用如下步骤,将该单元数据写入到该缓存块组绑定的内存块:
步骤S11、根据该单元数据的偏移位置确定该单元数据所属的数据块。
比如说,假设长度阈值为4MB,针对单元数据a1来说,起始偏移位置为5MB,数据长度为3MB,单元数据a1所属的数据块为数据块b1,且数据块b1为(4MB,8MB]。针对单元数据a2来说,起始偏移位置为8MB,数据长度为3MB,单元数据a2所属的数据块为数据块b2,且数据块b2为(8MB,12MB]。
步骤S12、判断缓存块组绑定的内存块中是否已存在该数据块。
如果否,则可以执行步骤S13;如果是,则可以执行步骤S14。
步骤S13、在缓存块组绑定的内存块中创建该单元数据所属的数据块,并将该单元数据写入到已创建的该数据块中,即写入到当前创建的数据块中。
步骤S14、将该单元数据更新到已存在的该数据块中。
比如说,以单元数据a1为例进行说明,可以先判断缓存块组绑定的内存块中是否已存在数据块b1,即对象文件的(4MB,8MB]对应的数据块。
如果不存在,则在该内存块中创建数据块b1,并将单元数据a1写入到数据块b1中。由于数据块b1对应4MB的存储空间,而单元数据a1只占用3MB的存储空间,因此,将单元数据a1写入到数据块b1的5MB-8MB的存储空间,而4MB-5MB的存储空间为空闲,即当前数据写入过程,没有数据写入。如果存在数据块b1,则将单元数据a1更新到已存在的数据块b1中,即将单元数据a1更新到数据块b1的5MB-8MB的存储空间,替换该存储空间的已有数据。
综上所述,针对客户端发送的每个写请求,可以采用上述步骤401-步骤405,将单元数据写入到缓存块组,并将单元数据写入到该缓存块组绑定的内存块。
在单元数据的写入过程中,源数据节点还可以判断缓存块组中的单元数据是否满足迁移条件,若满足迁移条件,还可以执行步骤406。步骤406与步骤401-405没有顺序关系,可以在执行步骤401-405的过程中执行步骤406。
步骤406,在缓存块组中的单元数据满足迁移条件时,将该缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在该数据区块中的存储位置的映射关系。
例如,当缓存块组的第一缓存块被占用的存储空间达到空间阈值(如100%、90%等)时,如第一缓存块被写满,则确定缓存块组中的单元数据满足迁移条件,并将该缓存块组绑定的内存块中的单元数据迁移到数据区块。在单元数据的迁移过程中,将原有第二缓存块更新为新第一缓存块,将原有第一缓存块更新为新第二缓存块,由于新第一缓存块的存储空间还没有写满,因此,可以继续向该缓存块组的新第一缓存块中写入单元数据,避免单元数据无法写入。
在将缓存块组绑定的内存块中的单元数据迁移到数据区块之后,可以删除原有第一缓存块(即新第二缓存块)中的单元数据。由于新第二缓存块中的单元数据被删除,因此,新第二缓存块作为空闲缓存块,可以继续存储单元数据。
在一种可能的实施方式中,在缓存块组中的单元数据满足迁移条件时,可以将该缓存块组绑定的内存块中的单元数据迁移到数据区块。在将缓存块组绑定的内存块中的单元数据迁移到数据区块之后,可以从缓存块组绑定的内存块中删除与该第一缓存块对应的单元数据。比如说,可以采用如下步骤,将内存块中的单元数据迁移到数据区块,并从内存块中删除该单元数据:
步骤S21、根据单元数据的偏移位置确定该单元数据所属的数据块。
比如说,假设长度阈值为4MB,针对缓存块组绑定的内存块中存储的单元数据(对应第一缓存块中存储的单元数据),若该单元数据的起始偏移位置为5MB,数据长度为3MB,则该单元数据所属的数据块为数据块b1,且数据块b1为(4MB,8MB]。若该单元数据的起始偏移位置为8MB,数据长度为3MB,则该单元数据所属的数据块为数据块b2,且数据块b2为(8MB,12MB]。
步骤S22、判断数据区块中是否已存在该数据块。
如果否,则执行步骤S23,如果是,则执行步骤S24。
示例性的,数据区块层包括多个数据区块,每个数据区块的大小为64MB,针对每个数据区块,可以将该数据区块划分为多个数据块,每个数据块的大小为长度阈值,如4MB。基于此,针对内存块中存储的每个单元数据,后续以一个单元数据为例,先确定该单元数据所属的数据块,如数据块b1,判断所有数据区块中是否已存在数据块b1,即对象文件的(4MB,8MB]对应的数据块。
步骤S23、从云存储介质中读取与该数据块对应的已存储数据,并对该单元数据和该已存储数据进行合并,得到合并后数据。然后,在数据区块中创建一个数据块,并将合并后数据写入到已创建的该数据块中。
对该单元数据和该已存储数据进行合并,得到合并后数据,包括:从该已存储数据中确定出与该单元数据匹配的子数据,并通过该单元数据替换该已存储数据中的该子数据,得到合并后数据。在从该已存储数据中确定出与该单元数据匹配的子数据时,该子数据的偏移位置与该单元数据的偏移位置可以相同。
比如说,从云存储介质中读取与数据块b1对应的已存储数据,即,从云存储介质中读取对象文件的第(4MB,8MB]的数据。然后,对该单元数据和该已存储数据进行合并,假设该单元数据为3MB的数据,如第(5MB,8MB]的数据,则从已存储数据(如第(4MB,8MB]的数据)中确定出与该单元数据匹配的子数据(第(5MB,8MB]的数据),并通过该单元数据替换该已存储数据中的该子数据,得到合并后数据。显然,该子数据的起始偏移位置与该单元数据的起始偏移位置相同,该子数据的数据长度与该单元数据的数据长度相同。
在得到合并后数据后,可以在数据区块中创建一个数据块b1,数据块b1的长度为4MB,并将合并后数据写入到已创建的该数据块b1中。
步骤S24、则从该数据块中读取已存储数据,并对该单元数据和该已存储数据进行合并,得到合并后数据,并将合并后数据写入到该数据块中。
对该单元数据和该已存储数据进行合并,得到合并后数据,包括:从该已存储数据中确定出与该单元数据匹配的子数据,并通过该单元数据替换该已存储数据中的该子数据,得到合并后数据。在从该已存储数据中确定出与该单元数据匹配的子数据时,该子数据的偏移位置与该单元数据的偏移位置可以相同。
比如说,由于数据区块中已经存在数据块b1,且数据块b1包括对象文件的第(4MB,8MB]的数据,即已存储数据,因此,从数据块b1中读取已存储数据,从已存储数据中确定出与该单元数据匹配的子数据,并通过该单元数据替换该已存储数据中的该子数据,得到合并后数据。在得到合并后数据后,将合并后数据写入到数据块b1中,替换数据块b1中的已存储数据。
在将内存块中存储的单元数据写入到数据区块的数据块(即将单元数据迁移到数据区块)后,从内存块中删除该单元数据。在对内存块中存储的每个单元数据进行上述处理后,从内存块中删除与第一缓存块对应的所有单元数据。
在一种可能的实施方式中,在将该缓存块组绑定的内存块中的单元数据迁移到数据区块之后,还可以在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在该数据区块中的存储位置的映射关系。
比如说,数据库用于记录单元数据的索引信息与单元数据的存储位置的映射关系,该索引信息可以为单元数据的唯一标识,该存储位置可以为单元数据在数据区块中的存储位置,从该存储位置处可以找到该单元数据。
该数据库可以为SSDB(key-value类型数据库),该数据库以单元数据的索引信息为主键,该数据库以单元数据的存储位置为value(值)。比如说,单元数据的bucket(单元数据的文件信息)、object_key(单元数据的文件信息)和unit_id(单元数据的编号)作为主键,value为单元数据已写入的数据区块中的存储位置,如dev、slice_id、offset、unit_len、update_time等。dev表示存储设备名称,slice_id表示片标识,dev和slice_id能够唯一确定出数据区块。offset表示起始偏移位置,unit_len表示数据长度,offset和unit_len能够唯一确定出数据区块中的单元数据,update_time表示单元数据的最后一次写入时间。
综上所述,本实施例中,可以采用缓存块组和数据区块存储单元数据,缓存块组包括两个缓存块(也可以称为缓存空间,如上述第一缓存块和第二缓存块),当缓存块组的一个缓存块的空间不足时,可以将该缓存块的单元数据写入到数据区块,并释放该缓存块的空间,目的是为了不影响用户的实时数据写入,用户数据可以继续追加写入到另外的缓存块。每个缓存块均存在等量的内存空间,写入到缓存块内的单元数据均在内存中保持一份相同的单元数据。
当缓存块组内任意一个缓存块的空间不足,触发单元数据转移到数据区块时,异步执行单元数据的合并,即从云存储介质拉取单元数据,与缓存块、数据区块的单元数据进行组合,得到完整数据,将完整数据写入数据区块,在数据库中更新单元数据的索引信息与单元数据的存储位置的映射关系。或者,将缓存块、数据区块的单元数据进行组合,得到完整数据,将完整数据写入数据区块,在数据库中更新单元数据的索引信息与单元数据的存储位置的映射关系。
当缓存块组的一个缓存块的单元数据全部转存到数据区块后,还可以标记该缓存块为空闲,便于后续复用,同时清除该缓存块对应的内存数据。
当某个单元数据分配的缓存块组的空间不足时,即第一缓存块和第二缓存块的空间均不足时,则阻塞等待,直到缓存块组释放其中一个缓存块。
在一种可能的实施方式中,可以采用双副本方式提升数据安全性,比如说,分布式缓存集群除了确定用于存储待写入数据的源数据节点,还可以确定用于存储该待写入数据的目的数据节点,例如,源数据节点与目的数据节点一一对应,在确定出源数据节点后,就可以确定与该源数据节点对应的目的数据节点。
针对每个单元数据,源数据节点将该单元数据发送给目的数据节点,目的数据节点也采用上述方式,将该单元数据写入到缓存块组,将该单元数据写入到该缓存块组绑定的内存块。在缓存块组中的单元数据满足迁移条件时,将该缓存块组绑定的内存块中的单元数据迁移到数据区块,在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据的存储位置的映射关系。具体写入方式与源数据节点的写入方式相同,在此不再重复赘述。
在一种可能的实施方式中,源数据节点将单元数据写入到数据区块后,可以确定数据库中是否已存在该单元数据的表项,即数据库中是否已存在该单元数据的索引信息。如果不存在,则在数据库中添加一条表项,该表项用于记录单元数据的索引信息与该单元数据存储位置的映射关系,且包括写入时间和任务状态等字段。如果已存在,则更新写入时间和任务状态即可。任务状态主要是标注单元数据是否转存到云存储介质,若标注单元数据转存到云存储介质,则可以将单元数据转存到云存储介质,否则,不将单元数据转存到云存储介质。
在单元数据写入成功后,源数据节点还可以返回写入结果,并将单元数据同步到目的数据节点,由目的数据节点执行上述操作,对此操作过程不做限制。
在数据写入过程中,如果源数据节点在线,目的数据节点在线,则由源数据节点执行数据写入过程,且由目的数据节点执行数据写入过程。如果源数据节点在线,目的数据节点不在线,则由源数据节点执行数据写入过程。如果源数据节点不在线,目的数据节点在线,则由目的数据节点执行数据写入过程。如果源数据节点不在线,目的数据节点不在线,则无法执行数据写入过程。
在数据读取过程(数据读取过程参见后续实施例)中,如果源数据节点在线,目的数据节点在线,则由源数据节点执行数据读取过程。如果源数据节点在线,目的数据节点不在线,则由源数据节点执行数据读取过程。如果源数据节点不在线,目的数据节点在线,则由目的数据节点执行数据读取过程。如果源数据节点不在线,目的数据节点不在线,则无法执行数据读取过程。
在一种可能的实施方式中,还可以将数据区块存储的单元数据迁移到云存储介质,参见图6所示,可以采用如下步骤将单元数据迁移到云存储介质:
步骤601,当数据区块中的单元数据满足迁移条件时,源数据节点从数据区块存储的所有数据块中确定出目标数据块(即需要迁移单元数据的数据块)。
示例性的,源数据节点可以定期巡检数据区块的剩余容量,当剩余容量不足(通过剩余空间阈值获知)时,可以从数据区块存储的所有数据块中确定出目标数据块。比如说,可以预先配置数据区块的剩余空间阈值,当数据区块的剩余容量小于该剩余空间阈值时,可以确定数据区块中的单元数据满足迁移条件,并从数据区块存储的所有数据块中确定出目标数据块。
示例性的,从数据区块存储的所有数据块中确定出目标数据块,可以包括但不限于:按照数据区块存储的每个数据块的数据写入时间,对所有数据块进行排序;基于排序结果,选取数据写入时间早的数据块作为目标数据块,目标数据块的数量可以为一个,目标数据块的数量也可以为至少两个。以目标数据块的数量为M为例,则选取数据写入时间早的M个数据块作为目标数据块。
从数据区块存储的所有数据块中确定出目标数据块,还可以包括但不限于:基于数据区块存储的每个数据块的数据写入时间,将数据写入时间大于预设时间阈值(如30分钟等)的数据块作为目标数据块。以目标数据块的数量为M为例,则从数据写入时间大于预设时间阈值的所有数据块中,随机选取M个数据块作为目标数据块,或选取数据写入时间早的M个数据块作为目标数据块。
当数据块的数据写入时间大于30分钟时,表示该数据块为冷数据(超过30分钟用户不再更新的数据),将该数据块转存云存储介质进行持久化处理。
步骤602,源数据节点将目标数据块中的单元数据迁移到云存储介质。
比如说,源数据节点将目标数据块中的单元数据发送给云存储介质,云存储介质对该单元数据进行持久化存储,并向源数据节点发送持久化存储结果。
步骤603,源数据节点将该单元数据的信息(如该单元数据的索引信息与存储位置等)发送给目的数据节点,通知该单元数据已迁移到云存储介质。
步骤604,目的数据节点从数据区块中删除该单元数据,并从数据库中删除该单元数据的索引信息与该单元数据的存储位置的映射关系。或者,在数据区块的剩余容量充足时,先不从数据区块中删除该单元数据,而是为该单元数据设置标记,该标记表示源数据节点已经将该单元数据迁移到云存储介质,在数据区块的剩余容量不足时,直接从数据区块中删除该单元数据,并从数据库中删除该单元数据的索引信息与该单元数据的存储位置的映射关系。
步骤605,目的数据节点向源数据节点发送响应消息,源数据节点接收到该响应消息后,从数据区块中删除已迁移到云存储介质的单元数据,并从数据库中删除该单元数据的索引信息与该单元数据的存储位置的映射关系。
在一种可能的实施方式中,本申请实施例中还提出一种数据读取方法,参见图7所示,为该数据读取方法的流程示意图,该方法可以包括:
步骤701,客户端向分布式缓存集群发送读请求,该读请求包括待读取数据所属对象文件的文件信息,该待读取数据在该对象文件中的偏移位置。
示例性的,文件信息可以包括但不限于bucket和object key,可以通过bucket表示对象文件存储在哪个存储空间,可以通过object key表示对象文件的唯一标识。待读取数据在该对象文件中的偏移位置可以包括偏移起始位置和数据长度。
示例性的,客户端通过随机读方式向分布式缓存集群发送读请求,该读请求可以包括bucket、object key、偏移起始位置offset以及数据长度len等内容。
步骤702,分布式缓存集群确定用于读取该待读取数据的源数据节点。
示例性的,步骤702的实现过程可以参见步骤402,在此不再赘述。
示例性的,分布式缓存集群还可以确定与源数据节点对应的目的数据节点,若源数据节点和目的数据节点均在线,则将读请求发送给源数据节点。若源数据节点在线,目的数据节点不在线,则将读请求发送给源数据节点。若源数据节点不在线,目的数据节点在线,则将该读请求发送给目的数据节点。若源数据节点和目的数据节点均不在线,则无法对该读请求进行处理。为了方便描述,在后续实施例中,以将该读请求发送给源数据节点为例进行说明。
步骤703,分布式缓存集群将该读请求发送给源数据节点,源数据节点在接收到该读请求后,基于该读请求确定出至少一个读取单元(读取单元与上述单元数据对应,但是读取单元不是真实数据,只是为了方便描述,将需要读取的单元数据记为读取单元),并确定每个读取单元在对象文件中的偏移位置。
示例性的,可以基于预先配置的偏移区间和待读取数据的偏移位置,将待读取数据划分为至少一个读取单元;同一读取单元的起始偏移位置和结束偏移位置位于同一偏移区间,不同读取单元的起始偏移位置位于不同偏移区间;偏移区间的长度可以为长度阈值,每个读取单元的长度均不大于该长度阈值。
在一种可能的实施方式中,在确定每个读取单元在该对象文件中的偏移位置之后,还可以根据读取单元的偏移位置(如起始偏移位置和数据长度)确定该读取单元的编号。例如,基于该读取单元的结束偏移位置(由该起始偏移位置和该数据长度确定)与该长度阈值的商确定该读取单元的编号,例如,该读取单元的编号可以为对结束偏移位置与该长度阈值的商向上取整。
步骤704,针对每个读取单元,源数据节点确定该读取单元的索引信息。例如,根据待读取数据的文件信息和该读取单元的编号确定该读取单元的索引信息,比如说,将该文件信息和该读取单元的编号组成该读取单元的索引信息。
针对每个读取单元,可以确定该读取单元的偏移位置(即读取单元在对象文件中的偏移位置)和该读取单元的索引信息。由于每个读取单元的处理方式相同,后续实施例中,以一个读取单元的处理过程为例进行说明。
步骤705,源数据节点根据该读取单元的索引信息确定该读取单元对应的缓存块组,并判断该缓存块组中是否存在该读取单元对应的单元数据。
若是,则可以执行步骤706;若否,则可以执行步骤707。
示例性的,可以对该读取单元的索引信息与缓存块组的总数量进行hash运算(如hash取模算法),得到与该读取单元对应的缓存块组。
示例性的,在数据写入过程中,可以在数据库中记录单元数据的索引信息与单元数据的存储位置的映射关系。在将单元数据写入到缓存块组,并记录到该缓存块组绑定的内存块时,在数据库中记录单元数据的索引信息,且该单元数据的存储位置为空。在将单元数据迁移到数据区块时,在数据库中记录单元数据的索引信息与单元数据在该数据区块中的存储位置的映射关系。
源数据节点可以通过该读取单元的索引信息查询数据库,若数据库中不存在该读取单元的索引信息,则说明缓存块组不存在该读取单元对应的单元数据,数据区块不存在该读取单元对应的单元数据,该读取单元对应的单元数据存储在云存储介质,从云存储介质读取该读取单元对应的单元数据。若数据库中存在该读取单元的索引信息,且该索引信息对应的存储位置为空,则说明缓存块组存在该读取单元对应的单元数据,数据区块可能存在该读取单元对应的单元数据,也可能不存在该读取单元对应的单元数据。若数据库中存在该读取单元的索引信息,且该索引信息对应的存储位置不为空,则说明缓存块组不存在该读取单元对应的单元数据,数据区块存在该读取单元对应的单元数据。
综上所述,源数据节点可以确定出缓存块组中是否存在该读取单元对应的单元数据,若是,则可以执行步骤706;若否,则可以执行步骤707。
步骤706,源数据节点根据该读取单元的偏移位置从该缓存块组绑定的内存块中获取该读取单元对应的单元数据。示例性的,由于缓存块组中存在该读取单元对应的单元数据,因此,该缓存块组绑定的内存块中也存在该读取单元对应的单元数据,可以从该内存块中获取该读取单元对应的单元数据。
步骤707,源数据节点基于该读取单元的索引信息查询数据库,得到与该读取单元的索引信息对应的存储位置,并基于该存储位置从数据区块中获取该读取单元对应的单元数据。示例性的,在查询数据库之后,若数据库中不存在与该读取单元的索引信息对应的存储位置,则从云存储介质中获取该读取单元对应的单元数据,而不是从数据区块中获取该读取单元对应的单元数据。
以下结合几个具体应用场景,对步骤706和步骤707进行说明。
应用场景1:假设读取单元的偏移位置表示需要读取从a-b的单元数据,且缓存块组中存在该读取单元对应的单元数据,如缓存块组绑定的内存块中存在从a-b的单元数据,那么,可以从该内存块中获取从a-b的单元数据。
应用场景2:假设读取单元的偏移位置表示需要读取从a-b的单元数据,且缓存块组中存在该读取单元对应的单元数据,数据区块中存在该读取单元对应的单元数据,如缓存块组绑定的内存块中存在从a-c的单元数据,数据区块中存在从a-b的单元数据,那么,可以从该内存块中获取从a-c的单元数据x1,从数据区块中获取从a-b的单元数据x2,将单元数据x1和单元数据x2中的单元数据x3(从c-b的数据)组合在一起,得到该读取单元对应的单元数据。
应用场景3:假设读取单元的偏移位置表示需要读取从a-b的单元数据,且缓存块组中存在该读取单元对应的单元数据,数据区块中不存在该读取单元对应的单元数据,如缓存块组绑定的内存块中存在从a-c的单元数据,那么,可以从该内存块中获取从a-c的单元数据x1,并从云存储介质中获取从a-b的单元数据x2,将单元数据x1和单元数据x2中的单元数据x3(从c-b的数据)组合在一起,得到该读取单元对应的单元数据。
在从云存储介质中获取单元数据x2后,还可以将单元数据x2写入到数据区块,并在数据库中记录单元数据x2的索引信息与存储位置的映射关系。
应用场景4:假设读取单元的偏移位置表示需要读取从a-b的单元数据,且缓存块组中存在该读取单元对应的单元数据,数据区块中存在该读取单元对应的单元数据,如缓存块组绑定的内存块中存在从a-c的单元数据,数据区块中存在从a-d的单元数据(数据区块不存在从d-b的数据),那么,可以从该内存块中获取从a-c的单元数据x1,从数据区块中获取从a-d的单元数据x2,并从云存储介质中获取从a-b的单元数据x3。然后,可以将单元数据x1、单元数据x2中的单元数据x4(从c-d的单元数据)以及单元数据x3中的单元数据x5(从d-b的单元数据)组合在一起,得到该读取单元对应的单元数据。
在从云存储介质中获取单元数据x3后,还可以将单元数据x3中的单元数据x5写入到数据区块(即写入到单元数据x2的后面),从而将单元数据x5与单元数据x2组合在一起,形成从a-b的单元数据。
应用场景5:假设读取单元的偏移位置表示需要读取从a-b的单元数据,且缓存块组中不存在该读取单元对应的单元数据,数据区块中存在该读取单元对应的单元数据,若数据区块中存在从a-b的单元数据,那么,从数据区块中获取从a-b的单元数据。或者,若数据区块中存在从a-c的单元数据,那么,从数据区块中获取从a-c的单元数据x1,并从云存储介质中获取从a-b的单元数据x2,将单元数据x1和单元数据x2中的单元数据x3(从c-b的数据)组合在一起,得到该读取单元对应的单元数据。在从云存储介质中获取单元数据x2后,还可以将单元数据x2中的单元数据x3写入到数据区块(即写入到单元数据x1的后面),从而将单元数据x3与单元数据x1组合在一起,形成从a-b的单元数据。
应用场景6:假设读取单元的偏移位置表示需要读取从a-b的单元数据,且缓存块组中不存在该读取单元对应的单元数据,数据区块中不存在该读取单元对应的单元数据,那么,从云存储介质中获取从a-b的单元数据x1。在从云存储介质中获取单元数据x1后,还可以将单元数据x1写入到数据区块,并在数据库中记录单元数据x1的索引信息与存储位置的映射关系。
基于上述各应用场景,均可以得到与读取单元对应的单元数据,并将该单元数据存储在内存中,在得到所有读取单元对应的单元数据后,可以按照这些单元数据的顺序,将这些单元数据拼装完整,得到待读取数据,并将待读取数据返回给客户端,至此,成功读取待读取数据,将待读取数据返回给客户端。
示例性的,还可以通过空间局部性原理,在客户端请求偏移读取的数据前后,将可能读到的数据,预先从云存储介质中读取到数据区块,目的是加快后续客户端数据的读取。例如,客户端已经读取过数据A,可以将位于数据A后面的数据预先从云存储介质中读取到数据区块,或者,将位于数据A前面的数据预先从云存储介质中读取到数据区块,对此预先读取过程不做限制。
基于与上述方法同样的申请构思,本申请实施例中还提出一种数据写入装置,如图8所示,为所述数据写入装置的结构图,所述装置包括:获取模块81,用于获取待写入数据,将待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;写入模块82,用于针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
在一种可能的实施方式中,所述获取模块81获取待写入数据,将所述待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置时具体用于:获取写请求,所述写请求包括待写入数据,所述待写入数据所属对象文件的文件信息,所述待写入数据在所述对象文件中的偏移位置;根据所述待写入数据的偏移位置将所述待写入数据划分为至少一个单元数据,并确定每个单元数据在所述对象文件中的偏移位置;根据单元数据的偏移位置确定该单元数据的编号;根据所述待写入数据的文件信息和该单元数据的编号确定该单元数据的索引信息。
在一种可能的实施方式中,所述写入模块82根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块时具体用于:根据所述单元数据的偏移位置确定所述单元数据所属的数据块;判断所述缓存块组绑定的内存块中是否已存在所述数据块;如果否,则在所述缓存块组绑定的内存块中创建所述单元数据所属的数据块,并将所述单元数据写入到已创建的所述数据块中;如果是,则将所述单元数据更新到已存在的所述数据块中。
在一种可能的实施方式中,所述写入模块82将所述缓存块组绑定的内存块中的单元数据迁移到数据区块时具体用于:根据所述单元数据的偏移位置确定所述单元数据所属的数据块;判断所述数据区块中是否已存在所述数据块;如果否,则从云存储介质中读取与所述数据块对应的已存储数据,对所述单元数据和所述已存储数据进行合并,得到合并后数据;在所述数据区块中创建所述数据块,将所述合并后数据写入到已创建的所述数据块中;如果是,则从所述数据块中读取已存储数据,对所述单元数据和所述已存储数据进行合并,得到合并后数据;将所述合并后数据写入到所述数据块中。
在一种可能的实施方式中,所述写入模块82还用于:
当所述数据区块中的单元数据满足迁移条件时,从所述数据区块存储的所有数据块中确定出目标数据块,并将所述目标数据块中的单元数据迁移到云存储介质,并从所述数据区块中删除已迁移到云存储介质的单元数据;从数据库中删除该单元数据的索引信息与存储位置的映射关系。
在一种可能的实施方式中,所述获取模块81,还用于获取读请求,基于所述读请求确定出至少一个读取单元,并确定每个读取单元的索引信息,及每个读取单元在对象文件中的偏移位置;所述装置还包括读取模块:所述读取模块,用于针对每个读取单元,根据所述读取单元的索引信息确定所述读取单元对应的缓存块组,并判断所述缓存块组中是否存在所述读取单元对应的单元数据;若是,则根据所述读取单元的偏移位置从所述缓存块组绑定的内存块中获取所述读取单元对应的单元数据;若否,则基于所述读取单元的索引信息查询所述数据库,得到与所述读取单元的索引信息对应的存储位置,并基于所述存储位置从所述数据区块中获取所述读取单元对应的单元数据。
基于与上述方法同样的申请构思,本申请实施例提出一种存储设备,从硬件层面而言,存储设备的硬件架构图可以参见图9所示,可以包括:处理器91和机器可读存储介质92,所述机器可读存储介质92存储有能够被处理器91执行的机器可执行指令;处理器91用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器91用于执行机器可执行指令,以实现如下步骤:
获取待写入数据,将所述待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;
针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;
在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,其中,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被CPU执行时,能够实现本申请上述示例公开的方法。
示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种数据写入方法,其特征在于,所述方法包括:
获取待写入数据,将所述待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;
针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;
在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
2.根据权利要求1所述的方法,其特征在于,
所述获取待写入数据,将所述待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置,包括:
获取写请求,所述写请求包括待写入数据,所述待写入数据所属对象文件的文件信息,所述待写入数据在所述对象文件中的偏移位置;
根据所述待写入数据的偏移位置将所述待写入数据划分为至少一个单元数据,并确定每个单元数据在所述对象文件中的偏移位置;
根据单元数据的偏移位置确定该单元数据的编号;根据所述待写入数据的文件信息和该单元数据的编号确定该单元数据的索引信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待写入数据的偏移位置将所述待写入数据划分为至少一个单元数据,包括:
基于预先配置的偏移区间和所述待写入数据的偏移位置,将所述待写入数据划分为至少一个单元数据;其中,同一单元数据的起始偏移位置和结束偏移位置位于同一偏移区间,不同单元数据的起始偏移位置位于不同偏移区间;偏移区间的长度为长度阈值,每个单元数据的长度均不大于该长度阈值。
4.根据权利要求1所述的方法,其特征在于,所述根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块,包括:
根据所述单元数据的偏移位置确定所述单元数据所属的数据块;
判断所述缓存块组绑定的内存块中是否已存在所述数据块;
如果否,则在所述缓存块组绑定的内存块中创建所述单元数据所属的数据块,并将所述单元数据写入到已创建的所述数据块中;
如果是,则将所述单元数据更新到已存在的所述数据块中。
5.根据权利要求1所述的方法,其特征在于,所述缓存块组包括当前正在写入单元数据的第一缓存块和当前未写入单元数据的第二缓存块;
所述采用追加写方式将所述单元数据写入到所述缓存块组,包括:
采用追加写方式将所述单元数据写入到所述第一缓存块;
所述缓存块组中的单元数据满足迁移条件,包括:若第一缓存块被占用的存储空间达到空间阈值,则确定所述缓存块组中的单元数据满足迁移条件;
所述将所述缓存块组绑定的内存块中的单元数据迁移到数据区块之后,所述方法还包括:删除所述第一缓存块中的单元数据;
从所述缓存块组绑定的内存块中删除与所述第一缓存块对应的单元数据。
6.根据权利要求1所述的方法,其特征在于,
所述将所述缓存块组绑定的内存块中的单元数据迁移到数据区块,包括:
根据所述单元数据的偏移位置确定所述单元数据所属的数据块;
判断所述数据区块中是否已存在所述数据块;
如果否,则从云存储介质中读取与所述数据块对应的已存储数据,对所述单元数据和所述已存储数据进行合并,得到合并后数据;在所述数据区块中创建所述数据块,将所述合并后数据写入到已创建的所述数据块中;
如果是,则从所述数据块中读取已存储数据,对所述单元数据和所述已存储数据进行合并,得到合并后数据;将所述合并后数据写入到所述数据块中。
7.根据权利要求6所述的方法,其特征在于,
所述对所述单元数据和所述已存储数据进行合并,得到合并后数据,包括:
从所述已存储数据中确定出与所述单元数据匹配的子数据,并通过所述单元数据替换所述已存储数据中的所述子数据,得到所述合并后数据;
其中,所述子数据的偏移位置与所述单元数据的偏移位置相同。
8.根据权利要求1所述的方法,其特征在于,所述将所述缓存块组绑定的内存块中的单元数据迁移到数据区块之后,所述方法还包括:
当所述数据区块中的单元数据满足迁移条件时,从所述数据区块存储的所有数据块中确定出目标数据块,并将所述目标数据块中的单元数据迁移到云存储介质,并从所述数据区块中删除已迁移到云存储介质的单元数据;
从数据库中删除该单元数据的索引信息与存储位置的映射关系。
9.根据权利要求8所述的方法,其特征在于,
所述从所述数据区块存储的所有数据块中确定出目标数据块,包括:
按照数据区块存储的每个数据块的数据写入时间,对所有数据块进行排序;
基于排序结果,选取数据写入时间早的数据块作为目标数据块。
10.根据权利要求1-9任一所述的方法,其特征在于,所述方法还包括:
获取读请求,基于所述读请求确定出至少一个读取单元,并确定每个读取单元的索引信息,及每个读取单元在对象文件中的偏移位置;
针对每个读取单元,根据所述读取单元的索引信息确定所述读取单元对应的缓存块组,并判断所述缓存块组中是否存在所述读取单元对应的单元数据;
若是,则根据所述读取单元的偏移位置从所述缓存块组绑定的内存块中获取所述读取单元对应的单元数据;若否,则基于所述读取单元的索引信息查询所述数据库,得到与所述读取单元的索引信息对应的存储位置,并基于所述存储位置从所述数据区块中获取所述读取单元对应的单元数据。
11.根据权利要求10所述的方法,其特征在于,
所述基于所述读取单元的索引信息查询所述数据库之后,所述方法还包括:
若所述数据库中不存在与所述读取单元的索引信息对应的存储位置,则从云存储介质中获取所述读取单元对应的单元数据。
12.一种数据写入装置,其特征在于,所述装置包括:
获取模块,用于获取待写入数据,将待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;
写入模块,用于针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
13.根据权利要求12所述的装置,其特征在于,所述获取模块,还用于获取读请求,基于所述读请求确定出至少一个读取单元,并确定每个读取单元的索引信息,及每个读取单元在对象文件中的偏移位置;
所述装置还包括读取模块:所述读取模块,用于针对每个读取单元,根据所述读取单元的索引信息确定所述读取单元对应的缓存块组,并判断所述缓存块组中是否存在所述读取单元对应的单元数据;
若是,则根据所述读取单元的偏移位置从所述缓存块组绑定的内存块中获取所述读取单元对应的单元数据;若否,则基于所述读取单元的索引信息查询所述数据库,得到与所述读取单元的索引信息对应的存储位置,并基于所述存储位置从所述数据区块中获取所述读取单元对应的单元数据。
14.一种存储设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下的步骤:
获取待写入数据,将所述待写入数据划分为至少一个单元数据,并确定每个单元数据的索引信息,及每个单元数据在对象文件中的偏移位置;
针对每个单元数据,根据所述单元数据的索引信息确定所述单元数据对应的缓存块组;采用追加写方式将所述单元数据写入到所述缓存块组,根据所述单元数据的偏移位置将所述单元数据写入到所述缓存块组绑定的内存块;
在所述缓存块组中的单元数据满足迁移条件时,将所述缓存块组绑定的内存块中的单元数据迁移到数据区块;在数据库中记录已迁移到数据区块的单元数据的索引信息与该单元数据在所述数据区块中的存储位置的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010979211.XA CN112114753B (zh) | 2020-09-17 | 2020-09-17 | 一种数据写入方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010979211.XA CN112114753B (zh) | 2020-09-17 | 2020-09-17 | 一种数据写入方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112114753A true CN112114753A (zh) | 2020-12-22 |
CN112114753B CN112114753B (zh) | 2022-09-30 |
Family
ID=73799770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010979211.XA Active CN112114753B (zh) | 2020-09-17 | 2020-09-17 | 一种数据写入方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114753B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112882867A (zh) * | 2021-02-25 | 2021-06-01 | 杭州海康威视系统技术有限公司 | 一种索引信息存储方法、装置及存储设备 |
CN113590035A (zh) * | 2021-07-21 | 2021-11-02 | 湖南兴天电子科技有限公司 | 一种非标准sata接口的驱动方法和系统 |
CN114327278A (zh) * | 2021-12-30 | 2022-04-12 | 北京百度网讯科技有限公司 | 数据的追加写方法、装置、设备以及存储介质 |
CN114925020A (zh) * | 2022-07-20 | 2022-08-19 | 中电云数智科技有限公司 | 一种基于数据增量写方式的快照版本数据迁移方法 |
CN116719621A (zh) * | 2023-06-01 | 2023-09-08 | 上海聚水潭网络科技有限公司 | 一种针对海量任务的数据回写方法、装置、设备及介质 |
CN116719621B (zh) * | 2023-06-01 | 2024-05-03 | 上海聚水潭网络科技有限公司 | 一种针对海量任务的数据回写方法、装置、设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103339615A (zh) * | 2011-01-28 | 2013-10-02 | 日本电气株式会社 | 存储系统 |
CN103744855A (zh) * | 2013-11-29 | 2014-04-23 | 航天恒星科技有限公司 | 一种基于聚合文件的瓦片地图存储方法 |
CN106843770A (zh) * | 2017-01-23 | 2017-06-13 | 北京思特奇信息技术股份有限公司 | 一种分布式文件系统中小文件数据存储、读取方法及装置 |
US20190243563A1 (en) * | 2018-02-02 | 2019-08-08 | Fujitsu Limited | Storage control device, storage control method, and recording medium |
US20190278507A1 (en) * | 2016-11-26 | 2019-09-12 | Huawei Technologies Co., Ltd. | Data Migration Method, Host, and Solid State Disk |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN110825694A (zh) * | 2019-11-01 | 2020-02-21 | 北京锐安科技有限公司 | 数据处理方法、装置、设备和存储介质 |
CN111459885A (zh) * | 2019-03-26 | 2020-07-28 | 广州荔支网络技术有限公司 | 一种数据的处理方法、装置、计算机设备和存储介质 |
JP2020123038A (ja) * | 2019-01-29 | 2020-08-13 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2020
- 2020-09-17 CN CN202010979211.XA patent/CN112114753B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103339615A (zh) * | 2011-01-28 | 2013-10-02 | 日本电气株式会社 | 存储系统 |
CN103744855A (zh) * | 2013-11-29 | 2014-04-23 | 航天恒星科技有限公司 | 一种基于聚合文件的瓦片地图存储方法 |
US20190278507A1 (en) * | 2016-11-26 | 2019-09-12 | Huawei Technologies Co., Ltd. | Data Migration Method, Host, and Solid State Disk |
CN106843770A (zh) * | 2017-01-23 | 2017-06-13 | 北京思特奇信息技术股份有限公司 | 一种分布式文件系统中小文件数据存储、读取方法及装置 |
US20190243563A1 (en) * | 2018-02-02 | 2019-08-08 | Fujitsu Limited | Storage control device, storage control method, and recording medium |
JP2020123038A (ja) * | 2019-01-29 | 2020-08-13 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN111459885A (zh) * | 2019-03-26 | 2020-07-28 | 广州荔支网络技术有限公司 | 一种数据的处理方法、装置、计算机设备和存储介质 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN110825694A (zh) * | 2019-11-01 | 2020-02-21 | 北京锐安科技有限公司 | 数据处理方法、装置、设备和存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112882867A (zh) * | 2021-02-25 | 2021-06-01 | 杭州海康威视系统技术有限公司 | 一种索引信息存储方法、装置及存储设备 |
CN112882867B (zh) * | 2021-02-25 | 2024-03-05 | 杭州海康威视系统技术有限公司 | 一种索引信息存储方法、装置及存储设备 |
CN113590035A (zh) * | 2021-07-21 | 2021-11-02 | 湖南兴天电子科技有限公司 | 一种非标准sata接口的驱动方法和系统 |
CN114327278A (zh) * | 2021-12-30 | 2022-04-12 | 北京百度网讯科技有限公司 | 数据的追加写方法、装置、设备以及存储介质 |
US11947842B2 (en) | 2021-12-30 | 2024-04-02 | Beijing Baidu Netcom Science Technology, Co., Ltd. | Method for writing data in append mode, device and storage medium |
CN114925020A (zh) * | 2022-07-20 | 2022-08-19 | 中电云数智科技有限公司 | 一种基于数据增量写方式的快照版本数据迁移方法 |
CN116719621A (zh) * | 2023-06-01 | 2023-09-08 | 上海聚水潭网络科技有限公司 | 一种针对海量任务的数据回写方法、装置、设备及介质 |
CN116719621B (zh) * | 2023-06-01 | 2024-05-03 | 上海聚水潭网络科技有限公司 | 一种针对海量任务的数据回写方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112114753B (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112114753B (zh) | 一种数据写入方法、装置及设备 | |
US11379142B2 (en) | Snapshot-enabled storage system implementing algorithm for efficient reclamation of snapshot storage space | |
US11461027B2 (en) | Deduplication-aware load balancing in distributed storage systems | |
JP6155769B2 (ja) | ストレージ制御装置、制御プログラム及び制御方法 | |
CN107798130B (zh) | 一种分布式存储快照的方法 | |
CN107209714B (zh) | 分布式存储系统及分布式存储系统的控制方法 | |
JP5943096B2 (ja) | 複合不揮発性記憶装置のためのデータ移行 | |
CN110321301B (zh) | 一种数据处理的方法及装置 | |
US9507720B2 (en) | Block storage-based data processing methods, apparatus, and systems | |
CN110557964B (zh) | 数据写入方法、客户端服务器和系统 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN107729536B (zh) | 一种数据存储方法和装置 | |
WO2017149592A1 (ja) | ストレージ装置 | |
CN107329704B (zh) | 一种缓存镜像方法及控制器 | |
JP2018532166A (ja) | 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ | |
CN108431815B (zh) | 在处理器网格中的分布式数据的去重复数据 | |
CN111522502B (zh) | 数据去重方法、装置、电子设备及计算机可读存储介质 | |
CN111949210A (zh) | 分布式存储系统中元数据存储方法、系统及存储介质 | |
CN108491290B (zh) | 一种数据写入方法及装置 | |
CN109165120B (zh) | 分布式存储系统中管理快照和差异位图生成方法和产品 | |
CN106528703A (zh) | 一种重复删除的模式切换方法及装置 | |
EP4189533A1 (en) | Efficiency sets for determination of unique data | |
CN109582235B (zh) | 管理元数据存储方法及装置 | |
CN108334457B (zh) | 一种io处理方法及装置 | |
US9063656B2 (en) | System and methods for digest-based storage |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |