云数据库 PostgreSQL 架构简介

腾讯云数据库 PostgreSQL 基于 Babelfish for PostgreSQL 进行改造适配支持了 Microsoft SQL Server 数据类型、语法和函数。此外还支持 SQL Server 线路级协议(TDS),允许 SQL Server 应用程序与 PostgreSQL 进行通信。这样做有助于业务以较少的更改迁移数据库对象、存储过程和应用程序代码,将数据库从 SQL Server 转换为 Pos。

相关产品
云数据库 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 对象和结构所在的位置。

二、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 中后则如下。nn通过 TDS 进行连接时,你可以运行 USE db1 以查看来自 T-SQL 的架构 dbo 和 sche A,就像在 SQL Server 中一样。同样的 schema 名称也可以从 PostgreSQL 中看到。

·在多数据库模式下,当从 PostgreSQL 中查看时,用户数据库的架构名称变为 dbname_schemaname。从 T-SQL 中看到 schema 名称保持不变。n

通过 TDS 进行连接时,你可以运行 USE db1 或者 db2,以查看来自 T-SQL 的 schame Sche A 和 Sche B,就像在 SQL Server 中一样。映射的架构名称,例如 db1_dbo 和 dbA_Sche A,在 PostgreSQL 中可见。n每个数据库仍包含你的 schema。每个数据库的名称都加在 SQL Server 架构的名称之前,使用下划线作为分隔符,例如:

·db1 包含 db1_dbo 和 db1_sche A。

·db2 包含 db2_dbo 和 db2_Sche B。n在 babelfish_db 数据库内,T-SQL 用户仍然需要运行 USE dbname 以更改数据库,因此感觉与 SQL Server 相似。

三、如何选择迁移模式

你可根据拥有的用户数据库数量和迁移计划选择迁移模式。创建实例后,你将无法更改迁移模式。选择迁移模式时,请考虑用户数据库和客户端的要求。n当你创建 MSSQL 兼容版实例时,会创建系统数据库 master 和 tempdb。如果你在系统数据库中创建或修改了对象(master 或 tempdb),请确保在新集群中重新创建这些对象。与 SQL Server 不同,PostgreSQL 不会在集群重启后重新初始化 tempdb。

在以下情况下建议使用单个数据库迁移模式:

·如果你要迁移单个 SQL Server 数据库。在单个数据库模式下,迁移的 schema 名称与原始的 SQL Server schema 名称相同。迁移应用程序时,对 SQL 代码进行的更改会减少。

·如果你的最终目标是完全迁移到 PostgreSQL。仅将兼容版作为一个中间状态,这一种场景下,就可以选择单数据库迁移模式。

在以下情况下建议使用多数据库迁移模式:

·如果你正在试用 MSSQL 兼容版且不确定自己未来的需求。

·如果需要一起迁移多个用户数据库,并且最终目标不是执行完全原生的 PostgreSQL 迁移。

·你将来可能要迁移多个数据库。

赞 (0)
上一篇 4天前
下一篇 4天前