Chapter 2. 大对象

Table of Contents
2.1. 历史信息
2.2. 实现特点
2.3. 接口
2.3.1. 创建大对象
2.3.2. 输入大对象
2.3.3. 输出大对象
2.3.4. 打开一个现有的大对象
2.3.5. 向大对象中写数据
2.3.6. 从大对象中读取数据
2.3.7. 对大对象中数据的查找
2.3.8. 关闭一个大对象描述符
2.3.9. 删除一个大对象
2.4. 内建的已注册函数
2.5. 通过 LIBPQ 访问大对象
2.6. 例子程序

Postgres 里, 记录存储在数据页面里并且单个记录里的数据大小不能超过数据页面的大小. 因为数据页面大小是8192 字节,所以数据值的大小是相当小的. 为了存储更大的原子数值, Postgres 提供了大对象接口. 这个接口给用户提供对定义为大对象的用户数据的面向文件的接口. 本节描述 Postgres 大对象数据的实现,编程和查询语言接口.

2.1. 历史信息

最初,Postgres 4.2 支持三种大对象的标准实现: 作为 Postgres外部的文件扩展, 作为由 Postgres 管理的外部文件, 以及作为存储在 Postgres 数据库里面的数据. 这样做容易导致用户的迷惑.结果是,我们只支持把大对象作为数据存储在 Postgres 数据库里. 即使这样做令数据访问变得有些慢,但却保证了更严格的数据完整性. 由于历史原因,这种存储机制被称为转置大对象.(我们将在本章中交互使用 转置和大对象来表示同一个意思)。 自 PostgreSQL 7.1 开始,所由大对象 都保留在一个叫 pg_largeobject 的系统表里.