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