SCTの知識を整理

# 背景・目的
- Schema Conversion Tool（以降、SCTという。）を使う機会があるので事前に学ぶ。

# 結論
- SCTでできることは、スキーマ変換以外にも、SQLの書き換えやRedshiftへの最適化などが可能。

# 内容
## SCTとは
- Schema Conversion Toolの略。
- 以下に、ドキュメントの内容を転記する。
> AWS Schema Conversion Tool (AWS SCT) を使用すると、データベースエンジン間で既存のデータベーススキーマを変換できます。リレーショナル OLTP スキーマやデータウェアハウススキーマを変換できます。変換されたスキーマは、Amazon Relational Database Service (Amazon RDS) MySQL、MariaDB、Oracle、SQL サーバー、PostgreSQL Amazon Aurora スター、または Amazon Redshift クラスターに適しています。変換されたスキーマは、Amazon EC2 インスタンスでデータベースと共に使用するか、Amazon S3 バケットでデータとして保存することもできます。

- データベース間のスキーマを変換できる
- 対象は、OLTPのRDB、DWHなど

### サポートされている変換
- 2021/12/24現在の対象を以下にまとめておく。詳細は[ドキュメント](https://docs.aws.amazon.com/ja_jp/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)を参照。

#### OLTP

<Table>
<TR>
  <TH rowspan="2">ソース</TH>
  <TH colspan="7">ターゲット</TH>
</TR>
<TR>
  <TH>Aurora MySQL</TH>
  <TH>Aurora PostgreSQL</TH>
  <TH>MariaDB</TH>
  <TH>SQL Server</TH>
  <TH>MySQL</TH>
  <TH>PostgreSQL</TH>
  <TH>DynamoDB</TH>
</TR>
<tr>
  <td>SQL Server</td>
  <td>◯ <BR>互換版（※1）</td>
  <td>◯ <BR>互換版（※1）</td>
  <td>◯</td>
  <td>◯<BR>10.2および10.3</td>
  <td>◯</td>
  <td>◯</td>
  <td>-</td>
</tr>
<tr>
  <td>MySQL（バージョン5.5以降）</td>
  <td>◯</td>
  <td>◯</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
</tr>
<tr>
  <td>Oracle（バージョン10.2以降）</td>
  <td>◯</td>
  <td>◯</td>
  <td>◯<BR>10.2および10.3</td>
  <td>-</td>
  <td>◯</td>
  <td>◯</td>
  <td>-</td>
</tr>
<tr>
  <td>IBM Db2 LUW(バージョン 9.1、9.5、)</td>
  <td>◯</td>
  <td>◯</td>
  <td>◯<BR>10.2および10.3</td>
  <td>-</td>
  <td>◯</td>
  <td>◯</td>
  <td>-</td>
</tr>
<tr>
  <td>Apache Cassandra (バージョン 2.0、3.0、3.1.1、および 3.11.2)</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>◯</td>
</tr>
<tr>
  <td>Sybase ASE (12.5、15.0、15.5、15.7、16.0)	</td>
  <td>◯</td>
  <td>◯</td>
  <td>-</td>
  <td>-</td>
  <td>◯</td>
  <td>◯</td>
  <td>-</td>
</tr>
</Table>

- ※1 互換版とそれ以外の違いの違いが不明。後ほど調べる。

#### DWH
<Table>
<TR>
  <TH Rowspan="2">ソース</TH>
  <TH>ターゲット</TH>
</TR>
<TR>
  <TH>Redshift</TH>
</TR>
<tr>
  <td>Greenplum データベース (バージョン 4.3 以降)</td>
  <td>◯</td>
</tr>
<tr>
  <td>Microsoft SQL Server (バージョン 2008 以降)</td>
  <td>◯</td>
</tr>
<tr>
  <td>Netezza (バージョン 7.0.3 以降)</td>
  <td>◯</td>
</tr>
<tr>
  <td>Oracle (バージョン 10 以降)</td>
  <td>◯</td>
</tr>
<tr>
  <td>Teradata (バージョン 13 以降)</td>
  <td>◯</td>
</tr>
<tr>
  <td>Vertica (バージョン 7.2.2 以降)</td>
  <td>◯</td>
</tr>
</Table>

## 概要
- 以下に、機能についてのドキュメントを転機する。

> AWS SCTには、ソースデータベースのデータベーススキーマをターゲット Amazon RDS インスタンスと互換性のある形式に自動変換するための、プロジェクトベースのユーザーインターフェイスが用意されています。ソースデータベースのスキーマを自動変換できない場合、AWS SCTでは、ターゲット Amazon RDS データベースで同等のスキーマを作成する方法についてのガイダンスが表示されます。

- UIで操作可能
- プロジェクトベースで作成される
- 変換できない場合、ガイドされる（詳細は別途でまとめる予定）

> AWS SCT に関するフィードバックを提供できます。バグレポートの提出、機能リクエストの提出、一般情報の提供ができます。

- フィードバックを提供できる。（詳細は別途でまとめる予定）

### その他機能
- 以下に、スキーマ変換以外の機能を記載する。
    - データ抽出エージェントを使用し、Redshiftへの以降を準備するため、DWHからデータを抽出できる。
    - DMSエンドポイント、タスクを作成できる。またSCTからタスクの状況をモニタリングもできる。
    - RDSやRedshiftへ変換できない場合、SCT拡張パックウィザードを使用して、変換できない機能をエミュレートできる
        - Lambda、Pythonライブラリをインストールする
    - Redshiftデータベースを最適化する。ソートキーと分散キーをレコメンドする。
    - RDSインスタンスに、オンプレミスのDBスキーマをコピーできる。
        - クラウドへの移行や、ライセンスタイプの変更にかかるコスト試算に役立てる。

    - アプリケーションSQLを変換できる。（詳細は別途まとめる予定）
    - ETL変換できる。（詳細は別途まとめる予定）


# 考察
- RDBだけかと思いきや、KVS（Cassandra）もサポートされている。
- DWHはかなりのラインナップがある。
- 触ってみないと実感がわかない。いくつか不明な仕様があるので、後ほど確認し本ページを更新する予定。

# 参考
https://docs.aws.amazon.com/ja_jp/SchemaConversionTool/latest/userguide/CHAP_Welcome.html