CN112711564B - 合并处理方法以及相关设备 - Google Patents
合并处理方法以及相关设备 Download PDFInfo
- Publication number
- CN112711564B CN112711564B CN201911019899.0A CN201911019899A CN112711564B CN 112711564 B CN112711564 B CN 112711564B CN 201911019899 A CN201911019899 A CN 201911019899A CN 112711564 B CN112711564 B CN 112711564B
- Authority
- CN
- China
- Prior art keywords
- merging
- node
- merged
- metadata file
- data files
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 230000002085 persistent effect Effects 0.000 claims abstract description 124
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000012545 processing Methods 0.000 claims description 27
- 238000010586 diagram Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 101800005141 Somatostatin-34 Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种合并处理方法。合并节点接收计算节点发送的合并任务,合并任务包括指示信息以及增量元数据文件,其中,指示信息用于指示需要被合并的数据文件;合并节点根据指示信息以及增量元数据文件从存储系统中获取需要被合并的数据文件,数据文件包括不可写表格以及持久化数据文件;合并节点对需要被合并的数据文件执行合并任务,以生成合并结果以及更新元数据文件,合并结果包括合并后的持久化数据文件;合并节点将合并结果以及更新元数据文件存储到存储系统中;合并节点将更新元数据文件发送给计算节点。上述方案能够将前端业务和后端业务进行分离,从而提高用户体验。
Description
技术领域
本申请涉及数据库领域,尤其涉及一种合并处理方法以及相关设备。
背景技术
键值数据库是一种非关系数据库,它使用简单的键-值方法来存储数据。也就是说,键值数据库包括多条记录,每条记录包括“键”和“值”两部分。其中,“键”可以作为记录的唯一标识符,键值数据库根据“键”就可以查找到与“键”对应的“值”。其中,“键”和“值”都可以是从简单对象到复杂复合对象的任何内容。
但是,随着键值数据库存储内容的增加,现有的键值数据库涉及的记录是非常庞大的,因此,如何提高用户体验非常重要。
发明内容
为了解决上述问题,本申请提供了一种合并处理方法以及相关设备,能够将前端业务和后端业务进行分离,从而提高用户体验。
第一方面,提供了一种合并处理方法,包括:
合并节点接收计算节点发送的合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示需要被合并的数据文件;
所述合并节点根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
所述合并节点对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述合并节点将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述合并节点将所述更新元数据文件发送给所述计算节点,以使得所述计算节点根据所述更新元数据文件读写所述合并结果。
在一些可能的设计中,所述计算节点从所述存储系统中获取原始元数据文件,根据所述指示信息从原始元数据文件中获取得到所述增量元数据文件,其中,所述原始元数据文件记载了增删的持久化数据文件文件名列表,所述存储系统中的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述存储系统中的持久化数据文件中的每个持久化数据文件所属的层,所述存储系统中的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述存储系统中的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
在一些可能的设计中,在合并节点执行所述合并任务,以生成合并结果以及更新元数据文件之前,所述方法还包括:
所述合并节点根据调度策略确定所述合并任务的执行顺序;
所述合并节点执行所述合并任务,以生成合并结果以及更新元数据文件,包括:
所述合并节点根据所述执行顺执行所述合并任务,以生成所述合并结果以及所述更新元数据文件。
在一些可能的设计中,所述调度策略是根据所述合并任务涉及的键值KV数据的冷热程度、所述计算节点的负载情况、所述合并任务涉及的KV数据所需要的空间大小以及与所述计算节点的联动策略情况中的一种或者多种确定的。
在一些可能的设计中,合并节点接收计算节点发送的合并任务包括:
合并节点通过服务化接口接收所述计算节点发送的合并任务,其中,所述服务化接口包括注册合并服务的属性接口,启动合并服务的接口,获取合并服务的结果接口以及元数据接口中的一种或者多种。
在一些可能的设计中,所述增量元数据文件记载了所述合并任务执行之前,需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个;
所述更新元数据文件记载了所述合并任务执行之后,合并后的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述合并后的持久化数据文件的每个持久化数据文件所属的层,所述合并后的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述合并后的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
第二方面,提供了一种合并处理方法,应用于合并处理系统,所述合并处理系统包括:相互连接的合并节点、计算节点以及存储系统,
所述计算节点向合并节点发送合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示需要被合并的数据文件;
所述合并节点根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
所述合并节点对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述合并节点将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述合并节点将所述更新元数据文件发送给所述计算节点;
所述计算节点根据所述更新元数据文件读写所述存储系统中的所述合并结果。
在一些可能的设计中,所述方法还包括:
所述计算节点从所述存储系统中获取原始元数据文件,根据所述指示信息从所述原始元数据文件中获取得到所述增量元数据文件,其中,所述原始元数据文件记载了增删的持久化数据文件文件名列表,所述存储系统中的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述存储系统中的持久化数据文件中的每个持久化数据文件所属的层,所述存储系统中的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述存储系统中的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
在一些可能的设计中,在合并节点执行所述合并任务,以生成合并结果以及更新元数据文件之前,所述方法还包括:
合并节点根据调度策略确定所述合并任务的执行顺序;
合并节点执行所述合并任务,以生成合并结果以及更新元数据文件,包括:
合并节点根据所述执行顺执行所述合并任务,以生成所述合并结果以及所述更新元数据文件。
在一些可能的设计中,所述调度策略是根据所述合并任务涉及的键值KV数据的冷热程度、所述计算节点的负载情况、所述合并任务涉及的KV数据所需要的空间大小以及与所述计算节点的联动策略情况中的一种或者多种确定的。
在一些可能的设计中,所述计算节点向合并节点发送合并任务,包括:
所述计算节点通过服务化接口向所述合并节点发送所述合并任务,其中,所述服务化接口包括注册合并服务的属性接口,启动合并服务的接口,获取合并服务的结果接口以及元数据接口中的一种或者多种。
在一些可能的设计中,所述增量元数据文件记载了所述合并任务执行之前,需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个;
所述更新元数据文件记载了所述合并任务执行之后,合并后的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述合并后的持久化数据文件的每个持久化数据文件所属的层,所述合并后的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述合并后的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
第三方面,提供了一种合并节点,其特征在于,包括接收模块、获取模块、合并模块、存储模块以及发送模块,
所述接收模块用于接收计算节点发送的合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示需要被合并的数据文件;
所述获取模块用于根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
所述合并模块用于对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述存储模块用于将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述发送模块用于将所述更新元数据文件发送给所述计算节点,以使得所述计算节点根据所述更新元数据文件读写所述合并结果。
在一些可能的设计中,所述获取模块还用于从所述存储系统中获取原始元数据文件,根据所述指示信息从原始元数据文件中获取得到所述增量元数据文件,其中,所述原始元数据文件记载了增删的持久化数据文件文件名列表,所述存储系统中的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述存储系统中的持久化数据文件中的每个持久化数据文件所属的层,所述存储系统中的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述存储系统中的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
在一些可能的设计中,所述合并模块还用于根据调度策略确定所述合并任务的执行顺序;并根据所述执行顺执行所述合并任务,以生成所述合并结果以及所述更新元数据文件。
在一些可能的设计中,所述调度策略是根据所述合并任务涉及的键值KV数据的冷热程度、所述计算节点的负载情况、所述合并任务涉及的KV数据所需要的空间大小以及与所述计算节点的联动策略情况中的一种或者多种确定的。
在一些可能的设计中,所述发送模块还用于通过服务化接口接收所述计算节点发送的合并任务,其中,所述服务化接口包括注册合并服务的属性接口,启动合并服务的接口,获取合并服务的结果接口以及元数据接口中的一种或者多种。
在一些可能的设计中,所述增量元数据文件记载了所述合并任务执行之前,需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个;
所述更新元数据文件记载了所述合并任务执行之后,合并后的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述合并后的持久化数据文件的每个持久化数据文件所属的层,所述合并后的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述合并后的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
第四方面提供了一种合并处理系统,包括:相互连接的合并节点、计算节点以及存储系统,
所述计算节点用于向合并节点发送合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示需要被合并的数据文件;
所述合并节点用于根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
所述合并节点用于对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述合并节点用于将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述合并节点用于将所述更新元数据文件发送给所述计算节点;
所述计算节点用于根据所述更新元数据文件读写所述存储系统中的所述合并结果。
在一些可能的设计中,所述计算节点用于从所述存储系统中获取原始元数据文件,根据所述指示信息从所述原始元数据文件中获取得到所述增量元数据文件,其中,所述原始元数据文件记载了增删的持久化数据文件文件名列表,所述存储系统中的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述存储系统中的持久化数据文件中的每个持久化数据文件所属的层,所述存储系统中的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述存储系统中的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
在一些可能的设计中,合并节点用于根据调度策略确定所述合并任务的执行顺序;合并节点用于根据所述执行顺执行所述合并任务,以生成所述合并结果以及所述更新元数据文件。
在一些可能的设计中,所述调度策略是根据所述合并任务涉及的键值KV数据的冷热程度、所述计算节点的负载情况、所述合并任务涉及的KV数据所需要的空间大小以及与所述计算节点的联动策略情况中的一种或者多种确定的。
在一些可能的设计中,所述计算节点用于通过服务化接口向所述合并节点发送所述合并任务,其中,所述服务化接口包括注册合并服务的属性接口,启动合并服务的接口,获取合并服务的结果接口以及元数据接口中的一种或者多种。
在一些可能的设计中,所述增量元数据文件记载了所述合并任务执行之前,需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个;
所述更新元数据文件记载了所述合并任务执行之后,合并后的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述合并后的持久化数据文件的每个持久化数据文件所属的层,所述合并后的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述合并后的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
第四方面,提供了一种非瞬态可读存储介质,包括指令,当所述指令在合并节点上运行时,使得所述合并节点执行如第一方面任一项所述的方法。
第五方面,提供了一种程序产品,当所述程序产品被合并节点读取并执行时,如第一方面任一项所述的方法将被合并节点执行。
上述方案中,合并节点接收到计算节点发送的指示信息以及增量元数据文件,从存储系统中获取需要被合并的数据文件,并在合并完成后,将更新元数据文件发送给计算节点,从而使得计算节点根据所述更新元数据文件读写所述合并结果。由此可见,当计算节点将合并任务发送给合并节点之后,合并节点自行从存储设备获取需要合并的数据文件,并自行进行合并,无需计算节点介入,从而将前端业务和后端业务进行分离,从而提高用户体验。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请涉及的一种键值对存储数据库的示意图;
图2是本申请涉及的第一种合并处理系统的结构示意图;
图3是本申请涉及的第一种合并卸载方法的流程图;
图4是本申请提出的第二种合并处理系统的示意图;
图5是本申请涉及的第二种合并卸载方法的流程图;
图6是本申请提出的第三种合并处理系统的示意图;
图7是本申请涉及的第三种合并卸载方法的流程图;
图8是本申请提出的第四种合并处理系统的示意图;
图9是本申请提出的一种合并节点的结构示意图;
图10是本申请提出的另一种合并节点的结构示意图。
具体实施方式
参见图1,图1是本申请涉及的一种键值对存储数据库的示意图。本实施方式的键值对存储(Key-value,KV)数据库包括内存部分和外部存储部分两大部分。
内存部分中包括可读写表格以及不可写表格。其中,可读写表格为供用户读取或者写入键值数据的表格,不可写表格是对可读写表格冷冻后得到的表格。这里,可读写表格以及不可写表格均为内存中的数据结构。可读写表格是允许写入操作和读取操作的,但是,不可写表格是只允许进行读取操作,不允许进行写入操作的。其中,可读写表格在H基本数据库(HBASE)中可以被称为内存存储(Memstore),在库读(Kudu)数据库中可以被称为内存行设置(MemRowSets),在卡桑德拉(Cassandra)数据库中可以被称为内存表(Memtable)等等。不可写表格在H基本数据库(HBASE)中可以被称为不可写内存存储(immemstore),在库读(Kudu)数据库中可以被称为不可写内存行设置(imMemRowSets),在卡桑德拉(Cassandra)数据库中可以被称为不可写内存表(imMemtable)等等。
外部存储部分可以包括多个持久化数据文件。这里,持久化数据文件为外部存储中的数据结构。其中,持久化数据文件在H基本数据库(HBASE)中可以被称为H文件(HFile),在库读(Kudu)数据库中可以被称为盘行设置(DiskRowSets),在卡桑德拉(Cassandra)数据库中可以被称为有组织字符串表格(sorted string table,SSTable)等等。以持久化数据文件为SSTable为例,外部存储部分中的多个SSTable可以被分成多个层级,以图1所示为例,外部存储部分中的SSTable可以被分成三个层级,其中,第一层可以包括2个SSTable,即,图1中的SST11以及SST12,第二层可以包括3个SSTable,图1中的SST21、SST22以及SST23,第三层可以包括4个SSTable,即,图1中的SST31、SST32、SST33以及SST34。SSTable是用来存储一系列有序的键值对的,键和值都是任意长度的字节串,键值对根据配置的比较规则有序地写入到SSTable中,SSTable内部分成一系列的块(Block),同时具有必要的索引信息。这样就既可以顺序地读取内部键值记录,也能够根据某个键进行快速定位。此外,外部存储部分还存储了元数据文件,所述元数据文件采用追加写的方式不断记录更新的元数据,例如,文件的增删以及列簇的改变等。元数据文件可以在H基本数据库(HBASE)中可以被称为持久化的数据库状态改变的日志文件(manifest),在库读(Kudu)数据库中可以被称为库读持久化的数据库状态改变的日志文件(kudumanifest),在卡桑德拉(Cassandra)数据库中可以被称为轻量级持久化的数据库状态改变的日志文件(manifest.json)等等。以持久化数据文件为Manifest文件为例,Manifest文件中记录SSTable在不同层的分布,单个SSTable的最大key和最小key,以及其他一些必要的元数据。此外,外部存储部分还存储了日志(Log)文件以及当前(Current)文件等等。其中,Log文件用于在系统故障恢复时,能够保证不会丢失KV数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及下沉到外部存储部分的SSTable,也可以根据log文件恢复内存的Memtable数据结构内容,不会造成系统丢失数据。Current是一个文本文件,用于存放最近的Manifest文件的文件名。
在下面的介绍中,将以可读写表格为Memtable,不可写表格为imMemtable,持久化数据文件为SSTable为例进行详细的介绍。
继续以图1所示为例,当需要执行写入操作以将KV数据库写入KV数据库时,首先可以将KV数据写入Memtable,在Memtable的数据量达到满员的情况下,将可读写的Memtable转换为只读的immutable Memtable。
在满足第一触发条件的情况下,将immutable Memtable中的KV数据下沉为第一层的SSTable。在第一合并任务完成后,KV数据库生成第一Manifest文件增量,其中,第一Manifest文件增量记载了第一合并任务完成后,增量的SSTable在不同层的分布,单个SSTable的最大key和最小key,以及其他一些必要的元数据。
在满足第二触发条件的情况下,再将外部存储部分中的第一层的SSTable和外部存储部分中的第二层的SSTable进行第二合并(compaction)任务,以将外部存储部分中的第一层的SSTable中的KV数据下沉到第二层的SSTable。在第二合并任务完成后,KV数据库生成第二Manifest文件增量,其中,第二Manifest文件记载了第二合并任务完成后,增量的SSTable在不同层的分布,单个SSTable的最大key和最小key,以及其他一些必要的元数据。
在满足第三触发条件的情况下,再将外部存储部分中的第二层的SSTable和外部存储部分中的第三层的SSTable进行合并(compaction),以将外部存储部分中的第二层的SSTable中的KV数据下沉到第三层的SSTable。在第三合并任务完成后,KV数据库生成第三Manifest文件增量,其中,第三Manifest文件增量记载了第三合并任务完成后,增量的SSTable在不同层的分布,单个SSTable的最大key和最小key,以及其他一些必要的元数据。
其中,第一触发条件、第二触发条件以及第三触发条件均可以按照实际的需要进行设置,例如,第一触发条件可以是第一层SSTable的数据量达到100M,第二触发条件可以是第二层SSTable的数据量达到1G,第三触发条件可以是第三层SSTable的数据量达到10G,此处不作具体限定。
参见图2,图2是本申请涉及的第一种合并处理系统的结构示意图。如图2所示,本申请涉及的合并处理装置,包括:计算节点、存储系统以及合并节点。其中,计算节点和存储系统中设置有如图1所示的KV数据库。合并节点可以执行如图1所示的KV数据库中的合并任务。
计算节点包括处理器以及内存。其中,处理器可以是计算节点的运算和控制核心。内存的RAM中可以设置KV数据库的内存部分,例如,可读写表格以及不可写表格,也就是说,图2的内存中的可读写表格可以是图1的可读写表格,图2内存中的不可写表格可以是图1的不可写表格。此外,内存的RAM中可以设置有任务队列以及完成队列,其中,任务队列和完成队列在初始状态的时候均为空队列。
存储系统包括指除内存及缓存以外的储存器,此类存储器一般断电后仍然能保存数据。常见的外部存储有存储服务器、硬盘、软盘、光盘、U盘等等。存储节点中可以设置有KV数据库的外部存储部分,例如,多个持久化数据文件。也就是说,图2中的SSTable可以是图1中的SSTable。并且,图2中的SSTable也采用如图1中的SSTable一样的层级结构。
合并节点可以是异构计算节点,例如,特殊应用专用集成电路(ApplicationSpecific Integrated Circuit)或者现场可编程门阵列(Field Programmable GateArray,FPGA)。也就是说,计算节点和合并节点构成了异构计算体系。计算节点的处理器为通用处理器,例如CPU,偏重支持控制流数据,CPU中每个物理核中大部分的硬件资源被做成了控制电路和缓存,用来提高指令兼容性和效率,只有小部分是真正用来做计算的(ALU),因此,尽管CPU能兼容大量指令,但是实际的计算效率并不高。合并节点不需要复杂的指令系统,专注于计算,因此大大提高了计算效率。
可以理解,图2中的读写表格、不可写表格以及SSTable之间的关系可以类比图1中的读写表格、不可写表格以及SSTable之间的关系,此处不再进行详细描述。
请结合图2以及图3,图3是本申请涉及的第一种合并卸载方法的流程图。本申请涉及的合并卸载方法可以利用图2所示的合并处理系统完成图1所述示例中的SSTable的合并任务,所述方法包括如下步骤:
S101:存储节点将需要被合并的SSTable发送给计算节点的处理器。相应地,计算节点的处理器接收存储节点发送的需要被合并的SSTable。
S102:计算节点的处理器将需要被合并的SSTable拆分为多个合并任务,并压入处理器的内存中的任务队列中。
S103:计算节点在确定合并节点可用的情况下,从任务队列中获取合并任务,并将合并任务分配给合并节点。
S104:合并节点执行合并任务,从而得到合并结果。
S105:合并节点将合并结果发送给计算节点的内存中的完成队列。相应地,计算节点的内存中的完成队列接收合并节点发送的合并结果。
S106:计算节点的内存将合并结果存储到存储节点中。
需要说明的是,如图2所示,计算节点的处理器除了用于处理合并业务之外,还用于处理如图2左上角的前端业务。其中,前端业务可以是大数据业务、人工智能业务、网页业务、视频业务等等,此处不一一列举。
上述方案中,计算节点的处理器将SSTable的合并卸载到合并节点中执行,提高了合并的效率。但是,上述方案中前端业务和合并业务共用相同的处理器以及内存等等,换句话来说,前端业务和合并业务是混合到一起的。举个例子来说,前端业务需要使用处理器进行处理,合并业务也需要使用处理器对SSTable进行拆分,前端业务需要使用内存进行存储,合并业务也需要使用内存存储合并任务以及合并结果,因此,当合并业务增加时,会导致处理器以及内存被合并业务占用,从而导致前端业务没有被及时处理,影响用户体验。
为了解决上述问题,本申请提出了一种合并处理方法以及系统,能够将前端业务和合并业务进行分离,从而提高用户体验。
参见图4,图4是本申请提出的第二种合并处理系统的示意图。本实施方式的合并处理系统包括:计算节点、存储系统以及合并节点。其中,计算节点和存储系统中设置有如图1所示的KV数据库。合并节点可以执行如图1所示的KV数据库中的合并任务。
计算节点包括第一处理器以及内存。其中,第一处理器可以是计算节点的运算和控制核心,包括运算逻辑部件、寄存器部件和控制部件等。运算逻辑部件主要能够进行相关的逻辑运算,如:可以执行移位操作以及逻辑操作,除此之外还可以执行定点或浮点算术运算操作以及地址运算和转换等命令,是一种多功能的运算单元。寄存器部件是用来暂存指令、数据和地址的。控制部件则是主要用来对指令进行分析并且能够发出相应的控制信号。内存内存又称主存,是第一处理器(CPU)能直接寻址的存储空间,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。RAM能够与第一处理器直接的进行数据的交换,对于RAM可以随时的进行读写,而且这个过程的速度很快。内存的RAM中可以设置KV数据库的内存部分,例如,可读写表格以及不可写表格,也就是说,图2的内存中的可读写表格可以是图1的可读写表格,图2内存中的不可写表格可以是图1的不可写表格。此外,内存的RAM中可以设置有合并节点的客户端。该客户端能够提供触发合并任务、元数据托管、定制合并策略以及更新数据文件的功能。
存储系统包括指除内存及缓存以外的储存器,此类存储器一般断电后仍然能保存数据。常见的外部存储有存储服务器、硬盘、软盘、光盘、U盘等等。存储系统可以是单个存储节点,也可以是多个存储节点组成的分布式存储系统。存储系统中可以设置有KV数据库的外部存储部分,例如,多个持久化数据文件。也就是说,图4中的SSTable可以是图1中的SSTable。并且,图4中的SSTable也采用如图1中的SSTable一样的层级结构。
合并节点可以是异构计算节点,例如,特殊应用专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)或者现场可编程门阵列(Field Programmable GateArray,FPGA)。也就是说,计算节点和合并节点构成了异构计算体系。计算节点的第一处理器为通用处理器,例如CPU,偏重支持控制流数据,第一处理器中每个物理核中大部分的硬件资源被做成了控制电路和缓存,用来提高指令兼容性和效率,只有小部分是真正用来做计算的(ALU),因此,尽管第一处理器能兼容大量指令,但是实际的计算效率并不高。合并节点不需要复杂的指令系统,专注于计算,因此大大提高了计算效率。在一具体的实施方式中,合并节点可以设置有任务队列、第二处理器、完成队列以及线程池。其中,任务队列用于存储计算节点产生的合并任务。第二处理器用于调用线程池中的线程执行存储在任务队列中的合并任务。完成队列用于存储第二处理器执行合并任务后所产生Manifest文件的增量。这里,任务队列和完成队列在初始状态可以是空队列。
请结合图4以及图5,图5是本申请涉及的第二种合并卸载方法的流程图。本申请涉及的合并卸载方法可以利用图4所示的合并处理系统完成图1所述示例中的SSTable的合并任务,所述方法包括如下步骤:
S201:计算节点通过客户端将合并任务发送给合并节点的任务队列。相应地,合并节点的任务队列接收计算节点通过客户端发送的合并任务。其中,所述合并任务包括指示信息以及增量元数据文件,所述指示信息用于指示需要被合并的数据文件,所述增量元数据文件记载了所述合并任务执行之前,需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。所述统计信息包括数据条数、删除的条数、文件大小等等中的一种或者多种。在一具体的实施例中,所述增量元数据文件可以是增量Manifest文件,所述增量Manifest文件记载了所述合并任务执行之前,需要执行合并的数据文件在不同层的分布,需要执行合并的数据文件中的每个数据文件的最大key和最小key值。数据文件包括不可写表格以及持久化数据文件。
在本申请具体的实施方式中,计算节点通过客户端将合并任务发送给合并节点的任务队列具体为:客户端在判断满足触发条件的情况下,计算节点通过客户端将合并任务发送给合并节点的任务队列。其中,触发条件可以是数据文件的使用空间超过预设大小,可以是数据文件的持续时间大于预设时间,可以是用户手动触发合并,可以是数据文件的数量超过预设数量等等,此处不作具体限定。举例说明,在合并是较小合并(minorcompaction)的情况下,触发条件可以是在调用put/delete应用程序接口(ApplicationProgramming Interface,API)时,发现memtable的使用空间超过预设大小了;或者,当前的immtable已经被下沉出去成为SSTtable。在合并是主要合并(minor compaction)的情况下,触发条件可以是通过调用CompactRange应用程序接口手动触发compaction;或者,在调用Get应用程序接口时,发现寻找的第一个SSTable的允许寻找次数(AllowedSeek)消耗完了,也就是查找第一SSTable的效率太低时;或者,第0层的SSTable超过预设数量;或者,第i(i>0)层的所有SSTable的占用空间超过预设大小。
在本申请具体的实施方式中,需要被合并的数据文件至少包括以下两种情况:(1)在合并是较小合并(minor compaction)的情况下,需要被合并的数据文件可以是immtableMemtable,在合并是主要合并(major compaction)的情况下,需要被合并的数据文件可以是第i层中的上层集合的SSTable以及第i+1层中的下层集合中的SSTable,其中,所述上层集合中的SSTable可以是根据估价函数对SSTable计算得到的。所述下层集合中的SSTable可以是和所述上层集合中的SSTable的键值具有重叠范围的第i+1层的集合。
在本申请具体的实施方式中,增量元数据文件可以这样得到的:计算节点从存储系统中获取原始元数据文件,然后,根据指示信息从原始元数据文件中获取与所述指示信息对应的增量元数据文件。以原始元数据文件为原始Manifest文件为例,原始Manifest文件可以是描述了整个存储系统中的SSTable在不同层的分布,以及,整个存储系统中的SSTable中的每个SSTable的最大key和最小key值。增量Manifest文件可以是描述了上层集合的SSTable以及下层集合中的SSTable在不同层的分布,以及上层集合的SSTable以及下层集合中的SSTable中的每个SSTable的最大key和最小key值。
S202:第二处理器调用线程池中的第一线程执行所述合并任务,以生成合并结果以及更新Manifest文件。
在本申请具体的实施方式中,在执行合并任务之前,第一线程根据所述合并任务从存储系统中获取需要被合并的数据文件,并将需要被合并的数据文件进行合并,以产生合并结果,其中,所述合并结果包括合并后的SSTable。
在本申请具体的实施方式中,第一线程可以是一个或者多个线程,也就是说,合并任务可以使用一个或者多个线程来完成。在一具体的实施方式中,第一线程的数量可以根据合并任务的优先级别确定的,例如,合并任务的优先级别越高,则第一线程的数量越多,相反,合并任务的优先级别越低,则第一线程的数量越少。此外,第一线程的数量也可以根据线程池中空闲的线程的数量确定的,例如,线程池中空闲的线程的数量越多,则第一线程的数量越多,相反,线程池中空闲的线程的数量越少,则第一线程的数量越少。当然,第一线程的数量还可以是根据线程调度策略确定的,其中,线程调度策略受合并任务的优先级别、线程池中空闲线程的数量等等因素综合决定。
在本申请具体的实施方式中,第一线程根据所述合并任务从存储系统中获取需要被合并的数据文件可以是:继续以图1为例,假设在合并是主要合并的情况下,需要被合并的数据文件是第1层的SST11,第2层的SST21以及SST22,则第一线程从存储系统中分别获取第1层的SST11,第2层的SST21以及SST22。
在本申请具体的实施方式中,第一线程将需要被合并的数据文件进行合并,以产生合并结果具体为:继续以上述例子为例,假设第一线程将第1层的SST11,第2层的SST21以及SST22进行合并,可以生成第2层的SSTable,例如,SST24、SST25以及SST26。也就是说,合并结果包括第2层的第2层的SSTable,例如,SST24、SST25以及SST26。
在本申请具体的实施方式中,在合并任务完成后,合并节点产生更新元数据文件。其中,所述更新元数据文件记载了所述合并任务执行之后,合并后的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述合并后的持久化数据文件的每个持久化数据文件所属的层,所述合并后的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述合并后的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。以更新元数据文件为更新Manifest文件为例,所述更新Manifest文件记载了所述合并任务执行之后,合并结果中的合并后的SSTable在不同层的分布,合并结果中的合并后的SSTable的最大key和最小key值。继续以上述例子为例,更新Manifest文件记载了SST24、SST25以及SST26在不同层的分布,以及,SST24、SST25以及SST26各自的的最大key和最小key值。
S203:合并节点的第一线程将合并结果以及更新元数据文件持久化到存储系统中。
在本申请具体的实施方式中,合并节点的第一线程将合并结果以及更新元数据文件持久化到存储系统中的方式与计算节点将计算节点执行合并任务之后,将合并结果以及更新元数据文件持久化到存储系统中的方式是相类似的,此处不在展开描述。
S204:合并节点将更新元数据文件保存到完成队列中。
S205:合并节点将完成队列中的更新元数据文件发送给计算节点。相应地,计算节点接收合并节点发送的完成队列中的更新元数据文件。
可以理解,上述步骤S205中合并节点将更新元数据文件发送给计算节点,在其他的实施例中,合并节点也可以先将更新元数据文件发送给存储系统,然后,计算节点再从存储系统中获取更新元数据文件,此处不作具体限定。
上述方案中,计算节点将合并任务发送给合并节点之后,合并节点只需通过指示信息以及增量元数据文件自行从存储系统中获取需要合并的数据文件,并进行合并处理从而获得合并结果以及更新元数据文件,并将合并结果以及更新元数据文件持久化到存储系统中,之后再将更新元数据文件发送给计算节点,以使得计算节点可以根据更新元数据文件读写所述合并结果。
参见图6,图6是本申请提出的第三种合并处理系统的示意图。本实施方式的合并处理系统包括:计算节点集群、存储系统以及合并节点集群。其中,计算节点集群和存储系统集群中设置有一个或者多个如图1所示的KV数据库。合并节点可以执行一个或者多个如图1所示的KV数据库中的合并任务。
计算节点集群包括多个计算节点。多个计算节点中的每个计算节点均包括第一处理器以及内存。其中,第一处理器可以是计算节点的运算和控制核心,大致分为运算逻辑部件、寄存器部件和控制部件等。运算逻辑部件主要能够进行相关的逻辑运算,如:可以执行移位操作以及逻辑操作,除此之外还可以执行定点或浮点算术运算操作以及地址运算和转换等命令,是一种多功能的运算单元。寄存器部件是用来暂存指令、数据和地址的。控制部件则是主要用来对指令进行分析并且能够发出相应的控制信号。内存内存又称主存,是第一处理器(CPU)能直接寻址的存储空间,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。RAM能够与第一处理器直接的进行数据的交换,对于RAM可以随时的进行读写,而且这个过程的速度很快。内存的RAM中可以设置KV数据库的内存部分,例如,可读写表格以及不可写表格,也就是说,图2的内存中的可读写表格可以是图1的可读写表格,图2内存中的不可写表格可以是图1的不可写表格。可以理解,不同计算节点中的可读写表格以及不可写表格可以是属于不同的KV数据库,也可以是属于同一个KV数据库。此外,内存的RAM中可以设置有合并节点的客户端,该客户端能够提供触发合并任务、元数据托管、定制合并策略以及更新数据文件的功能。
存储系统包括指除内存及缓存以外的储存器,此类存储器一般断电后仍然能保存数据。常见的外部存储有存储服务器、硬盘、软盘、光盘、U盘等等。存储系统可以是单个存储节点,也可以是多个存储节点组成的分布式存储系统。存储系统中可以设置有KV数据库的外部存储部分,例如,多个持久化数据文件。也就是说,图2中的SSTable可以是图1中的SSTable。并且,图2中的SSTable也采用如图1中的SSTable一样的层级结构。
合并节点集群可以是物理服务器节点组成,也可以是逻辑的容器、虚拟机组成,也可以是FPGA以及ASIC,甚至其他介质等构成的集群。可以理解,计算节点集群和合并节点集群可以构成异构计算体系,也可以不构成异构计算体系。例如,计算节点集群可以是采用物理服务器节点构成的集群,合并节点集群可以是采用FPGA构成的集群,此时,计算节点集群和合并节点集群构成了异构计算体系。又例如,计算节点集群可以是采用物理服务器节点构成的集群,合并节点集群也可以是采用物理服务器节点构成的集群,此时,计算节点集群和合并节点集群没有构成了异构计算体系。此外,合并节点集群还可以利用云提供的服务部署在云上。在一具体的实施方式中,合并节点集群中的合并节点可以设置有策略单元、任务队列、第二处理器、完成队列、线程池以及元数据单元。其中,策略单元用于确定合并任务的调度策略。任务队列用于存储计算节点产生的合并任务。第二处理器用于调用线程池中的线程执行存储在任务队列中的合并任务。完成队列用于存储第二处理器执行合并任务后所产生的更新Manifest文件。这里,任务队列和完成队列在初始状态可以是空队列。元数据单元用于对更新Manifest文件进行托管。
请结合图6以及图7,图7是本申请涉及的第三种合并卸载方法的流程图。本申请涉及的合并卸载方法可以利用图6所示的合并处理系统完成图1所述示例中的SSTable的合并任务。假设计算节点集群包括计算节点1以及计算节点2,所述方法包括如下步骤:
S301:计算节点1通过客户端1将合并任务1发送给合并节点集群的任务队列。相应地,合并节点集群的任务队列接收计算节点1通过客户端1发送的合并任务1。其中,所述合并任务1包括指示信息1以及增量元数据文件1,所述指示信息1用于指示计算节点1中需要被合并的数据文件,所述增量元数据文件1记载了所述合并任务执行之前,计算节点1中需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,计算节点1中所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,计算节点1中所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,计算节点1中所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
S302:计算节点2通过客户端2将合并任务2发送给合并节点集群的任务队列。相应地,合并节点集群的任务队列接收计算节点2通过客户端2发送的合并任务2。其中,所述合并任务2包括指示信息2以及增量元数据文件2,所述指示信息2用于指示计算节点2中需要被合并的数据文件,所述增量元数据文件2记载了所述合并任务执行之前,计算节点2中需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,计算节点2中所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,计算节点2中所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,计算节点2中所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
S303:合并节点集群的策略单元根据调度策略确定合并任务1以及合并任务2的执行顺序。
在本申请具体的实施方式中,调度策略可以是根据合并任务涉及的KV数据的冷热程度、计算节点的负载情况、合并任务涉及的KV数据所需要的空间大小以及与计算节点的联动策略情况中的一个或者多个确定的。例如,合并任务1涉及的KV数据是热数据,合并任务2涉及的KV数据是冷数据,则策略单元可以确定合并任务1的执行顺序可以在合并任务2的执行顺序之前,其中,热数据为被频繁读写的数据,冷数据为较少被读写的数据;或者,计算节点1的负载比较重,计算节点2的负载比较轻,则策略单元可以确定合并任务1的执行顺序可以在合并任务2的执行顺序之前;合并任务1涉及的KV数据所需要的空间大小比较大,合并任务2涉及的KV数据所需要的空间大小比较小,则策略单元可以确定合并任务1的执行顺序可以在合并任务2的执行顺序之前;计算节点1的策略情况比较差,计算节点2的策略情况比较好,则策略单元可以确定合并任务1的执行顺序可以在合并任务2的执行顺序之前,其中,参数情况包括CPU速率、内存容量、带宽、读QPS、cache命中率等等。
S304:第二处理器调用线程池中的第一线程按照执行顺序执行合并任务1以生成合并结果1以及更新元数据文件1,以及,执行所述合并任务2以生成合并结果2以及更新元数据文件2。
S305:合并节点集群的第一线程将合并结果1以及更新元数据文件1,合并结果2以及更新元数据文件2持久化到存储系统中。
S306:合并节点集群将更新元数据文件1以及更新元数据文件2保存到完成队列中。
S307:合并节点集群的元数据单元将完成队列中的更新元数据文件1发送给计算节点1。相应地,计算节点1接收合并节点集群发送的完成队列中的更新元数据文件1。
S308:合并节点集群的元数据单元将完成队列中的更新元数据文件2发送给计算节点2。相应地,计算节点2接收合并节点集群发送的完成队列中的更新元数据文件2。
可以理解,如图8所示,合并节点集群也可以采用服务化的方式部署,以通过服务化接口对外提供业务,以实现被不同服务共享使用,如MongoDB服务、Hbase服务等基于LSM的存储引擎的服务,也就是说,图6中的计算节点集群为服务下的计算节点集群。其中,所述服务化接口可以采用标准的http协议实现通信。所述服务通过服务化接口向合并节点集群注册策略、操作方式以及标示该服务的实例号、数据存储区域以及指定合并的属性(例如,优先级)等。在一具体的实施方式中,服务化接口包括:注册compaction服务的属性接口,启动Compaction服务的接口,获取Compaction服务的结果接口以及元数据接口中的一种或者多种。其中,注册compaction服务的属性接口包括不限于如下示意的接口:RegistrateCompactionAttributes():该接口注册Compaction需要的各种属性包括但不限于compaction的策略、compaction的合并方法、compaction的优先级、compaction的输入数据和输出数据存储地址、服务化实例ID等。启动Compaction服务的接口包括不限于如下示意的接口:StartCompactionService():该接口制定相关的属性,启动一个服务。获取Compaction服务的结果接口包括不限于如下示意的接口:GetCompactionResult():该接口用于获取指定的compaction服务的执行状态和结果,其中可以包含compaction执行完成的数据以及数据的元数据信息。元数据接口可以包含如下接口:GetMetaInfo():获取指定服务的对应的元数据信息;UpdateMetaInfo():更新相关元数据信息;DeleteMetaInfo():删除相关元数据信息。
参见图9,图9是本申请提供的一种合并节点的结构示意图。本实施方式的合并节点包括接收模块110、获取模块120、合并模块130、存储模块140以及发送模块150。
所述接收模块110用于接收计算节点发送的合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示需要被合并的数据文件;
所述获取模块120用于根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
所述合并模块130用于对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述存储模块140用于将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述发送模块150用于将所述更新元数据文件发送给所述计算节点,以使得所述计算节点根据所述更新元数据文件读写所述合并结果。
上述合并节点可以完成图5以及图7所示的合并卸载方法中合并节点所执行的步骤,具体参见图5以及图7以及相关描述,此处不再展开描述。
本申请还提供了一种合并处理系统,所述合并处理系统包括计算节点、合并节点以及存储系统,其中,所述计算节点、合并节点以及存储系统之间通过网络相互连接,所述网络可以是有线网络,也可以是无线网络。本申请还提供了另一种合并处理系统,所述合并处理系统包括计算节点集群、合并节点集群以及存储系统,其中,所述计算节点集群、合并节点集群以及存储系统之间通过网络相互连接,所述计算节点集群可以包括一个或者多个计算节点,所述合并节点可以包括一个或者多个合并节点,所述网络可以是有线网络,也可以是无线网络。
参见图10,合并节点210可以包括通常包括主处理器210、主存储器220、智能网卡230以及总线240。
主处理器210可以是一个或者多个通用处理器,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括中央处理器(Central Processing Unit,CPU)、微处理器、微控制器、主处理器、控制器以及专用集成电路(Application Specific IntegratedCircuit,ASIC)等等。主处理器210执行各种类型的数字存储指令,例如存储在主存储器220中的软件或者固件程序。在一具体的实施例中,主处理器210可以是x86处理器等等。主处理器210通过物理接口将命令发送给主存储器220,以完成存储相关的任务,例如,主处理器210可以提供的命令包括读取命令、写入命令、复制命令以及擦除命令等等。所述命令可以指定与主存储器220的特定页和块有关的操作。主处理器210可以同时运行多个线程。
主存储器220可以包括是随机存取存储器(Random Access Memory,RAM)、快闪存储器(FlashMemory)等,也可以是RAM,只读存储器(Read-OnlyMemory,ROM)或者硬盘(HardDisk Drive,HDD)或固态硬盘(Solid-StateDrive,SSD)。其中,RAM中可以设置任务队列、完成队列以及包含多个线程的线程池。
智能网卡230还被称为网络接口控制器、网络接口卡或者局域网(Local AreaNetwork,LAN)适配器。每块智能网卡630都有一个唯一的MAC地址,是智能网卡230厂家在生产时烧入只读存储芯片中的。智能网卡230包括辅处理器231、辅存储器232以及收发器233。辅处理器231与主处理器220相类似,但是,辅存储器232的性能要求可以低于主处理器210的性能要求。在一具体的实施例中,辅存储器232可以是ARM处理器等等。辅存储器232也可以是快闪存储器、HDD或者SDD,辅存储器232的存储容量可以小于主存储器220的存储容量。收发器233可以用于接收和发送报文,并将接收到的报文上传给辅存储器232进行处理。智能网卡230还可以包括多个端口,端口可以是粗缆接口、细缆接口和双绞线接口三种接口类型中的任意一种或者多种。
智能网卡230用于接收计算节点发送的合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示需要被合并的数据文件;
主处理器210用于根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
主处理器210对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
智能网卡230用于将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
智能网卡230用于将所述更新元数据文件发送给所述计算节点,以使得所述计算节点根据所述更新元数据文件读写所述合并结果。
上述合并节点可以完成图5以及图7所示的合并卸载方法中合并节点所执行的步骤,具体参见图5以及图7以及相关描述,此处不再展开描述。
上述方案中,合并节点接收到计算节点发送的指示信息以及增量元数据文件,从存储系统中获取需要被合并的数据文件,并在合并完成后,将更新元数据文件发送给计算节点,从而使得计算节点根据所述更新元数据文件读写所述合并结果。由此可见,当计算节点将合并任务发送给合并节点之后,合并节点自行从存储设备获取需要合并的数据文件,并自行进行合并,无需计算节点介入,从而将前端业务和后端业务进行分离,从而提高用户体验。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD)、或者半导体介质。
Claims (15)
1.一种合并处理方法,其特征在于,包括:
合并节点接收计算节点发送的合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示数据库中需要被合并的数据文件,所述增量元数据文件是从存储系统中的原始元数据文件中获取得到;
所述合并节点根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
所述合并节点对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述合并节点将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述合并节点将所述更新元数据文件发送给所述计算节点,以使得所述计算节点根据所述更新元数据文件读写所述合并结果,其中,所述计算节点和所述存储系统中设置有所述数据库。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述计算节点从所述存储系统中获取所述原始元数据文件,根据所述指示信息从原始元数据文件中获取得到所述增量元数据文件,其中,所述原始元数据文件记载了增删的持久化数据文件文件名列表,所述存储系统中的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述存储系统中的持久化数据文件中的每个持久化数据文件所属的层,所述存储系统中的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述存储系统中的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
3.根据权利要求1或2所述的方法,其特征在于,在合并节点执行所述合并任务,以生成合并结果以及更新元数据文件之前,所述方法还包括:
所述合并节点根据调度策略确定所述合并任务的执行顺序;
所述合并节点执行所述合并任务,以生成合并结果以及更新元数据文件,包括:
所述合并节点根据所述执行顺序执行所述合并任务,以生成所述合并结果以及所述更新元数据文件。
4.根据权利要求3所述的方法,其特征在于,所述调度策略是根据所述合并任务涉及的键值KV数据的冷热程度、所述计算节点的负载情况、所述合并任务涉及的KV数据所需要的空间大小以及与所述计算节点的联动策略情况中的一种或者多种确定的。
5.根据权利要求1或2所述的方法,其特征在于,合并节点接收计算节点发送的合并任务包括:
合并节点通过服务化接口接收所述计算节点发送的合并任务,其中,所述服务化接口包括注册合并服务的属性接口,启动合并服务的接口,获取合并服务的结果接口以及元数据接口中的一种或者多种。
6.根据权利要求1或2所述的方法,其特征在于,
所述增量元数据文件记载了所述合并任务执行之前,需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个;
所述更新元数据文件记载了所述合并任务执行之后,合并后的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述合并后的持久化数据文件的每个持久化数据文件所属的层,所述合并后的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述合并后的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
7.一种合并处理方法,其特征在于,应用于合并处理系统,所述合并处理系统包括:相互连接的合并节点、计算节点以及存储系统,
所述计算节点向合并节点发送合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示数据库中需要被合并的数据文件,所述增量元数据文件是从存储系统中的原始元数据文件中获取得到;
所述合并节点根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件;
所述合并节点对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述合并节点将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述合并节点将所述更新元数据文件发送给所述计算节点;
所述计算节点根据所述更新元数据文件读写所述存储系统中的所述合并结果,其中,所述计算节点和所述存储系统中设置有所述数据库。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述计算节点从所述存储系统中获取所述原始元数据文件,根据所述指示信息从所述原始元数据文件中获取得到所述增量元数据文件,其中,所述原始元数据文件记载了增删的持久化数据文件文件名列表,所述存储系统中的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述存储系统中的持久化数据文件中的每个持久化数据文件所属的层,所述存储系统中的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述存储系统中的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
9.根据权利要求7或8所述的方法,其特征在于,在合并节点执行所述合并任务,以生成合并结果以及更新元数据文件之前,所述方法还包括:
合并节点根据调度策略确定所述合并任务的执行顺序;
合并节点执行所述合并任务,以生成合并结果以及更新元数据文件,包括:
合并节点根据所述执行顺序执行所述合并任务,以生成所述合并结果以及所述更新元数据文件。
10.根据权利要求9所述的方法,其特征在于,所述调度策略是根据所述合并任务涉及的键值KV数据的冷热程度、所述计算节点的负载情况、所述合并任务涉及的KV数据所需要的空间大小以及与所述计算节点的联动策略情况中的一种或者多种确定的。
11.根据权利要求7或8所述的方法,其特征在于,所述计算节点向合并节点发送合并任务,包括:
所述计算节点通过服务化接口向所述合并节点发送所述合并任务,其中,所述服务化接口包括注册合并服务的属性接口,启动合并服务的接口,获取合并服务的结果接口以及元数据接口中的一种或者多种。
12.根据权利要求7或8所述的方法,其特征在于,
所述增量元数据文件记载了所述合并任务执行之前,需要被合并的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述需要被合并的持久化数据文件的每个持久化数据文件所属的层,所述需要被合并的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述需要被合并的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个;
所述更新元数据文件记载了所述合并任务执行之后,合并后的持久化数据文件中的每个持久化数据文件的最大键值和最小键值,所述合并后的持久化数据文件的每个持久化数据文件所属的层,所述合并后的持久化数据文件中的每个持久化数据文件的大小序列号,以及,所述合并后的持久化数据文件中的每个持久化数据文件的文件的统计信息中的一个或者多个。
13.一种合并节点,其特征在于,包括接收模块、获取模块、合并模块、存储模块以及发送模块,
所述接收模块用于接收计算节点发送的合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示数据库中需要被合并的数据文件;
所述获取模块用于根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件,所述增量元数据文件是从存储系统中的原始元数据文件中获取得到;
所述合并模块用于对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述存储模块用于将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述发送模块用于将所述更新元数据文件发送给所述计算节点,以使得所述计算节点根据所述更新元数据文件读写所述合并结果,其中,所述计算节点和所述存储系统中设置有所述数据库。
14.一种合并处理系统,其特征在于,包括:相互连接的合并节点、计算节点以及存储系统,
所述计算节点用于向合并节点发送合并任务,其中,所述合并任务包括指示信息以及增量元数据文件,其中,所述指示信息用于指示数据库中需要被合并的数据文件;
所述合并节点用于根据所述指示信息以及所述增量元数据文件从存储系统中获取所述需要被合并的数据文件,所述数据文件包括不可写表格以及持久化数据文件,所述增量元数据文件是从存储系统中的原始元数据文件中获取得到;
所述合并节点用于对所述需要被合并的数据文件执行所述合并任务,以生成合并结果以及更新元数据文件,其中,所述合并结果包括合并后的持久化数据文件;
所述合并节点用于将所述合并结果以及所述更新元数据文件存储到所述存储系统中;
所述合并节点用于将所述更新元数据文件发送给所述计算节点;
所述计算节点用于根据所述更新元数据文件读写所述存储系统中的所述合并结果,其中,所述计算节点和所述存储系统中设置有所述数据库。
15.一种非瞬态可读存储介质,包括指令,当所述指令在合并节点上运行时,使得所述合并节点执行如权利要求1至6任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911019899.0A CN112711564B (zh) | 2019-10-24 | 2019-10-24 | 合并处理方法以及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911019899.0A CN112711564B (zh) | 2019-10-24 | 2019-10-24 | 合并处理方法以及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112711564A CN112711564A (zh) | 2021-04-27 |
CN112711564B true CN112711564B (zh) | 2024-04-09 |
Family
ID=75540456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911019899.0A Active CN112711564B (zh) | 2019-10-24 | 2019-10-24 | 合并处理方法以及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112711564B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342274B (zh) * | 2021-06-10 | 2024-01-30 | 北京火山引擎科技有限公司 | 一种数据处理方法及装置 |
CN113950145B (zh) * | 2021-12-20 | 2022-03-08 | 支付宝(杭州)信息技术有限公司 | 数据处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1976283A (zh) * | 2005-12-01 | 2007-06-06 | 国际商业机器公司 | 合并关于备份存储装置中的文件的元数据的系统和方法 |
CN103744617A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | 一种键-值存储系统中数据文件的合并压缩方法及装置 |
CN109271343A (zh) * | 2018-07-24 | 2019-01-25 | 华为技术有限公司 | 一种应用于键值存储系统中的数据合并方法和装置 |
-
2019
- 2019-10-24 CN CN201911019899.0A patent/CN112711564B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1976283A (zh) * | 2005-12-01 | 2007-06-06 | 国际商业机器公司 | 合并关于备份存储装置中的文件的元数据的系统和方法 |
CN103744617A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | 一种键-值存储系统中数据文件的合并压缩方法及装置 |
CN109271343A (zh) * | 2018-07-24 | 2019-01-25 | 华为技术有限公司 | 一种应用于键值存储系统中的数据合并方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112711564A (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11099937B2 (en) | Implementing clone snapshots in a distributed storage system | |
US20190213085A1 (en) | Implementing Fault Domain And Latency Requirements In A Virtualized Distributed Storage System | |
JP6025149B2 (ja) | データを管理するシステムおよび方法 | |
CN111309732B (zh) | 数据处理方法、装置、介质和计算设备 | |
US10901619B2 (en) | Selecting pages implementing leaf nodes and internal nodes of a data set index for reuse | |
US9635123B2 (en) | Computer system, and arrangement of data control method | |
US11245774B2 (en) | Cache storage for streaming data | |
CN113377868B (zh) | 一种基于分布式kv数据库的离线存储系统 | |
CN108804510A (zh) | 键值文件系统 | |
US9307024B2 (en) | Efficient storage of small random changes to data on disk | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN110109868B (zh) | 用于索引文件的方法、装置和计算机程序产品 | |
KR20190019805A (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
US10678817B2 (en) | Systems and methods of scalable distributed databases | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
CN112711564B (zh) | 合并处理方法以及相关设备 | |
JP2007058856A (ja) | キャッシュメモリをメモリブロックに分けてファイルのデータを保存するキャッシュ方法及びキャッシュシステム | |
CN117271531B (zh) | 一种数据存储方法、系统、设备及介质 | |
US10558636B2 (en) | Index page with latch-free access | |
CN117633105A (zh) | 基于时间分区索引的时序数据存储管理方法及系统 | |
US20220413940A1 (en) | Cluster computing system and operating method thereof | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
US10762139B1 (en) | Method and system for managing a document search index | |
US20220365905A1 (en) | Metadata processing method and apparatus, and a computer-readable storage medium | |
CN115904211A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |