tencent cloud

云数据库 PostgreSQL

动态与公告
产品动态
产品简介
产品概述
产品特性
产品优势
应用场景
信息安全说明
地域和可用区
产品功能列表
大版本生命周期说明
MSSQL 兼容版
产品计费
计费概述
实例类型与规格
购买方式
退费说明
欠费说明
备份空间收费说明
快速入门
创建 PostgreSQL 实例
连接 PostgreSQL 实例
管理 PostgreSQL 实例
数据导入
通过 DTS 迁移数据
内核能力介绍
内核版本概述
内核版本更新动态
查看内核版本
自研内核功能介绍
数据库审计
审计服务说明
开通审计服务
查看审计日志
修改审计服务
审计性能说明
用户指南
实例管理
升级实例
CPU 弹性扩容
只读实例
账号管理
数据库管理
参数管理
日志管理及分析
备份与恢复
数据迁移
插件管理
网络管理
访问管理
数据安全
租户及资源隔离
安全组
监控与告警
标签
AI 实践
使用 tencentdb_ai 插件调用大模型
使用 tencentdb_ai 插件构建 AI 应用
结合 Supabase 快速构建基于云数据库 PostgreSQL 的后端服务
实践教程
跨库访问
如何在 PostgreSQL 中自动创建分区
基于 pg_roaringbitmap 实现超大规模标签查找
一条 SQL 实现查询附近的人
如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源
通过 cos_fdw 插件支持分级存储能力
通过 pgpool 实现读写分离
通过 auto_explain 插件实现慢 SQL 分析
使用 pglogical 进行逻辑复制
使用 Debezium 采集 PostgreSQL 数据
在 CVM 本地搭建 PostgreSQL 异地灾备环境
只读实例与只读组实践教程
如何使用云函数定时操作数据库
表膨胀处理
性能白皮书
测试方法
测试结果
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Read-only Replica APIs
Backup and Recovery APIs
Parameter Management APIs
Security Group APIs
Performance Optimization APIs
Account APIs
Specification APIs
Network APIs
Data Types
Error Codes
常见问题
相关协议
Service Level Agreement
Terms of Service
词汇表
联系我们

架构简介

PDF
聚焦模式
字号
最后更新时间: 2024-04-09 10:32:10
腾讯云数据库 PostgreSQL 基于 Babelfish for PostgreSQL 进行改造适配支持了 Microsoft SQL Server 数据类型、语法和函数。此外还支持 SQL Server 线路级协议(TDS),允许 SQL Server 应用程序与 PostgreSQL 进行通信。这样做有助于业务以较少的更改迁移数据库对象、存储过程和应用程序代码,将数据库从 SQL Server 转换为 PostgreSQL。
云数据库 PostgreSQL 暂不完整支持 T-SQL,但是您可以使用 PostgreSQL 命令来执行通常由这些命令处理的大多任务。例如,您经常使用云数据库 PostgreSQL 不支持的特定 T-SQL 命令。在这种情况下,您可以通过连接到 PostgreSQL 端口并改用 PostgreSQL 命令。更多信息,请参见 PostgreSQL 文档中的 SQL 命令
说明:
后续关于云数据库 PostgreSQL 的 SQL Server 兼容版本统一简称为 MSSQL 兼容版。

架构说明

MSSQL 兼容版目前支持的 PostgreSQL 数据库版本为14。
MSSQL 兼容版提供了一个新的数据库访问端口,使其能够支持 SQL Server T-SQL 和常用的 SQL Server 语句,并且支持 TDS 协议的客户端应用程序访问 MSSQL 兼容版的 TDS 侦听器端口。目前支持 TDS 7.1 及更高版本。有关 SQL Server 线路级协议的更多信息,请参见 [MS-TDS]:表格式数据流协议
您可以使用来自一个应用程序的 TDS 连接和原生 PostgreSQL 连接同时访问数据。
预设情况下,要使用不同的数据库专用语法,请使用以下端口:
SQL Server,客户端连接到端口1433。
PostgreSQL,客户端连接到端口5432。
当创建一个 MSSQL 兼容版的 PostgreSQL 数据库实例时,会为该实例预创建一个名字为 babelfish_db 的 PostgreSQL 数据库。此数据库是所有迁移的 SQL Server 对象和结构所在的位置。
注意:
在 MSSQL 兼容版实例中,系统会为实例预留 babelfish_db 数据库名称。
当您连接到 TDS 端口时,会话将被自动转换至 babelfish_db 数据库中。从 T-SQL 来看,该结构看起来类似于连接到 SQL Server 实例。您可以看到 mastertempdb 数据库以及 sys.databases 目录。您可以创建其他用户数据库并使用 USE 语句在数据库之间切换。
当您创建 SQL Server 用户数据库时,该数据库将映射为 babelfish_db 数据库中的 schema。数据库保留的跨数据库语法和语义等于或类似于 SQL Server 提供的语法和语义。

single database 和 multi database 区别

当您创建 MSSQL 兼容版实例时,您可以选择单个 SQL Server 数据库或者将多个 SQL Server 数据库一起使用。此选项会影响 babelfish_db 数据库内 SQL Server schema 的名称显示在 PostgreSQL 中的方式。迁移模式存储在 migration_mode 参数中。此参数为初始化参数,后续将无法更改此参数。
在单数据库模式下,babelfish_db 数据库中的用户数据库的模式名称与 SQL Server 中的数据库保持一致。如果选择移动单个数据库,架构将在数据库内重新创建,并且可以引用与 SQL Server 使用的名称相同的名称。例如,dbo 和 sche A schema在 db1 数据库内的场景下,转换到 PostgreSQL 中后则如下图。

通过 TDS 进行连接时,您可以运行 USE db1 以查看来自 T-SQL 的架构 dbo 和 sche A,就像在 SQL Server 中一样。同样的 schema 名称也可以从 PostgreSQL 中看到。
在多数据库模式下,当从 PostgreSQL 中查看时,用户数据库的架构名称变为 dbname_schemaname。从 T-SQL 中看到 schema 名称保持不变。

通过 TDS 进行连接时,您可以运行 USE db1 或者 db2,以查看来自 T-SQL 的 schame Sche A 和 Sche B,就像在 SQL Server 中一样。映射的架构名称,例如 db1_dbo 和 dbA_Sche A,在 PostgreSQL 中可见。 每个数据库仍包含您的 schema。每个数据库的名称都加在 SQL Server 架构的名称之前,使用下划线作为分隔符,例如:
db1 包含 db1_dbo 和 db1_sche A。
db2 包含 db2_dbo 和 db2_Sche B。 在 babelfish_db 数据库内,T-SQL 用户仍然需要运行 USE dbname 以更改数据库,因此感觉与 SQL Server 相似。

如何选择迁移模式

您可根据拥有的用户数据库数量和迁移计划选择迁移模式。创建实例后,您将无法更改迁移模式。选择迁移模式时,请考虑用户数据库和客户端的要求。 当您创建 MSSQL 兼容版实例时,会创建系统数据库 master 和 tempdb。如果您在系统数据库中创建或修改了对象(master 或 tempdb),请确保在新集群中重新创建这些对象。与 SQL Server 不同,PostgreSQL 不会在集群重启后重新初始化 tempdb。
在以下情况下建议使用单个数据库迁移模式:
如果您要迁移单个 SQL Server 数据库。在单个数据库模式下,迁移的 schema 名称与原始的 SQL Server schema 名称相同。迁移应用程序时,对 SQL 代码进行的更改会减少。
如果您的最终目标是完全迁移到 PostgreSQL。仅将兼容版作为一个中间状态,这一种场景下,就可以选择单数据库迁移模式。
在以下情况下建议使用多数据库迁移模式:
如果您正在试用 MSSQL 兼容版且不确定自己未来的需求。
如果需要一起迁移多个用户数据库,并且最终目标不是执行完全原生的 PostgreSQL 迁移。
您将来可能要迁移多个数据库。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈