您的位置 首页 电源

在Oracle中存储与办理大目标数据类型

在Oracle数据库中,有时候往往需要用到大容量的数据类型,如一些图像、视频文件等等。由于这些信息比较大,为此在Oracle数据库中专门设计了一些大对象数据类型来保存与管理这些数据。由于其体积庞大,为

一、Oracle数据库支撑的大目标数据类型。

  在Oracle数据库中为了更好的办理大容量的数据,专门开发了一些对应的大目标数据类型。详细的来说,有如下几种:

  一是BLOB数据类型。它是用来存储可变长度的二进制数据。由于其存储的是通用的二进制数据,为此在数据库之间或许在客户端与服务器之间进行传输的时分,不需求进行字符集的转化。为此其传输的功率比较高,而不容易呈现乱码现象。

  二是CLOB数据类型。他主要是用来存储可变长度的字符型数据,也便是其他数据库中说到的文本型数据类型。尽管说VARCHAR2数据类型也能够用来存储可变长度的字符型数据,可是其容量对错常有限的。而现在这个CLOB数据类型,其能够存储的最大数据量是4GB。并且在界说这个数据类型的时分,不需求指定最大长度。在界说Varchar2数据类型时需求指定。

  三是NCLOB数据类型。这个数据类型跟CLOB数据类型类似,也是用来存储字符类型的数据,不过其存储的是Unicode字符集的字符数据。相同,在这个数据类型中,也能够存储多达4GB容量的数量,并且在界说数据类型时不需求指定长度,数据库会主动依据存储的内容来进行调理。

  四是BFILE数据类型。看看姓名就知道跟其他的LOB数据类型不同。其是在数据库外面存储的可变二进制数据,其最多也能够存储4GB的数据。这儿需求留意的是,在不同的操作体系上其存储的数据容量或许是不同的。这个数据类型的特别在于其在数据库之外存储实践数据。也便是说,跟其他大目标数据类型不同,其数据并不是存储在数据文件中,而是独立于数据文件而存在的。在这个字段中,其只存储了指针信息。

二、不需求为大目标数据类型指定长度。

  以上说到的一些大目标数据类型有一个特色,即全部都是可变长度的数据类型,并且在界说时不需求指定其最大的长度。尽管在数据库内建数据类型中也有一些可变长度的数据类型,可是,其往往需求在界说时指定最大的长度。实践存储数据时不能够超越这个长度。不过这些大容量数据类型则没有这个约束,只要在存储时不要超越其最大4GB的容量约束即可。由于其都是可变长度的数据类型,为此其实践存储的空间为依据数据容量的巨细而改动。即假如某个数据巨细只要1GB,那么其实践在硬盘中存储的空间就只要1GB,而不会是4GB。这便是可变长度数据类型的特征。像其他的一些不行变长数据类型,假如存储的数据容量不行的话,会以空格填充。不过现在这个大目标数据类型由于是可变长度的数据类型,其实践存储的长度会依据世纪数据来进行调整。为此能够最大极限的进步硬盘空间的运用率。

三、最好将大目标数据类型与一般数据类型分隔寄存。

  在数据库规划时,假如某个表需求用到大容量数据类型,那么最好能够将这些大目标数据类型的列与其它列分红独立的表。如现在有一个产品信息表,在这个表中有一个大目标数据类型的数据,用来存储一段关于产品阐明的视频材料。此刻最好不要将这个列与产品信息表中的其他列寄存在一起。最好是将这个大目标数据类型寄存在另一张表中,然后经过产品ID相关起来。这关于进步数据库功能具有很大的协助。如在对数据库进行备份时,由于对大容量的数据类型进行备份时需求花费比较长的时刻,并会在很大程度上影响数据库的功能。并且这些大容量的数据类型一般更改也不会很频频。所以在备份或许复原时,能够只对那些非存储大目标数据类型的表空间进行备份或许复原,然后进步数据库备份或许复原的功能。别的一种可行的方法是,不讲这些大目标信息保存在数据库中。如关于产品阐明的视频材料,仅仅选用不同的可变字符长度数据类型,在表中存储其网络服务器上的途径。然后再客户端程序规划时,规划一个衔接。用户点击这个衔接就能够主动翻开网络服务器上对应的文件。这无疑也会简化数据库的办理。所以,尽管说Oracle数据库供给了对大容量数据的办理能力,可是为了多方面考虑,仍是能够采纳独立办理为好,至少不要将其他的惯例数据寄存在同一个表或许同一个表空间中,以利于后续的办理与保护。

四、大目标数据类型在运用上的约束。

  这些大目标数据类型不只会影响Oracle数据库的功能,并且在运用上还有不少的约束。如在某些SQL子句中不能够运用这些数据类型。如where 是sql句子中最常用的条件句子,用来过滤数据。可是在这Where子句中,不能够运用大目标数据类型。即不能够依据大目标数据类型来过滤记载,及时这个大目标数据类型或许仅仅存储着少数的数据。故在选用大目标数据类型之前,需求了解这方面的约束。同理,还有一些子句也不支撑这些大目标数据类型。如Order BY用来对某些记载进行排序,可是不能够依据大对目标数据类型对记载进行排序,如运用Order BY CLOB句子,体系就会提示错误信息。同理,也不能够运用Group By子句对大目标数据类型的数据进行分组汇总。总归,尽管说Oracle数据库中现已专门为大容量数据类型供给了办理的途径,可是支撑其的句子仍是比较少的。为此在界说大目标数据类型时,要留意今后数据操作上的烦恼。

  别的假如数据库办理员习气选用SQL*PLUS来规划数据库以及保护数据的时分,也需求留意了。数据库办理员是不能够在sql *plus这个东西上进行查询,显现大目标数据类型的数据。也不能够选用INSERT句子刺进大目标类型的数据。假如硬要这么操作的话,则数据库体系会提示“列或许特点无法经过PLUS来显现”的错误信息。所以不只在查询、排序上会有问题,对大目标数据类型进行数据刺进等操作也会遇到阻止。故尽管Oracle数据库供给了对大目标数据类型的支撑,不过笔者不是很拥护用户将什么数据都往数据库体系中存寄存,特别是一些视频材料。笔者在数据库布置中,总是劝诫用户,能够独立办理这些大目标数据最好进行独立办理,不要放在数据库体系中。如能够将他们放在网络上的同享服务器中,然后经过一个地址来链接这些图片或许视频文件。假如规划的比较周到的话,在客户端界面上设置一个超链接即可。经过这个超链接在需求的时分能够直接翻开这个文件。究竟并不是每次用户查询某个产品信息时都需求用到这个视频阐明文件。所以这还能够进步应用程序的功能。由于其默许状况下不会去翻开这个大容量的文件。只要在需求时用户才会经过超链接来翻开。这明显能够进步应用程序的功能,缩短用户的等待时刻。

  为此笔者主张,一般状况下只要这些大容量数据类型有同步显现的需求,如检查某个产品信息时,主动在窗口中显现这个产品的图片。在这种状况下才将大目标的数据类型保存在数据库中。除非用这个同步显现的需求,否则的话最好不要将其寄存在数据库中。否则的话,对数据库功能、后续保护有害无利。所以Oracle供给的这些大目标数据类型仅仅用来应急的,而不能够作为惯例功能来对待。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/187261.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部