Oracle数据库中的大对象(LOB)数据类型介绍

时间:2024-10-24 21:36:32

一、LOB数据类型的介绍

大对象(LOB)数据类型允许我们保存和操作非结构化和半结构化数据,如文档、图形图像、视频片段、声音文件和XML文件等。DMBS_LOB 包被设计用于操作 LOB 数据类型。从 Oracle 12c 开始,根据数据库块大小,LOB 最大可以存储 128TB 的数据,一个表可以有一个或多个 LOB 数据类型的列,如 二进制大对象(BLOB)、字符大对象(CLOB)、国家字符大对象(NCLOB)和BFILE。

重要的是,每当在表中创建 LOB 列时,实际上会创建两个不同的段: LOBSEGMENT 和 LOBINDEX。LOBINDEX 指向存储在对应 LOBSEGMENT 中的 LOB “大块(chunks)”(注:chunk 是一个或多个 Oracle 块。默认的 chunk 大小等于表空间的块大小,最大值是 32KB)。在某些情况下,LOB 可能存储为“内联(inline)”,即存储在表段内,但内联存储通常用于相当小(小于 4000 字节)或为 NULL 的 LOB 数据。在这种情况下,LOB 值将直接存储在表段内。

二、CLOB 、 BLOB、NCLOB和BFILE  之间的区别

BLOB(Binary Large Object):内部二进制大对象,可用来存储无结构的二进制数据。类似于row 和 long row,常用与大图片的存储。可存储的最大大小为 4G 字节。

CLOB(Character Large Object):内部字符大对象,用于存储对应于数据库定义的字符集的单字节字符的大型数据块,不支持宽度不等的字符集。类似于long类型,常用与大文本的存储。可存储的最大大小为 4G 字节。

NCLOB:国家语言字符集大对象,用于存储数据库中的固定宽度单字节或多字节字符的大型数据块,不支持宽度不等的字符集。可存储的最大大小为 4G 字节。

BFILE:外部二进制文件,当大型二进制对象的大小大于 4G 字节时,BFILE 数据类型用于将其存储在数据库外的操作系统文件中;当其大小不足 4G 字节时,则将其存储在数据库内部的操作系统文件中,BFILE 列存储文件定位程序,此定位程序指向服务器上的大型二进制文件。

  1. 它们都是 Oracle 数据库的大对象(LOB)数据类型,Oracle 提供专门的包对其操作。
  2. BLOB、CLOB、NCLOB 这三种大对象(LOB),用来保存较大的图形文件或带格式的文本文件,如 Microsoft Word 文档,以及音频、视频等非文本文件,最大长度是 4GB。

LOB 有几种类型,取决于您使用的字节的类型,Oracle 8i 实实在在地讲这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。

三、参考网络上的其他分析(BLOB、CLOB和NCLOB之间的主要区别)

(1)指代不同

  • BLOB:是指图像中的一块连通区域,BLOB分析就是对前景/背景分离后的二值图像。
  • CLOB:是内置类型,将字符大对象(Character Large Object)存储为数据库表某一行中的一个列值。
  • NCLOB:长度可变的字符大对象。

(2)特点不同

  • BLOB:对运动目标在图像平面上的轨迹进行估计的问题。
  • CLOB:CLOB对象包含一个指向 SQL CLOB 数据的逻辑指针而不是数据本身。CLOB对象在被创建的事务处理期间有效。
  • NCLOB:大小可变的CLOB对象,指向 SQL CLOB 数据的逻辑指针。

Oracle数据库中的大对象(LOB)数据类型介绍

(3)数据保存方式不同

  • BLOB:使用二进制保存数据。
  • CLOB:使用 CHAR 来保存数据。
  • NCLOB:使用 NCHAR 来保存数据。