Chapter 28. 大對像

Table of Contents
28.1. 歷史
28.2. 實現特點
28.3. 客戶端接口
28.3.1. 建立大對像
28.3.2. 輸入大對像
28.3.3. 輸出大對像
28.3.4. 打開一個現有的大對像
28.3.5. 向大對像中寫資料
28.3.6. 從大對像中讀取資料
28.3.7. 大對像中資料的查找
28.3.8. 獲取一個大對象的目前搜索位置
28.3.9. 關閉一個大對像描述符
28.3.10. 刪除一個大對像
28.4. 伺服器端函數
28.5. 例子程序

PostgreSQL 有一個大對像設施, 它為儲存在特殊的大對像結構裡的用戶資料提供流狀的訪問方式。 流訪問對那些資料值太大,因而不能一次性操作的資料是很有用的。

本章描述 PostgreSQL 大對像資料的實現以及編程和查詢語言接口。 我們在本章中使用 libpq 的 C 庫作為例子, 但是大多數 PostgreSQL 內置的接口都支援等效的功能。 其它接口可以在內部使用大對像接口以提供對大對像值的一般性支援。那些內容沒有在這裡描述。

28.1. 歷史

最初,PostgreSQL 4.2PostgreSQL 的間接前身)支援三種大對象的標準實現: 作為 POSTGRES伺服器外部的文件擴展, 作為由 POSTGRES 管理的外部文件, 以及作為儲存在 POSTGRES 資料庫裡面的資料. 這樣做容易導致用戶的迷惑.結果是,我們只支援把大對像作為資料儲存在 PostgreSQL 資料庫裡. 即使這樣做令資料訪問變得有些慢,但卻保證了更嚴格的資料完整性. 由於歷史原因,這種儲存機制被稱為轉置大對像. (我們將在本章中交互使用轉置和大對像來資料表示同一個意思)。 自 PostgreSQL 7.1 開始,所由大對象都保留在一個叫pg_largeobject的系統資料表裡.

PostgreSQL 7.1 引入了一種新的機制 (外號叫 "TOAST"), 允許資料行遠遠大於單個資料頁面。這樣就令大對像接口在一定程度上過時了。 大對像接口剩餘的一個優點是它允許資料最大有 2 G,而 TOAST 字串只能處理 1 G。 並且,大對象可以比普通資料值更容易地一片片操作,因此,實際地局限是不一定的。