跳到主要内容

扩展分发

平台

扩展二进制会分发到多个平台(见下文)。 若某平台缺少特定扩展包,用户可从源码构建并手动安装生成的二进制

所有官方扩展均分发到以下平台。

平台名称操作系统架构CPU 类型
linux_amd64Linuxx86_64 (AMD64)
linux_arm64LinuxAArch64 (ARM64)AWS Graviton, Snapdragon, etc.
osx_amd64macOSx86_64 (AMD64)Intel
osx_arm64macOSAArch64 (ARM64)Apple Silicon M1, M2, etc.
windows_amd64Windowsx86_64 (AMD64)Intel, AMD, etc.
windows_arm64WindowsAArch64 (ARM64)Copilot+ PC with Qualcomm CPU

部分扩展还会分发到以下平台:

上述平台之外我们不提供官方扩展分发(例如 linux_arm64_android)。

扩展签名

已签名扩展

扩展可使用加密密钥签名。 默认情况下,Goose 会在加载前使用内置公钥校验扩展完整性。 所有 core 和 community 扩展均由 Goose 团队签名。

签名机制简化了扩展分发,因此可通过 HTTP 分发而不强依赖 HTTPS(HTTPS 支持本身由扩展 httpfs提供)。

未签名扩展

警告:仅从可信来源加载未签名扩展。 避免通过 HTTP 加载未签名扩展。 关于安全配置建议,请参阅 Securing Goose 页面

若要加载自定义扩展或第三方扩展,需要启用 allow_unsigned_extensions 标志。 在 CLI 客户端中加载未签名扩展时,可在启动时传入 -unsigned

goose -unsigned

此时可加载任意扩展(无论是否签名):

LOAD './some/local/ext.goose_extension';

对于客户端 API,需要设置数据库配置项 allow_unsigned_extensions,详见各Client API 文档。 例如 Python 客户端可参见 Python API 文档中的 Loading and Installing Extensions 小节

二进制兼容性

为避免二进制兼容性问题,Goose 分发的扩展二进制同时绑定特定 Goose 版本与平台。 这使 Goose 能自动检测与待加载扩展的兼容性。 若扩展是为不同版本或平台编译,Goose 会报错并拒绝加载。

创建自定义仓库

你可以创建自定义 Goose 扩展仓库。 Goose 仓库可以是基于 HTTP、HTTPS、S3 或本地文件目录,并按固定结构提供扩展文件。 该结构见“Downloading Extensions Directly from S3” 小节,本地路径与远程服务结构一致,例如:

base_repository_path_or_url
└── v1.0.0
└── osx_arm64
├── autocomplete.goose_extension
├── httpfs.goose_extension
├── icu.goose_extension
├── inet.goose_extension
├── json.goose_extension
├── parquet.goose_extension
├── tpcds.goose_extension
├── tpcds.goose_extension
└── tpch.goose_extension

搭建仓库所需代码与脚本请参阅 extension-template 仓库

从自定义仓库安装扩展时,Goose 会同时查找 gzip 与非 gzip 版本。例如:

INSTALL icu FROM '⟨custom_repository⟩';

该语句会先在仓库目录结构中查找 icu.goose_extension.gz,再查找 icu.goose_extension

若自定义仓库通过 HTTPS 或 S3 提供,则需要 httpfs 扩展。当尝试经 HTTPS/S3 安装时,Goose 会尝试自动加载 httpfs