Azure Cosmos DB for PostgreSQL 中的 PostgreSQL 扩展
适用对象: Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)
通过使用扩展,PostgreSQL 可以扩展数据库功能。 扩展允许在单个包中将多个相关 SQL 对象捆绑在一起,可以使用单个命令在数据库中加载或删除该包。 在数据库中加载后,扩展可以像内置功能那样运行。 有关 PostgreSQL 扩展的详细信息,请参阅将相关对象打包到扩展中。
使用 PostgreSQL 扩展
必须先在数据库中安装 PostgreSQL 扩展,然后才能使用它们。 若要安装特定扩展,请通过 psql 工具运行 CREATE EXTENSION 命令,将打包的对象加载到数据库中。
注意
如果 CREATE EXTENSION
失败并出现权限被拒绝错误,请改为尝试 create_extension()
函数。 例如:
SELECT create_extension('postgis');
若要删除以这种方式安装的扩展,请使用 drop_extension()
。
Azure Cosmos DB for PostgreSQL 目前支持部分关键扩展(已在此处列出)。 所列扩展以外的扩展不受支持。 不能使用 Azure Cosmos DB for PostgreSQL 创建自己的扩展。
Azure Cosmos DB for PostgreSQL 支持的扩展
下表列出了 Azure Cosmos DB for PostgreSQL 上支持的标准 PostgreSQL 扩展。 还可以通过运行 SELECT * FROM pg_available_extensions;
获取此信息。
群集中安装的每个扩展的版本有时会因 PostgreSQL(11、12、13、14、15 或 16)的版本而异。 下表按数据库版本列出了扩展版本。
Citus 扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
citus | Citus 分布式数据库。 | 9.5 | 10.2 | 11.3 | 12.1 | 12.1 | 12.1 |
数据类型扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
citext | 提供不区分大小写的字符串类型。 | 1.5 | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 |
cube | 提供用于多维数据集的数据类型。 | 1.4 | 1.4 | 1.4 | 1.5 | 1.5 | 1.5 |
hll | 提供 HyperLogLog 数据结构。 | 2.18 | 2.18 | 2.18 | 2.18 | 2.18 | 2.18 |
hstore | 提供用于存储键值对集的数据类型。 | 1.5 | 1.6 | 1.7 | 1.8 | 1.8 | 1.8 |
isn | 提供用于国际产品编号标准的数据类型。 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
lo | 大型对象维护。 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
ltree | 提供用于分层树形结构的数据类型。 | 1.1 | 1.1 | 1.2 | 1.2 | 1.2 | 1.2 |
seg | 用于表示线段或浮点间隔的数据类型。 | 1.3 | 1.3 | 1.3 | 1.4 | 1.4 | 1.4 |
tdigest | 用于基于排名的统计信息(如分位数和剪裁方式)在线累积的数据类型。 | 1.4.1 | 1.4.1 | 1.4.1 | 1.4.1 | 1.4.1 | 1.4.1 |
topn | Top-n JSONB 的类型。 | 2.6.0 | 2.6.0 | 2.6.0 | 2.6.0 | 2.6.0 | 2.6.0 |
全文搜索扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
dict_int | 提供用于整数的文本搜索字典模板。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
dict_xsyn | 用于扩展同义词处理的文本搜索字典模板。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
unaccent | 删除了词素中重音(附加符号)的文本搜索字典。 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
函数扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 15 |
---|---|---|---|---|---|---|---|
autoinc | 用于自动增加字段的函数。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
earthdistance | 提供一种计算地球表面上的大圆距离的方法。 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
fuzzystrmatch | 提供多个函数,用于确定字符串间的相似性和差异。 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.2 |
insert_username | 用于跟踪表更改者的函数。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
intagg | 整数聚合器和枚举器(已过时)。 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
intarray | 提供用于操作无 null 整数数组的函数和运算符。 | 1.2 | 1.2 | 1.3 | 1.5 | 1.5 | 1.5 |
moddatetime | 用于跟踪上次修改时间的函数。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
orafce | 函数和运算符,用于模拟 Oracle RDBMS 提供的部分函数和包。 | 4.9 | 4.9 | 4.9 | |||
pg_partman | 按时间或 ID 管理已分区表。 | 4.7.4 | 4.7.4 | 4.7.4 | 5.1.0 | 5.1.0 | 5.1.0 |
pg_surgery | 用于对受损关系执行手术的函数。 | 1.0 | 1.0 | 1.0 | |||
pg_trgm | 提供函数和运算符,用于基于三元匹配确定字母数字文本的相似性。 | 1.4 | 1.4 | 1.5 | 1.6 | 1.6 | 1.6 |
pgcrypto | 提供加密函数。 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
refint | 用于实现引用完整性的函数(已过时)。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tablefunc | 提供可操作整个表(包括交叉表)的函数。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tcn | 触发了更改通知。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
timetravel | 用于实现按时间顺序查看的函数。 | 1.0 | |||||
uuid ossp | 生成全局唯一标识符 (UUID)。 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
索引类型扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
bloom | Bloom 访问方法 - 基于签名文件的索引。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
btree_gin | 提供示例 GIN 运算符类,该类对特定数据类型实现类似 B-tree 的行为。 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
btree_gist | 提供实施 B-tree 的 GiST 索引运算符类。 | 1.5 | 1.5 | 1.5 | 1.6 | 1.7 | 1.7 |
语言扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
plpgsql | PL/pgSQL 可加载过程语言。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
其他扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
amcheck | 用于验证关系完整性的函数。 | 1.1 | 1.2 | 1.2 | 1.3 | 1.3 | 1.3 |
dblink | 一个支持从数据库会话中连接到其他 PostgreSQL 数据库的模块。 有关此扩展的信息,请参阅“dblink and postgres_fdw”部分。 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
old_snapshot | 允许检查用于实现 old_snapshot_threshold 的服务器状态。 | 1.0 | 1.0 | 1.0 | |||
pageinspect | 在较低级别检查数据库页的内容。 | 1.7 | 1.7 | 1.8 | 1.9 | 1.11 | 1.12 |
pg_azure_storage | 适用于 PostgreSQL 的 Azure 集成。 | 1.3 | 1.3 | 1.3 | 1.3 | ||
pg_buffercache | 提供一种方法用于实时检查共享缓冲区缓存的当前状况。 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.4 |
pg_cron | PostgreSQL 的作业计划程序。 | 1.5 | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 |
pg_freespacemap | 检查可用空间映射 (FSM)。 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_prewarm | 提供一种方法用于将相关数据加载到缓冲区缓存中。 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_stat_statements | 提供一种方法用于跟踪服务器执行的所有 SQL 语句的执行统计信息。 有关此扩展的信息,请参阅“pg_stat_statements”部分。 | 1.6 | 1.7 | 1.8 | 1.9 | 1.10 | 1.10 |
pg_visibility | 检查可见性映射 (VM) 和页面级别的可见性信息。 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pgrowlocks | 提供一种显示行级锁定信息的方法。 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pgstattuple | 提供一种显示元组级别统计信息的方法。 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 |
postgres_fdw | 外部数据包装器,用于访问外部 PostgreSQL 服务器中存储的数据。 有关此扩展的信息,请参阅“dblink and postgres_fdw”部分。 | 1.0 | 1.0 | 1.0 | 1.1 | 1.1 | 1.1 |
sslinfo | 有关 TLS/SSL 证书的信息。 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
tsm_system_rows | TABLESAMPLE 方法,接受行数作为限制。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tsm_system_time | TABLESAMPLE 方法,接受以毫秒为时间单位的限制。 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
xml2 | XPath 查询和 XSLT。 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
Pgvector 扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
pgvector | Postgres 的开源矢量相似性搜索 | 0.5.1 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 |
PostGIS 扩展
扩展名 | 说明 | PG 11 | PG 12 | PG 13 | PG 14 | PG 15 | PG 16 |
---|---|---|---|---|---|---|---|
PostGIS | PostgreSQL 的空间和地理对象。 | 3.3.4 | 3.4.1 | 3.4.1 | 3.4.1 | 3.4.1 | 3.4.1 |
address_standardizer | 用于将地址分析成构成元素。 用于支持地理编码地址规范化步骤。 | 3.3.4 | 3.4.2 | 3.4.2 | 3.4.2 | 3.4.2 | 3.4.2 |
postgis_sfcgal | PostGIS SFCGAL 函数。 | 3.3.4 | 3.4.2 | 3.4.2 | 3.4.2 | 3.4.2 | 3.4.2 |
postgis_topology | PostGIS 拓扑空间类型和函数。 | 3.3.4 | 3.4.2 | 3.4.2 | 3.4.2 | 3.4.2 | 3.4.2 |
pg_stat_statements
pg_stat_statements 扩展已预加载到每个 Azure Cosmos DB for PostgreSQL 群集上,以便为你提供跟踪 SQL 语句执行统计信息的方法。
设置 pg_stat_statements.track
控制扩展要计数的语句。 其默认值为 top
,这意味着要跟踪客户端直接发出的所有语句。 另外两个跟踪级别为 none
和 all
。
查询执行信息 pg_stat_statements 提供的权限与记录每个 SQL 语句时对服务器性能的影响之间存在权衡。 如果不经常使用 pg_stat_statements 扩展,则建议将 pg_stat_statements.track
设置为 none
。 部分第三方监视服务可能依靠 pg_stat_statements 来提供查询性能见解,因此请确认这是否适合你。
dblink 和 postgres_fdw
可以使用 dblink 和 postgres_fdw 从一台 PostgreSQL 服务器连接到另一台服务器,或者连接到同一服务器中的另一个数据库。 接收服务器需要允许来自发送服务器的连接通过其防火墙。 如果要使用这些扩展通过公共访问在 Azure Cosmos DB for PostgreSQL 群集之间进行连接,请将“允许 Azure 服务和资源访问此群集(或服务器)”设置为“开”。 如果要使用这些扩展来循环回到同一服务器,则也需要启用此设置。 “允许 Azure 服务和资源访问此群集”设置可在针对群集的“Azure 门户”页中的“网络”下找到。 目前,不支持来自 Azure Cosmos DB for PostgreSQL 的出站连接。
orafce 扩展
orafce 扩展中禁用了 utl_file 函数。