ソース Aurora DB クラスターへのデータの追加と、Amazon Redshift でのクエリ
Amazon Aurora から Amazon Redshift にデータをレプリケートするゼロ ETL 統合の作成を終了するには、Amazon Redshift に送信先データベースを作成する必要があります。
まず、Amazon Redshift クラスターまたはワークグループに接続し、統合識別子を参照してデータベースを作成します。これで、ソースの Aurora DB クラスターにデータを追加し、Amazon Redshift でクエリを実行できます。
トピック
Amazon Redshift での送信先データベースの作成
Amazon Redshift へのデータの複製を開始する前に、統合を作成後、送信先データベースをターゲットのデータウェアハウスに作成する必要があります。この送信先データベースには、統合識別子への参照が含まれている必要があります。Amazon Redshift コンソールまたはクエリエディタ v2 を使用して、データベースを作成することができます。
デスティネーションデータベースを作成する手順については、「Amazon Redshift にデスティネーションデータベースを作成する」を参照してください。
ソース DB クラスターへのデータの追加
統合を設定した後で、Amazon Redshift データウェアハウスにレプリケートするデータを Aurora DB クラスターに追加できます。
注記
Amazon Aurora と Amazon Redshift のデータ型には違いがあります。データ型マッピングの表については、「 データベースのデータタイプの違い」を参照してください。
まず、任意の MySQL または PostgreSQL クライアントを使用して、ソース DB クラスターに接続します。手順については、Amazon Aurora DB クラスターへの接続 を参照してください。
次に、テーブルを作成し、1 行のサンプルデータを挿入します。
重要
テーブルにプライマリキーがあることを確認してください。そうしないと、ターゲットのデータウェアハウスに複製できません。
pg_dump および pg_restore PostgreSQL ユーティリティは、最初にプライマリキーなしでテーブルを作成し、後で追加します。これらのユーティリティのいずれかを使用している場合は、まずスキーマを作成し、次に別のコマンドでデータをロードすることをお勧めします。
MySQL
次の例では、MySQL Workbench ユーティリティ
CREATE DATABASE my_db
;
USE my_db
;
CREATE TABLE books_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 INTO books_table
VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
[PostgreSQL]
次の例では、psql
PostgreSQL インタラクティブターミナルを使用しています。クラスターに接続するときは、統合の作成時に指定した名前付きデータベースを含めます。
psql -h mycluster
.cluster-123456789012
.us-east-2.rds.amazonaws.com -p 5432 -U username
-d named_db
;
named_db=> CREATE TABLE books_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));
named_db=> INSERT INTO books_table
VALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
Amazon Redshift での Aurora データのクエリ
Aurora DB クラスターにデータを追加すると、Amazon Redshift にレプリケートされ、クエリを実行できるようになります。
複製されたデータをクエリするには
-
Amazon Redshift コンソールに移動し、左側のナビゲーションペインから [クエリエディタ v2] を選択します。
-
クラスターまたはワークグループに接続し、ドロップダウンメニュー (この例では destination_database) から送信先データベース (統合から作成したもの) を選択します。デスティネーションデータベースを作成する手順については、「Amazon Redshift にデスティネーションデータベースを作成する」を参照してください。
-
SELECT ステートメントを使用してデータをクエリします。この例では、次のコマンドを実行して、ソースの Aurora DB クラスターで作成したテーブルからすべてのデータを選択します。
SELECT * from
my_db
."books_table
";-
は Aurora データベーススキーマ名です。このオプションは MySQL データベースにのみ必要です。my_db
-
は Aurora テーブル名です。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」を参照してください。
データベースのデータタイプの違い
次のAurora MySQL または Aurora PostgreSQL データタイプの対応する Amazon Redshift データタイプへのマッピングを示しています。Amazon Aurora は現在、ゼロ ETL 統合ではこれらのデータ型のみをサポートしています。
ソース DB クラスターのテーブルにサポートされていないデータ型が含まれている場合、そのテーブルは同期されず、Amazon Redshift ターゲットで使用できなくなります。ソースからターゲットへのストリーミングは継続されますが、サポートされていないデータ型のテーブルは使用できません。テーブルを修正して Amazon Redshift で使用できるようにするには、変更内容を手動で元に戻し、ALTER DATABASE...INTEGRATION
REFRESH
を実行して統合を更新する必要があります。
Aurora MySQL
Aurora 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) | 最大 65,535 文字の可変長文字列値 | なし |
TINYTEXT | VARCHAR(255) | 最大 255 文字の可変長文字列値 | なし |
MEDIUMTEXT | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
LONGTEXT | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
ENUM | VARCHAR(1,020) | 最大 1,020 文字の可変長文字列値 | なし |
SET | VARCHAR(1,020) | 最大 1,020 文字の可変長文字列値 | なし |
DATE | DATE | カレンダー日付 (年、月、日) | なし |
DATETIME | TIMESTAMP | 日付と時刻 (タイムゾーンなし) | なし |
TIMESTAMP(p) | TIMESTAMP | 日付と時刻 (タイムゾーンなし) | なし |
TIME | VARCHAR(18) | 最大 18 文字の可変長文字列値 | なし |
YEAR | VARCHAR(4) | 最大 4 文字の可変長文字列値 | なし |
JSON | SUPER | 値としての半構造化データまたは文書 | なし |
Aurora PostgreSQL
Aurora PostgreSQL のゼロ ETL 統合は、カスタムデータ型または 拡張機能によって作成されたデータ型をサポートしていません。
Aurora PostgreSQL データ型 | Amazon Redshift のデータ型 | 説明 | 制限 |
---|---|---|---|
array | SUPER | 値としての半構造化データまたは文書 | なし |
bigint | BIGINT | 符号付き 8 バイト整数 | なし |
bigserial | BIGINT | 符号付き 8 バイト整数 | なし |
bit varying(n) | VARBYTE(n) | 最大 16,777,216 バイトの可変長バイナリ値 | なし |
bit(n) | VARBYTE(n) | 最大 16,777,216 バイトの可変長バイナリ値 | なし |
bit、bit varying | VARBYTE(16,777,216) | 最大 16,777,216 バイトの可変長バイナリ値 | なし |
boolean | BOOLEAN | 論理ブール演算型 (true/false) | なし |
bytea | VARBYTE(16,777,216) | 最大 16,777,216 バイトの可変長バイナリ値 | なし |
char(n) | CHAR(n) | 最大 65,535 バイトの固定長文字列値 | なし |
char varying(n) | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
cid | BIGINT |
符号付き 8 バイト整数 |
なし |
cidr |
VARCHAR(19) |
最大 19 文字の可変長文字列値 |
|
date | DATE | カレンダー日付 (年、月、日) |
294,276 A.D. より大きい値はサポートされません |
double precision | DOUBLE PRECISION | 倍精度浮動小数点数 | 非正規値は完全にはサポートされません |
gtsvector |
VARCHAR(65,535) |
最大 65,535 文字の可変長文字列値 |
なし |
inet |
VARCHAR(19) |
最大 19 文字の可変長文字列値 |
なし |
integer | INTEGER | 符号付き 4 バイト整数 | なし |
int2vector |
SUPER | 値としての半構造化データまたはドキュメント。 | なし |
interval | INTERVAL | 期間 | year to month 修飾子または day to second 修飾子を指定する INTERVAL タイプのみがサポートされます。 |
json | SUPER | 値としての半構造化データまたは文書 | なし |
jsonb | SUPER | 値としての半構造化データまたは文書 | なし |
jsonpath | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
macaddr |
VARCHAR(17) | 最大 17 文字の可変長文字列値 | なし |
macaddr8 |
VARCHAR(23) | 最大 23 文字の可変長文字列値 | なし |
money | DECIMAL(20,3) | 通貨額 | なし |
名前 | VARCHAR(64) | 最大 64 文字の可変長文字列値 | なし |
numeric(p,s) | DECIMAL(p,s) | ユーザー定義の固定精度値 |
|
oid | BIGINT | 符号付き 8 バイト整数 | なし |
oidvector | SUPER | 値としての半構造化データまたはドキュメント。 | なし |
pg_brin_bloom_summary | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
pg_dependencies | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
pg_lsn | VARCHAR(17) | 最大 17 文字の可変長文字列値 | なし |
pg_mcv_list | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
pg_ndistinct | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
pg_node_tree | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
pg_snapshot | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
real | REAL | 単精度浮動小数点数 | 非正規値は完全にはサポートされません |
refcursor | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
smallint | SMALLINT | 符号付き 2 バイト整数 | なし |
smallserial | SMALLINT | 符号付き 2 バイト整数 | なし |
シリアル | INTEGER | 符号付き 4 バイト整数 | なし |
text | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
tid | VARCHAR(23) | 最大 23 文字の可変長文字列値 | なし |
time [(p)] without time zone | VARCHAR(19) | 最大 19 文字の可変長文字列値 | Infinity および -Infinity 値はサポートされていません |
time [(p)] with time zone | VARCHAR(22) | 最大 22 文字の可変長文字列値 | Infinity および -Infinity 値はサポートされていません |
timestamp [(p)] without time zone | TIMESTAMP | 日付と時刻 (タイムゾーンなし) |
|
timestamp [(p)] with time zone | TIMESTAMPTZ | 日付と時刻 (タイムゾーンあり) |
|
tsquery | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
tsvector | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
txid_snapshot | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
uuid | VARCHAR(36) | 可変長 36 文字の文字列 | なし |
xid | BIGINT | 符号付き 8 バイト整数 | なし |
xid8 | DECIMAL(20, 0) | 固定精度 10 進数 | なし |
xml | VARCHAR(65,535) | 最大 65,535 文字の可変長文字列値 | なし |
Aurora PostgreSQL の DDL オペレーション
Amazon Redshift は PostgreSQL から派生しているため、共通の PostgreSQL アーキテクチャに基づくいくつかの機能を Aurora PostgreSQL と共有しています。ゼロ ETL 統合は、これらの類似点を活用して、Aurora PostgreSQL から Amazon Redshift へのデータレプリケーションを合理化し、データベースを名前でマッピングして、共有のデータベース、スキーマ、テーブル構造を活用します。
Aurora PostgreSQL ゼロ ETL 統合を管理するときは、以下の点を考慮してください。
-
分離はデータベースレベルで管理されます。
-
レプリケーションはデータベースレベルで行われます。
-
Aurora PostgreSQL データベースは Amazon Redshift データベースに名前でマッピングされ、元の名前を変更すると、データは対応する、名前を変更した Redshift データベースに流れます。
Amazon Redshift と Aurora PostgreSQL は類似していますが、重要な違いがあります。以下のセクションでは、一般的な DDL オペレーションに対する Amazon Redshift のシステムレスポンスについて概説します。
データベースのオペレーション
次の表は、データベース DDL オペレーションのシステムレスポンスを示しています。
DDL オペレーション | Redshift システムレスポンス |
---|---|
CREATE DATABASE |
オペレーションなし |
DROP DATABASE |
Amazon Redshift は、ターゲット Redshift データベース内のすべてのデータを削除します。 |
RENAME DATABASE |
Amazon Redshift は、元のターゲットデータベース内のすべてのデータを削除し、新しいターゲットデータベース内のデータを再同期します。新しいデータベースが存在しない場合は、手動で作成する必要があります。手順については、「Amazon Redshift でのデスティネーションデータベースの作成」を参照してください。 |
スキーマオペレーション
次の表は、スキーマ DDL オペレーションのシステムレスポンスを示しています。
DDL オペレーション | Redshift システムレスポンス |
---|---|
CREATE SCHEMA |
オペレーションなし |
DROP SCHEMA |
Amazon Redshift は元のスキーマを削除します。 |
RENAME SCHEMA |
Amazon Redshift は元のスキーマを削除し、新しいスキーマ内のデータを再同期します。 |
Table operations
次の表は、テーブル DDL オペレーションのシステムレスポンスを示しています。
DDL オペレーション | Redshift システムレスポンス |
---|---|
CREATE TABLE |
Amazon Redshift はテーブルを作成します。 プライマリキーなしでテーブルを作成したり、宣言的パーティショニングを実行したりするなど、一部のオペレーションではテーブルの作成が失敗します。詳細については、Aurora PostgreSQL の制限およびAurora ゼロ ETL 統合のトラブルシューティングを参照してください。 |
DROP TABLE |
Amazon Redshift はテーブルを削除します。 |
TRUNCATE TABLE |
Amazon Redshift はテーブルを切り捨てます。 |
ALTER TABLE
(RENAME... ) |
Amazon Redshift はテーブルまたは列の名前を変更します。 |
ALTER TABLE (SET
SCHEMA ) |
Amazon Redshift は元のスキーマのテーブルを削除し、新しいスキーマのテーブルを再同期します。 |
ALTER TABLE (ADD PRIMARY
KEY ) |
Amazon Redshift はプライマリキーを追加し、テーブルを再同期します。 |
ALTER TABLE (ADD
COLUMN ) |
Amazon Redshift はテーブルに列を追加します。 |
ALTER TABLE (DROP
COLUMN ) |
Amazon Redshift は、プライマリキー列でない列を削除します。それ以外の場合は、テーブルを再同期します。 |
ALTER TABLE (SET
LOGGED/UNLOGGED ) |
テーブルをログ記録するように変更すると、Amazon Redshift はテーブルを再同期します。テーブルをログ記録しないように変更すると、Amazon Redshift はテーブルを削除します。 |