CN110209431B - 数据分区拆分方法及装置 - Google Patents
数据分区拆分方法及装置 Download PDFInfo
- Publication number
- CN110209431B CN110209431B CN201810166045.4A CN201810166045A CN110209431B CN 110209431 B CN110209431 B CN 110209431B CN 201810166045 A CN201810166045 A CN 201810166045A CN 110209431 B CN110209431 B CN 110209431B
- Authority
- CN
- China
- Prior art keywords
- splitting
- split
- data partition
- data
- strategy
- 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
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
-
- 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/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据分区拆分方法及装置,属于存储技术领域。所述方法包括:接收拆分策略更新指令,所述拆分策略更新指令至少携带拆分策略;解析所述拆分策略更新指令,得到所述拆分策略;加载所述拆分策略;基于所述拆分策略,对待拆分的数据分区进行拆分。本发明中服务器更新的拆分策略在本次运行过程中即可生效,而无需重启,避免了业务的中断,极大地提高了更新拆分策略的效率。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种数据分区拆分方法及装置。
背景技术
Region(数据分区)是指Hbase(一种分布式存储系统)中分布式存储的最小单元,Hbase包括大量HRegionserver(存储和管理数据分区的服务器,以下简称服务器),不同数据分区可以分布在不同服务器中,以保证大量服务器之间实现负载均衡。在服务器运行的过程中,数据分区存储的数据量会随着数据的不断插入逐渐变大,当数据分区存储的数据量过大时,服务器需要对数据分区进行拆分,以分散数据分区存储的数据量。
每当服务器启动时,会加载预先存储的配置文件,获取配置文件中的拆分策略,在运行过程中服务器始终基于该拆分策略,对Hbase中的每个数据表的每个数据分区进行拆分。其中,当开发人员需要更新拆分策略时,可以修改配置文件中的拆分策略,并重启服务器,服务器重启时,会再次加载配置文件,获取配置文件中的拆分策略,从而得到更新的拆分策略,则服务器本次运行过程中会基于更新的拆分策略,对每个数据分区进行拆分。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
每当更新拆分策略时,服务器必须重启才能基于更新的拆分策略运行,导致服务器的业务中断,更新拆分策略的实际效率较低。
发明内容
本发明实施例提供了一种数据分区拆分方法及装置,能够解决相关技术中更新拆分策略的效率较低的问题。所述技术方案如下:
第一方面,提供了一种数据分区拆分方法,所述方法包括:
接收拆分策略更新指令,所述拆分策略更新指令至少携带拆分策略;
解析所述拆分策略更新指令,得到所述拆分策略;
加载所述拆分策略;
基于所述拆分策略,对待拆分的数据分区进行拆分。
本发明实施例提供的方法,提供了一种动态加载拆分策略的方式,当获取到拆分策略更新指令时,即会加载并运行拆分策略更新指令携带的拆分策略,从而在基于拆分策略对数据分区进行拆分,由于更新的拆分策略在本次运行过程中即可生效,服务器无需重启,避免了业务的中断,极大地提高了更新拆分策略的效率。
在一种可能的设计中,所述基于所述拆分策略,对待拆分的数据分区进行拆分之前,所述方法还包括:
获取所述拆分策略更新指令携带的数据表标识;获取所述数据表标识对应的数据表中的每个数据分区,作为所述待拆分的数据分区;或,
获取已存储的每个数据表的每个数据分区,作为所述待拆分的数据分区。
在一种可能的设计中,所述基于所述拆分策略,对待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的拆分有效期,所述拆分有效期是指对数据分区进行拆分的日期范围;在当前日期属于所述拆分有效期时,对待拆分的数据分区进行拆分;和/或,
获取所述拆分策略中的拆分时间段;在当前时间点属于所述拆分时间段时,对待拆分的数据分区进行拆分。
在一种可能的设计中,所述基于所述拆分策略,对待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的不可拆分数据分区信息,所述不可拆分数据分区信息用于指示不可拆分的数据分区;
当待拆分的数据分区不属于所述不可拆分的数据分区时,对所述待拆分的数据分区进行拆分。
在一种可能的设计中,所述基于所述拆分策略,对待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的预设数据量,所述预设数据量为允许一个数据分区存储的数据量的最大值;
当待拆分的数据分区存储的数据量达到所述预设数据量时,对所述待拆分的数据分区进行拆分。
在一种可能的设计中,所述拆分策略用于指示数据分区的拆分起始点,所述基于所述拆分策略,对待拆分的数据分区进行拆分,包括以下至少一项:
当所述拆分策略指示待拆分的数据分区的头部时,从待拆分的数据分区的头部之前开始拆分;
当所述拆分策略指示待拆分的数据分区的尾部时,从待拆分的数据分区的尾部之后开始拆分;
当所述拆分策略指示待拆分的数据分区的中间位置时,从待拆分的数据分区的中间开始拆分。
在一种可能的设计中,所述基于所述拆分策略,对待拆分的数据分区进行拆分之前,所述方法还包括:
获取所述拆分策略中的拆分点指令;
根据所述拆分点指令,确定所述拆分策略指示的拆分起始点。
在一种可能的设计中,所述基于所述拆分策略,对待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的历史拆分指令,所述历史拆分指令用于指示基于历史运行过程中数据分区的拆分份数对所述待拆分的数据分区进行拆分;基于所述历史拆分指令,获取历史运行过程中数据分区的拆分份数,得到历史拆分份数;将待拆分的数据分区拆分为所述历史拆分份数个子数据分区;或,
获取所述拆分策略中的拆分分数,将待拆分的数据分区拆分为所述拆分份数个子数据分区。
第二方面,提供了一种数据分区拆分装置,所述装置包括:
接收模块,用于接收拆分策略更新指令,所述拆分策略更新指令至少携带拆分策略;
解析模块,用于解析所述拆分策略更新指令,得到所述拆分策略;
加载模块,用于加载所述拆分策略;
拆分模块,用于基于所述拆分策略,对待拆分的数据分区进行拆分。
在一种可能的设计中,所述装置还包括:
获取模块,用于获取所述拆分策略更新指令携带的数据表标识;获取所述数据表标识对应的数据表中的每个数据分区,作为所述待拆分的数据分区;或,获取已存储的每个数据表的每个数据分区,作为所述待拆分的数据分区。
在一种可能的设计中,所述拆分模块,用于获取所述拆分策略中的拆分有效期,所述拆分有效期是指对数据分区进行拆分的日期范围;在当前日期属于所述拆分有效期时,对待拆分的数据分区进行拆分;和/或,获取所述拆分策略中的拆分时间段;在当前时间点属于所述拆分时间段时,对待拆分的数据分区进行拆分。
在一种可能的设计中,所述拆分模块,用于获取所述拆分策略中的不可拆分数据分区信息,所述不可拆分数据分区信息用于指示不可拆分的数据分区;当待拆分的数据分区不属于所述不可拆分的数据分区时,对所述待拆分的数据分区进行拆分。
在一种可能的设计中,所述拆分模块,用于获取所述拆分策略中的预设数据量,所述预设数据量为允许一个数据分区存储的数据量的最大值;当待拆分的数据分区存储的数据量达到所述预设数据量时,对所述待拆分的数据分区进行拆分。
在一种可能的设计中,所述拆分策略用于指示数据分区的拆分起始点,所述拆分模块,用于执行以下至少一项:
当所述拆分策略指示待拆分的数据分区的头部时,从待拆分的数据分区的头部之前开始拆分;
当所述拆分策略指示待拆分的数据分区的尾部时,从待拆分的数据分区的尾部之后开始拆分;
当所述拆分策略指示待拆分的数据分区的中间位置时,从待拆分的数据分区的中间开始拆分。
在一种可能的设计中,所述拆分模块,还用于获取所述拆分策略中的拆分点指令;根据所述拆分点指令,确定所述拆分策略指示的拆分起始点。
在一种可能的设计中,所述拆分模块,用于获取所述拆分策略中的历史拆分指令,所述历史拆分指令用于指示基于历史运行过程中数据分区的拆分份数对所述待拆分的数据分区进行拆分;基于所述历史拆分指令,获取历史运行过程中数据分区的拆分份数,得到历史拆分份数;将待拆分的数据分区拆分为所述历史拆分份数个子数据分区;或,获取所述拆分策略中的拆分分数,将待拆分的数据分区拆分为所述拆分份数个子数据分区。
第三方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述第一方面以及第一方面的任一种可能设计中的数据分区拆分方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述第一方面以及第一方面的任一种可能设计中的数据分区拆分方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据分区拆分方法的流程图;
图2是本发明实施例提供的一种数据分区拆分方法的流程图;
图3是本发明实施例提供的一种数据分区拆分方法的示意图;
图4是本发明实施例提供的一种数据分区拆分方法的示意图;
图5是本发明实施例提供的一种数据分区拆分方法的示意图;
图6是本发明实施例提供的一种存储服务模块的结构示意图;
图7是本发明实施例提供的一种管理服务模块的结构示意图。
图8是本发明实施例提供的一种数据分区拆分装置的结构示意图;
图9是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便理解,下面先对本发明实施例中涉及的名词进行解释:
Hbase:是一种分布式存储系统,用于海量结构化地存储数据,Hbase的系统架构中包括大量的Client(客户端)、大量的HRegionserver(服务器)以及HMaster(主节点),其中服务器是Hbase的核心,每个服务器可以存储和管理大量数据分区。
数据分区:Hbase中分布式存储的最小单元。在Hbase系统中,每个数据表(table)可以包括n个数据分区,而不同的数据分区可以分布在不同的服务器,以保证服务器的负载均衡。
Hbase热点问题:是指大量的client访问Hbase的一个或少数几个服务器,造成少数服务器的读/写请求过多、负载过大,而其他服务器负载却很小的负载不均的问题。如果某个服务器中某一数据分区数据量较大,该数据分区容易成为热点数据分区,导致该服务器出现热点问题,因此服务器需要及时而准确地拆分数据分区,以避免热点问题。
拆分风暴:是指Hbase中大量数据分区的数据量过大,导致服务器面临要拆分大量数据分区的情况。由于每次拆分数据分区的过程会为服务器带来一定的业务负担,当面临拆分风暴时,服务器的业务负担过重,容易影响服务器的性能,因此应当避免拆分风暴。
图1是本发明实施例提供的一种数据分区拆分方法的流程图,参见图1,该方法包括:
101、接收拆分策略更新指令,该拆分策略更新指令至少携带拆分策略。
102、解析该拆分策略更新指令,得到该拆分策略。
103、加载该拆分策略。
104、基于该拆分策略,对待拆分的数据分区进行拆分。
在一种可能的设计中,该基于该拆分策略,对待拆分的数据分区进行拆分之前,该方法还包括:
获取该拆分策略更新指令携带的数据表标识;获取该数据表标识对应的数据表中的每个数据分区,作为该待拆分的数据分区;或,
获取已存储的每个数据表的每个数据分区,作为该待拆分的数据分区。
在一种可能的设计中,该基于该拆分策略,对待拆分的数据分区进行拆分,包括:
获取该拆分策略中的拆分有效期,该拆分有效期是指对数据分区进行拆分的日期范围;在当前日期属于该拆分有效期时,对待拆分的数据分区进行拆分;和/或,
获取该拆分策略中的拆分时间段;在当前时间点属于该拆分时间段时,对待拆分的数据分区进行拆分。
在一种可能的设计中,该基于该拆分策略,对待拆分的数据分区进行拆分,包括:
获取该拆分策略中的不可拆分数据分区信息,该不可拆分数据分区信息用于指示不可拆分的数据分区;
当待拆分的数据分区不属于该不可拆分的数据分区时,对该待拆分的数据分区进行拆分。
在一种可能的设计中,该基于该拆分策略,对待拆分的数据分区进行拆分,包括:
获取该拆分策略中的预设数据量,该预设数据量为允许一个数据分区存储的数据量的最大值;
当待拆分的数据分区存储的数据量达到该预设数据量时,对该待拆分的数据分区进行拆分。
在一种可能的设计中,该拆分策略用于指示数据分区的拆分起始点,该基于该拆分策略,对待拆分的数据分区进行拆分,包括以下至少一项:
当该拆分策略指示待拆分的数据分区的头部时,从待拆分的数据分区的头部之前开始拆分;
当该拆分策略指示待拆分的数据分区的尾部时,从待拆分的数据分区的尾部之后开始拆分;
当该拆分策略指示待拆分的数据分区的中间位置时,从待拆分的数据分区的中间开始拆分。
在一种可能的设计中,该基于该拆分策略,对待拆分的数据分区进行拆分之前,该方法还包括:
获取该拆分策略中的拆分点指令;
根据该拆分点指令,确定该拆分策略指示的拆分起始点。
在一种可能的设计中,该基于该拆分策略,对待拆分的数据分区进行拆分,包括:
获取该拆分策略中的历史拆分指令,该历史拆分指令用于指示基于历史运行过程中数据分区的拆分份数对该待拆分的数据分区进行拆分;基于该历史拆分指令,获取历史运行过程中数据分区的拆分份数,得到历史拆分份数;将待拆分的数据分区拆分为该历史拆分份数个子数据分区;或,
获取该拆分策略中的拆分分数,将待拆分的数据分区拆分为该拆分份数个子数据分区。
相关技术中,服务器仅会在启动时加载配置文件从而获取拆分策略,而在运行过程中不会重新加载配置文件,固定按照启动时得到的拆分策略对数据分区进行拆分,灵活性差。在服务器运行的过程中,若开发人员想要更新拆分策略,必须在更新了服务器的配置文件后,重启服务器,以保证服务器在重启时再次加载并运行更新的配置文件,此时更新的拆分策略才会生效,这就造成了业务的中断,并且更新拆分策略的效率很低。
而本发明实施例中,对服务器加载拆分策略的处理逻辑进行了改进,设计了一种动态加载拆分策略的方式:每当服务器获取到拆分策略更新指令时,即会加载并运行策略更新指令中携带的拆分策略,从而基于更新的拆分策略拆分数据分区,即,更新的拆分策略在本次运行过程中即可生效,服务器无需重启,避免了业务的中断,极大地提高了更新拆分策略的效率。
本发明实施例可以应用在Hbase中服务器拆分数据分区的场景,应用本发明实施例提供的方法,服务器可以动态地配置数据分区的拆分策略,在线即可完成添加以及更新拆分策略的过程,而无需断电重启。进一步地,服务器在面对不同业务需求时可以灵活地在线调整拆分策略,极大地提高了灵活性。
图2是本发明实施例提供的一种数据分区拆分方法的流程图,该发明实施例的执行主体为服务器,参见图2,该方法包括:
201、服务器接收拆分策略更新指令。
本实施例中,服务器在运行过程中可以接收拆分策略更新指令,具体地,服务器可以提供更新拆分策略的接口,当向该更新拆分策略的接口传入拆分策略时,服务器会接收到拆分策略更新指令。该更新拆分策略的接口可以称为addTableDescriptor。
拆分策略更新指令:针对拆分策略更新指令的内容,拆分策略更新指令至少携带拆分策略,可选地,拆分策略更新指令还可以携带拆分策略标识、数据表标识等。拆分策略标识用于标识对应的拆分策略,可以为拆分策略的名称、编号等,可以定义为变量spiltname。数据表标识用于唯一确定对应的数据表,可以为数据表的名称、编号等,可以定义为变量tablename。针对拆分策略更新指令的功能,拆分策略更新指令用于更新服务器已存储的拆分策略,可以用于向服务器新添加一个拆分策略,或者将服务器已有的拆分策略替换为拆分策略更新指令所携带的拆分策略。
拆分策略:是指对数据分区进行拆分的策略,可以包括拆分有效期、拆分时间段、不可拆分数据分区信息、预设数据量、拆分点指令、拆分份数中的至少一项。其中,拆分有效期的概念和作用详见以下步骤204,拆分时间段的概念和作用详见以下步骤205,不可拆分数据分区信息的概念和作用详见以下步骤206,预设数据量的概念和作用详见以下步骤207,拆分点指令以及拆分份数的概念和作用详见以下步骤208。
202、服务器解析拆分策略更新指令,得到拆分策略,加载该拆分策略。
服务器获取到拆分策略更新指令时,可以解析拆分策略更新指令,得到拆分策略更新指令携带的拆分策略,将拆分策略加载至内存中,并基于拆分策略运行,以执行如后续步骤203至步骤208中的操作,从而实现对数据分区进行拆分的功能。另外,可以对拆分策略进行持久化存储,例如将拆分策略存储至HDFS(Hadoop Distributed File System,分布式文件系统)中,以保证下次启动时可以从HDFS中加载拆分策略。
可选地,服务器可以存储拆分策略标识与拆分策略之间的对应关系,该对应关系中的每个拆分策略为服务器已存储的拆分策略。当拆分策略更新指令携带拆分策略标识时,服务器可以基于该拆分策略标识查询拆分策略标识与拆分策略之间的对应关系,当在该对应关系查询到该拆分策略标识时,表明本地已存储了拆分策略标识对应的拆分策略,需要对本地存储的拆分策略进行更新,则将本地存储的拆分策略替换为拆分策略更新指令携带的拆分策略。而当在该对应关系未查询到该拆分策略标识时,表明本地尚未存储拆分策略标识对应的拆分策略,要存储新的拆分策略,则存储该拆分策略更新指令携带的拆分策略,并对应地存储拆分策略更新指令中的拆分策略标识。
203、服务器确定待拆分的数据分区。
当服务器加载了拆分策略更新指令携带的拆分策略后,可以确定待拆分的数据分区,以便后续该对待拆分的数据分区进行拆分。
针对获取待拆分的数据分区的具体方式,服务器存储的每个数据分区可以隶属于对应的数据表,而每个数据表可以具有数据表标识,拆分策略更新指令可以携带数据表标识,服务器可以获取拆分策略更新指令携带的数据表标识,获取数据表标识对应的数据表中的每个数据分区,作为待拆分的数据分区。可选地,在获取到数据表标识之后,服务器可以存储数据表标识和拆分策略之间的对应关系,以便再次启动时可以通过该对应关系确定数据表对应的拆分策略。
通过这种获取待拆分的数据分区的方式,可以达到以下技术效果:
相关技术中,服务器存储的配置文件的拆分策略的作用域为整个Hbase,即,服务器会统一地基于相同的拆分策略,对大量数据表的大量数据分区进行拆分,局限性强,不具备灵活性。
而本实施例中,每个拆分策略的作用域可以为某一个或多个数据表,当服务器获取某一拆分策略对应的数据表的数据分区后,可以只针对该数据分区基于该拆分策略进行拆分,而不针对该数据分区以外的数据分区基于该拆分策略进行拆分,从而提高了拆分数据分区的精确性。
进一步地,服务器可以同时加载并运行多个拆分策略,对每个数据表分别基于对应的拆分策略拆分数据分区,例如对数据表1中的数据分区基于拆分策略A进行拆分,对数据表2中的数据分区基于拆分策略B进行拆分,从而实现了多粒度地配置拆分策略,极大地提高了灵活性,能够满足精细化地控制每个数据表的拆分策略的需求。
另外,拆分策略更新指令也可以缺省数据表标识,则服务器可以直接获取已存储的每个数据表的每个数据分区,作为待拆分的数据分区。
204、服务器确定当前日期属于拆分策略中的拆分有效期。
本实施例中,拆分策略可以包括拆分有效期,拆分有效期是指对数据分区进行拆分的日期范围。当拆分策略中包括拆分有效期时,服务器可以获取拆分策略中的拆分有效期,判断当前日期是否属于拆分有效期,在当前日期属于拆分有效期时,确定可以对待拆分的数据分区进行拆分,则继续执行以下步骤204,而在当前日期不属于拆分有效期时,不对待拆分的数据分区进行拆分。
示例性地,假设拆分策略携带的拆分有效期为2017年11月8日至2017年11月12日,如果当前日期为2017年11月11日,服务器会基于拆分策略进行拆分,如果当前日期为2017年10月8日,服务器不会基于拆分策略进行拆分。
进一步地,服务器通过运行具有拆分有效期的拆分策略,可以实现定期执行拆分策略的功能:服务器可以在运行拆分策略的过程中,实时判断当前日期是否属于拆分有效期,以便在确定当前日期属于拆分有效期时拆分数据分区。可选地,服务器可以启动定时器,将定时器的日期设置为拆分有效期的起始日期,在当前日期到达拆分有效期的起始日期时,自动对待拆分的数据分区进行拆分。
需要说明的是,拆分有效期可以包括多种精确度,例如可以精确到年月日,也可以精确到年月,也可以精确到月日。假设拆分有效期包括X年Y月Z日,服务器可以将X年Y月的Z日作为拆分有效期,假设拆分有效期包括X年Y月,服务器可以将X年Y月的每一天作为拆分有效期,假设拆分有效期包括Y月Z日,服务器可以将每一年的Y月的Z日作为拆分有效期。
本步骤中,通过设计拆分策略中包括拆分有效期,并设计服务器在确定当前日期属于拆分有效期时再拆分数据分区,可以达到以下技术效果:
第一,极大地提高拆分数据分区的灵活性:服务器可以根据当前日期以及拆分有效期来确定是否要基于拆分策略拆分数据分区,而不会固定地一旦运行拆分策略,就基于拆分策略拆分数据分区。同时,开发人员可以根据业务需求设置拆分策略中的拆分有效期,则服务器运行拆分策略以拆分数据分区时,能够保证拆分数据分区的日期满足业务需求。
第二,保证拆分数据分区的时效性:在实施中,开发人员可以预先设置某一未来的日期范围作为拆分有效期,并向服务器导入携带该拆分有效期的拆分策略,则服务器运行该拆分策略时,会具有定期功能,当前暂时不基于拆分策略拆分数据分区,而在当前日期达到拆分有效期时,自动拆分数据分区,如此,无需开发人员临时导入拆分策略,提高了拆分数据分区的时效性,效率较高。
在一个示例性场景中,假设服务器为购物应用关联的服务器,服务器存储的数据分区中的数据为消费记录、优惠信息、商品信息等数据,考虑到双十一来临时,可能会出现大量客户端频繁访问服务器,服务器存储的数据量迅猛增长的情况,可以预先设置11月11日为拆分有效期,则服务器在11月11日之前,暂时不会基于拆分策略对数据分区进行拆分,在当前日期到达11月11日时,自动基于拆分策略对数据分区进行拆分,从而保证及时地拆分数据分区,避免由于数据分区中数据激增引发热点问题。
205、服务器确定当前时间点属于拆分策略中的拆分时间段。
本实施例中,拆分策略可以包括拆分时间段,拆分时间段是指对数据分区进行拆分的时间点范围,当拆分策略包括拆分时间段时,服务器可以获取拆分策略中的拆分时间段,判断当前时间点是否属于拆分有效期,在当前时间点属于拆分时间段时,对待拆分的数据分区进行拆分,则继续执行以下步骤205,而在当前日期不属于拆分时间段时,不对待拆分的数据分区进行拆分。
示例性地,假设拆分策略携带的拆分时间段为20:00-22:00,如果当前时间点为12:00,服务器不会基于拆分策略进行拆分,如果当前时间点为21:00,则基于拆分策略进行拆分。
进一步地,服务器通过运行具有拆分时间段的拆分策略,可以实现定时执行拆分策略的功能:服务器可以在运行拆分策略的过程中,实时判断当前时间点是否属于拆分时间段,以便在确定当前时间点属于拆分时间段时拆分数据分区。可选地,服务器可以启动定时器,将定时的时间点设置为拆分时间段的起始时间点,在运行定时器的过程中,在当前时间点到达拆分时间段的起始时间点时,服务器会对待拆分的数据分区进行拆分。
本步骤中,通过设计拆分策略中包括拆分时间段,并设计服务器在确定当前时间点属于拆分时间段时再拆分数据分区,可以达到以下技术效果:
第一,极大地提高拆分数据分区的灵活性:服务器可以根据当前时间点以及拆分时间段来确定是否要基于拆分策略拆分数据分区,而不会固定地一旦运行拆分策略,就基于拆分策略拆分数据分区。同时,开发人员可以根据业务需求设置拆分策略中的拆分时间段,则服务器运行拆分策略以拆分数据分区时,能够保证拆分数据分区的时间点满足业务需求。
第二,保证拆分数据分区的时效性:在实施中,开发人员可以预先设置某一尚未达到的时间段作为拆分时间段,并向服务器导入携带该拆分时间段的拆分策略,则服务器运行该拆分策略时,会具有定时功能,当前暂时不基于拆分策略拆分数据分区,而在当前时间点达到拆分时间段时,自动拆分数据分区,如此,无需开发人员临时导入拆分策略,提高了拆分数据分区的时效性,效率较高。
在一个示例性场景中,假设服务器为购物应用关联的服务器,服务器存储的数据分区中的数据为消费记录、优惠信息、商品信息等数据,该购物应用计划推出凌晨抢购的活动,可以预先设置凌晨时间段为拆分时间段,则服务器会在白天以及其他非凌晨时间段不会基于拆分策略对数据分区进行拆分,在当前时间点达到凌晨时间段时,自动基于拆分策略对数据分区进行拆分,从而保证及时地拆分数据分区,避免由于数据分区中数据激增引发热点问题。
206、服务器确定待拆分的数据分区不属于拆分策略指示的不可拆分的数据分区。
本实施例中,拆分策略可以包括不可拆分数据分区信息,不可拆分数据分区信息用于指示不可拆分的数据分区。当拆分策略包括不可拆分数据分区信息时,服务器可以获取拆分策略中的不可拆分数据分区信息,判断待拆分的数据分区是否属于不可拆分数据分区信息指示的不可拆分的数据分区,当待拆分的数据分区不属于不可拆分的数据分区时,则继续执行以下步骤207,对待拆分的数据分区进行拆分,而在待拆分的数据分区属于不可拆分的数据分区时,不对待拆分的数据分区进行拆分。
其中,不可拆分数据分区信息可以为列表、数组或集合,当然也可以采用程序语言中的其他数据结构,不可拆分数据分区信息可以包括不可拆分的数据分区的标识,以指示不可拆分的数据分区。
需要说明的是,不可拆分数据分区信息所指示的不可拆分的数据分区可以为一个或多个,示例性地,假设拆分策略携带的不可拆分数据分区信息指示数据分区1至数据分区8,如果待拆分的数据分区为数据分区5,则服务器不会基于拆分策略进行拆分,如果待拆分的数据分区为数据分区10,则服务器会基于拆分策略进行拆分。
本步骤中,通过设计拆分策略中包括不可拆分数据分区信息,并设计服务器在确定待拆分数据分区不属于不可拆分的数据分区时,再拆分数据分区,可以达到以下技术效果:
第一,极大地提高拆分数据分区的灵活性:服务器可以根据不可拆分数据分区信息来确定是否要拆分某个数据分区,而不会固定地拆分所有数据分区,灵活性高。同时,开发人员可以根据业务需求自定义地设置拆分策略中的不可拆分数据分区信息,保证服务器根据不可拆分数据分区信息拆分数据分区时,拆分对象能够满足业务需求。
第二,避免误拆分数据分区的情况:考虑到对于一些写入数据较早或者访问频率较高的数据分区来说,拆分这些数据分区后容易引起故障,例如出现客户端无法寻访拆分后的数据分区的情况,则可以预先将这些数据分区作为不可拆分数据分区,并设置拆分策略中的不可拆分数据分区信息,以保证服务器不会误拆分这些数据分区。
207、服务器确定待拆分的数据分区的数据量达到预设数据量。
本实施例中,拆分策略可以包括预设数据量,预设数据量为允许一个数据分区存储的最大数据量,当拆分策略包括预设数据量时,服务器可以获取拆分策略中的预设数据量,并获取待拆分的数据分区存储的数据量,判断该数据量是否达到该预设数据量,当该数据量达到预设数据量时,对数据分区进行拆分,则继续执行以下步骤207,当该数据量未达到预设数据量时,不对待拆分的数据分区进行拆分。
示例性地,假设拆分策略包括的预设数据量为100M,如果数据分区存储的数据量为10M,服务器不会基于拆分策略对数据分区进行拆分,如果数据分区存储的数据量为150M,则基于拆分策略对数据分区进行拆分。
综上所述,以上步骤204至步骤207提供了确认待拆分的数据分区可以进行拆分的过程。需要说明的是,上述仅是以按照步骤204-步骤205-步骤206-步骤207的顺序依次执行每个步骤为例进行说明,在实际应用中可以采用任意顺序依次执行每个步骤,例如可以按照步骤207-步骤206-步骤204-步骤205的顺序执行每个步骤。进一步地,步骤204至步骤207可以采用任意结合的方式形成确认待拆分的数据分区可以进行拆分的过程,服务器可以只执行步骤204至步骤207中的一个或多个,即执行下述步骤208。另外,步骤204至步骤207仅是可选步骤,在实施中,服务器也可以执行步骤203后,即执行步骤208。
208、服务器基于拆分策略,对待拆分的数据分区进行拆分。
当服务器确定可以对待拆分的数据分区进行拆分时,可以基于拆分策略对待拆分的数据分区进行拆分,得到多个子数据分区,从而通过多个子数据分区分散待拆分数据分区存储的数据量。
对待拆分的数据分区进行拆分的过程具体可以包括以下步骤一至步骤三:
步骤一、基于拆分策略确定拆分份数。
拆分策略可以指示对待拆分数据分区的拆分份数,该拆分份数是指拆分后得到的子数据分区的数量,当拆分策略指示拆分份数时,服务器可以基于拆分策略确定拆分份数,以保证拆分后的数据分区的数量为该拆分份数。
在一种可能的设计中,拆分策略可以包括拆分份数,服务器可以获取拆分策略中的拆分份数,以便将待拆分的数据分区拆分为拆分份数个子数据分区。
在另一种可能的设计中,拆分策略可以包括历史拆分指令,历史拆分指令用于指示基于历史运行过程中数据分区的拆分份数对数据分区进行拆分,服务器可以获取拆分策略中的历史拆分指令,基于历史拆分指令,获取历史运行过程中数据分区的拆分份数,得到历史拆分份数,将该历史拆分份数作为本次拆分数据分区的拆分份数,以便将待拆分的数据分区拆分为该历史拆分份数个子数据分区。
针对基于历史拆分指令获取历史拆分份数的过程,服务器会预先在每次拆分数据分区时,在历史拆分记录中记录本次的拆分份数,当获取到历史拆分指令后,可以查询历史拆分记录,得到历史拆分份数。
可选地,历史拆分指令可以携带历史日期,服务器可以基于该历史日期查询历史拆分记录,在历史拆分记录中得到在该历史日期拆分数据分区的数量,得到历史拆分份数。示例性地,历史拆分指令可以携带2016年12月12日,则服务器获取2016年12月12日的拆分份数为M,将M作为历史拆分份数。
可选地,历史拆分指令可以携带历史日期范围,服务器可以基于该历史日期范围查询历史拆分记录,在历史拆分记录得到在该历史日期范围中每天的拆分份数,得到多个拆分份数,计算该多个拆分份数的平均值,作为历史拆分份数。示例性地,历史拆分指令可以携带2016年12月,则服务器获取2016年12月每天的拆分份数,得到31个拆分份数,计算这31个拆分份数的平均值,将平均值作为历史拆分份数。
步骤二、基于拆分策略确定起始拆分点。
本实施例中,拆分策略可以指示数据分区的拆分起始点,服务器可以基于拆分策略,确定起始拆分点,以便从该起始拆分点开始对待拆分的数据分区进行拆分。其中,拆分点指令指示的起始拆分点可以包括数据分区的头部、数据分区的中间或数据分区的尾部中的至少一项。
在一种可能的实现方式中,拆分策略中可以包括拆分点指令,拆分策略可以通过拆分点指令指示数据分区的起始拆分点,当拆分策略包括拆分点指令时,服务器可以获取拆分策略中的拆分点指令,确定拆分点指令指示的起始拆分点,以便从该起始拆分点开始对待拆分的数据分区进行拆分。
可选地,拆分点指令可以携带拆分点标识,服务器可以通过拆分点标识确定拆分点指令指示的起始拆分点,例如,当拆分点指令携带“top”时,可以确定拆分点指令指示的起始拆分点为数据分区的头部,当拆分点指令携带“middle”时,可以确定拆分点指令指示的起始拆分点为数据分区的中间,当拆分点指令携带“bottom”时,可以确定拆分点指令指示的起始拆分点为数据分区的尾部。
步骤三、基于拆分份数和起始拆分点,对待拆分的数据分区进行拆分。
本实施例中,当起始拆分点不同时,对待拆分的数据分区的拆分方式也不同,基于起始拆分点对待拆分的数据分区进行拆分的过程可以包括以下设计(1)至设计(3)中的至少一项,例如可以择一执行以下设计(1)至设计(3)中的任一项,或执行以下设计(1)至设计(3)中任意多项的任意组合,例如两两组合、三者组合等,本实施例对此不做限定。
设计(1)头部拆分方式:
当拆分策略指示数据分区的头部时,服务器可以从数据分区的头部之前拆分。具体来说,任意两个相邻的数据分区之间可以存在数据缺口,当服务器确定要对待拆分的数据分区的头部之前拆分时,可以获取待拆分的数据分区与该待拆分数据分区的前一个数据分区之间的数据缺口,从该数据缺口的任一位置进行拆分。
示例性地,参见图3,假设待拆分的数据分区为Region2,拆分份数为3,服务器对Region2进行头部拆分时,可以将Region2与Region1之间的数据缺口拆分为子Region1和子Region2,同时将Region2作为拆分后的子Region3,从而得到3个拆分后的数据分区:子Region1、子Region2和子Region3。
设计(2)中间位置拆分方式:
当拆分策略指示待拆分的数据分区的中间位置时,服务器可以从待拆分的数据分区的中间位置开始拆分。具体来说,服务器可以获取待拆分的数据分区的首行与尾行,根据首行和尾行计算待拆分的数据分区的中间行,从中间行开始拆分,例如假设待拆分的数据分区为第100行至第201行,服务器可以计算中间行为第150行,从第150行开始拆分,得到第100行-第150行的子数据分区以及第151行-第201行的数据分区。
示例性地,参见图4,假设待拆分的数据分区为Region2,拆分份数为3,服务器对Region2进行中间拆分时,可以从Region2的中间开始一分为二,拆分出两个等大的子Region,分别为子Region1和子Region2。
设计(3)尾部拆分方式:
当拆分策略指示数据分区的尾部时,从数据分区的尾部之后开始拆分。具体来说,服务器确定要对待拆分的数据分区的尾部之后开始拆分,可以获取待拆分的数据分区与该待拆分数据分区的后一个数据分区之间的数据缺口,从该数据缺口的任一位置进行拆分。
示例性地,参见图5,假设待拆分的数据分区为Region2,拆分份数为4,服务器对Region2进行尾部拆分时,可以将Region2与Region3之间的数据缺口拆分为子Region1、子Region2和子Region3,同时将Region2作为拆分后的子Region4,从而得到4个拆分后的Region:子Region1、子Region2、子Region3和子Region4。
可选地,在采用以上设计(1)至设计(3)中的任一种设计进行拆分的过程中,服务器可以实时统计已拆分的子数据分区的数量,当已拆分的子数据分区的数量尚未达到拆分份数时,继续进行拆分,当拆分的子数据分区的数量已经达到拆分份数时,则结束对数据分区进行拆分,最终得到拆分份数个子数据分区。
结合以上设计(1)至设计(3),本实施例扩展了拆分方式,极大地提高了灵活性:传统的Hbase固定以待拆分数据分区的中间位置为起始拆分点,而本实施例新增了头部拆分方式和尾部拆分方式,扩展了用户的选择空间,用户可以根据实际业务需求在拆分策略中设置头部拆分方式、中间拆分方式和尾部拆分方式中的任一种,则服务器基于拆分策略进行拆分时,能够保证起始拆分点符合实际业务需求。
需要说明的是,在实施中,可以在服务器中增加两个虚拟功能模块:存储服务模块以及管理服务模块,由这两个虚拟功能模块在运行过程中进行交互来执行上述每个步骤。其中,存储服务模块的结构示意图参见图6,存储服务模块用于提供存储服务功能,当更新拆分策略时,存储服务模块可以用于缓存拆分策略,并向HDFS中写入拆分策略。当删除拆分策略时,存储服务模块可以从HDFS删除拆分策略,当查询以及获取拆分策略时,存储服务模块可以从HDFS中获取拆分策略。管理服务模块的结构示意图参见图7,管理服务模块用于提供管理服务接口,例如提供添加拆分策略的接口、删除拆分策略的接口、获取拆分策略的接口以及完成拆分功能的接口等,并通过调用存储服务模块完成对拆分策略数据的创建、删除、查询等功能。
本发明实施例提供的方法,提供了一种动态加载拆分策略的方式,当获取到拆分策略更新指令时,即会加载并运行拆分策略更新指令携带的拆分策略,从而在基于拆分策略对数据分区进行拆分,由于更新的拆分策略在本次运行过程中即可生效,服务器无需重启,避免了业务的中断,极大地提高了更新拆分策略的效率。
进一步地,通过设置了包含拆分有效期、拆分时间段、不可拆分数据分区信息、预设数据量、拆分点指令、拆分份数等信息的拆分策略,能够及时而有效地拆分数据分区,维持每个数据分区存储的数据量保持在合理的范围内,不会出现大量数据分区的数据量过大而导致服务器面临拆分风暴的情况,保证了服务器运行的安全性。
图8是本发明实施例提供的一种数据分区拆分装置的结构示意图。参见图8,该装置包括:接收模块801、解析模块802、加载模块803和拆分模块804。
接收模块801,用于接收拆分策略更新指令,该拆分策略更新指令至少携带拆分策略;
解析模块802,用于解析该拆分策略更新指令,得到该拆分策略;
加载模块803,用于加载该拆分策略;
拆分模块804,用于基于该拆分策略,对待拆分的数据分区进行拆分。
在一种可能的设计中,该装置还包括:
获取模块,用于获取该拆分策略更新指令携带的数据表标识;获取该数据表标识对应的数据表中的每个数据分区,作为该待拆分的数据分区;或,获取已存储的每个数据表的每个数据分区,作为该待拆分的数据分区。
在一种可能的设计中,该拆分模块804,用于获取该拆分策略中的拆分有效期,该拆分有效期是指对数据分区进行拆分的日期范围;在当前日期属于该拆分有效期时,对待拆分的数据分区进行拆分;和/或,获取该拆分策略中的拆分时间段;在当前时间点属于该拆分时间段时,对待拆分的数据分区进行拆分。
在一种可能的设计中,该拆分模块804,用于获取该拆分策略中的不可拆分数据分区信息,该不可拆分数据分区信息用于指示不可拆分的数据分区;当待拆分的数据分区不属于该不可拆分的数据分区时,对该待拆分的数据分区进行拆分。
在一种可能的设计中,该拆分模块804,用于获取该拆分策略中的预设数据量,该预设数据量为允许一个数据分区存储的数据量的最大值;当待拆分的数据分区存储的数据量达到该预设数据量时,对该待拆分的数据分区进行拆分。
在一种可能的设计中,该拆分策略还用于指示数据分区的拆分起始点,该拆分模块804,用于执行以下至少一项:
当该拆分策略指示待拆分的数据分区的头部时,从待拆分的数据分区的头部之前开始拆分;
当该拆分策略指示待拆分的数据分区的尾部时,从待拆分的数据分区的尾部之后开始拆分;
当该拆分策略指示待拆分的数据分区的中间位置时,从待拆分的数据分区的中间开始拆分。
在一种可能的设计中,该拆分模块804,还用于获取该拆分策略中的拆分点指令;根据该拆分点指令,确定该拆分策略指示的拆分起始点。
在一种可能的设计中,该拆分模块804,用于获取该拆分策略中的历史拆分指令,该历史拆分指令用于指示基于历史运行过程中数据分区的拆分份数对该待拆分的数据分区进行拆分;基于该历史拆分指令,获取历史运行过程中数据分区的拆分份数,得到历史拆分份数;将待拆分的数据分区拆分为该历史拆分份数个子数据分区;或,获取该拆分策略中的拆分分数,将待拆分的数据分区拆分为该拆分份数个子数据分区。
图9是本发明实施例提供的一种服务器的结构示意图,服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)901和一个或一个以上的存储器902,其中,该存储器902中存储有至少一条指令,该至少一条指令由该处理器901加载并执行以实现上述各个方法实施例提供的数据分区拆分方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,例如存储有计算机程序的存储器,上述计算机程序被处理器执行时实现上述实施例中服务器所执行的数据分区拆分方法。例如,该计算机可读存储介质可以是只读内存(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact DiscRead-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种数据分区拆分方法,其特征在于,所述方法包括:
接收拆分策略更新指令,所述拆分策略更新指令至少携带拆分策略、数据表标识以及拆分策略标识,所述数据表标识用于唯一确定对应的数据表;
在预先存储的拆分策略标识与拆分策略的对应关系中,查询所述拆分策略更新指令携带的拆分策略标识,当查询到对应的拆分策略标识时,则将所述拆分策略标识对应的拆分策略替换为所述拆分策略更新指令携带的拆分策略,当未查询到对应的所述拆分策略标识时,则对应存储所述拆分策略更新指令携带的拆分策略与拆分策略标识;
加载所述拆分策略标识当前对应的拆分策略,获取所述拆分策略更新指令携带的数据表标识,获取所述数据表标识对应的数据表中的每个数据分区,作为待拆分的数据分区;
基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分,得到多个子数据分区,存储所述数据表标识和所述拆分策略之间的对应关系。
2.根据权利要求1所述的方法,其特征在于,所述基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的拆分有效期,所述拆分有效期是指对数据分区进行拆分的日期范围;在当前日期属于所述拆分有效期时,对所述待拆分的数据分区进行拆分;和/或,
获取所述拆分策略中的拆分时间段;在当前时间点属于所述拆分时间段时,对所述待拆分的数据分区进行拆分。
3.根据权利要求1所述的方法,其特征在于,所述基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的不可拆分数据分区信息,所述不可拆分数据分区信息用于指示不可拆分的数据分区;
当所述待拆分的数据分区不属于所述不可拆分的数据分区时,对所述待拆分的数据分区进行拆分。
4.根据权利要求1所述的方法,其特征在于,所述基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的预设数据量,所述预设数据量为允许一个数据分区存储的数据量的最大值;
当所述待拆分的数据分区存储的数据量达到所述预设数据量时,对所述待拆分的数据分区进行拆分。
5.根据权利要求1所述的方法,其特征在于,所述拆分策略还用于指示数据分区的拆分起始点,所述基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分,包括以下至少一项:
当所述拆分策略指示所述待拆分的数据分区的头部时,从所述待拆分的数据分区的头部之前开始拆分;
当所述拆分策略指示所述待拆分的数据分区的尾部时,从所述待拆分的数据分区的尾部之后开始拆分;
当所述拆分策略指示所述待拆分的数据分区的中间位置时,从所述待拆分的数据分区的中间开始拆分。
6.根据权利要求5所述的方法,其特征在于,所述基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分之前,所述方法还包括:
获取所述拆分策略中的拆分点指令;
根据所述拆分点指令,确定所述拆分策略指示的拆分起始点。
7.根据权利要求1所述的方法,其特征在于,所述基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分,包括:
获取所述拆分策略中的历史拆分指令,所述历史拆分指令用于指示基于历史运行过程中数据分区的拆分份数对所述待拆分的数据分区进行拆分;基于所述历史拆分指令,获取历史运行过程中数据分区的拆分份数,得到历史拆分份数;将所述待拆分的数据分区拆分为所述历史拆分份数个子数据分区;或,
获取所述拆分策略中的拆分分数,将所述待拆分的数据分区拆分为所述拆分份数个子数据分区。
8.一种数据分区拆分装置,其特征在于,所述装置包括:
接收模块,用于接收拆分策略更新指令,所述拆分策略更新指令携带拆分策略、数据表标识以及拆分策略标识,所述数据表标识用于唯一确定对应的数据表;
解析模块,用于在预先存储的拆分策略标识与拆分策略的对应关系中,查询所述拆分策略更新指令携带的拆分策略标识,当查询到对应的拆分策略标识时,则将所述拆分策略标识对应的拆分策略替换为所述拆分策略更新指令携带的拆分策略,当未查询到对应的所述拆分策略标识时,则对应存储所述拆分策略更新指令携带的拆分策略与拆分策略标识;
加载模块,用于加载所述拆分策略标识当前对应的拆分策略,获取所述拆分策略更新指令携带的数据表标识,获取所述数据表标识对应的数据表中的每个数据分区,作为待拆分的数据分区;
拆分模块,用于基于所述拆分策略标识当前对应的拆分策略,对所述待拆分的数据分区进行拆分,得到多个子数据分区,存储所述数据表标识和所述拆分策略之间的对应关系。
9.根据权利要求8所述的装置,其特征在于,所述拆分模块,用于获取所述拆分策略中的拆分有效期,所述拆分有效期是指对数据分区进行拆分的日期范围;在当前日期属于所述拆分有效期时,对所述待拆分的数据分区进行拆分;和/或,获取所述拆分策略中的拆分时间段;在当前时间点属于所述拆分时间段时,对所述待拆分的数据分区进行拆分。
10.根据权利要求8所述的装置,其特征在于,所述拆分模块,用于获取所述拆分策略中的不可拆分数据分区信息,所述不可拆分数据分区信息用于指示不可拆分的数据分区;当所述待拆分的数据分区不属于所述不可拆分的数据分区时,对所述待拆分的数据分区进行拆分。
11.根据权利要求8所述的装置,其特征在于,所述拆分模块,用于获取所述拆分策略中的预设数据量,所述预设数据量为允许一个数据分区存储的数据量的最大值;当所述待拆分的数据分区存储的数据量达到所述预设数据量时,对所述待拆分的数据分区进行拆分。
12.根据权利要求8所述的装置,其特征在于,所述拆分策略还用于指示数据分区的拆分起始点,所述拆分模块,用于执行以下至少一项:
当所述拆分策略指示所述待拆分的数据分区的头部时,从所述待拆分的数据分区的头部之前开始拆分;
当所述拆分策略指示所述待拆分的数据分区的尾部时,从所述待拆分的数据分区的尾部之后开始拆分;
当所述拆分策略指示所述待拆分的数据分区的中间位置时,从所述待拆分的数据分区的中间开始拆分。
13.根据权利要求12所述的装置,其特征在于,所述拆分模块,还用于获取所述拆分策略中的拆分点指令;根据所述拆分点指令,确定所述拆分策略指示的拆分起始点。
14.根据权利要求8所述的装置,其特征在于,所述拆分模块,用于获取所述拆分策略中的历史拆分指令,所述历史拆分指令用于指示基于历史运行过程中数据分区的拆分份数对所述待拆分的数据分区进行拆分;基于所述历史拆分指令,获取历史运行过程中数据分区的拆分份数,得到历史拆分份数;将所述待拆分的数据分区拆分为所述历史拆分份数个子数据分区;或,获取所述拆分策略中的拆分分数,将所述待拆分的数据分区拆分为所述拆分份数个子数据分区。
15.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求7中任一项所述的数据分区拆分方法中所执行的操作。
16.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求7中任一项所述的数据分区拆分方法中所执行的操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810166045.4A CN110209431B (zh) | 2018-02-28 | 2018-02-28 | 数据分区拆分方法及装置 |
PCT/CN2019/076507 WO2019165996A1 (zh) | 2018-02-28 | 2019-02-28 | 数据分区拆分方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810166045.4A CN110209431B (zh) | 2018-02-28 | 2018-02-28 | 数据分区拆分方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209431A CN110209431A (zh) | 2019-09-06 |
CN110209431B true CN110209431B (zh) | 2021-04-27 |
Family
ID=67778670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810166045.4A Active CN110209431B (zh) | 2018-02-28 | 2018-02-28 | 数据分区拆分方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110209431B (zh) |
WO (1) | WO2019165996A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905596B (zh) * | 2021-03-05 | 2024-02-02 | 北京中经惠众科技有限公司 | 数据处理的方法、装置、计算机设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868421A (zh) * | 2016-06-12 | 2016-08-17 | 浪潮通用软件有限公司 | 一种数据管理方法及装置 |
CN105915633A (zh) * | 2016-06-02 | 2016-08-31 | 北京百度网讯科技有限公司 | 自动化运维系统和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8042148B2 (en) * | 2006-02-07 | 2011-10-18 | Cisco Technology, Inc. | System and method for enforcing policy in a communication network |
CN101170452A (zh) * | 2007-11-30 | 2008-04-30 | 中国电信股份有限公司 | 增强管理能力的内容分发网络业务提供点系统及所属网络 |
CN101577936A (zh) * | 2008-05-09 | 2009-11-11 | 华为技术有限公司 | 一种通信系统中业务转发控制方法、系统和设备 |
CN104270390B (zh) * | 2014-10-23 | 2017-10-10 | 东南大学 | 基于IPv6的IPSec嵌入式防火墙的系统及其操作方法 |
-
2018
- 2018-02-28 CN CN201810166045.4A patent/CN110209431B/zh active Active
-
2019
- 2019-02-28 WO PCT/CN2019/076507 patent/WO2019165996A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915633A (zh) * | 2016-06-02 | 2016-08-31 | 北京百度网讯科技有限公司 | 自动化运维系统和方法 |
CN105868421A (zh) * | 2016-06-12 | 2016-08-17 | 浪潮通用软件有限公司 | 一种数据管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2019165996A1 (zh) | 2019-09-06 |
CN110209431A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11586673B2 (en) | Data writing and reading method and apparatus, and cloud storage system | |
CN110062924B (zh) | 用于虚拟化图形处理的容量预留 | |
CN106936899B (zh) | 分布式统计分析系统的配置方法及分布式统计分析系统 | |
JP2020535559A (ja) | リソーススケジューリング方法、スケジューリングサーバ、クラウドコンピューティングシステム、及び記憶媒体 | |
JP2021513694A (ja) | ダークローンチ実現方法、装置、計算ノード及びシステム | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
US20240061712A1 (en) | Method, apparatus, and system for creating training task on ai training platform, and medium | |
US20160026699A1 (en) | Method for Synchronization of UGC Master and Backup and System Thereof, and Computer Storage Medium | |
CN104113576A (zh) | 一种客户端的更新方法及装置 | |
CN111897558A (zh) | 容器集群管理系统Kubernetes升级方法和装置 | |
CN112256433B (zh) | 基于Kafka集群的分区迁移方法和装置 | |
CN110399200A (zh) | 一种云平台资源调度方法和装置 | |
CN111078628A (zh) | 一种多盘并发数据迁移方法、系统、装置及可读存储介质 | |
CN115599300A (zh) | 一种任务分配方法、装置、设备及介质 | |
CN110209431B (zh) | 数据分区拆分方法及装置 | |
CN101833585A (zh) | 数据库服务器操作控制系统、方法及设备 | |
CN115470303B (zh) | 一种数据库访问方法、装置、系统、设备及可读存储介质 | |
CN115481103A (zh) | 一种数据库扩缩容方法、装置及计算机可读存储介质 | |
CN109902067B (zh) | 文件处理方法、装置、存储介质及计算机设备 | |
CN113986878A (zh) | 一种数据写入方法、数据迁移方法、装置及电子设备 | |
CN110287004B (zh) | 基于docker容器技术的基础环境镜像预热方法及装置 | |
CN110569231B (zh) | 数据迁移方法、装置、设备和介质 | |
CN113626383A (zh) | 一种数据处理方法、装置及设备 | |
EP3214549A1 (en) | Information processing device, method, and program | |
CN109033398B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |