AWS Schema Conversion Tool を使用した Google BigQuery への接続
AWS SCT を使用して、スキーマ、コードオブジェクトおよびアプリケーションコードを BigQuery から Amazon Redshift に変換できます。
BigQuery をソースとする場合の権限
AWS SCT で BigQuery データウェアハウスをソースとして使用するには、サービスアカウントを作成します。Google Cloud では、アプリケーションはサービスアカウントを使用して承認された API コールを行います。サービスアカウントはユーザーアカウントとは異なります。詳細については、Google Cloud Identity and Access Management ドキュメントの「サービス アカウント
サービスアカウントには必ず以下のロールを付与してください。
-
BigQuery Admin
-
Storage Admin
BigQuery Admin
ロールは、プロジェクト内のすべてのリソースを管理する権限を付与します。AWS SCT は、このロールを使用して移行プロジェクトに BigQuery メタデータを読み込みます。
Storage Admin
ロールにより、データオブジェクトとバケットを完全に制御できます。このロールは Cloud Storage
の下にあります。AWS SCTは このロールを使用して BigQuery からデータを抽出し、それを Amazon Redshift にロードします。
サービスアカウントキーファイルを作成するには
-
https://console.cloud.google.com/
で Google Cloud 管理コンソールにログインします。 -
BigQuery API
ページで [有効にする] を選択します。API が [有効] になっている場合は、このステップをスキップしてください。 -
[サービスアカウント
] ページで、プロジェクトを選択し、[サービスアカウントの作成] を選択します。 -
[サービスアカウント詳細] ページで、[サービスアカウント名] にわかりやすい値を入力します。[作成して続ける] を選択します。[このサービスアカウントにプロジェクトへのアクセス権を付与] ページが開きます。
-
[ロールの選択] で [BigQuery] を選択し、次に [BigQuery 管理者] を選択します。
-
[別のロールを追加] を選択します。[ロールの選択] で [クラウドストレージ] を選択し、[ストレージ管理者] を選択します。
-
[続ける] を選択し、次に [保存] を選択します。
-
[サービスアカウント
] ページで、作成したサービスアカウントを選択します。 -
[キー] を選択し、[キーの追加] で [新しいキーの作成] を選択します。
-
[JSON]、[作成] の順に選択します。プライベートキーを保存するフォルダを選択するか、ブラウザのダウンロード用のデフォルトフォルダを選択します。
BigQuery データウェアハウスからデータを抽出するために、AWS SCT は Google Cloud Storage バケットフォルダを使用します。データ移行を開始する前に、このバケットを作成してください。Google Cloud Storage バケットフォルダへのパスを [ローカルタスクの作成] ダイアログボックスに入力します。詳細については、「AWS SCT タスクを作成、実行、モニタリングする」を参照してください。
BigQuery へソースとして接続
以下の手順を使用して、ソースデータベースを AWS Schema Conversion Tool に接続します。
BigQuery ソースデータウェアハウスに接続するには
-
AWS Schema Conversion Tool で、[Add source] (ソースの追加) を選択します。
-
[BigQuery] を選択し、[次へ ] を選択します。
[Add source] (ソースの追加) ダイアログボックスが表示されます。
-
[接続名] に BigQuery プロジェクトの名前を入力します。AWS SCT で、この名前が左側のパネルのツリーに表示されます。
-
[キーパス] にサービスアカウントのキーファイルへのパスを入力します。このファイルの作成の詳細については、「BigQuery をソースとする場合の権限」を参照してください。
-
[接続のテスト] を選択して、AWS SCT をソースデータベースに正常に接続できることを確認します。
-
[接続] を選択して、ソース BigQuery プロジェクトに接続します。
BigQuery を AWS SCT のソースとして使用する場合の制限
BigQuery を AWS SCT のソースとして使用する場合は、以下の制限が適用されます。
-
AWS SCT では、分析関数でのサブクエリの変換はサポートされていません。
-
AWS SCT を使用して BigQuery
SELECT AS STRUCT
とSELECT AS VALUE
ステートメントを変換することははできません。 -
AWS SCT では、次のタイプの関数の変換はサポートされていません。
近似値
ビット
デバッグ
横串検索
地域別
ハッシュ
数学的
正味
統計集計
UUID
-
AWS SCT では、文字列関数の変換は限定的なサポートされているだけです。
-
AWS SCT では、
UNNEST
演算子の変換はサポートされていません。 -
AWS SCT では相関結合操作を変換できません。
-
AWS SCT、
QUALIFY
、WINDOW
、LIMIT
、OFFSET
句の変換はサポートされていません。 -
AWS SCT を使用して再帰的な共通テーブル式を変換することはできません。
-
AWS SCT では、
VALUES
句内にサブクエリを含むINSERT
ステートメントの変換はサポートされていません。 -
AWS SCT では、ネストされたフィールドや繰り返しレコードの
UPDATE
ステートメントの変換はサポートされていません。 -
AWS SCT を
STRUCT
およびARRAY
データ型の変換には使用することはできません。
BigQuery から Amazon Redshift への変換設定
BigQuery から Amazon Redshift への変換設定を編集するには、AWS SCT で [設定] を選択し、[変換設定] を選択します。上のリストから [Google BigQuery] を選択し、次に [Google BigQuery – Amazon Redshift] を選択します。AWS SCT に、BigQuery から Amazon Redshift への変換に使用可能なすべての設定が表示されます。
AWS SCT での BigQuery から Amazon Redshift への変換設定には、以下のオプションが含まれています。
-
変換されたコード内のアクション項目に関するコメントの数を制限する。
[変換後のコードにコメントを追加] で、選択した重要度以上のアクションアイテムについて、アクションアイテムの重要度を選択します。AWS SCT は、選択した重要度以上のアクションアイテムについて、変換後のコードにコメントを追加します。
たとえば、変換したコード内のコメントの数を最小限に抑えるには、[エラーのみ] を選択します。変換したコードのすべてのアクション項目にコメントを含めるには、[すべてのメッセージ] を選択します。
-
AWS SCT でターゲット Amazon Redshift クラスターに適用できるテーブルの最大数を設定します。
[ターゲット Amazon Redshift クラスターの最大テーブル数] では、AWS SCT が Amazon Redshift クラスターに適用できるテーブルの数を選択します。
Amazon Redshift には、クラスターノードタイプの使用を制限するクォータがあります。[自動] を選択した場合、AWS SCT はノードタイプに応じてターゲット Amazon Redshift クラスターに適用するテーブルの数を決定します。オプションで、値を手動で選択します。詳細については、「Amazon Redshift 管理ガイド」の「Amazon Redshift のクォータと制限」を参照してください。
Amazon Redshift クラスターが保存できる量を超える場合でも、AWS SCT はすべてのソーステーブルを変換します。AWS SCT では、変換されたコードはプロジェクトに保存され、ターゲットデータベースには適用されません。変換したコードを適用したときにテーブルの Amazon Redshift クラスターのクォータに達すると、AWS SCT に警告メッセージが表示されます。また、テーブルの数が制限に達するまで、AWS SCT はターゲット Amazon Redshift クラスターにテーブルを適用します。
-
Amazon Redshift テーブルの列に圧縮を適用します。そのためには、[圧縮エンコードを使用] を選択します。
AWS SCT は、デフォルトの Amazon Redshift アルゴリズムを使用して、圧縮エンコーディングを列に自動的に割り当てます。詳細については、『Amazon Redshift データベースデベロッパーガイド』の「圧縮エンコード」を参照してください。
デフォルトでは、Amazon Redshift はソートキーと分散キーとして定義されている列に圧縮を適用しません。この動作を変更したり、これらの列に圧縮を適用したりできます。そのためには、[KEY 列には圧縮エンコードを使用] を選択します。このオプションは、[圧縮エンコードを使用] オプションを選択した場合にのみ選択できます。
BigQuery から Amazon Redshift への変換最適化設定
BigQuery から Amazon Redshift への変換最適化設定を編集するには、AWS SCT で [設定] を選択し、[変換設定] を選択します。上のリストから [Google BigQuery] を選択し、次に [Google BigQuery — Amazon Redshift] を選択します。左側のペインで、[最適化戦略] を選択します。AWS SCT に BigQuery から Amazon Redshift への変換の変換最適化設定が表示されます。
AWS SCT での BigQuery から Amazon Redshift への変換最適化設定には、以下のオプションが含まれています。
-
自動テーブル最適化を使用するには。そのためには、[Amazon Redshift の自動テーブルチューニングを使用する] を選択します。
自動テーブル最適化は、テーブルの設計を自動的に最適化する Amazon Redshift の自己調整プロセスです。詳細については、『Amazon Redshift データベース開発者ガイド』の「自動テーブル最適化の操作」を参照してください。
自動テーブル最適化のみを利用するには、[初期キー選択戦略] で [なし] を選択します。
-
戦略を使用してソートキーと分散キーを選択するには。
Amazon Redshift メタデータ、統計情報、またはこれらのオプションの両方を使用して、ソートキーと配布キーを選択できます。[最適化戦略] タブの [初期キー選択戦略] では、以下のいずれかのオプションを選択します。
メタデータを使用し、統計情報は無視する
メタデータを無視し、統計情報を使用する
メタデータと統計情報を使用する
選択したオプションに応じて、最適化戦略を選択できます。次に、各戦略について、値 (0~100) を入力します。これらの値は各戦略の重みを定義します。これらの重み値を使用して、AWS SCTは各ルールがディストリビューションキーとソートキーの選択にどのように影響するかを定義します。デフォルト値は、AWS 移行のベストプラクティスに基づいています。
[小さいテーブルを検索] 戦略の小さいテーブルのサイズを定義できます。[最小テーブル行数] と [最大テーブル行数] には、テーブル内の最小行数と最大行数を入力して小さいテーブルとして定義します。AWS SCT は
ALL
分散スタイルを小さなテーブルに適用します。この場合は、テーブル全体のコピーがすべてのノードに分散されます。 -
戦略の詳細を設定するには。
各最適化戦略の重みを定義することに加えて、最適化設定を構成できます。そのためには、[変換の最適化] を選択します。
[ソートキー列の制限] には、ソートキーの列の最大数を入力します。
[歪んだしきい値] には、列の歪んだ値のパーセンテージ (0 ~ 100) を入力します。AWS SCT は、歪み値がしきい値より大きい列を分散キーの候補リストから除外します。AWS SCT では、列の歪んだ値をレコードの総数に対する最も一般的な値の出現回数の割合として定義します。
[クエリ履歴テーブルの上位 N 件のクエリ] には、分析対象として最も頻繁に使用されるクエリの数 (1 ~ 100) を入力します。
[統計ユーザーを選択] では、クエリ統計を分析したいデータベースユーザーを選択します。
また、[最適化戦略」タブでは、[小さいテーブルを検索] 戦略の小さいテーブルのサイズを定義できます。[最小テーブル行数] と [最大テーブル行数] には、テーブル内の最小行数と最大行数を入力すると、小さいテーブルとして考慮されます。AWS SCT は
ALL
分散スタイルを小さなテーブルに適用します。この場合は、テーブル全体のコピーがすべてのノードに分散されます。