一、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 列存儲文件定位程序,此定位程序指向服務器上的大型二進制文件。
- 它們都是 Oracle 數據庫的大對象(LOB)數據類型,Oracle 提供專門的包對其操作。
- 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 數據的邏輯指針。
(3)數據保存方式不同
- BLOB:使用二進制保存數據。
- CLOB:使用 CHAR 來保存數據。
- NCLOB:使用 NCHAR 來保存數據。