CN116301670B - 一种数据分区方法及数据处理方法 - Google Patents

一种数据分区方法及数据处理方法 Download PDF

Info

Publication number
CN116301670B
CN116301670B CN202310597709.3A CN202310597709A CN116301670B CN 116301670 B CN116301670 B CN 116301670B CN 202310597709 A CN202310597709 A CN 202310597709A CN 116301670 B CN116301670 B CN 116301670B
Authority
CN
China
Prior art keywords
partition
data
target
written
storage
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.)
Active
Application number
CN202310597709.3A
Other languages
English (en)
Other versions
CN116301670A (zh
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.)
Extreme Data Beijing Technology Co ltd
Original Assignee
Extreme Data Beijing Technology 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 Extreme Data Beijing Technology Co ltd filed Critical Extreme Data Beijing Technology Co ltd
Priority to CN202310597709.3A priority Critical patent/CN116301670B/zh
Publication of CN116301670A publication Critical patent/CN116301670A/zh
Application granted granted Critical
Publication of CN116301670B publication Critical patent/CN116301670B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提出一种数据分区方法及数据处理方法,涉及分布式数据库技术领域。其中,数据分区方法包括:接收分布式存储系统中的每个存储节点发送的分区存储量;分区存储量为存储节点中包括的各个分区的存储量;根据分区存储量,确定第i滚动块的存储量;根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件;响应于第i滚动块的存储量满足预设条件,创建第i+1滚动块;将第i+1滚动块平均拆分为N个分区;建立第i+1滚动块内的N个分区与分布式存储系统中存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。该方案可以通过不断增加滚动块来实现分区动态增加。

Description

一种数据分区方法及数据处理方法
技术领域
本申请涉及分布式数据库技术领域,尤其涉及一种数据分区方法及数据处理方法。
背景技术
分布式存储系统是将数据分散存储在多台独立的存储设备上的存储系统,每个存储设备相当于一个存储节点。目前,常见的分布式存储系统分区方法为基于哈希的分区方法和基于取值范围的分区方法,但是以上方法在应对海量数据时需要根据数据的变化进行动态的拆分合并过程中,数据处理复杂。
发明内容
为了解决上述问题,本申请提供了一种数据分区方法及数据处理方法。
根据本申请的第一方面,提供了一种数据分区方法,方法应用于分布式存储系统的主节点,包括:
接收分布式存储系统中的每个存储节点发送的分区存储量;分区存储量为存储节点中包括的各个分区的存储量;
根据分区存储量,确定第i滚动块的存储量;其中,i为正整数;
根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件;
响应于第i滚动块的存储量满足预设条件,创建第i+1滚动块;其中,第i+1滚动块可容纳M条数据,M为正整数;
将第i+1滚动块平均拆分为N个分区;其中,N为大于等于2的整数;
建立第i+1滚动块内的N个分区与分布式存储系统中存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。
也就是说,本方案可以随着数据量的增大,不断的增加滚动块,同时将每个滚动块被拆分为N个分区,从而可以通过不断增加滚动块来实现分区动态增加,以应对数据的写入压力,不仅可以提升系统性能,也可以避免由于数据拆分合并过程产生的维护成本以及性能损耗问题。
根据本申请的第二方面,提供了一种数据处理方法,方法应用于分布式存储系统的存储节点,包括:
接收到数据写入请求时,基于分布式存储系统的主节点已创建的滚动块中各分区的存储量,确定至少一个可用滚动块;
从至少一个可用滚动块包括的可用分区中,确定目标待写入分区;
根据目标待写入分区,为数据写入请求对应的待写入数据分配系统ID;其中,系统ID中包括滚动块ID和内部自增ID;
将待写入数据及分配的系统ID写入目标待写入分区中。
作为一种可能的实现方式,将待写入数据及分配的系统ID写入目标待写入分区中,包括:
基于主节点建立的各分区与存储节点的映射关系,确定目标待写入分区是否在存储节点;
若目标待写入分区在存储节点,将待写入数据及分配的系统ID写入目标待写入分区中;否则,
将待写入数据发送至目标待写入分区所在的存储节点。
在本申请的一些实施例中,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区,包括:
确定待写入数据是否存在自定义ID;
若待写入数据未存在自定义ID,按照预设分配策略,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区;
若待写入数据存在自定义ID,将自定义ID进行哈希取模运算;
根据哈希取模运算的结果,从至少一个可用滚动块包括的可用分区中确定目标待写入分区。
其中,根据哈希取模运算的结果,从至少一个可用滚动块包括的可用分区中确定目标待写入分区,包括:
按照滚动块创建的先后顺序,从至少一个可用滚动块包括的可用分区中,确定与哈希取模运算结果匹配的目标待写入分区。
作为一种可能的实现方式,根据目标待写入分区,为数据写入请求对应的待写入数据分配系统ID,包括:
确定目标待写入分区对应的目标内部自增ID规则;其中,内部自增ID规则为主节点对滚动块进行拆分时配置的,且滚动块中每个分区的内部自增ID规则不同;
根据目标待写入分区的内部自增ID规则,确定系统ID中的内部自增ID;
根据目标待写入分区所在的滚动块,确定系统ID 中的滚动块ID。
在本申请的另一些实施例中,该方法还包括:
接收到数据操作请求时,获取数据操作请求所对应待操作数据的目标ID;其中,数据操作请求为数据删除请求、数据查询请求和数据修改请求中的一种;
根据目标ID,确定待操作数据所存储的目标分区;
基于映射关系,判断目标分区是否在存储节点;
若目标分区在存储节点,在目标分区中对待操作数据进行数据操作;
若目标分区未在存储节点,将数据操作请求转发至与目标分区所对应的存储节点。
作为一种可能的实现方式,根据目标ID,确定待操作数据所存储的目标分区,包括:
判断目标ID是否为系统ID;
若目标ID为系统ID,确定目标ID中的目标滚动块ID和目标内部自增ID;
获取目标滚动块ID所对应的目标滚动块中各个分区的内部自增ID规则;
基于目标滚动块中各个分区的内部自增ID规则,根据目标内部自增ID,确定目标分区;
若目标ID为自定义ID,将目标ID进行哈希取模运算,并基于哈希取模运算结果确定目标分区。
此外,该方法还可以包括:
将存储节点中包括的各个分区的存储量上报至分布式存储系统中的主节点。
本方案基于主节点建立的滚动块和分区的逻辑结构,由存储节点将数据写入对应的各个分区中,从而可以通过滚动块和分区的逻辑结构的分区方式提升系统性能。
根据本申请的第三方面,提供了一种数据分区装置,该装置应用于分布式存储系统中的主节点,包括:
接收模块,用于接收分布式存储系统中的每个存储节点发送的分区存储量;分区存储量为存储节点中包括的各个分区的存储量;
第一确定模块,用于根据分区存储量,确定第i滚动块的存储量;其中,i为正整数;
第二确定模块,用于根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件;
创建模块,用于响应于第i滚动块的存储量满足预设条件,创建第i+1滚动块;其中,第i+1滚动块可容纳M条数据,M为正整数;
拆分模块,用于将第i+1滚动块平均拆分为N个分区;其中,N为大于等于2的整数;
建立模块,用于建立第i+1滚动块内的N个分区与分布式存储系统中存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。
根据本申请的第四方面,提供了一种数据处理装置,该装置应用于分布式存储系统中的存储节点,包括:
第一确定模块,用于接收到数据写入请求时,基于分布式存储系统的主节点已创建的滚动块中各分区的存储量,确定至少一个可用滚动块;
第二确定模块,用于从至少一个可用滚动块包括的可用分区中,确定目标待写入分区;
分配模块,用于根据目标待写入分区,为数据写入请求对应的待写入数据分配系统ID;其中,系统ID中包括滚动块ID和内部自增ID;
写入模块,用于将待写入数据及分配的系统ID写入目标待写入分区中。
作为一种可能的实现方式,写入模块具体用于:
基于主节点建立的各分区与存储节点的映射关系,确定目标待写入分区是否在存储节点;
若目标待写入分区在存储节点,将待写入数据及分配的系统ID写入目标待写入分区中;否则,
将数据写入请求发送至目标待写入分区所在的存储节点。
在本申请的一些实施例中,第二确定模块具体用于:
确定待写入数据是否存在自定义ID;
若待写入数据未存在自定义ID,按照预设分配策略,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区;
若待写入数据存在自定义ID,将自定义ID进行哈希取模运算;
根据哈希取模运算的结果,从至少一个可用滚动块包括的可用分区中确定目标待写入分区。
作为一种示例,第二确定模块还用于:
按照滚动块创建的先后顺序,从至少一个可用滚动块包括的可用分区中,确定与哈希取模运算结果匹配的目标待写入分区。
在本申请的一些实施例中,分配模块具体用于:
确定目标待写入分区对应的目标内部自增ID规则;其中,内部自增ID规则为主节点对滚动块进行拆分时配置的,且滚动块中每个分区的内部自增ID规则不同;
根据目标待写入分区的内部自增ID规则,确定系统ID中的内部自增ID;
根据目标待写入分区所在的滚动块,确定系统ID 中的滚动块ID。
在本申请的另一些实施例中,该装置还包括数据操作模块,该数据操作模块用于:
接收到数据操作请求时,获取数据操作请求所对应待操作数据的目标ID;其中,数据操作请求为数据删除请求、数据查询请求和数据修改请求中的一种;
根据目标ID,确定待操作数据所存储的目标分区;
基于映射关系,判断目标分区是否在存储节点;
若目标分区在存储节点,在目标分区中对待操作数据进行数据操作;
若目标分区未在存储节点,将数据操作请求转发至与目标分区所对应的存储节点。
作为一种示例,该数据操作模块具体用于:
判断目标ID是否为系统ID;
若目标ID为系统ID,确定目标ID中的目标滚动块ID和目标内部自增ID;
获取目标滚动块ID所对应的目标滚动块中各个分区的内部自增ID规则;
基于目标滚动块中各个分区的内部自增ID规则,根据目标内部自增ID,确定目标分区;
若目标ID为自定义ID,将目标ID进行哈希取模运算,并基于哈希取模运算结果确定目标分区。
此外,该装置还包括上报模块,该上报模块具体用于:
将存储节点中包括的各个分区的存储量上报至分布式存储系统中的主节点。
根据本申请的技术方案,主节点接收每个存储节点发送的分区存储量,并根据分区存储量确定第i滚动块的存储量;根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件;若第i滚动块的存储量满足预设条件,创建第i+1滚动块,将第i+1滚动块平均拆分为N个分区,并建立第i+1滚动块内的N个分区与存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。也就是说,本方案可以随着数据量的增大,不断的增加滚动块,同时将每个滚动块被拆分为N个分区,从而可以通过不断增加滚动块来实现分区动态增加,以应对数据的写入压力,不仅可以提升系统性能,也可以避免由于数据拆分合并过程产生的维护成本以及性能损耗问题。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例所提供的一种数据分区方法的流程图;
图2为本申请实施例中的一种创建滚动块的示例图;
图3为本申请实施例中数据库的逻辑结构示例图;
图4为本申请实施例所提供的一种数据处理方法的流程图;
图5为本申请实施例中的一种确定待写入数据的内部自增ID的流程图;
图6为本申请实施例中的一种确定目标待写入分区的流程图;
图7为本申请实施例所提供的一种数据处理方法的流程图;
图8为本申请实施例所提供的一种数据分区装置的结构框图;
图9为本申请实施例所提供的一种数据处理装置的结构框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
需要说明的是,分布式存储系统是将数据分散存储在多台独立的存储设备上的存储系统,每个存储设备相当于一个存储节点。目前,分布式存储系统分区方法主要包括:基于哈希的分区方法和基于取值范围的分区方法。其中,基于哈希的分区方法具体有分为固定因子的哈希取模分区方法和一致性哈希算法。基于取值范围的分区方法需要数据满足一定的规则,如数值范围、时间范围等。
但是,基于范围的分区算法,对于数据的取值分散范围要求比较高。固定因子的哈希分区方法在数据库创建时需要指定固定的分区因子,所以数据在持续的写入过程中,如果分区因子设置过大,而实际写入的文档数量比较少,则可能造成资源过度分配,影像整体集群性能;如果分区因子设置过小,随着数据的持续写入,可能出现当前分区因子无法承载读写需求的问题,从而影响性能;由于具体数据多少无法在设置分区因子的时候提前预判,从而造成后续可能需要进行分区的分裂或者拆分。
此外,使用一致性哈希算法在应对海量数据时,也存在以下问题:(1)无法精细化适配异构系统(不同服务器之间的性能可能不同),一致性哈希算法只能通过调整权重来应对异构系统,这种带有权重的数据分区方法在大规模集群中会使运维工作极其复杂,并且无法对异构系统的硬件资源进行精细化分配,无法发挥其全部的存算能力。(2)缺乏灵活性,一致性哈希算法只能通过固定的算法来决定数据应该属于哪个分区,在海量数据的场景中,需要更加灵活的分区方法,支持用户对领域数据进行垂直拆分,并且对分区的数量进行灵活控制,用于提高集群整体的读写性能。
为了解决上述问题,本申请提供了一种数据分区方法及数据处理方法。
图1为本申请实施例所提供的一种数据分区方法的流程图。本申请实施例中的数据分区方法应用于分布式存储系统的主节点。分布式存储系统中包括主节点和存储节点。其中,主节点是指分布式存储系统中的元数据管理主节点,存储节点是指用于存储数据的存储设备。如图1所示,该方法包括以下步骤:
步骤S101,接收分布式存储系统中的每个存储节点发送的分区存储量;分区存储量为存储节点中包括的各个分区的存储量。
其中,每个存储节点可以包括至少一个分区,存储节点可以是每间隔固定时长,向主节点发送分区存储量,也可以是每次写入数据后向主节点发送分区存储量,也可以实时向主节点发送分区存储量,此处可以基于实际需求来确定。
步骤S102,根据分区存储量,确定第i滚动块的存储量;其中,i为正整数。
在本申请的一些实施例中,滚动块是指用于存放数据的逻辑区域。其中,第i滚动块的存储量是指第i滚动块内一共写入的数据的存储量,即各个分区的存储量之和。
步骤S103,根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件。
步骤S104,响应于第i滚动块的存储量满足预设条件,创建第i+1滚动块;其中,第i+1滚动块可容纳M条数据,M为正整数。
在本申请的一些实施例中,第i滚动块的数据量满足预设条件可以是指第i滚动块的数据量满足预设条件可以为第i滚动块的数据量达到滚动块的预设容量,也可以为第i滚动块的数据量达到滚动块预设容量的3/4,也可以为第i滚动块中至少一个分区数据已满,也可以为其他基于实际需求的条件,本申请对此不作限定。
在本申请的一些实施例中,第i+1滚动块可容纳M条数据,此处的M条数据是基于实际需要设定的值。作为一种示例,若滚动块预设容量为unit32,则每个滚动块内最多可容纳2^32-1条数据。
步骤S105,将第i+1滚动块平均拆分为N个分区;其中,N为大于等于2的整数。
步骤S106,建立第i+1滚动块内的N个分区与分布式存储系统中存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。
可以理解,滚动块中的分区是指逻辑分区,该分区与分布式存储系统中的存储节点的物理存储设备存在映射关系。也就是说,建立这种逻辑关系实际上的目的是使各存储节点按照这种逻辑关系来对数据进行分区存储,一方面来平衡写入压力,另一方面对于无限增长的数据,可以实现分区的动态增加,也可以避免由于数据拆分合并过程产生的维护成本以及性能损耗问题。
其中,N可以是系统默认值,也可以是相关工作人员基于实际情况设定的值。此外,主节点在对滚动块进行拆分时,为滚动块的每个分区配置内部自增ID规则,内部自增ID是指存储节点在写入数据时,基于写入顺序为数据所分配的标识信息。各个分区配置的内部自增ID规则,是指写入各个分区中数据所分配内部自增ID各自的规则。作为一种示例,若N=2,i=2,即第三滚动块中包括两个分区,分别为分区A和分区B,各个分区配置的内部自增ID规则可以为:分区A中的内部自增ID为奇数,分区B中的内部自增ID为偶数。这样,承载分区A的存储节点在向分区A中写入数据时,为数据分配的内部自增ID为奇数,承载分区B的存储节点在向分区B写入数据时,为数据分配的内部自增ID为偶数。
此外,内部自增ID规则还可以是存储节点基于内部自增ID确定数据存储所在分区的依据。基于上述示例,若某条数据的内部自增ID为奇数,则存储节点可以基于该内部自增ID确定该条数据存储在分区A中;若某条数据的内部自增ID为偶数,则存储节点可以基于该内部自增ID确定该条数据存储在分区B中。
作为另一种示例,若N为128,各个分区配置的内部自增ID规则可以为:分区1中的内部自增ID以N哈希取余结果为1,分区2中的内部自增ID以N哈希取余结果为2,分区3中的内部自增ID以N哈希取余结果为3,以此类推,,分区127中的内部自增ID以N哈希取余结果为127,分区128中的内部自增ID以N哈希取余结果为0。
在本申请的一些实施例中,建立第i+1滚动块内的N个分区与分布式存储系统中存储节点之间的映射关系,可以是主节点基于用户配置来建立的映射关系,也可以是主节点基于配置的分配算法来建立的。
作为一种示例,若N=2,i=2,第3滚动块中包括分区A和分区B,分布式存储系统中包括2个存储节点,分别为存储节点A和存储节点B。在这种情况下建立的映射关系可以为第3滚动块的分区A对应存储节点A,第3滚动块的分区B对应存储节点B,这样,存储节点A中的部分存储空间对应第3滚动块的分区A,存储节点B中的部分存储空间对应第3滚动块的分区B。若将数据写入第3滚动块的分区A中,则由存储节点A来执行,若将数据写入第3滚动块的分区B中,则由存储节点B来执行。
在本申请的一些实施例中,该数据分区方法还可以包括:在接收到创建数据库的请求时,创建第一滚动块;其中,第一滚动块为i=1时的第i滚动块,第一滚动块可容纳M条数据;将第一滚动块平均拆分为N个分区;建立第一滚动块内的N个分区与分布式存储系统中存储节点之间的映射关系。
也就是说,主节点创建数据库后,从第1滚动块开始,随着数据的增加继续创建第2滚动块、第3滚动块…以满足数据的持续增长需求。如图2所示,主节点以此顺序创建滚动块,接收到创建数据库的需求时,创建第1滚动块,第1滚动块的数据量满足预设条件后,创建第2滚动块,第2滚动块的数据量满足预设条件后,创建第3滚动块,以此类推。
在本申请的一些实施例中,主节点创建的滚动块和每个滚动块的分区可以由自身的标识信息,比如滚动块可以有滚动块的编号,每个滚动块内的分区可以有分区的编号。其中分区的编号中可以携带滚动块的编号,也可以不携带滚动块的编号。图3为本申请实施例中数据库的逻辑结构示例图。如图3所示,随着数据的持续写入,来持续增加滚动块,每个滚动块被拆分为N个分区,创建的所有滚动块构成了整个数据库。每个滚动块有自身的编号,每个滚动块中的分区也对应一个标识,数据存储在各个分区中,每个分区相互独立,这样的存储结构将数据按照横向和纵向两个维度进行了拆分,通过创建滚动块来实现动态增加数据分区,以满足不断增加数据的需求,也可以提升系统性能。
需要说明的是,主节点还可以将创建的滚动块信息和分区信息分发至存储节点,其中,创建的滚动块信息和分区信息可以包括已创建的滚动块,每个滚动块可容纳的数据量、每个滚动块中所包括的分区,各个分区的内部自增ID的规则、各个分区与至少一个存储节点的映射关系。这样,可以使存储节点知道当前已创建了哪些滚动块,每个滚动块的可容纳多少条数据,每个滚动块中的分区有哪些,这些分区分别对应的存储节点等。
其中,主节点可以实时向存储节点分发以上信息,也可以是每次创建了新的滚动块后向存储节点分发以上信息,还可以是每隔一段时间向存储节点分发以上信息,本申请对此不做限定。作为一种示例,主节点可以在每次创建完滚动块,并建立好该滚动块的分区与存储节点的映射关系后,将创建的滚动块及编号、该滚动块中所包括的分区及编号、滚动块中每个分区可容纳的数据量、各个分区与存储节点的映射关系,均发送给分布式存储系统的存储节点。
此外,主节点还可以在接收分布式存储系统中的每个存储节点发送的分区存储量后,将各个存储节点发送的分区存储量进行汇总,得到已创建的滚动块中各个分区的存储量,并将已创建的滚动块中各个分区的存储量发送给各个存储节点,以使存储节点获得已创建的滚动块中各个分区的存储情况。
根据本申请实施例的数据分区方法,主节点接收每个存储节点发送的分区存储量,并根据分区存储量确定第i滚动块的存储量;根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件;若第i滚动块的存储量满足预设条件,创建第i+1滚动块,将第i+1滚动块平均拆分为N个分区,并建立第i+1滚动块内的N个分区与存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。也就是说,本方案可以随着数据量的增大,不断的增加滚动块,同时将每个滚动块被拆分为N个分区,从而可以通过不断增加滚动块来实现分区动态增加,以应对数据的写入压力,不仅可以提升系统性能,也可以避免由于数据拆分合并过程产生的维护成本以及性能损耗问题。
图4为本申请实施例所提供的一种数据处理方法的流程图。本申请实施例所提供的一种数据处理方法应用于分布式存储系统中的存储节点,如图4所示,该方法包括以下步骤:
步骤S401,接收到数据写入请求时,基于分布式存储系统的主节点已创建的滚动块中各分区的存储量,确定至少一个可用滚动块。
在本申请的一些实施例中,客户端可以通过API接口向分布式存储系统中的存储节点发送数据写入请求,该数据写入请求中可以包括待写入的数据,也可以包括待写入数据的自定义ID等信息。
其中,可用滚动块是指包括可用分区的滚动块,可用分区是指未写满的分区,即存储量未达到上限的分区。也就是说,基于分布式存储系统的主节点已创建的滚动块中各分区的存储量,从所有滚动块的分区中,确定存储量未达到上限的可用分区,并将可用分区所对应的滚动块作为可用滚动块。
步骤S402,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区。
作为一种示例,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区的实现方式可以为:基于预设的分配策略,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区。比如,若分配策略为随机指定分区,则存储节点可以从至少一个可用滚动块包括的可用分区中,随机选择一个分区作为目标待写入分区;若分配策略为就近写入规则,则存储节点可以判断至少一个可用滚动块包括的可用分区中是否存在当前存储节点所包括的分区,若存在,则将当前存储节点所包括的分区确定为目标待写入分区;若分配策略为轮询确定分区,则存储节点可以根据上一条写入数据的分区,按照轮询顺序,从至少一个可用滚动块包括的可用分区中选择下一个分区作为目标待写入分区。
在本申请的一些实施例中,若分区编号中携带其所在的滚动块编号,例如第1滚动块中的第一个分区的编号为1-1,第2滚动块中的第五个分区的编号为2-5,则确定出目标待写入分区后,可以根据目标待写入分区的编号确定其所在的滚动块。若分区编号中未写的其所在的滚动块编号,则可以基于滚动块与分区的对应关系来确定目标待写入分区所在的滚动块。
步骤S403,根据目标待写入分区,为数据写入请求对应的待写入数据分配系统ID;其中,系统ID中包括滚动块ID和内部自增ID。
在本申请的一些实施例中,其中,滚动块ID是指目标待写入分区所在的滚动块的编号,比如目标待写入分区在第3滚动块中,则为待写入数据分配的系统ID中的滚动块ID为3。内部自增ID是指存储节点在写入数据时,基于写入顺序为数据所分配的标识信息。
作为一种可能的实现方式,主节点在对滚动块拆分为N个分区时,可以对每个分区配置内部自增ID规则,这种情况下存储节点可以基于目标待写入分区对应的目标内部自增ID规则来确定待写入数据的内部自增ID。如图5所示,该步骤的实现方式可以包括:
步骤S501,确定目标待写入分区对应的目标内部自增ID规则;其中,内部自增ID规则为主节点对滚动块进行拆分时配置的,且滚动块中每个分区的内部自增ID规则不同。
其中,目标待写入分区的目标内部自增ID规则可以是主节点分发至各存储节点的,也可以是存储节点向主节点发送目标待写入分区的内部自增ID规则的请求信息,主节点接收到该请求信息后,将目标待写入分区的目标内部自增ID规则发送至对应存储节点。
步骤S502,根据目标待写入分区的内部自增ID规则,确定系统ID中的内部自增ID。
步骤S503,根据目标待写入分区所在的滚动块,确定系统ID 中的滚动块ID。
其中,滚动块ID是指目标待写入分区所在的滚动块的编号,比如目标待写入分区在第3滚动块中,则为待写入数据分配的系统ID中的滚动块ID为3。
作为一种示例,若目标待写入分区所在的滚动块中包括两个分区,分别为分区A和分区B,目标待写入分区为分区A,且内部自增ID规则为:分区A中的内部自增ID为奇数;这样,本地存储节点在向目标待写入分区中写入数据时,为数据分配的内部自增ID为奇数,若该存储节点向分区A中写入的上一条数据的内部自增ID为3,则该存储节点为待写入数据分配的系统ID中的内部自增ID为5;若目标待写入分区在第3滚动块中,则待写入数据的系统ID为(3,5),其中,3为滚动块的编号,5为内部自增ID。
作为另一种示例,若目标待写入分区所在的滚动块中包括128个分区,分别为分区1、分区2…分区128,其中分区3为目标待写入分区;且分区3的内部自增ID规则为内部自增ID以128哈希取余结果为3,若分区3中上一条写入数据的内部自增ID为3,则该存储节点为待写入数据分配的内部自增ID为131;若目标待写入分区在第3滚动块中,则待写入数据的系统ID为(3,131),其中,3为滚动块的编号,131为内部自增ID。
步骤S404,将所述待写入数据及分配的系统ID写入所述目标待写入分区中。
可以理解,当前执行该数据处理方法的存储节点有可能包括目标待写入分区,也有可能该存储节点中不包括目标待写入分区,由于数据写入时需要包括目标待写入分区的存储节点来执行,所以在执行写入时可以先判断目标待写入分区是否在该存储节点中。
作为一种可能的实现方式,步骤S404的实现方式包括:基于主节点建立的各分区与存储节点的映射关系,确定目标待写入分区是否在存储节点;若目标待写入分区在存储节点,将待写入数据及分配的系统ID写入目标待写入分区中;否则,将待写入数据发送至目标待写入分区所在的存储节点。比如,若存储节点1接收到数据写入请求,确定出的待写入数据对应的目标待写入分区不在当前的存储节点1,而在其他存储节点下,则将待写入数据发送至目标待写入分区所在的存储节点。其中,也可以将待写入数据及确定的目标待写入分区和系统ID一并发送至目标待写入分区所在的存储节点。
其中,目标待写入分区所在的存储节点接收到该数据写入请求后,完成数据的写入。
在本申请的另一些实施例中,该数据分区方法还包括:将该存储节点包括的各个分区中的存储量上报至分布式存储系统中的主节点。作为一种示例,存储节点在每次写入数据后,将其包括的各个的分区的存储量上报至分布式存储系统的主节点。
根据本申请实施例的数据处理方法,分布式存储系统中存储节点接收到数据写入请求时,基于分布式存储系统的主节点已创建的滚动块中各分区的存储量,确定至少一个可用滚动块,并从至少一个可用滚动块包括的可用分区中,确定目标待写入分区,根据目标待写入分区,为待写入数据分配系统ID,并将待写入数据写入目标待写入分区中。本方案基于主节点建立的滚动块和分区的逻辑结构,由存储节点将数据写入各个分区中,以通过以上分区方式提升系统性能。此外,基于内部自增ID规则为数据分配滚动块ID和内部自增ID的系统ID,可以大大降低数据路由的复杂度。
对于存在自定义ID的数据写入,为了使其自定义ID依然有效,本申请还提供了另一个实施例。
图6为本申请实施例中的一种确定目标待写入分区的流程图。如图6所示,图4中步骤S403中从至少一个可用滚动块包括的可用分区中,确定目标待写入分区的实现过程可以包括:
步骤S601,确定待写入数据是否存在自定义ID。
步骤S602,若待写入数据未存在自定义ID,按照预设分配策略,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区。
其中预设分配策略可以为随机指定分区,也可以为就近写入规则,也可以为轮询确定的规则,还可以为其他策略。作为一种示例,若分配策略为随机指定分区,则存储节点可以从至少一个可用滚动块包括的可用分区中,随机选择一个分区作为目标待写入分区;若分配策略为就近写入规则,则存储节点可以从至少一个可用滚动块包括的可用分区中确定存储节点中包括的分区,并将存储节点中包括的分区确定为目标待写入分区;若分配策略为轮询确定分区,则存储节点可以根据上一条写入数据的分区,按照轮询顺序,从至少一个可用滚动块包括的可用分区中选择下一个分区作为目标待写入分区。
步骤S603,若待写入数据存在自定义ID,将自定义ID进行哈希取模运算。
步骤S604,根据哈希取模运算的结果,从至少一个可用滚动块包括的可用分区中确定目标待写入分区。
在本申请实施例中,将自定义ID进行哈希取模运算是指,将自定义ID进行哈希得到一个数值,再将得到的数值以滚动块内的分区数量N进行取模运算。
作为一种示例,若当前写入数据对应第2滚动块,第2滚动块内的分区数量为128,且自定义ID哈希取模运算结果为5,则第2滚动块中的第5个分区作为目标待写入分区。
作为另一种示例,步骤S604的实现过程可以包括:按照滚动块创建的先后顺序,从至少一个可用滚动块包括的可用分区中,确定与哈希取模运算结果匹配的目标待写入分区。比如,可用滚动块有3个,分别为第2滚动块、第3滚动块和第4滚动块,这三个滚动块的创建顺序为:第2滚动块早于第3滚动块,第3滚动块早于第4滚动块;若哈希取模运算结果为5,则先判断第2滚动块中的第五个分区是否为可用分区,若是,则将第2滚动块中的第五个分区作为目标待写入分区,否则,继续判断第3个滚动块中的第五个分区是否为可用分区,以此类推。这样可以优先向先创建的滚动块的分区中写入数据,以避免出现多个滚动块并行运行的情况,降低系统的计算量。
根据本申请实施例的数据处理方法,通过判断待写入数据是否包含自定义ID,并针对包含自定义ID的情况,通过哈希取模的方式来确定目标待写入分区,可以实现对自定义ID的兼容,以提升分布式存储系统的兼容性。
接下来将针对数据的修改、删除及查询过程进行介绍。
图7为本申请实施例所提供的一种数据处理方法的流程图。如图7所示,该方法除了图4中的涉及的步骤之外,还包括以下步骤:
步骤S701,接收到数据操作请求时,获取数据操作请求所对应待操作数据的目标ID;其中,数据操作请求为数据删除请求、数据查询请求和数据修改请求中的一种。
需要说明的是,目标ID可以为数据操作请求所对应待操作数据的系统ID,也可以为数据操作请求所对应待操作数据的自定义ID,相当于客户端发起数据操作请求时所传入的ID。
步骤S702,根据目标ID,确定待操作数据所存储的目标分区。
在本申请的一些实施例中,步骤S702可以包括以下步骤:判断目标ID是否为系统ID;若目标ID为系统ID,确定目标ID中的目标滚动块ID和目标内部自增ID;获取目标滚动块ID所对应的目标滚动块中各个分区的内部自增ID规则;基于目标滚动块中各个分区的内部自增ID规则,根据目标内部自增ID,确定目标分区;若目标ID为自定义ID,将目标ID进行哈希取模运算,并基于哈希取模运算结果确定目标分区。
其中,判断目标ID是否为系统ID可以基于系统ID与自定义ID之间的规则差异来确定,也可以基于目标ID的标识信息来确定。作为一种示例,若规定系统ID中包含“,”自定义ID中不包含“,”,则可以根据目标ID中是否包含“,”,来确定目标ID是否为系统ID。
可以理解,根据系统ID可以确定出滚动块ID和内部自增ID,从而可以精准的确定出一个目标分区。通过自定义ID只能哈希取模计算出待操作数据在滚动块中的第几个分区中,但是由于不能确定哪个滚动块,所以确定出的目标分区可能会存在多个。比如,一共存在3个滚动块,通过自定义ID可以确定待操作数据是滚动块中的第4个分区,则确定的目标分区有三个,分别为第1滚动块中的第4个分区、第2滚动块中的第4个分区和第3滚动块中的第4个分区。
步骤S703,基于映射关系,判断目标分区是否在该存储节点。
步骤S704,若目标分区在该存储节点,在目标分区中待操作数据进行数据操作。
步骤S705,若目标分区未在该存储节点,将数据操作请求转发至与目标分区所对应的存储节点。
根据本申请实施例的数据处理方法,在接收到修改请求、删除请求或者查询请求时,可以根据ID来确定数据所在的目标分区的位置,从而可以提升数据定位速度,降低数据定位的复杂度,进一步地提升系统性能。
为了实现上述实施例,本申请提供了一种数据分区装置。
图8为本申请实施例所提供的一种数据分区装置的结构框图,该装置应用于分布式存储系统中的主节点。如图8所示,该装置包括:
接收模块801,用于接收分布式存储系统中的每个存储节点发送的分区存储量;分区存储量为存储节点中包括的各个分区的存储量;
第一确定模块802,用于根据分区存储量,确定第i滚动块的存储量;其中,i为正整数;
第二确定模块803,用于根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件;
创建模块804,用于响应于第i滚动块的存储量满足预设条件,创建第i+1滚动块;其中,第i+1滚动块可容纳M条数据,M为正整数;
拆分模块805,用于将第i+1滚动块平均拆分为N个分区;其中,N为大于等于2的整数;
建立模块806,用于建立第i+1滚动块内的N个分区与分布式存储系统中存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。
根据本申请实施例的数据分区装置,主节点接收每个存储节点发送的分区存储量,并根据分区存储量确定第i滚动块的存储量;根据第i滚动块的存储量,确定第i滚动块的存储量是否满足预设条件;若第i滚动块的存储量满足预设条件,创建第i+1滚动块,将第i+1滚动块平均拆分为N个分区,并建立第i+1滚动块内的N个分区与存储节点之间的映射关系,以使存储节点根据映射关系将数据写入分区中。也就是说,本方案可以随着数据量的增大,不断的增加滚动块,同时将每个滚动块被拆分为N个分区,从而可以通过不断增加滚动块来实现分区动态增加,以应对数据的写入压力,不仅可以提升系统性能,也可以避免由于数据拆分合并过程产生的维护成本以及性能损耗问题。
为了实现上述实施例,本申请还提供了一种数据处理装置。
图9为本申请实施例所提供的另一种数据处理装置的结构框图,该装置应用于分布式存储系统的存储节点。如图9所示,该装置包括:
第一确定模块901,用于接收到数据写入请求时,基于分布式存储系统的主节点已创建的滚动块中各分区的存储量,确定至少一个可用滚动块;
第二确定模块902,用于从至少一个可用滚动块包括的可用分区中,确定目标待写入分区;
分配模块903,用于根据目标待写入分区,为数据写入请求对应的待写入数据分配系统ID;其中,系统ID中包括滚动块ID和内部自增ID;
写入模块904,用于将待写入数据及分配的系统ID写入目标待写入分区中。
作为一种可能的实现方式,写入模块904具体用于:
基于主节点建立的各分区与存储节点的映射关系,确定目标待写入分区是否在存储节点;
若目标待写入分区在存储节点,将待写入数据及分配的系统ID写入目标待写入分区中;否则,
将待写入数据发送至目标待写入分区所在的存储节点。
在本申请的一些实施例中,第二确定模块902具体用于:
确定待写入数据是否存在自定义ID;
若待写入数据未存在自定义ID,按照预设分配策略,从至少一个可用滚动块包括的可用分区中,确定目标待写入分区;
若待写入数据存在自定义ID,将自定义ID进行哈希取模运算;
根据哈希取模运算的结果,从至少一个可用滚动块包括的可用分区中确定目标待写入分区。
作为一种示例,第二确定模块902还用于:
按照滚动块创建的先后顺序,从至少一个可用滚动块包括的可用分区中,确定与哈希取模运算结果匹配的目标待写入分区。
在本申请的一些实施例中,分配模块903具体用于:
确定目标待写入分区对应的目标内部自增ID规则;其中,内部自增ID规则为主节点对滚动块进行拆分时配置的,且滚动块中每个分区的内部自增ID规则不同;
根据目标待写入分区的内部自增ID规则,确定系统ID中的内部自增ID;
根据目标待写入分区所在的滚动块,确定系统ID 中的滚动块ID。
在本申请的另一些实施例中,该装置还包括数据操作模块905,该数据操作模块905用于:
接收到数据操作请求时,获取数据操作请求所对应待操作数据的目标ID;其中,数据操作请求为数据删除请求、数据查询请求和数据修改请求中的一种;
根据目标ID,确定待操作数据所存储的目标分区;
基于映射关系,判断目标分区是否在存储节点;
若目标分区在存储节点,在目标分区中对待操作数据进行数据操作;
若目标分区未在存储节点,将数据操作请求转发至与目标分区所对应的存储节点。
作为一种示例,该数据操作模块905具体用于:
判断目标ID是否为系统ID;
若目标ID为系统ID,确定目标ID中的目标滚动块ID和目标内部自增ID;
获取目标滚动块ID所对应的目标滚动块中各个分区的内部自增ID规则;
基于目标滚动块中各个分区的内部自增ID规则,根据目标内部自增ID,确定目标分区;
若目标ID为自定义ID,将目标ID进行哈希取模运算,并基于哈希取模运算结果确定目标分区。
此外,该装置还包括上报模块906,该上报模块906具体用于:
将存储节点中包括的各个分区的存储量上报至分布式存储系统中的主节点。
据本申请实施例的数据处理装置,分布式存储系统中存储节点接收到数据写入请求时,基于分布式存储系统的主节点已创建的滚动块中各分区的存储量,确定至少一个可用滚动块,并从至少一个可用滚动块包括的可用分区中,确定目标待写入分区,根据目标待写入分区,为待写入数据分配系统ID,并将待写入数据写入目标待写入分区中。本方案基于主节点建立的滚动块和分区的逻辑结构,由存储节点将数据写入各个分区中,以通过以上分区方式提升系统性能。此外,基于内部自增ID规则为数据分配滚动块ID和内部自增ID的系统ID,可以大大降低数据路由的复杂度。
需要说明的是,前述对数据分区方法实施例的解释说明也适用于该实施例的数据分区装置,此处不再赘述。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、 “示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种数据分区方法,其特征在于,所述方法应用于分布式存储系统中的主节点,包括:
接收所述分布式存储系统中的每个存储节点发送的分区存储量;所述分区存储量为所述存储节点中包括的各个分区的存储量;
根据所述分区存储量,确定第i滚动块的存储量;其中,i为正整数;
根据所述第i滚动块的存储量,确定所述第i滚动块的存储量是否满足预设条件;
响应于所述第i滚动块的存储量满足预设条件,创建第i+1滚动块;其中,所述第i+1滚动块可容纳M条数据,M为正整数;
将所述第i+1滚动块平均拆分为N个分区;其中,N为大于等于2的整数;
建立所述第i+1滚动块内的N个分区与所述分布式存储系统中存储节点之间的映射关系,以使所述存储节点根据所述映射关系将数据写入所述分区中。
2.一种数据处理方法,其特征在于,所述方法应用于分布式存储系统中的存储节点,包括:
接收到数据写入请求时,基于所述分布式存储系统的主节点已创建的滚动块中各分区的存储量,确定至少一个可用滚动块;其中,所述主节点采用权利要求1所述的数据分区方法进行分区;
从所述至少一个可用滚动块包括的可用分区中,确定目标待写入分区;
根据所述目标待写入分区,为所述数据写入请求对应的待写入数据分配系统ID;其中,所述系统ID中包括滚动块ID和内部自增ID;
将所述待写入数据及分配的系统ID写入所述目标待写入分区中。
3.根据权利要求2所述的方法,其特征在于,所述将所述待写入数据及分配的系统ID写入所述目标待写入分区中,包括:
基于所述主节点建立的各分区与存储节点的映射关系,确定所述目标待写入分区是否在所述存储节点;
若所述目标待写入分区在所述存储节点,将所述待写入数据及分配的系统ID写入所述目标待写入分区中;否则,
将所述待写入数据发送至所述目标待写入分区所在的存储节点。
4.根据权利要求2所述的方法,其特征在于,所述从所述至少一个可用滚动块包括的可用分区中,确定目标待写入分区,包括:
确定所述待写入数据是否存在自定义ID;
若所述待写入数据未存在自定义ID,按照预设分配策略,从所述至少一个可用滚动块包括的可用分区中,确定所述目标待写入分区;
若所述待写入数据存在自定义ID,将所述自定义ID进行哈希取模运算;
根据所述哈希取模运算的结果,从所述至少一个可用滚动块包括的可用分区中确定所述目标待写入分区。
5.根据权利要求4所述的方法,其特征在于,所述根据所述哈希取模运算的结果,从所述至少一个可用滚动块包括的可用分区中确定所述目标待写入分区,包括:
按照滚动块创建的先后顺序,从所述至少一个可用滚动块包括的可用分区中,确定与所述哈希取模运算结果匹配的目标待写入分区。
6.根据权利要求4所述的方法,其特征在于,所述根据所述目标待写入分区,为所述数据写入请求对应的待写入数据分配系统ID,包括:
确定所述目标待写入分区对应的目标内部自增ID规则;其中,内部自增ID规则为所述主节点对滚动块进行拆分时配置的,且滚动块中每个分区的内部自增ID规则不同;
根据所述目标待写入分区的内部自增ID规则,确定所述系统ID中的内部自增ID;
根据所述目标待写入分区所在的滚动块,确定所述系统ID 中的滚动块ID。
7.根据权利要求6所述的方法,其特征在于,还包括:
接收到数据操作请求时,获取所述数据操作请求所对应待操作数据的目标ID;其中,所述数据操作请求为数据删除请求、数据查询请求和数据修改请求中的一种;
根据所述目标ID,确定所述待操作数据所存储的目标分区;
基于映射关系,判断所述目标分区是否在所述存储节点;
若所述目标分区在所述存储节点,在所述目标分区中对所述待操作数据进行数据操作;
若所述目标分区未在所述存储节点,将所述数据操作请求转发至与所述目标分区所对应的存储节点。
8.根据权利要求7所述的方法,其特征在于,所述根据所述目标ID,确定所述待操作数据所存储的目标分区,包括:
判断所述目标ID是否为系统ID;
若所述目标ID为系统ID,确定所述目标ID中的目标滚动块ID和目标内部自增ID;
获取所述目标滚动块ID所对应的目标滚动块中各个分区的内部自增ID规则;
基于所述目标滚动块中各个分区的内部自增ID规则,根据所述目标内部自增ID,确定所述目标分区;
若所述目标ID为自定义ID,将所述目标ID进行哈希取模运算,并基于哈希取模运算结果确定所述目标分区。
9.根据权利要求2-8中任一项所述的方法,其特征在于,还包括:
将所述存储节点中包括的各个分区的存储量上报至所述分布式存储系统中的主节点。
10.一种数据分区装置,其特征在于,所述装置应用于分布式存储系统中的主节点,包括:
接收模块,用于接收所述分布式存储系统中的每个存储节点发送的分区存储量;所述分区存储量为所述存储节点中包括的各个分区的存储量;
第一确定模块,用于根据所述分区存储量,确定第i滚动块的存储量;其中,i为正整数;
第二确定模块,用于根据所述第i滚动块的存储量,确定所述第i滚动块的存储量是否满足预设条件;
创建模块,用于响应于所述第i滚动块的存储量满足预设条件,创建第i+1滚动块;其中,所述第i+1滚动块可容纳M条数据,M为正整数;
拆分模块,用于将所述第i+1滚动块平均拆分为N个分区;其中,N为大于等于2的整数;
建立模块,用于建立所述第i+1滚动块内的N个分区与所述分布式存储系统中存储节点之间的映射关系,以使所述存储节点根据所述映射关系将数据写入所述分区中。
CN202310597709.3A 2023-05-25 2023-05-25 一种数据分区方法及数据处理方法 Active CN116301670B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310597709.3A CN116301670B (zh) 2023-05-25 2023-05-25 一种数据分区方法及数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310597709.3A CN116301670B (zh) 2023-05-25 2023-05-25 一种数据分区方法及数据处理方法

Publications (2)

Publication Number Publication Date
CN116301670A CN116301670A (zh) 2023-06-23
CN116301670B true CN116301670B (zh) 2023-09-05

Family

ID=86822585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310597709.3A Active CN116301670B (zh) 2023-05-25 2023-05-25 一种数据分区方法及数据处理方法

Country Status (1)

Country Link
CN (1) CN116301670B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761053A (zh) * 2013-12-30 2014-04-30 华为技术有限公司 一种数据处理方法和装置
CN109062512A (zh) * 2018-07-26 2018-12-21 郑州云海信息技术有限公司 一种分布式存储集群、数据读写方法、系统及相关装置
CN111506251A (zh) * 2019-01-30 2020-08-07 杭州海康威视系统技术有限公司 数据处理方法、装置、smr存储系统及存储介质
CN112527492A (zh) * 2019-09-18 2021-03-19 华为技术有限公司 一种分布式存储系统中的数据存储方法及装置
CN112698793A (zh) * 2021-01-15 2021-04-23 江苏云从曦和人工智能有限公司 一种数据存储方法、装置、机器可读介质及设备
CN113268472A (zh) * 2021-07-15 2021-08-17 北京华品博睿网络技术有限公司 一种分布式数据存储系统及方法
CN114968668A (zh) * 2022-06-17 2022-08-30 重庆紫光华山智安科技有限公司 数据处理方法、装置、数据接入端及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452267B2 (en) * 2017-09-13 2019-10-22 Robin Systems, Inc. Storage scheme for a distributed storage system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761053A (zh) * 2013-12-30 2014-04-30 华为技术有限公司 一种数据处理方法和装置
CN109062512A (zh) * 2018-07-26 2018-12-21 郑州云海信息技术有限公司 一种分布式存储集群、数据读写方法、系统及相关装置
CN111506251A (zh) * 2019-01-30 2020-08-07 杭州海康威视系统技术有限公司 数据处理方法、装置、smr存储系统及存储介质
CN112527492A (zh) * 2019-09-18 2021-03-19 华为技术有限公司 一种分布式存储系统中的数据存储方法及装置
CN112698793A (zh) * 2021-01-15 2021-04-23 江苏云从曦和人工智能有限公司 一种数据存储方法、装置、机器可读介质及设备
CN113268472A (zh) * 2021-07-15 2021-08-17 北京华品博睿网络技术有限公司 一种分布式数据存储系统及方法
CN114968668A (zh) * 2022-06-17 2022-08-30 重庆紫光华山智安科技有限公司 数据处理方法、装置、数据接入端及存储介质

Also Published As

Publication number Publication date
CN116301670A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
US7266649B2 (en) Storage apparatus and area allocation method
CN108780386B (zh) 一种数据存储的方法、装置和系统
US8402215B2 (en) Storage system, storage apparatus, and optimization method of storage areas of storage system having page migration
JP5701398B2 (ja) 計算機システム、データ管理方法及びプログラム
US20070198799A1 (en) Computer system, management computer and storage system, and storage area allocation amount controlling method
KR20020007994A (ko) 하나 이상의 저장 장치에 공간을 할당하기 위해서 가중할당을 사용하는 복수 개의 파일 시스템
CN106716385A (zh) 以应用程序为中心分布式存储系统和方法
CN112241320B (zh) 资源分配方法、存储设备和存储系统
CN106610903A (zh) 层级化存储器系统、存储器控制器和去重及存储器层级化方法
JP4893716B2 (ja) バックアップ装置、バックアップ方法およびバックアッププログラム
US20090228658A1 (en) Management method for cache memory, storage apparatus, and computer system
US11188258B2 (en) Distributed storage system
CN110231915B (zh) 数据管理方法、系统、装置、计算机设备及存储介质
CN1602480A (zh) 管理附装在数据网络上的存储器资源
CN111399761B (zh) 存储资源分配方法、装置及设备、存储介质
CN110765094B (zh) 文件创建方法、装置、系统及存储介质
US10387043B2 (en) Writing target file including determination of whether to apply duplication elimination
CN116301670B (zh) 一种数据分区方法及数据处理方法
US10254973B2 (en) Data management system and method for processing distributed data
US20150046399A1 (en) Computer system, data allocation management method, and program
CN113311996A (zh) 一种osd角色调整方法和装置
CN116910061A (zh) 一种数据库的分库分表方法、装置、设备及可读存储介质
KR20180035023A (ko) 스토리지 오케스트레이션의 학습형 최적화 대상 볼륨 선정 방법
CN110472167B (zh) 数据管理方法、装置及计算机可读存储介质
JP2022037404A (ja) ストレージシステムおよびデータ管理方法

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