7.1 より前の PostgreSQL リリースでは、データベース内の行のサイズはデータページのサイズを越えることはできませんでした。 データページのサイズは 8192バイト(これがデフォルトです。 32768まで増やすことができます。) ですので、データ値の上限は相対的に見て小さなものでした。 この値よりも大きなデータ格納をサポートするために、PostgreSQL はラージオブジェクトインタフェースを提供しました。 現在も提供しています。 このインタフェースは、特殊なラージオブジェクト構造に格納されたユーザデータに対して、ファイル指向のアクセスを提供します。
本章では、PostgreSQLラージオブジェクトデータに関する、実装、プログラミング、問い合わせ言語インタフェースについて説明します。 libpq C ライブラリを例として本章で使用していますが、ほとんどのPostgreSQL固有のプログラミングインタフェースは同等の機能を持っています。 他のインタフェースでは、巨大な値を汎用的にサポートできるように、ラージオブジェクトインタフェースを内部で使用しているかもしれません。 ここでは説明しません。
PostgreSQL の間接的な派生元である POSTGRES 4.2 はラージオブジェクトに関して3つの標準実装、POSTGRES サーバ外部のファイル、POSTGRES サーバで管理される外部ファイル、POSTGRES データベース内に格納されるデータ、をサポートしていました。 これはかなりユーザーの混乱を招きました。 その結果、データベース内に格納されるデータとしてのラージオブジェクトのみをPostgreSQLではサポートしました。 これによってアクセスが少々遅くなりましたが、より厳密に一貫性を持ったデータを提供するようになりました。 歴史的な理由により、この格納の仕組みは転置ラージオブジェクトと呼ばれています。 (この節では、「転置」と「ラージオブジェクト」の両方を使用していますが、どちらも同じ意味です。) PostgreSQL 7.1からは、すべてのラージオブジェクトはpg_largeobjectと呼ばれる、1つのシステムテーブルに格納されます。
PostgreSQL 7.1 では、個々のデータページよりもかなり大きなデータ行を持つことができる("TOAST" というニックネームの)機構を導入しました。 これによりラージオブジェクトインタフェースの一部は旧式のものになりました。 ラージオブジェクトインタフェースに残る利点の1つは、そのサイズが2GBまで可能であるという点です。 TOASTでは1GBまでしか扱えません。