| 结构 |
|---|
| 集群内一个隔离的目录,装着所有 schema。 | 隔离不应共享数据的应用或环境。 |
| 数据库内命名的命名空间,把相关对象分组。 | 按功能或所有者组织对象,避免命名冲突。 |
| 磁盘上一个命名的位置,存放表和索引文件。 | 把热表导向快速存储,把冷数据留在廉价磁盘上。 |
| 决定不带限定名的对象名解析到哪些 schema 的设置。 | 让会话指向正确的 schema,查询就能使用短名。 |
| 用 COMMENT ON 存在任意数据库对象上的描述。 | 把表和列的说明写在下一位查询作者会看到的地方。 |
| 表与视图 |
|---|
| 以带类型的列存放行的命名关系。 | 持久数据的首要容器。 |
| 行在会话或事务结束时消失的表。 | 存放不应比连接活得更久的临时或暂存数据。 |
| 按声明的键拆分为子分区的父表。 | 按范围或列表把行分配到分区,让超大的表保持可管理。 |
| 行存放在外部系统中的表,通过外部数据包装器访问。 | 像查询本地表一样查询远程数据库或文件。 |
| 以虚拟表形式呈现的已存储查询。 | 通过不同的过滤或连接呈现同一批行。 |
| 把 INSERT、UPDATE 和 DELETE 转发给基表的简单视图。 | 开放表中一个被过滤或连接的切片,同时保持可写。 |
| 结果集写入磁盘、按需刷新的视图。 | 缓存昂贵的聚合或连接,然后快速读取。 |
| 返回一组行的函数,任何能用表的地方都能用它。 | 就地展开一个计算出的集合,就像 unnest 把数组变成行。 |
| 索引 |
|---|
| 用于等值和范围查找的平衡树索引。 | 加速可排序列上的 WHERE、JOIN 和 ORDER BY。 |
| 拒绝键中出现重复值的索引。 | 在单列或多列组合上强制唯一性。 |
| 面向非标量值的倒排或通用搜索树索引。 | 为数组、JSONB、全文或几何数据建索引。 |
| 只对匹配 WHERE 子句的行建立的索引。 | 只为热的子集建索引,跳过其余部分以节省空间。 |
| 类型与扩展 |
|---|
| 取值来自固定标签列表的用户自定义类型。 | 把列约束成封闭集合,例如状态码。 |
| 基础类型加检查约束,命名后作为列类型复用。 | 把一个已验证的定义(如非空 text)共享给多个列。 |
| 定义字符串如何比较和排序的规则集。 | 为大小写、重音或特定区域设置获得正确的排序。 |
| 可安装的包,为数据库添加函数、类型或运算符。 | 一步采用经过验证的工具,如 PostGIS 或 pg_trgm。 |
| 标识与生成列 |
|---|
| 独立的计数器对象,产出连续的整数。 | 当多个表共用一个生成器时,为序列号键供值。 |
| 由内部序列支撑的表列,符合 SQL 标准。 | 现代的自增主键,优于 SERIAL。 |
| 值由同一行中其他列计算得出的列。 | 无需手动写入即可存储或呈现派生值。 |
| 例程 |
|---|
| 返回值或行的命名 SQL 块。 | 封装可复用的逻辑,并在查询中调用。 |
| 执行动作并自行控制事务的命名块。 | 例程内部自行提交或回滚的多步 ETL。 |
| 通过状态函数和最终函数把多个输入行折叠成一个值的例程。 | 定义自定义归约,例如加权平均值。 |
| 绑定到一个或多个函数、面向特定操作数类型的符号。 | 让你自己的类型拥有自然语法,如 a + b 或 @>。 |
| 从一个类型到另一个类型的已声明转换路径。 | 控制值如何变更类型,包括哪些转换隐式发生。 |
| 绑定到表事件、自动触发的例程。 | 在 INSERT、UPDATE 或 DELETE 时审计、校验或级联变更。 |
| 在数据库级事件(如 DDL 命令)上触发的触发器。 | 在整个数据库范围内记录、阻止或审计模式变更。 |
| 解析后存储、以绑定参数反复执行的查询。 | 让同一次解析和计划在多次执行中复用。 |
| 让结果集保持打开、供逐行取用的句柄。 | 对大型结果分页,或在例程内逐行遍历。 |
| 安全与规则 |
|---|
| 持有权限的命名身份;能登录的 role 就是用户。 | 一次性归组权限,再授予人员、服务或其他角色。 |
| 把对象上的权限授予角色或移除的语句。 | 决定哪个角色能读、写或执行每个对象。 |
| 创建者修改或删除对象的内置权利,独立于授权。 | 指明对对象生命周期负责的角色。 |
| 对角色之后创建的对象自动授予权限的常设指令。 | 预先设好权限,新表无需为应用角色手工授权。 |
| 拒绝违反已声明条件写入的规则。 | 强制 NOT NULL、CHECK、UNIQUE、PRIMARY KEY 和 FOREIGN KEY 的保证。 |
| 按角色隐藏会话不应看到的行的规则。 | 无需改写应用查询即可实现租户隔离或按用户控制访问。 |
| 把一个名称解析到别处对象的别名;Oracle 和 SQL Server 原生支持。 | 移植模式布局;在 PostgreSQL 中改用 search_path。 |
| 定义哪些动作会被记录以备审查,经由 pgaudit 或厂商工具。 | 为合规与调查证明谁读改了什么。 |
| 把到来的查询改写成另一条命令的指令。 | 旧式的写入重定向;PostgreSQL 现在更倾向触发器或可更新视图。 |
| 复制 |
|---|
| 发送端对哪些表和变更类型流向副本的定义。 | 声明数据库向逻辑复制的订阅者提供什么。 |
| 连接到发布并将其变更应用到本地表的接收端。 | 把另一个 PostgreSQL 数据库的变更拉取到这一个。 |
| 让主库保留 WAL 直到消费者读完的标记。 | 保证备用库或订阅者可以续传而不丢失变更。 |