数据存储方法及系统、装置和存储介质与流程

文档序号:16918910发布日期:2019-02-19 19:11阅读:452来源:国知局
数据存储方法及系统、装置和存储介质与流程

本发明涉及信息技术领域,更为具体而言,涉及一种数据存储方法及系统、设备和存储介质。



背景技术:

lob字段是oracle数据库用于存储大数据对象的字段类型,包括blob、clob、nlob、bfile,最大大小10gr2可以到8t,在11g可到128t(和blocksize有关),单表定义中可以包括多个lob字段。和一般字段不同的是,当lob字段大小超过4k时,数据库会单独为该lob字段分配额外的blobsegments存储blob对象。此时该blob字段的undo信息也存储在该segments中,默认其undo过期时间为数据库初始化参数undo_retention设置值。

但是,被删除或更新的blob字段所占用空间不会自动批量回收,当所在表有大量的删除、更新操作时,blob所在segments会迅速耗尽空间,新的insert需要空间时,会在高水位线上加锁后,回收曾使用但已经过期的blob空间,由于该操作效率很低,此时数据库就会有大量的‘enq:hw-contention’等待,相关sql会由于该等待而串行执行,业务受影响十分严重。因此lob字段不适合在有大批量删除、更新操作的并发场合使用。

目前现有的方案,通常在使用lob字段时,为lob字段手工单独制定和表所在表空间不同的表空间,以增加lob字段的存储量。但这种方式一般是以分离磁盘存储为基础,单独分出一定的存储大小,为lob字段建立一个表空间。比如,磁盘一共100g,正常数据表空间为60g,lob字段为40g。针对此方法,磁盘存储空间得不到最合理的分配,同时,在数据存储和访问时,需要进行表空间的切换,会导致访问效率的下降。



技术实现要素:

为了解决现有技术中存在的上述问题,本发明提供了一种数据存储方法及系统、设备和存储介质,避免了由于使用lob存储方式产生的效率低的影响。

根据本发明的实施方式,提供了一种数据存储方法,所述方法包括:将数据对象转换为字符串数据;按照预设的长度将所述字符串数据拆分成多段;对拆分后的字符串数据的每一段进行编号并存储。

在本发明的一些实施方式中,所述数据对象包括二进制对象数据;其中,所述将数据对象转换为字符串数据包括:将所述二进制对象数据以编码格式进行对象到字符串的转换。

在本发明的一些实施方式中,所述数据对象包括内存结构对象数据;其中,所述将数据对象转换为字符串数据包括:将所述内存结构对象数据以序列化的方式进行对象到字符串的转换。

在本发明的一些实施方式中,所述预设的长度为0~4kb。

根据本发明的实施方式,提供了一种数据存储系统,所述系统包括:转换模块,用于将数据对象转换为字符串数据;拆分模块,用于按照预设的长度将所述字符串数据拆分成多段;存储模块,用于对拆分后的字符串数据的每一段进行编号并存储。

在本发明的一些实施方式中,所述数据对象包括二进制对象数据;其中,所述转换模块用于:将所述二进制对象数据以编码格式进行对象到字符串的转换。

在本发明的一些实施方式中,所述数据对象包括内存结构对象数据;其中,所述转换模块用于:将所述内存结构对象数据以序列化的方式进行对象到字符串的转换。

在本发明的一些实施方式中,所述预设的长度为0~4kb。

同时,本发明提供了一种数据存储装置,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令;所述处理器用于调用所述一条或多条计算机指令从而执行前述任一项的数据存储方法。

本发明还提供了一种计算机存储介质,存储有一条或多条计算机程序,所述一条或多条计算机程序在调用时实现前述任一项的数据存储方法。

本发明的实施方式按照数据库存储大小要求,拆分需要保存的大数据对象,从而避免了使用lob存储方式产生的效率低的影响。

附图说明

为了便于理解本发明,以下通过具体实施方式并结合附图对本发明进行具体说明。

图1是根据本发明实施方式的一种数据存储方法的流程示意图;

图2是根据本发明实施方式的一种数据存储系统的框图。

具体实施方式

以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。

首先,对本发明涉及的名词进行解释:

lob字段:lob(largeobject)是一种用于存储大对象的数据类型,如医学记录(如x-射线)、视频、图像等。lob有多种类型,例如:blob:binarylargeobject、clob:characterlargeobject、dbclob:double-bytecharacterlargeobject。

segments:数据文件空间,指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。

base64:最常见的用于传输8bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制数据的方法。base64编码是从二进制到字符的过程,可用于在http环境下传递较长的标识信息。例如,在javapersistence系统hibernate中,就采用了base64来将一个较长的唯一标识符(一般为128-bit的uuid)编码为一个字符串,用作http表单和httpgeturl中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在url(包括隐藏表单域)中的形式。

json:javascriptobjectnotation,js对象简谱,是一种轻量级的数据交换格式。它基于ecmascript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

图1是根据本发明实施方式的一种数据存储方法的流程示意图,在本发明的实施方式中,参照图1,该方法具体包括:

100:将数据对象转换为字符串数据;

101:按照预设的长度将所述字符串数据拆分成多段;

102:对拆分后的字符串数据的每一段进行编号并存储。

lob字段存储的数据对象本身是一种非字符数据,例如像图片,音频,文本文件等二进制的大对象;javabean这样的内存结构大对象;long型字符串等字符大对象等。

在本发明的实施方式中,对于不同类型的数据对象采用不同的方法将其转化为字符串数据,以简化其存储的方式,加快其插入和查询的效率。具体方法如下:

1.在针对图片,文件这样的二进制大对象时,会先将其按照如base64等编码格式进行对象到字符串的转换,其次,再进行长度的拆分。

2.在针对javabean这样的内存结构大对象时,会将其通过如json等序列化的手段,将其从对象转换成字符串,再进行长度的拆分。

3.在针对字符大对象时,直接将其进行长度的拆分。

在本发明的实施方式中,根据数据库存储大小要求预设拆分的长度,优选的,预设的长度为0~4kb。

在本发明的实施方式中,对拆分后的字符串数据的每一段进行编号后再存储进segments中,以方便后续调用时重新拼接。

本发明的方法按照数据库存储大小要求,拆分需要保存的大数据对象,从而避免了使用lob存储方式产生的效率低的影响。

图2是根据本发明实施方式的一种数据存储系统1的框图,参照图2,该数据存储系统1包括:转换模块11,用于将数据对象转换为字符串数据;拆分模块12,用于按照预设的长度将字符串数据拆分成多段;存储模块13,用于对拆分后的字符串数据的每一段进行编号并存储。

在本发明的实施方式中,若数据对象为二进制对象数据,则转换模块12用于:将二进制对象数据以编码格式进行对象到字符串的转换。

在本发明的实施方式中,若数据对象为内存结构对象数据,则转换模块12用于:将内存结构对象数据以序列化的方式进行对象到字符串的转换。

可选的,本发明实施方式提供了一种数据存储装置,该数据存储装置包括存储器,用于存储一条或多条计算机指令;处理器,用于调用一条或多条计算机指令从而执行本发明前述实施方式或实现方式所提供的数据存储方法。可选地,在本发明实施方式的一种实现方式中,数据存储装置还可以包括用于进行数据通信的输入输出接口。例如,处理装置可以是智能终端、服务器等。

本发明实施方式还提供了一种计算机存储介质,存储有一条或多条计算机指令,用于在调用时实现本发明前述实施方式或实现方式提供的数据存储方法。例如,存储介质可以包括硬盘、软盘、光盘等。

虽然本文举例描述了一些实施方式,但是,在不脱离本发明实质的前提下,可以对这些实施方式进行各种变形,所有这些变形仍属于本发明的构思,并且落入本发明权利要求所限定的保护范围。

本文所公开的具体实施方式仅用于举例说明本发明,对于本领域技术人员而言,显然可以根据本文的教导进行各种修改,可以采用各种等同的方式实施本发明,因此,本发明上述公开的特定的实施方式仅仅是示例性的,其保护范围不受在此公开的结构或设计的细节所限,除非在权利要求中另有说明。因此,上述公开的特定的示例性的实施方式可进行各种替换、组合或修改,其所有的变形都落入本文公开的范围内。在缺少本文没有具体公开的任何元件或缺少本文公开的任选的部件的情况下,本文示例性公开的数据存储方法及系统、装置和存储介质仍可适当地实施。上述公开的所有的数值和范围也可进行一定变化。每当公开了具有下限和上限的数值范围,落入此范围内的任何数值及任何被包含的范围都被具体地公开了。具体而言,本文公开的数值的任一范围均可理解为列举了包含在较宽数值范围内的任一数值和范围。同样,除非申请人明确且清楚地另有定义,权利要求中的术语具有它们的清楚、通常的含义。

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

此外,权利要求书中的部件的数量包括一个或至少一个,除非另有说明。如果本发明中的用词或术语与其它文献中的用法或含义存在不一致,则应当以与本发明所定义的为准。

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