探索 Azure Database for PostgreSQL

已完成

Azure Database for PostgreSQL是一种完全托管的数据库服务,适用于 Azure 上的 PostgreSQL 工作负荷。 了解服务体系结构、计算层和托管功能有助于就 AI 应用程序的配置和容量规划做出明智的决策。

什么是Azure Database for PostgreSQL?

Azure Database for PostgreSQL是基于开源 PostgreSQL 数据库引擎的完全托管的关系数据库服务。 该服务运行 PostgreSQL 社区版,提供与现有 PostgreSQL 应用程序和工具的完全兼容性。 Microsoft管理底层基础结构,包括硬件预配、软件修补、备份管理和高可用性配置。

该服务提供对数据库配置的精细控制,同时维护托管平台的优势。 可以自定义维护时段、配置高可用性选项,并调整计算资源以满足工作负荷要求。

对于需要关系数据存储以及矢量作的 AI 应用程序,PostgreSQL 提供了一种引人注目的事务可靠性、具有 JSONB 的灵活数据建模以及包含矢量相似性搜索功能的扩展生态系统。

体系结构和部署选项

Azure Database for PostgreSQL将计算和存储分为独立的组件。 数据库引擎在 Linux 虚拟机上运行,而数据文件驻留在Azure托管存储上。 这种分离可实现计算和存储资源的独立缩放,并通过本地冗余存储副本提供内置数据持久性。

该服务提供三个计算层来匹配不同的工作负荷特征。 每个都提供不同的 CPU 和内存配置。

  • 可突发:提供基线 CPU 性能,并能在需要时突发,超越基准性能。 最适合不需要连续完整 CPU 容量的开发环境、小型应用程序和工作负载。 B 系列虚拟机为间歇性工作负荷提供经济高效的选项。

  • 常规用途: 为生产工作负荷提供均衡的计算和内存资源。 D 系列虚拟机为需要可预测的响应时间的应用程序提供一致的性能。 为典型的 Web 应用程序和后端服务选择“常规用途”。

  • 内存优化: 为受益于大型内存中数据集的工作负荷提供较高的内存与 vCPU 比率。 E 系列虚拟机擅长缓存繁重的工作负荷、复杂的分析查询和需要将大型工作集保留在内存中的应用程序。 执行内存中计算的 AI 应用程序通常受益于此层。

可以在部署后更改计算层,并短暂重启,使你能够随着工作负荷的发展而调整资源。

托管服务能力

Azure Database for PostgreSQL 处理那些通常需要专职数据库管理员进行的操作任务。

该服务会自动创建数据库的备份,并将其存储在支持可用性区域的区域中的区域冗余存储中,或者在不支持的区域本地冗余存储中存储。 默认备份保留期为 7 天,可以根据恢复要求最多延长 35 天。 备份包括完整快照和事务日志,使能够在保留期内的任意时间点(精确到秒)进行还原。 Azure使用 AES 256 位加密对所有备份进行加密,默认情况下使用平台管理的密钥或客户管理的密钥进行其他控制。

时间点还原允许将数据库恢复到备份保留期内的任何时刻。 还原作会创建一个新的服务器实例,其中包含恢复到指定时间戳的数据,这对于从意外的数据修改或针对历史数据库状态的测试中恢复非常有用。

Azure Database for PostgreSQL包括内置的 PgBouncer,这是一种轻型连接池,通过维护可重用连接池来减少建立新数据库连接的开销。 可以通过服务器配置启用 PgBouncer,并在端口 6432 上连接,而不是标准 PostgreSQL 端口 5432。 连接池对于进行许多短期数据库调用的 AI 应用程序非常有用,例如存储单个消息或检索每个推理请求的上下文。

重要

PgBouncer 仅适用于常规用途和内存优化计算层。 可突发层不支持内置的 PgBouncer 功能。

“优化性能、索引和缩放”模块中深入介绍了连接优化策略。

支持的 PostgreSQL 版本和扩展

Azure Database for PostgreSQL同时支持多个主要 PostgreSQL 版本。 该服务通常支持当前主版本和多个以前的版本,遵循 PostgreSQL 的社区支持时间线。 可以在创建新服务器或查询 server_version 现有服务器上的设置时检查可用版本。

PostgreSQL 的扩展机制允许你在核心数据库引擎之外添加功能。 扩展可以添加新的数据类型、函数、运算符和索引类型,而无需修改核心 PostgreSQL 代码。 多个扩展与 AI 应用程序相关:

  • pgvector: 启用矢量数据类型和相似性搜索作。 可以将嵌入向量与关系数据一起存储,并执行近似最近邻搜索。 “使用 Azure PostgreSQL 实现矢量搜索”模块详细介绍了 pgvector。

  • pg_trgm: 提供基于三元语法的文本相似性函数。 对于模糊文本匹配、自动完成功能以及查找不完全匹配的类似字符串非常有用。

  • hstore: 添加键值数据类型,用于在单个 PostgreSQL 值中存储键值对集。 对于不需要 JSONB 完全灵活性的半结构化数据非常有用。

确认扩展在服务器实例上可用后,可以使用命令启用 CREATE EXTENSION 扩展。

开发人员决策点

为应用程序配置Azure Database for PostgreSQL时,请考虑以下关键决策:

  • 选择计算层: 根据工作负荷的 CPU 和内存要求进行选择。 在开发、测试和概念验证工作中,如果成本优化比性能一致性更重要,可从可突发层开始。 将“常规用途”用于具有稳定且可预测的资源要求的生产工作负荷。 当应用程序受益于大型内存中缓存或执行复杂的分析查询时,请选择“内存优化”。 可以在部署后监视 CPU 和内存利用率,并根据需要调整层。

  • 评估扩展: 在应用程序设计早期查看可用的扩展。 确定应用程序是否需要矢量相似性搜索(pgvector)、全文搜索或地理空间功能(PostGIS)。 在提交设计之前,请验证Azure Database for PostgreSQL上是否提供了所需的扩展。 规划扩展升级作为数据库维护策略的一部分。

其他资源