一种数据存储的方法和装置与流程

文档序号:26138885发布日期:2021-08-03 14:22阅读:90来源:国知局
一种数据存储的方法和装置与流程

本发明涉及视联网技术领域,特别是涉及一种数据存储的方法和装置。



背景技术:

在视联网领域中,随着视联网接入终端的增加,视联网数据越来越庞大,从而视联网数据的存储和管理也越来越重要。但是,现有的数据存储方式存储性能低,难以满足视联网大数据的存储需求。



技术实现要素:

鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种数据存储的方法和装置,包括:

一种数据存储的方法,应用于目标块服务器,包括:

建立所述目标块服务器与多个存储节点的关联关系;

接收针对目标数据的存储请求;

将所述目标数据拆分为多个块数据;

分别将所述多个块数据存储至所目标块服务器关联的多个存储节点。

可选地,所述分别将所述多个块数据存储至所目标块服务器关联的多个存储节点,包括:

针对每个块数据,创建块对象,每个块对象对应一存储节点;

将所述块数据存储至所述块对象对应的存储节点。

可选地,所述将所述块数据存储至所述块对象对应的存储节点,包括:

将所述块数据存储至所述块对象对应的存储节点中第一空间;

在所述块对象对应的存储节点的内存占用率大于预设内存占用率时,将所述块数据存储至所述块对象对应的存储节点中第二空间;其中,所述第二空间的读写性能小于所述第一空间的读写性能。

可选地,每个块数据以文件的方式存储在所述存储节点,还包括:

在所述存储节点中存储的文件数量大于预设文件数量时,对所述存储节点中存储的文件进行删除和/或版本合并。

可选地,每个块数据以文件的方式存储在所述存储节点,还包括:

在所述存储节点中存在文件大小大于预设文件大小的目标文件时,建立至少两个块对象,并对所述目标文件进行分裂;

将分裂后的目标文件存储至所述至少两个块对象对应的存储节点。

可选地,还包括:

分别获取所述多个块数据的存储位置信息,并进行存储。

可选地,所述第一空间为内存空间,所述第二空间为存储空间。

一种数据存储的装置,应用于目标块服务器,所述装置包括:

关联关系建立模块,用于建立所述目标块服务器与多个存储节点的关联关系;

存储请求接收模块,用于接收针对目标数据的存储请求;

块数据拆分模块,用于将所述目标数据拆分为多个块数据;

块数据存储模块,用于分别将所述多个块数据存储至所目标块服务器关联的多个存储节点。

一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的数据存储的方法。

一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的数据存储的方法。

本发明实施例具有以下优点:

本发明实施例通过建立所述目标块服务器与多个存储节点的关联关系,接收针对目标数据的存储请求,将所述目标数据拆分为多个块数据,分别将所述多个块数据存储至所目标块服务器关联的多个存储节点,实现了将对目标数据拆分成块数据,分布式存储在目标存储节点上,解决了对视联网大数据的存储问题。

附图说明

为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1a是本发明一实施例提供的一种数据存储的方法的步骤流程图;

图1b是本发明一实施例提供的一种数据存储系统构建的示意图;

图1c是本发明一实施例提供的一种数据存储的流程图;

图2是本发明一实施例提供另一种数据存储的方法的步骤流程图;

图3是本发明一实施例提供又一种数据存储的方法的步骤流程图;

图4是本发明一实施例提供的一种数据存储的装置的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参照图1a,示出了本发明一实施例提供的一种数据处理的方法的步骤流程图,应用于目标块服务器,具体可以包括如下步骤:

步骤101,建立所述目标块服务器与多个存储节点的关联关系;

在视联网中,随着接入的视联网终端数量的增加,需要存储的视联网数据也越来越多,通过在视联网中创建多个用于存储视联网数据的一个或多个块服务器,每个块服务器可以与视联网终端连接(客户端),并且,每个块服务器可以对应有多个存储节点,块服务器可以负责将块数据分配到具体存储节点上进行存储。建立一个由客户端、块服务器、存储节点组成的视联网大数据存储架构。

用户可以通过视联网终端输入需要存储的视联网数据,并通过视联网终端访问块服务器中的负载均衡服务器,再由负载均衡服务器从而多个块服务器中确定一目标块服务器,目标块服务器可以实现对该视联网数据进行存储。

如图1b-1c所示,目标数据存储的具体流程如下

(1)当客户端需要存储数据时,用户可以通过客户端访问区服务器(块服务器中的负载均衡服务器)。

(2)区服务器分配区域地址(从多个块服务器中确定用于存储目标数据的目标块服务器)。

(3)客户端与目标块服务器连接,将目标数据传输至目标块服务器。

(4)块服务器可以确定目标数据的指定区域地址,将目标数据存储在指定区域地址。

针对步骤(4),在块服务器中,可以负责数据存储服务以及数据节点管理(即存储节点管理),其中,数据存储服务可以包括记录数据操作日志、记录数据存放位置等服务;数据节点管理可以包括,当新增数据节点时,可以向块服务器进行注册,当块服务器下线时,将块服务器对应的数据节点中的数据备份到另一个块服务器中。

在块服务器下可以有对应的多个数据节点(存储节点),块数据可以将数据存入具体的数据节点上,并可以从数据节点获取具体存储信息,当块服务器收到存储信息后,可以将存储信息记录在管理数据中,同时,可以将管理数据备份到备份数据中。

在实际存储过程中,在目标块服务器中,可以先创建目标块服务器与多个存储节点之间的关联关系,以便目标块服务器将从客户端接收的视联网数据存储在多个存储节点上。

步骤102,接收针对目标数据的存储请求;

在创建关联关系后,块服务器可以接收来自客户端目标数据,同时,块服务器也可以收到针对目标数据的存储请求。

步骤103,将所述目标数据拆分为多个块数据;

在接收到目标数据的存储请求后,当目标数据的数据量较大,按照完整数据存储可以会影响存储性能,从而,目标块服务器可以将目标数据拆分为多个块数据,并针对每个块数据分别进行存储,从而提高服务器的存储性能。

在一示例中,可以按照预设数据量将目标数据均分成多个相同大小的块数据,也可以按照目标数据中不同的数据属性(如,数据类型、数据来源等)对目标数据进行拆分。

步骤104,分别将所述多个块数据存储至所目标块服务器关联的多个存储节点。

在目标数据被拆分成多个块数据后,目标块服务器与多个存储节点关联,从而,目标块服务器可以将多个块数据分别存储至关联的多个存储节点上,实现了对目标数据的分布式存储,与现有技术中整块存储数据相比,将目标数据切块后分布式存储,增强了存储性能,从而可以满足视联网大数据存储要求。

在本发明一实施例中,所述方法包括:

分别获取所述多个块数据的存储位置信息,并进行存储。

在实际应用中,当块数据被存储后,存储节点可以将存储位置信息发送至块服务器器,从而块服务器可以获取多个块数据的存储位置信息,并将这些存储位置信息进行存储。

在本发明实施例中,通过建立所述目标块服务器与多个存储节点的关联关系,接收针对目标数据的存储请求,将所述目标数据拆分为多个块数据,分别将所述多个块数据存储至所目标块服务器关联的多个存储节点,实现了将对目标数据拆分成块数据,分布式存储在目标存储节点上,解决了对视联网大数据的存储问题。

参照图2,示出了本发明一实施例提供的另一种数据处理的方法的步骤流程图,应用于目标块服务器,具体可以包括如下步骤:

步骤201,建立所述目标块服务器与多个存储节点的关联关系;

在实际存储过程中,在目标块服务器中,可以先创建目标块服务器与多个存储节点之间的关联关系,以便目标块服务器将从客户端接收的视联网数据存储在多个存储节点上。

步骤202,接收针对目标数据的存储请求;

在创建关联关系后,块服务器可以接收来自客户端目标数据,同时,块服务器也可以收到针对目标数据的存储请求。

步骤203,将所述目标数据拆分为多个块数据;

在接收到目标数据的存储请求后,当目标数据的数据量较大,按照完整数据存储可以会影响存储性能,从而,目标块服务器可以将目标数据拆分为多个块数据,并针对每个块数据分别进行存储,从而提高服务器的存储性能。

步骤204,针对每个块数据,创建块对象,每个块对象对应一存储节点;

在将目标数据进行拆分后,可以得到多个块数据,从而,可以针对每个块数据创建块对象,而每个块对象可以对应一存储节点。

步骤205,将所述块数据存储至所述块对象对应的存储节点。

在创建块对象后,可以将块数据存储至所述块对象对应的存储节点。

在本发明一实施例中,所述将所述块数据存储至所述块对象对应的存储节点,包括:

将所述块数据存储至所述块对象对应的存储节点中第一空间;在所述块对象对应的存储节点的内存占用率大于预设内存占用率时,将所述块数据存储至所述块对象对应的存储节点中第二空间;其中,所述第二空间的读写性能小于所述第一空间的读写性能。

在本发明一实施例中,所述第一空间为内存空间,所述第二空间为存储空间。

在实际应用中,块对象在存储节点上可以具有两个存储空间,分别是第一空间和第二空间,其中,第二空间的读写性能小于第一空间的读写性能,例如,第一空间可以是内存空间,第二空间可以是存储空间。

在块数据进行存储时,可以将块数据存储在第一空间中,从而保证了存储的高性能。当在块对象对应的存储节点的内存占用率大于预设内存占用率时,即第一空间中占用率过高时,可以触发将块数据存储至第二空间中的操作。

在本发明实施例中,通过建立所述目标块服务器与多个存储节点的关联关系,接收针对目标数据的存储请求,将所述目标数据拆分为多个块数据,针对每个块数据,创建块对象,每个块对象对应一存储节点;将所述块数据存储至所述块对象对应的存储节点,实现了对视联网大数据进行存储。

参照图3,示出了本发明一实施例提供的又一种数据处理的方法的步骤流程图,应用于目标块服务器,具体可以包括如下步骤:

步骤301,建立所述目标块服务器与多个存储节点的关联关系;

在实际存储过程中,在目标块服务器中,可以先创建目标块服务器与多个存储节点之间的关联关系,以便目标块服务器将从客户端接收的视联网数据存储在多个存储节点上。

步骤302,接收针对目标数据的存储请求;

在创建关联关系后,块服务器可以接收来自客户端目标数据,同时,块服务器也可以收到针对目标数据的存储请求。

步骤303,将所述目标数据拆分为多个块数据;

在接收到目标数据的存储请求后,当目标数据的数据量较大,按照完整数据存储可以会影响存储性能,从而,目标块服务器可以将目标数据拆分为多个块数据,并针对每个块数据分别进行存储,从而提高服务器的存储性能。

步骤304,分别将所述多个块数据存储至所目标块服务器关联的多个存储节点;其中,每个块数据以文件的方式存储在所述存储节点。

在目标数据被拆分成多个块数据后,目标块服务器与多个存储节点关联,从而,目标块服务器可以将多个块数据分别存储至关联的多个存储节点上,实现了对目标数据的分布式存储,与现有技术中整块存储数据相比,将目标数据切块后分布式存储,增强了存储性能,从而可以满足视联网大数据存储要求。

步骤305,在所述存储节点中存储的文件数量大于预设文件数量时,对所述存储节点中存储的文件进行删除和/或版本合并。

在多个块数据存储在数据节点上后,用户还可以对目标数据进行修改操作,其中,修改操作可以包括写入新数据,删除数据或者更新数据等修改操作。

在进行修改操作过程中,可能会在存储节点上重新生成新的文件,在修改的过程也会对生成相应的操作日志,以及不同版本的目标数据,并将不同版本的目标数据以文件形式存储在存储节点上,从而,存储节点上可以包括多个与目标数据关联的文件。

当在存储节点上的文件数量越来越多,直到文件数量大于预设文件数量时,可以触发文件合并,从而可以对存储节点中存储的文件进行删除或者版本合并。

其中,对文件进行删除是指当用户在修改目标数据的过程中,可能对目标数据进行了删除操作,但是,在修改过程中,仅会生成删除操作对应的操作日志记录,实际上目标数据并没有直接被删除,直到文件数据大于预设文件数量时,块服务器才会依照操作日志记录对文件进行对应删除,此时,文件才真正被删除。

版本合并是指,在用户在修改目标数据的过程中,会对应生成多个版本的数据,从而,在存储节点上文件中可能会存储相同的数据,从而,文件数量比较多的时候可以对各个版本的数据进行合并,从而可以减少数据总量。

从而,在存储节点上可以只增加数据,而只有文件数量达到预设数量时可以将之前所有的更新和删除操作等按照操作日志实际进行的,从而用户的写操作只要进入内存中就可以立即返回,保证了i/o的高性能。

在本发明一实施例中,所述方法还包括:

在所述存储节点中存在文件大小大于预设文件大小的目标文件时,建立至少两个块对象,并对所述目标文件进行分裂;将分裂后的目标文件存储至所述至少两个块对象对应的存储节点。

在实际应用中,存储节点中的文件大小可以随着数据写入不断增加,存储节点上存在文件大小大于预设文件大小的目标文件时,可以建立至少两个块对象,并可以对目标文件进行分裂,在目标文件分裂后,可以将分裂后的目标文件分别存储在至少两个块对象所对应的存储节点,从而可以缓解存储节点的压力。

在本发明实施例中,通过建立所述目标块服务器与多个存储节点的关联关系,接收针对目标数据的存储请求,将所述目标数据拆分为多个块数据,分别将所述多个块数据存储至所目标块服务器关联的多个存储节点,在所述存储节点中存储的文件数量大于预设文件数量时,对所述存储节点中存储的文件进行删除和/或版本合并,实现了将对目标数据拆分成块数据,分布式存储在目标存储节点上,同时,用户的写操作只要进入内存中就可以立即返回,保证了i/o的高性能。

以下以在blockserver中目标数据的存储为例,对视联网数据的存储过程进行示例性说明:

当用户需要对目标数据进行写操作时,用户需要访问blockserver(即目标块服务器),blockserver可以存一个子表时,然后,对子表的每个列创建一个column实例,每个column实例都会有一个memcolumn和一个columnfile与之对应,每个columnfile都会对应一个slwfile,slwfile就是实际的存储文件。

同时,blockserver可以在将目标数据拆分成块数据,并针对每个块数据创建block对象,block对象与存储节点对应,block对象的存储包括memcolumn(对应第一空间)和columnfile(对应第二空间),其中,memcolumn是排序的内存空间。

存储过程:用户写入块数据首先会放在memcolumn,当memcolumn满了以后会触发写文件操作,将块数据保存成文件。

文件合并过程:当存储节点(数据节点)上的slwfile文件数量增长到一定阀值,就会触发合并(compact)操作,并将多个slwfile合并成一个slwfile,在合并过程中会进行版本合并和数据删除。因此,数据节点其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的读写操作只要进入内存中就可以立即返回,保证了i/o的高性能。

拆分过程:当存储节点(数据节点)上某个slwfile大小超过一定阈值后,会触发拆分(split)操作,同时,在blockserver上创建两个新的block对象,将slwfile进行拆分,并重新存储在新的block对象对应的数据节点上,使得原先1个block对象的压力得以分散到2个block对象上。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图4,示出了本发明一实施例提供的一种数据处理的装置的结构框图,应用于目标块服务器,具体可以包括如下模块:

关联关系建立模块401,用于建立所述目标块服务器与多个存储节点的关联关系;

存储请求接收模块402,用于接收针对目标数据的存储请求;

块数据拆分模块403,用于将所述目标数据拆分为多个块数据;

块数据存储模块404,用于分别将所述多个块数据存储至所目标块服务器关联的多个存储节点。

在本发明一实施例中,所述块数据存储模块404可以包括:

块对象创建子模块,用于针对每个块数据,创建块对象,每个块对象对应一存储节点;

块数据存储子模块,用于将所述块数据存储至所述块对象对应的存储节点。

在本发明一实施例中,块数据存储子模块可以包括:

第一空间存储单元,用于将所述块数据存储至所述块对象对应的存储节点中第一空间;

第二空间存储单元,用于在所述块对象对应的存储节点的内存占用率大于预设内存占用率时,将所述块数据存储至所述块对象对应的存储节点中第二空间;其中,所述第二空间的读写性能小于所述第一空间的读写性能。

在本发明一实施例中,每个块数据以文件的方式存储在所述存储节点,所述装置还可以包括:

删除/合并模块,用于在所述存储节点中存储的文件数量大于预设文件数量时,对所述存储节点中存储的文件进行删除和/或版本合并。

和/或,

目标文件分裂模块,用于在所述存储节点中存在文件大小大于预设文件大小的目标文件时,建立至少两个块对象,并对所述目标文件进行分裂;

目标文件存储模块,用于将分裂后的目标文件存储至所述至少两个块对象对应的存储节点。

在本发明一实施例中,所述装置还包括:

存储位置信息存储模块,用于分别获取所述多个块数据的存储位置信息,并进行存储。

在本发明一实施例中,所述第一空间为内存空间,所述第二空间为存储空间。

在本发明实施例中,通过建立所述目标块服务器与多个存储节点的关联关系,接收针对目标数据的存储请求,将所述目标数据拆分为多个块数据,分别将所述多个块数据存储至所目标块服务器关联的多个存储节点,实现了将对目标数据拆分成块数据,分布式存储在目标存储节点上,解决了对视联网大数据的存储问题。

本发明一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上数据存储的方法。

本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上数据存储的方法。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种数据存储的方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1