The large object implementation breaks large objects up into
"chunks" and stores the chunks in rows
in the database. A B-tree index guarantees fast searches for the
correct chunk number when doing random access reads and
writes.

As of PostgreSQL 9.0, large
objects have an owner and a set of access permissions, which can
be managed using GRANT and REVOKE. For compatibility with prior
releases, see lo_compat_privileges.
SELECT privileges are required to read a
large object, and UPDATE privileges are
required to write to or truncate it. Only the large object owner
(or the database superuser) can unlink, comment on, or change the
owner of a large object.