Nas versões do PostgreSQL anteriores a 7.1, o tamanho de qualquer linha do banco de dado não podia exceder o tamanho de uma página de dados. Uma vez que o tamanho da página de dados é de 8192 bytes (por padrão, podendo ser aumentado até 32768), o limite superior do tamanho do valor do dado era relativamente baixo. Para dar suporte a armazenamento de valores atômicos maiores, o PostgreSQL forneceu e continua fornecendo a interface de objeto grande. Esta interface fornece acesso orientado a arquivos para os dados do usuário, que são armazenados em uma estrutura especial de objeto grande.
Este capítulo descreve a implementação, e as interfaces de linguagem de programação e de consulta dos dados objeto grande no PostgreSQL. Nos exemplos deste capítulo é utilizada a biblioteca C libpq, mas a maioria das interfaces de programação nativas do PostgreSQL suportam funcionalidades equivalentes. Outras interfaces podem utilizar internamente a interface de objeto grande para fornecer suporte genérico a valores grandes, mas não são descritas aqui.
O POSTGRES 4.2, predecessor indireto do PostgreSQL, suportava três implementações padrão para objetos grandes: como arquivos externos ao servidor POSTGRES; como arquivos externos gerenciados pelo servidor POSTGRES; e como dados armazenados dentro do banco de dados POSTGRES. Esta situação causava uma confusão considerável entre os usuários. Como conseqüência, somente permaneceu no PostgreSQL o suporte a objetos grandes como dados armazenados dentro do banco de dados. Embora seja mais lento para ser acessado, fornece uma integridade de dados mais rigorosa. Por motivos históricos, este esquema de armazenamento é referido como Inversão de objetos grandes (Inversion large objects) (Será visto o termo Inversão utilizado ocasionalmente significando a mesma coisa que objeto grande). Desde o PostgreSQL 7.1 todos os objetos grandes são armazenados em uma tabela do sistema chamada pg_largeobject
.
O PostgreSQL 7.1 introduziu o mecanismo apelidado de "TOAST" (fatias), que permite os valores dos dados serem muito maiores que as páginas de dados. Isto tornou a funcionalidade de objeto grande parcialmente obsoleta. Uma vantagem da funcionalidade de objeto grande que permaneceu, é permitir valores com tamanho de até 2 GB, enquanto os campos fatiados (TOASTed) podem ter no máximo 1 GB.