一种对象存储、读取方法、装置、及业务服务器与流程

文档序号:17398409发布日期:2019-04-13 01:00阅读:190来源:国知局
一种对象存储、读取方法、装置、及业务服务器与流程

本说明书实施例涉及数据处理技术领域,尤其涉及一种对象存储、读取方法、装置、及业务服务器。



背景技术:

在业务系统中,经常涉及超大对象的存储与读取。现有技术中,通常使用文件形式存储超大对象,文件形式的存储容量是无限大的,但是,若采用此形式存储超大对象,在后续查找超大对象的过程中,首先会查找每个文件逻辑块,而逻辑块是分散在物理块上,物理块又分散在不同扇区上,这也就需要逐层进行查找,才可查找到完整的对象,最后才能完成对象的读取。由此可见,使用文件形式存储超大对象的存取性能非常差。



技术实现要素:

针对上述技术问题,本说明书实施例提供一种对象存储、读取方法、装置、及业务服务器,技术方案如下:

根据本说明书实施例的第一方面,提供一种对象存储方法,所述方法包括:

对目标对象进行序列化处理,得到所述目标对象的序列化数据;

对所述序列化数据进行拆分处理;

基于拆分处理结果,确定所述序列化数据的多个数据分片,将所述多个数据分片存储至数据库中,并存储用于表示所述多个数据分片在所述数据库中存储位置的索引信息。

根据本说明书实施例的第二方面,提供一种对象读取方法,所述方法包括:

根据预先保存的索引信息在数据库中确定目标存储位置,所述索引信息用于表示多个数据分片在所述数据库中的存储位置;

基于所述目标存储位置,从所述数据库中读取数据分片;

对所读取到的数据分片进行合并处理;

对合并处理所得到的数据进行反序列化处理,得到目标对象。

根据本说明书实施例的第三方面,提供一种对象存储装置,所述装置包括:

序列化模块,用于对目标对象进行序列化处理,得到所述目标对象的序列化数据;

拆分模块,用于对所述序列化数据进行拆分处理;

存储模块,用于基于拆分处理结果,确定所述序列化数据的多个数据分片,将所述多个数据分片存储至数据库中,并存储用于表示所述多个数据分片在所述数据库中存储位置的索引信息。

根据本说明书实施例的第四方面,提供一种对象读取装置,所述装置包括:

确定模块,用于根据预先保存的索引信息在数据库中确定目标存储位置,所述索引信息用于表示多个数据分片在所述数据库中的存储位置;

读取模块,用于基于所述目标存储位置,从所述数据库中读取数据分片;

合并模块,用于对所读取到的数据分片进行合并处理;

反序列化模块,用于对合并处理所得到的数据进行反序列化处理,得到目标对象。

根据本说明书实施例的第五方面,提供一种业务服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本说明书实施例提供的对象存储方法。

根据本说明书实施例的第六方面,提供一种业务服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本说明书实施例提供的对象读取方法。

本说明书实施例所提供的技术方案,通过对目标对象进行序列化处理,得到目标对象的序列化数据,对该序列化数据进行拆分处理,基于拆分处理结果,确定序列化数据的多个数据分片,将多个数据分片存储至数据库中,并存储用于表示该多个数据分片在数据库中存储位置的索引信息,可以突破底层存储的限制,提高超大对象的存储性能。

本说明书实施例所提供的技术方案,通过根据预先保存的索引信息在数据库中确定目标存储位置,基于该目标存储位置,从数据库中读取数据分片,对所读取到的数据分片进行合并处理;对合并处理所得到的数据进行反序列化处理,得到目标对象,可以提高超大对象的读取性能。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。

此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本说明书一示例性实施例提供的一种对象存储方法的实施例流程图;

图2为本说明书一示例性实施例提供的一种对象读取方法的实施例流程图;

图3为本说明书一示例性实施例提供的一种对象存储装置的实施例框图;

图4为本说明书一示例性实施例提供的一种对象读取装置的实施例框图;

图5为本说明书实施例所提供的一种更为具体的业务服务器硬件结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

由于现有技术中,使用文件形式存储超大对象的存取性能非常差,因此,本说明书实施例提出一种对象存储方法和对象读取方法,以提高对象的存取性能。

首先说明,该对象存储方法和对象读取方法的实现基于hbase数据库,也即将对象存储至hbase数据中,后续,从hbase数据库中读取对象。如下,示出下述实施例分别对该对象存储方法和该对象读取方法进行说明:

首先,对对象存储方法进行说明:

请参见图1,为本说明书一示例性实施例提供的一种对象存储方法的实施例流程图,该方法可以包括以下步骤:

步骤102:对目标对象进行序列化处理,得到目标对象的序列化数据。

首先说明,在本说明书实施例中,为了描述方便,将待处理的对象称为目标对象。

为了使得目标对象可被持久化保存,可以对目标对象进行序列化处理,得到一组字节,该组字节即为目标对象的序列化数据。

其中,在对目标对象进行序列化处理时,可以采用json、kryo,或者jdkserialize等方式,本说明书实施例对此不做限制。

此外,在得到目标对象的序列化数据后,可以进一步对该序列化数据做压缩处理,后续则针对压缩处理后的序列化数据进行存储。通过该种处理,可以进一步降低待存储数据的数据量,提高数据的存取性能。

步骤104:对序列化数据进行拆分处理。

在一实施例中,可以直接对步骤102得到的序列化数据进行物理拆分处理,这里所说的“物理拆分处理”即指在系统内存中,将序列化数据拆分成多个数据分片,例如,假设序列化数据包括100个字节,则将该100个字节拆分为10个分组,每一分组包括10个字节,每一分组即为一个数据分片,得到10个数据分片。

在一实施例中,可以对步骤102得到的序列化数据进行逻辑拆分处理,这里所说的“逻辑拆分处理”即指在系统内存中,基于预设的拆分规则,获取序列化数据中的多个拆分位置,例如,假设序列化数据包括100个字节,预设的拆分规则为将序列化数据拆分为10个数据分片,每一数据分片包括10个字节,那么,所获取到的拆分位置包括:10、20、30、40、50、60、70、80、90,本领域技术人员可以理解的是,基于该9个拆分位置,可以将序列化数据拆分成10个数据分片,其中,1~10字节位置上的数据为一个数据分片,11~20字节位置上的数据为一个数据分片,依次类推,共10个数据分片。

由上述描述可见,在内存中对序列化数据进行物理拆分处理,会在内存中生成多个数据分片,从而占用内存,而在内存中对序列化数据进行逻辑拆分处理,仅涉及到多个拆分位置对内存的占用,从而,相较于对序列化数据进行物理拆分处理,对序列化数据进行逻辑拆分处理可以减少对象存储过程中,对内存的占用量,提升系统性能。

步骤106:基于拆分处理结果,确定序列化数据的多个数据分片,将该多个数据分片存储至数据库中,并存储用于表示多个数据分片在数据库中存储位置的索引信息。

在本说明书实施例中,若在步骤104中采用“物理拆分处理方式”,那么,在拆分处理后,可以直接得到多个数据分片,该多个数据分片被临时存放在内存中,在后续的存储过程中,则可以将内存中的多个数据分片存储至数据库中;若在步骤104中采用“逻辑拆分处理方式”,那么,在拆分处理后,可以基于获取到的拆分位置,在原本的序列化数据中确定多个数据分片,在后续的存储过程中,直接将确定出的数据分片存储至数据库中。

在一实施例中,基于hase数据库,可以将不同的数据分片分别存储至hbase数据库的不同行记录中,本领域技术人员可以理解的是,在hbase数据库中,一条行记录具有唯一的rowkey值。

基于此,在本说明书实施例中,还可以在hbase数据库中,例如hbase数据库的一条行记录中存储用于表示多个数据分片在hbase数据库中存储位置的索引信息,也即多个数据分片在hbase数据库中所在行记录的rowkey值。

在一实施例中,可以直接存储多个数据分片在hbase数据库中所在行记录的rowkey值,例如,存储的rowkey值包括:rowkey#01、rowkey#02、rowkey#03、……,rowkey#10。

在另一实施例中,还可以“间接”存储多个数据分片在hbase数据库中所在行记录的rowkey值,这里所说的“间接”存储是指,存储数据分片的数量,例如10个,存储rowkey值的前缀,例如“#”,存储rowkey值的起始序号,例如“01”。由此可见,通过“间接”存储多个数据分片在hbase数据库中所在行记录的rowkey值,可以进一步降低数据存储量。

本领域技术人员可以理解的是,通过存储上述索引信息,可用于后续对象的读取,至于对象的读取过程,可以参见下述图2所示实施例中的描述,在此先不做详述。

本说明书实施例所提供的技术方案,通过对目标对象进行序列化处理,得到目标对象的序列化数据,对该序列化数据进行拆分处理,基于拆分处理结果,确定序列化数据的多个数据分片,将多个数据分片存储至数据库中,并存储用于表示该多个数据分片在数据库中存储位置的索引信息,可以突破底层存储的限制,提高超大对象的存储性能。

其次,对对象读取方法进行说明:

请参见图2,为本说明书一示例性实施例提供的一种对象读取方法的实施例流程图,该对象读取方法在上述图1所示例的对象存储方法的基础上,可以包括以下步骤:

步骤202:根据预先保存的索引信息在数据库中确定目标存储位置,该索引信息用于表示多个数据分片分别在数据库中的存储位置。

由上述图1所示实施例中的描述可知,在存储对象的过程中,可以存储该对象的多个数据分片在数据库中存储位置的索引信息,那么,在读取对象的过程中,则可以首先根据预先保存的索引信息,在数据库中确定目标存储位置,例如确定目标rowkey值。

步骤204:基于目标存储位置,从数据库中读取数据分片。

在本步骤中,则可以基于步骤202中获取到的目标存储位置,从数据库中读取数据分片。

本领域技术人员可以理解的是,读取到的数据分片被临时存放在内存中。

步骤206:对所读取到的数据分片进行合并处理。

在一实施例中,可以对步骤204中读取到的数据分片进行物理合并处理,这里所说的“物理合并处理”即指在系统内存中,将多个数据分片进行拼接,得到完整的序列化数据,本领域技术人员可以理解的是,该完整的序列化数据也被临时存放在内存中。

在一实施例中,可以对步骤204中读取到的数据分片进行逻辑合并处理,这里所说的“逻辑合并处理”可以指,将所读取到的数据分片封装成输入流。本领域技术人员可以理解的是,输入流指能够读取一个字节序列的对象,当需要读取数据时,程序则可以从输入流读取数据源,由此可见,通过该种处理,则可以从逻辑上实现数据分片的合并。

由上述描述可见,在内存中对多个数据分片进行物理合并处理,会在内存中生成一个完整的序列化数据,从而占用内存,而在内存中对序列化数据进行逻辑合并处理,不涉及内存的占用,从而,相较于对多个数据分片进行物理合并处理,对多个数据分片进行逻辑合并处理可以减少对象读取过程中,对内存的占用量,提升系统性能。

步骤208:对合并处理所得到的数据进行反序列化处理,得到目标对象。

由于在对象存储过程中,存储的是对象的序列化数据,从而,在本步骤中,可以对合并处理所得到的序列化数据进行反序列化处理,得到目标对象。

此外,若在对象存储过程中,对序列化数据进行了压缩处理,那么,在本步骤中,则可以先对合并处理所得到的数据进行解压缩处理,继而再对解压缩处理后的数据进行反序列化处理,以得到目标对象。

此外,在对合并处理所得到的数据进行解压缩处理时,可优选采用流嵌套方式进行解压缩处理。

本说明书实施例所提供的技术方案,通过根据预先保存的索引信息在数据库中确定目标存储位置,基于该目标存储位置,从数据库中读取数据分片,对所读取到的数据分片进行合并处理;对合并处理所得到的数据进行反序列化处理,得到目标对象,可以提高超大对象的读取性能。

相应于上述图1所示例的方法实施例,本说明书实施例还提供一种对象存储装置,参见图3所示,为本说明书一示例性实施例提供的一种对象存储装置的实施例框图,该装置可以包括:序列化模块31、拆分模块32,以及存储模块33。

其中,序列化模块31,用于对目标对象进行序列化处理,得到所述目标对象的序列化数据;

拆分模块32,用于对所述序列化数据进行拆分处理;

存储模块33,用于基于拆分处理结果,确定所述序列化数据的多个数据分片,将所述多个数据分片存储至数据库中,并存储用于表示所述多个数据分片在所述数据库中存储位置的索引信息。

在一实施例中,所述拆分模块32可以具体用于:

基于预设的拆分规则,获取所述序列化数据中的多个拆分位置。

在一实施例中,不同的数据分片分别存储至所述数据库的不同行记录中;

所述索引信息包括:数据分片所在行记录的rowkey值。

可以理解的是,序列化模块31、拆分模块32,以及存储模块33作为三种功能独立的模块,既可以如图3所示同时配置在装置中,也可以分别单独配置在装置中,因此图3所示的结构不应理解为对本说明书实施例方案的限定。

相应于上述图2所示例的方法实施例,本说明书实施例还提供一种对象读取装置,参见图4所示,为本说明书一示例性实施例提供的一种对象读取装置的实施例框图,该装置可以包括:确定模块41、读取模块42、合并模块43,以及反序列化模块44。

其中,确定模块41,用于根据预先保存的索引信息在数据库中确定目标存储位置,所述索引信息用于表示多个数据分片在所述数据库中的存储位置;

读取模块42,用于基于所述目标存储位置,从所述数据库中读取数据分片;

合并模块43,用于对所读取到的数据分片进行合并处理;

反序列化模块44,用于对合并处理所得到的数据进行反序列化处理,得到目标对象。

在一实施例中,所述合并模块43具体用于:

将所读取到的数据分片封装成输入流。

可以理解的是,确定模块41、读取模块42、合并模块43,以及反序列化模块44作为四种功能独立的模块,既可以如图4所示同时配置在装置中,也可以分别单独配置在装置中,因此图4所示的结构不应理解为对本说明书实施例方案的限定。

此外,上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

本说明书实施例还提供一种业务服务器,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的对象存储方法。该方法至少包括:对目标对象进行序列化处理,得到所述目标对象的序列化数据;对所述序列化数据进行拆分处理;基于拆分处理结果,确定所述序列化数据的多个数据分片,将所述多个数据分片存储至数据库中,并存储用于表示所述多个数据分片在所述数据库中存储位置的索引信息。

本说明书实施例还提供另一种业务服务器,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的对象读取方法。该方法至少包括:根据预先保存的索引信息在数据库中确定目标存储位置,所述索引信息用于表示多个数据分片在所述数据库中的存储位置;基于所述目标存储位置,从所述数据库中读取数据分片;对所读取到的数据分片进行合并处理;对合并处理所得到的数据进行反序列化处理,得到目标对象。

图5示出了本说明书实施例所提供的一种更为具体的业务服务器硬件结构示意图,该设备可以包括:处理器510、存储器520、输入/输出接口530、通信接口540和总线550。其中处理器55、存储器520、输入/输出接口530和通信接口540通过总线550实现彼此之间在设备内部的通信连接。

处理器510可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器520可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器520可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器520中,并由处理器55来调用执行。

输入/输出接口530用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口540用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线550包括一通路,在设备的各个组件(例如处理器55、存储器520、输入/输出接口530和通信接口540)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器510、存储器520、输入/输出接口530、通信接口540以及总线550,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的对象存储方法。该方法至少包括:对目标对象进行序列化处理,得到所述目标对象的序列化数据;对所述序列化数据进行拆分处理;基于拆分处理结果,确定所述序列化数据的多个数据分片,将所述多个数据分片存储至数据库中,并存储用于表示所述多个数据分片在所述数据库中存储位置的索引信息。

本说明书实施例还提供另一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的对象读取方法。该方法至少包括:根据预先保存的索引信息在数据库中确定目标存储位置,所述索引信息用于表示多个数据分片在所述数据库中的存储位置;基于所述目标存储位置,从所述数据库中读取数据分片;对所读取到的数据分片进行合并处理;对合并处理所得到的数据进行反序列化处理,得到目标对象。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

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