ソース RDS データベースへのデータの追加と、Amazon Redshift でのクエリ
これは、プレビューリリース中の Amazon RDS ゼロ ETL 統合と Amazon Redshift の統合に関するプレリリースドキュメントです。ドキュメントと機能はどちらも変更されることがあります。この機能については、テスト環境のみで使用し、本番環境では使用しないことをお勧めします。プレビューの利用規約については、「AWS のサービス条件 |
Amazon RDS から Amazon Redshift にデータをレプリケートするゼロ ETL 統合の作成を終了するには、Amazon Redshift に送信先データベースを作成する必要があります。
まず、Amazon Redshift クラスターまたはワークグループに接続し、統合識別子を参照してデータベースを作成します。これで、ソースの RDS データベースにデータを追加し、Amazon Redshift でクエリを実行できます。
トピック
Amazon Redshift での送信先データベースの作成
Amazon Redshift へのデータの複製を開始する前に、統合を作成後、送信先データベースをターゲットのデータウェアハウスに作成する必要があります。この送信先データベースには、統合識別子への参照が含まれている必要があります。Amazon Redshift コンソールまたはクエリエディタ v2 を使用して、データベースを作成することができます。
デスティネーションデータベースを作成する手順については、「Amazon Redshift にデスティネーションデータベースを作成する」を参照してください。
ソースデータベースへのデータの追加
統合を設定した後で、Amazon Redshift データウェアハウスにレプリケートするデータを RDS データベースに追加できます。
注記
Amazon RDS と Amazon Redshift のデータ型には違いがあります。データ型マッピングの表については、「RDS データベースと Amazon Redshift データベースのデータタイプの違い」を参照してください。
まず、任意の MySQL クライアントを使用して、ソースデータベースに接続します。手順については、MySQL DB インスタンスへの接続 を参照してください。
次に、テーブルを作成し、1 行のサンプルデータを挿入します。
重要
テーブルにプライマリキーがあることを確認してください。そうしないと、ターゲットのデータウェアハウスに複製できません。
次の例では、MySQL Workbench ユーティリティ
CREATE DATABASE
my_db
; USEmy_db
; CREATE TABLEbooks_table
(ID int NOT NULL, Title VARCHAR(50) NOT NULL, Author VARCHAR(50) NOT NULL, Copyright INT NOT NULL, Genre VARCHAR(50) NOT NULL, PRIMARY KEY (ID)); INSERT INTObooks_table
VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
Amazon Redshift での Amazon RDS データのクエリ
RDS データベースにデータを追加すると、Amazon Redshift にレプリケートされ、クエリを実行できるようになります。
複製されたデータをクエリするには
-
Amazon Redshift コンソールに移動し、左側のナビゲーションペインから [クエリエディタ v2] を選択します。
-
クラスターまたはワークグループに接続し、ドロップダウンメニュー (この例では destination_database) から送信先データベース (統合から作成したもの) を選択します。デスティネーションデータベースを作成する手順については、「Amazon Redshift にデスティネーションデータベースを作成する」を参照してください。
-
SELECT ステートメントを使用してデータをクエリします。この例では、次のコマンドを実行して、ソースの RDS データベースで作成したテーブルからすべてのデータを選択します。
SELECT * from
my_db
."books_table
";-
は RDS データベーススキーマ名です。my_db
-
は RDS テーブル名です。books_table
-
コマンドラインクライアントを使用してデータをクエリすることもできます。例:
destination_database=# select * from
my_db
."books_table
"; ID | Title | Author | Copyright | Genre | txn_seq | txn_id ----+–------------+---------------+-------------+------------------------+----------+--------+ 1 | The Shining | Stephen King | 1977 | Supernatural fiction | 2 | 12192
注記
大文字と小文字を区別するには、スキーマ、テーブル、および列の名前を二重引用符 (" ") で囲みます。詳細については、「enable_case_sensitive_identifier」を参照してください。
RDS データベースと Amazon Redshift データベースのデータタイプの違い
次の表は、RDS for MySQLデータタイプの対応する Amazon Redshift データタイプへのマッピングを示しています。Amazon RDS は現在、ゼロ ETL 統合ではこれらのデータ型のみをサポートしています。
ソースデータベースのテーブルにサポートされていないデータ型が含まれている場合、そのテーブルは同期されず、Amazon Redshift ターゲットで使用できなくなります。ソースからターゲットへのストリーミングは継続されますが、サポートされていないデータ型のテーブルは使用できません。テーブルを修正して Amazon Redshift で使用できるようにするには、変更内容を手動で元に戻し、ALTER DATABASE...INTEGRATION
REFRESH
を実行して統合を更新する必要があります。
RDS for MySQL
RDS for MySQL データ型 | Amazon Redshift のデータ型 | 説明 | 制限事項 |
---|---|---|---|
INT | INTEGER | 符号付き 4 バイト整数 | |
SMALLINT | SMALLINT | 符号付き 2 バイト整数 | |
TINYINT | SMALLINT | 符号付き 2 バイト整数 | |
MEDIUMINT | INTEGER | 符号付き 4 バイト整数 | |
BIGINT | BIGINT | 符号付き 8 バイト整数 | |
INT UNSIGNED | BIGINT | 符号付き 8 バイト整数 | |
TINYINT UNSIGNED | SMALLINT | 符号付き 2 バイト整数 | |
MEDIUMINT UNSIGNED | INTEGER | 符号付き 4 バイト整数 | |
BIGINT UNSIGNED | DECIMAL(20,0) | 精度の選択が可能な真数 | |
DECIMAL(p,s) = NUMERIC(p,s) | DECIMAL(p,s) | 精度の選択が可能な真数 |
精度が 38 より大きく、スケールが 37 より大きい場合、サポートされない |
DECIMAL(p,s) UNSIGNED = NUMERIC(p,s) UNSIGNED | DECIMAL(p,s) | 精度の選択が可能な真数 |
精度が 38 より大きく、スケールが 37 より大きい場合、サポートされない |
FLOAT4/REAL | REAL | 単精度浮動小数点数 | |
FLOAT4/REAL UNSIGNED | REAL | 単精度浮動小数点数 | |
DOUBLE/REAL/FLOAT8 | DOUBLE PRECISION | 倍精度浮動小数点数 | |
DOUBLE/REAL/FLOAT8 UNSIGNED | DOUBLE PRECISION | 倍精度浮動小数点数 | |
BIT(n) | VARBYTE(8) | 可変長バイナリ値 | |
BINARY(n) | VARBYTE(n) | 可変長バイナリ値 | |
VARBINARY (n) | VARBYTE(n) | 可変長バイナリ値 | |
CHAR(n) | VARCHAR(n) | 可変長文字列値 | |
VARCHAR(n) | VARCHAR(n) | 可変長文字列値 | |
TEXT | VARCHAR(65,535) | 最大 65535 バイトの可変長文字列値 | |
TINYTEXT | VARCHAR(255) | 最大 255 バイトの可変長文字列値 | |
ENUM | VARCHAR(1,020) | 最大 1020 バイトの可変長文字列値 | |
SET | VARCHAR(1,020) | 最大 1020 バイトの可変長文字列値 | |
DATE | DATE | カレンダー日付 (年、月、日) | |
DATETIME | TIMESTAMP | 日付と時刻 (タイムゾーンなし) | |
TIMESTAMP(p) | TIMESTAMP | 日付と時刻 (タイムゾーンなし) | |
TIME | VARCHAR(18) | 最大 18 バイトの可変長文字列値 | |
YEAR | VARCHAR(4) | 最大 4 バイトの可変長文字列値 | |
JSON | SUPER | 値としての半構造化データまたは文書 |