使用 AWS SCT 将数据仓库架构转换为 Amazon RDS - AWS Schema Conversion Tool

使用 AWS SCT 将数据仓库架构转换为 Amazon RDS

AWS Schema Conversion Tool(AWS SCT)可自动完成从数据仓库架构到 Amazon RDS 或 Aurora 数据库架构的大部分转换过程。因为源数据库引擎和目标数据库引擎可以具有许多不同的特性和功能,所以 AWS SCT 会尝试尽可能在您的目标数据库中创建等效架构。如果无法直接转换,AWS SCT 会提供一个评估报告,其中包含可供您采取的操作的列表。使用 AWS SCT,您可以管理密钥,映射数据类型和对象以及创建手动转换。

AWS SCT 可以转换以下数据仓库架构。

  • Amazon Redshift

  • Azure Synapse Analytics(版本 10)

  • BigQuery

  • Greenplum 数据库(版本 4.3)

  • Microsoft SQL Server(版本 2008 及更高版本)

  • Netezza(版本 7.0.3 及更高版本)

  • Oracle(版本 10.2 及更高版本)

  • Snowflake(版本 3)

  • Teradata(版本 13 及更高版本)

  • Vertica(版本 7.2 及更高版本)

有关转换联机事务处理(OLTP)数据库架构的信息,请参阅 在 AWS Schema Conversion Tool 中转换数据库架构

要转换数据仓库架构,请执行以下步骤:

  1. 指定优化策略和规则,并指定您希望 AWS SCT 使用的迁移规则。您可以设置以下操作的规则:更改列数据类型、将对象从一个架构复制到另一架构,以及更改对象名称。

    您可以在设置中指定优化和迁移规则。有关优化策略的更多信息,请参阅 选择 AWS SCT 所用的优化策略和规则。有关迁移规则的更多信息,请参阅 在 AWS SCT 中创建迁移规则

  2. 提供有关您的源数据仓库的统计数据,以便 AWS SCT 可以优化数据仓库的转换方式。您可以直接从数据库收集统计数据,也可以上传现有的统计数据文件。有关提供数据仓库统计数据的更多信息,请参阅收集或上传 AWS SCT 的统计信息

  3. 创建数据库迁移评估报告,详细介绍无法自动转换的架构元素。您可以使用此报告来确定需要在与源数据库兼容的目标数据库中的哪个位置手动创建架构。有关评估报告的更多信息,请参阅在 AWS Schema Conversion Tool 中使用评估报告

  4. 转换架构。AWS SCT 可以创建本地版本的转换后架构以供您查看,但在您做好准备之前,不会将其应用于目标数据库。有关转换的更多信息,请参阅使用 AWS SCT 转换架构

  5. 转换架构后,您可以管理并编辑键。键管理是数据仓库转换的核心。有关管理密钥的更多信息,请参阅在 AWS SCT 中管理和自定义键

  6. 如果存在无法自动转换的架构元素,您有两种选择:更新源架构,然后再次转换;或者在目标数据库中创建等效的架构元素。有关手动转换架构元素的更多信息,请参阅在 AWS SCT 中处理手动转换。有关更新源架构的更多信息,请参阅更新和刷新 AWS SCT 中的转换后的架构

  7. 当您准备就绪后,可以将转换后的架构应用于目标数据库。有关保存和应用转换的架构的更多信息,请参阅保存和应用 AWS SCT 中的转换后的架构

将 Amazon Redshift 作为目标的权限

以下列出了 Amazon Redshift 作为目标所需的权限:

  • CREATE ON DATABASE:允许在数据库中创建新架构。

  • CREATE ON SCHEMA:允许在数据库架构中创建对象。

  • GRANT USAGE ON LANGUAGE:允许在数据库中创建新的函数和过程。

  • GRANT SELECT ON ALL TABLES IN SCHEMA pg_catalog:为用户提供有关 Amazon Redshift 集群的系统信息。

  • GRANT SELECT ON pg_class_info:为用户提供有关表分配方式的信息。

您可以使用以下代码示例创建数据库用户并授予权限。

CREATE USER user_name PASSWORD your_password; GRANT CREATE ON DATABASE db_name TO user_name; GRANT CREATE ON SCHEMA schema_name TO user_name; GRANT USAGE ON LANGUAGE plpythonu TO user_name; GRANT USAGE ON LANGUAGE plpgsql TO user_name; GRANT SELECT ON ALL TABLES IN SCHEMA pg_catalog TO user_name; GRANT SELECT ON pg_class_info TO user_name; GRANT SELECT ON sys_serverless_usage TO user_name; GRANT SELECT ON pg_database_info TO user_name; GRANT SELECT ON pg_statistic TO user_name;

在前面的示例中,将 user_name 替换为您的用户名。然后,将 db_name 替换为目标 Amazon Redshift 数据库的名称。接下来,将 schema_name 替换为您的 Amazon Redshift 架构的名称。对每个目标架构重复 GRANT CREATE ON SCHEMA 操作,您将在其中应用转换后的代码或迁移数据。最后,将 your_password 替换为安全密码。

您可以在目标 Amazon Redshift 数据库上应用扩展包。扩展包是一个附加模块,用于模拟将对象转换为 Amazon Redshift 时所需的源数据库函数。有关更多信息,请参阅 通过 AWS Schema Conversion Tool 使用扩展包

要执行此操作,AWS SCT 需要权限才能代表您访问 Amazon S3 存储桶。要提供此权限,请使用以下策略创建一个 AWS Identity and Access Management(IAM)用户。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:DeleteObject", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource":[ "arn:aws:s3:::aws-sct-*" ] }, { "Effect":"Allow", "Action":[ "s3:ListAllMyBuckets" ], "Resource":"" } ] }

选择 AWS SCT 所用的优化策略和规则

要优化 AWS Schema Conversion Tool 转换数据仓库架构的方式,您可以选择希望该工具使用的策略和规则。转换架构并查看建议的键后,您可以调整规则或更改策略,以获得想要的结果。

选择优化策略和规则
  1. 选择 Settings (设置),然后选择 Project settings (项目设置)。随即出现 Current project settings 对话框。

  2. 在左侧窗格中,选择 Optimization Strategies。优化策略将显示在右侧窗格中且已选定默认值。

  3. 对于 Strategy Sector,请选择您要使用的优化策略。可从以下选项中进行选择:

    • 使用元数据,忽略统计信息:在此策略中,只将元数据的信息用于优化决策。例如,如果源表中有多个索引,则使用源数据库排序顺序,第一个索引将成为分配键。

       

    • 忽略元数据,使用统计信息:在此策略中,只通过统计信息做出优化决策。此策略仅适用于提供了统计数据的表和列。有关更多信息,请参阅 收集或上传 AWS SCT 的统计信息

       

    • 使用元数据与统计信息:在此策略中,优化决策同时使用元数据和统计数据。

       

  4. 选择优化策略后,您可以选择要使用的规则。可从以下选项中进行选择:

    • 使用元数据选择分配键和排序键

    • 为排序规则选择事实数据表和适当的维度

    • 分析索引列的基数

    • 在查询日志表中查找最常用的表和列

    对于每个规则,您可以分别为排序键和分配键输入一个权重。AWS SCT 使用您在转换架构时选择的权重。稍后,当您查看建议的键时,如果您对结果不满意,可以返回此处更改您的设置。有关更多信息,请参阅 在 AWS SCT 中管理和自定义键

收集或上传 AWS SCT 的统计信息

要优化 AWS Schema Conversion Tool 转换数据仓库架构的方式,您可以提供该工具可使用的来自源数据库的统计数据。您可以直接从数据库收集统计数据,也可以上传现有的统计数据文件。

提供并查看统计数据
  1. 打开您的并连接到源数据库。

  2. 从项目左侧面板中选择一个架构对象,然后打开该对象的上下文 (右键单击) 菜单。选择 Collect StatisticsUpload Statistics,如下所示。

    包含收集统计数据的上下文菜单
  3. 从项目左侧面板中选择架构对象,然后选择 Statistics 选项卡。您可以查看该对象的统计数据。

    “Statistics (统计数据)”选项卡

    稍后,当您查看建议的键时,如果您对结果不满意,可以收集更多统计数据并重复此过程。有关更多信息,请参阅 在 AWS SCT 中管理和自定义键

在 AWS SCT 中创建迁移规则

在使用 AWS SCT 转换架构之前,您可以设置迁移规则。您可以设置以下操作的迁移规则:更改列数据类型、将对象从一个架构移动到另一架构,以及更改对象名称。例如,假定您的源架构中有一组名为 test_TABLE_NAME 的表。您可以设置一条规则,将前缀 test_ 更改为目标架构中的前缀 demo_

注意

您只能为不同的源数据库引擎和目标数据库引擎创建迁移规则。

您可以创建执行以下任务的迁移规则:

  • 添加、删除或替换前缀

  • 添加、删除或替换后缀

  • 更改列排序规则

  • 更改数据类型

  • 更改 charvarcharnvarcharstring 数据类型的长度

  • 移动对象

  • 重命名对象

您可以为以下对象创建迁移规则:

  • 数据库

  • 架构

创建迁移规则

您可以创建迁移规则并将规则另存为项目的一部分。打开项目,使用以下过程创建迁移规则。

创建迁移规则
  1. 视图菜单上,选择映射视图

  2. 服务器映射中,选择一对源服务器和目标服务器。

  3. 选择新建迁移规则。此时显示转换规则对话框。

  4. 选择 Add new rule。规则列表中新增一行。

  5. 配置规则:

    1. 对于 Name(名称),请为规则输入一个名称。

    2. 对于 For,请选择该规则适用的对象的类型。

    3. 对于 where,请输入在应用迁移规则之前要应用于对象的筛选器。通过使用 LIKE 子句对 WHERE 子句进行评估。您可以输入确切名称以选择一个对象,也可以输入模式来选择多个对象。

      适用于 WHERE 子句的字段有所不同,具体取决于对象类型。例如,如果对象类型为架构,则只有一个字段可用于架构名称。

    4. 对于操作,选择要创建的迁移规则的类型。

    5. 根据规则类型,输入一个或两个其他值。例如,要重命名对象,请输入对象的新名称。要替换前缀,请输入旧前缀和新前缀。

  6. 配置迁移规则后,请选择保存以保存您的规则。您也可以选择 Cancel 取消所做更改。

    “转换规则”对话框
  7. 添加、编辑和删除完规则后,选择 Save All 以保存您的所有更改。

  8. 选择关闭以关闭转换规则对话框。

您可以使用切换图标关闭迁移规则,而不将其删除。您可以使用复制图标复制现有的迁移规则。您可以使用铅笔图标编辑现有的迁移规则。您可以使用删除图标来删除现有的迁移规则。要保存对迁移规则所做的所有更改,请选择全部保存

导出迁移规则

如果您使用 AWS Database Migration Service(AWS DMS)将数据从源数据库迁移到目标数据库,则可向 AWS DMS 提供有关迁移规则的信息。有关任务的更多信息,请参阅处理 AWS Database Migration Service 复制任务

导出迁移规则
  1. 在 AWS Schema Conversion Tool 中,在视图菜单上选择映射视图

  2. 迁移规则中,选择迁移规则,然后选择修改迁移规则

  3. 选择导出 AWS DMS 脚本

  4. 浏览到要保存脚本的位置,然后选择 Save。迁移规则另存为可由 AWS DMS 使用的 JSON 脚本。

使用 AWS SCT 转换架构

将项目连接到源数据库和目标数据库后,您的 AWS Schema Conversion Tool 项目会在左侧面板中显示源数据库中的架构。该架构以树状图格式显示,且树的每个节点均延迟加载。如果您选择树状图中的节点,AWS SCT 会在这个时候要求您的源数据库提供架构信息。

您可以从源数据库中选择架构项目,然后将该架构转换为目标数据库的数据库引擎的等效架构。您可以从源数据库中选择要转换的任何架构项目。如果您选择的架构项取决于父项,则 AWS SCT 还会为该父项生成架构。例如,如果您从表中选择一个要转换的列,则 AWS SCT 为该列、该列所在的表以及该表所在的数据库生成架构。

转换架构

要转换源数据库中的架构,请选中要转换的架构名称对应的复选框。接下来,从项目的左侧面板中选择此架构。AWS SCT 用蓝色突出显示架构名称。打开该架构的上下文(右键单击)菜单,然后选择转换架构,如下所示。

转换架构

转换完源数据库的架构后,您可以从项目左侧面板中选择架构项目,并在项目的中心面板中查看转换后的架构。中下方面板显示转换后架构的属性以及创建该架构所用的 SQL 命令,如下所示。

选择源架构项

转换完架构后,您可以保存您的项目。源数据库中的架构信息随您的项目一起保存。此功能意味着您无需连接到源数据库即可脱机工作。如果为源数据库选择从数据库刷新,则 AWS SCT 会连接到源数据库以更新项目中的架构。有关更多信息,请参阅 更新和刷新 AWS SCT 中的转换后的架构

您可以为无法自动转换的项目创建一个数据库迁移评估报告。该评估报告对于识别和解析无法自动转换的架构项目很有用。有关更多信息,请参阅 在 AWS Schema Conversion Tool 中使用评估报告

当 AWS SCT 生成转换后的架构后,不会立即将其应用于目标数据库。而会将转换后的架构存储在本地,直到您准备好将其应用到目标数据库。有关更多信息,请参阅 应用转换后的架构

编辑转换后的架构

您可以编辑转换后的架构,并将更改另存为项目的一部分。

编辑转换后的架构
  1. 在显示源数据库架构的左侧面板中,选择要为其编辑转换后架构的架构项目。

  2. 在显示所选项目的转换后架构的中下方面板中,选择 SQL 选项卡。

  3. SQL 选项卡显示的文本中,根据需要更改架构。该架构会在您进行更新时自动随项目一起保存。

    从目标数据库刷新架构

您对转换后架构的更改会在您进行更新时随项目一起存储。如果您刚从源数据库转换一个架构项目,并且已对该项目之前转换的架构进行了更新,则这些现有更新将替换为基于源数据库的新转换的架构项目。

清除转换后的架构

在您将架构应用到目标数据库之前,AWS SCT 仅在本地将转换后的架构存储在项目中。您可以通过选择目标数据库的树状图节点,然后选择 Refresh from Database 来清除您的项目中的计划架构。由于尚未向目标数据库中写入架构,从数据库刷新会删除 AWS SCT 项目中的计划架构元素,以便与目标数据库中的现有元素相匹配。

在 AWS SCT 中管理和自定义键

在使用 AWS Schema Conversion Tool 转换架构后,您可以管理并编辑键。键管理是数据仓库转换的核心。

要管理键,请在目标数据库中选择一个表,然后选择 Key Management 选项卡,如下所示。

“Key management (键管理)”选项卡

左侧窗格包含键建议,以及每个建议的置信评级。您可以选择其中一个建议,也可以通过在右侧窗格中编辑来自定义键。

如果键的选择与预期不相符,您可以编辑优化策略,然后重试转换。有关更多信息,请参阅 选择 AWS SCT 所用的优化策略和规则

相关 主题

在 AWS SCT 中创建和使用评估报告。

AWS Schema Conversion Tool 会创建数据库迁移评估报告,以帮助您转换架构。数据库迁移评估报告提供了关于将源数据库中的架构转换到目标数据库的重要信息。该报告汇总了所有架构转换任务,针对无法转换到目标数据库的数据库引擎的架构,还详细介绍了其操作项。该报告还包含:对于无法自动转换的部分,在您的目标数据库中编写等效代码所需付出的工作量的估算。

创建数据库迁移评估报告

使用以下过程创建数据库迁移评估报告。

创建数据库迁移评估报告
  1. 在显示源数据库架构的左侧面板中,选择要为其创建评估报告的架构对象。

  2. 打开该对象的上下文 (右键单击) 菜单,然后选择 Create Report

    创建数据库迁移评估报告

评估报告摘要

创建完评估报告后,评估报告视图会打开,其中显示 Summary 选项卡。摘要选项卡显示了来自数据库迁移评估报告的摘要信息。它显示了已自动转换的项目和未自动转换的项目。

评估报告摘要

对于无法自动转换为目标数据库引擎的架构项目,摘要包含了在您的目标数据库实例中创建与源数据库中的架构项目等效的架构项目所需的工作量的估算。

该报告将转换这些架构项目的估算时间划分为以下类别:

  • 少量:可在 1 小时之内完成的操作。

  • 中度:可在 1 到 4 小时内完成的较为复杂的操作。

  • 大量:需要 4 小时以上才能完成的非常复杂的操作。

评估报告操作项

评估报告视图还包含 Action Items 选项卡。此选项卡包含无法自动转换到目标数据库的数据库引擎的项目列表。如果从列表中选择一个操作项,AWS SCT 会突出显示您架构中该操作项适用的项。

该报告还包含有关如何手动转换架构项目的建议。有关如何处理手动转换的更多信息,请参阅在 AWS SCT 中处理手动转换

“Action items (操作项)”选项卡

保存评估报告

您可以将数据库迁移评估报告的本地副本另存为 PDF 文件或逗号分隔值(CSV)文件。CSV 文件仅包含操作项信息。PDF 文件包含摘要和操作项信息,如以下示例所示。

数据库迁移评估报告

在 AWS SCT 中处理手动转换

评估报告包含一系列无法自动转换到目标数据库的数据库引擎的项目。对于无法转换的每一项,Action Items 选项卡上都有一个操作项。

您可以按如下方式应对评估报告中的操作项:

  • 修改您的源数据库架构。

  • 修改您的目标数据库架构。

修改源架构

对于某些项目,将源数据库中的数据库架构修改为可自动转换的架构可能更容易。首先验证新更改与您的应用程序架构兼容,然后更新源数据库中的架构。最后,用更新的架构信息刷新您的项目。然后,您可以转换更新后的架构,并生成新的数据库迁移评估报告。对于在源架构中更改的项目,不再显示操作项。

此过程的优势是,当您从源数据库刷新时,更新后的架构始终可用。

修改目标架构

对于某些项目,更容易的方法可能是将转换后的架构应用于目标数据库,然后手动将无法自动转换的项目的等效架构项目添加到目标数据库。您可以编写所有可通过应用该架构自动转换到目标数据库的架构。有关更多信息,请参阅 保存和应用 AWS SCT 中的转换后的架构

写入到目标数据库中的架构不包含无法自动转换的项目。在将架构应用到目标数据库后,您就可以在目标数据库中手动创建与源数据库中的架构等效的架构。数据库迁移评估报告中的操作项包含有关如何创建等效架构的建议。

警告

如果您在目标数据库中手动创建构架,请保存所做的所有手动操作的副本。如果再次将您的项目的转换后架构应用到目标数据库,它将覆盖您所做的手动操作。

在某些情况下,您无法在目标数据库中创建等效架构。您可能需要重新架构一部分应用程序和数据库,以便将该数据库引擎提供的功能用于您的目标数据库。在其他情况下,您可以简单地忽略无法自动转换的架构。

更新和刷新 AWS SCT 中的转换后的架构

您可以更新 AWS Schema Conversion Tool 项目中的源架构和目标架构。

  • :如果您更新源数据库的架构,AWS SCT 将用源数据库中的最新架构代替项目中的架构。如果您已对源数据库的架构进行了更改,则可使用此功能来更新项目。

  • 目标:如果您更新目标数据库的架构,AWS SCT 将用目标数据库中的最新架构代替您的项目中的架构。如果您尚未将任何架构应用到目标数据库,AWS SCT 将从您的项目中清除转换后的架构。然后,您可以转换源数据库中的架构,以获得干净的目标数据库。

您可以通过选择从数据库刷新更新 AWS SCT 项目中的架构。

保存和应用 AWS SCT 中的转换后的架构

当 AWS Schema Conversion Tool 生成转换后的架构(如 使用 AWS SCT 转换架构 中所示)后,不会立即将转换后的架构应用到目标数据库。而会在本地将转换后的架构存储在项目中,直到您准备好将其应用到目标数据库。使用此功能,您可以使用无法自动转换到目标数据库引擎的架构项目。有关无法自动转换的项目的更多信息,请参阅在 AWS Schema Conversion Tool 中使用评估报告

您可以选择在将架构应用到目标数据库之前,让该工具将转换后的架构作为 SQL 脚本保存到文件中。此外,您还可以让该工具将转换后的架构直接应用到目标数据库。

将转换后的架构保存到文件中

您可以将转换后的架构作为 SQL 脚本保存到文本文件中。使用此方法,您可以将 AWS SCT 中生成的 SQL 脚本修改为该工具无法自动转换的地址项。然后,您可以在目标数据库实例上运行更新的脚本,将转换后的架构应用于目标数据库。

将转换后的架构另存为 SQL 脚本
  1. 选择架构,并打开上下文 (右键单击) 菜单。

  2. 选择另存为 SQL

  3. 输入文件名并选择保存

  4. 使用以下选项之一保存转换后的架构:

    • 单个文件

    • 每个阶段单个文件

    • 每个语句单个文件

选择 SQL 脚本的格式
  1. 设置菜单上,选择项目设置

  2. 选择保存脚本

  3. 对于供应商,选择数据库平台。

  4. 将 SQL 脚本保存到中,选择数据库架构脚本的保存方式。

  5. 选择确定保存设置。

应用转换后的架构

在您准备好将转换后的架构应用到目标数据库后,请从项目的右侧面板中选择该架构元素。打开架构元素的上下文 (右键单击) 菜单,然后选择 Apply to database,如下所示。

应用于数据库

扩展包架构

首次将转换后的架构应用于目标数据库实例时,AWS SCT 会向目标数据库实例添加一个额外的架构。该架构用于实现将转换后的架构写入到目标数据库实例时必需的源数据库的系统功能。该架构称为扩展包架构。

不要修改扩展包架构,否则,您可能会在写入到目标数据库实例的转换后架构中遇到意外结果。将架构完全迁移到目标数据库实例后,就不再需要 AWS SCT 了,您可以删除该扩展包架构。

扩展包架构按照源数据库命名,如下所示:

  • Greenplum:aws_greenplum_ext

  • Microsoft SQL Server: aws_sqlserver_ext

  • Netezza:aws_netezza_ext

  • Oracle:aws_oracle_ext

  • Snowflake:aws_snowflake_ext

  • Teradata:aws_teradata_ext

  • Vertica:aws_vertica_ext

有关更多信息,请参阅 通过 AWS Schema Conversion Tool 使用扩展包

Python 库

要在 Amazon Redshift 中创建自定义函数,您可以使用 Python 语言。使用 AWS SCT 扩展包以安装 Amazon Redshift 数据库的 python 库。有关更多信息,请参阅 通过 AWS Schema Conversion Tool 使用扩展包