このガイドは、AnalyticDB for MySQL Data Warehouse Edition のクイックスタートガイドです。AnalyticDB for MySQL は、オンライン分析処理 (OLAP) ワークロード向けに構築された、クラウド管理型のペタバイトスケールで高同時実行性かつリアルタイムのデータウェアハウスです。このガイドでは、Data Warehouse Edition クラスターの使用方法を説明します。
Data Warehouse Edition は新規購入ができなくなりました。代わりに Enterprise Edition または Basic Edition をご購入いただけます。すでに Data Warehouse Edition クラスターをご購入済みの場合は、引き続きこのガイドを参照して Data Warehouse Edition クラスターをご利用いただけます。
ワークフロー
AnalyticDB for MySQL Data Warehouse Edition を初めてご利用になる場合は、以下のトピックを事前にご確認ください。
プロダクト概要: AnalyticDB for MySQL の基本概念、メリット、ユースケースについて説明します。
料金: AnalyticDB for MySQL の課金方法と料金詳細について説明します。
クイックスタート(このガイド): AnalyticDB for MySQL Data Warehouse Edition クラスターの使用方法に関するチュートリアルを提供します。
ステップ 1:データベースアカウントの作成
AnalyticDB for MySQL では、特権アカウントと標準アカウントの 2 種類のデータベースアカウントがサポートされています。両者の違いについては、「データベースアカウントの種類」をご参照ください。
特権アカウントの作成
AnalyticDB for MySQL コンソール にログインします。コンソールの左上隅でリージョンを選択し、左側のナビゲーションウィンドウで クラスターリスト をクリックします。管理対象のクラスターを見つけ、クラスター ID をクリックします。
左側のナビゲーションウィンドウで アカウント管理 をクリックします。
アカウント管理 ページで、特権アカウントの作成 をクリックします。
アカウントの作成 パネルで、パラメーターを設定します。
パラメーター
説明
データベースアカウント
特権アカウントの名前です。画面上の要件を満たす名前を入力してください。
アカウントタイプ
Data Warehouse Edition クラスターの場合、このパラメーターは自動的に 高特権アカウント に設定され、変更できません。
新しいパスワード
特権アカウントのパスワードです。画面上の要件を満たすパスワードを入力してください。
パスワードの確認
パスワードを再度入力して確認します。
記述
任意です。将来的に参照できるように、アカウントの説明を入力します。
を決定 をクリックしてアカウントを作成します。
標準アカウントの作成と権限付与
Data Warehouse Edition クラスター上で SQL ステートメントを実行して作成した標準アカウントは、コンソールに表示されません。
データベースアカウントを作成するには、「CREATE USER」をご参照ください。
データベースアカウントに権限を付与するには、「GRANT」をご参照ください。
データベースアカウントから権限を取り消すには、「REVOKE」をご参照ください。
データベースアカウントの名前を変更するには、「RENAME USER」をご参照ください。
データベースアカウントを削除するには、「DROP USER」をご参照ください。
ステップ 2:IP アドレスホワイトリストの設定
デフォルトでは、IP アドレスホワイトリストには 127.0.0.1 のみが含まれており、どのデバイスもクラスターにアクセスできません。他のデバイスからのアクセスを許可するには、ホワイトリストに IP アドレスを追加します。たとえば、10.10.10.0/24 の CIDR ブロックを追加すると、10.10.10.X 範囲内のすべての IP アドレスからのアクセスが許可されます。複数の IP アドレスまたは CIDR ブロックを追加する場合は、スペースを入れずにカンマ (,) で区切ってください。例:192.168.0.1,172.16.213.9
警告IP アドレスホワイトリストに 0.0.0.0 を入力しないでください。
パブリック IP アドレスが頻繁に変更され、すべてのパブリック IP アドレスから AnalyticDB for MySQL クラスターへのアクセスを許可したい場合は、テクニカルサポートにお問い合わせください。
IP アドレスホワイトリストは、AnalyticDB for MySQL クラスターに対して高いセキュリティレベルを提供します。ホワイトリストを定期的にメンテナンスすることを推奨します。
IP アドレスホワイトリストの設定は、AnalyticDB for MySQL クラスターの通常の動作に影響しません。ホワイトリストの変更は 1 分以内に有効になります。
操作手順
AnalyticDB for MySQL コンソール にログインします。コンソールの左上隅でリージョンを選択し、左側のナビゲーションウィンドウで クラスターリスト をクリックします。管理対象のクラスターを見つけ、クラスター ID をクリックします。
左側のナビゲーションウィンドウで データセキュリティ をクリックします。
ホワイトリストの設定 ページで、デフォルト ホワイトリストグループを見つけ、[操作] 列の 変更 をクリックします。
説明ホワイトリスト作成グループ をクリックして、カスタムグループを作成することもできます。
ホワイトリストグループの設定 ダイアログボックスで、デフォルトの IP アドレス 127.0.0.1 を削除します。クラスターにアクセスする必要のある IP アドレスまたは CIDR ブロックを入力し、を決定 をクリックします。
説明クライアントのパブリック IP アドレスをホワイトリストに追加するには、まずその IP アドレスを特定する必要があります。「接続数」をご参照ください。
ステップ 3:クラスターへの接続
AnalyticDB for MySQL では、Data Management Service (DMS)、Navicat for MySQL や DBeaver、DBVisualizer、SQL WorkBench/J などの MySQL クライアント、BI 可視化ツール、MySQL コマンドラインツールを使用して AnalyticDB for MySQL クラスターに接続できます。また、アプリケーションからクラスター接続アドレス、ポート、データベースアカウントなどの情報を設定して AnalyticDB for MySQL クラスターに接続することもできます。
DMS を使用して接続する AnalyticDB for MySQL
AnalyticDB for MySQL コンソール にログインします。コンソールの左上隅でリージョンを選択し、左側のナビゲーションウィンドウで クラスターリスト をクリックします。管理対象のクラスターを見つけ、クラスター ID をクリックします。
クラスター情報 ページの右上隅で、ログインデータベース をクリックします。
表示されるダイアログボックスで、ログイン情報を入力します。
パラメーター
説明
データベースタイプ
デフォルト値は AnalyticDB for MySQL 3.0 です。変更する必要はありません。
インスタンスのリージョン
デフォルト値は現在のインスタンスが配置されているリージョンです。変更する必要はありません。
インスタンスid
デフォルト値は現在のクラスターのクラスター ID です。変更する必要はありません。
データベースアカウント
クラスターのデータベースアカウント名です。
データベースパスワード
データベースアカウントのパスワードです。
説明パスワードを記憶する を選択すると、次回以降、データベースアカウントとパスワードを入力せずに現在の AnalyticDB for MySQL クラスターに自動的にログインできます。
説明DMS を使用して AnalyticDB for MySQL クラスターに初めてログインする場合、コントロールモードはデフォルトで 柔軟な管理 に設定されます。ログイン後、インスタンスを編集することでコントロールモードを変更することもできます。「インスタンスの編集」および「コントロールモード」をご参照ください。
ログインパラメーターを設定したら、左下隅の 接続のテスト をクリックできます。接続テストが失敗した場合は、エラーメッセージに基づいてアカウントやパスワードなどクラスター情報を確認してください。
システムは自動的に DMS のサーバー IP アドレスをデータベースの IP アドレスホワイトリストに追加します。自動的に追加されない場合は、手動で追加してください。「ステップ 2:IP アドレスホワイトリストの設定」および「DMS IP アドレスホワイトリスト」をご参照ください。
ログイン をクリックします。
プログラムによる接続先: AnalyticDB for MySQL
MySQL コマンドラインツールを使用して AnalyticDB for MySQL に接続する
クライアントを使用して接続する AnalyticDB for MySQL
接続 AnalyticDB for MySQL をデータビジュアライゼーションツールに
ステップ 4:データベースの作成
各クラスターで作成できるデータベースの最大数は 2,048 です。
SQL INFORMATION_SCHEMA タブで、SQL コンソールに CREATE DATABASE ステートメントを入力してデータベースを作成します。
構文:
CREATE DATABASE [IF NOT EXISTS] $db_nameパラメーターの説明:
db_nameはデータベース名です。名前は小文字で始まり、英数字とアンダースコア (_) を含めることができます。ただし、連続する 2 つ以上のアンダースコア (_) を含めることはできません。名前の長さは最大 64 文字です。説明データベース名に
analyticdbを使用することはできません。これは組み込みデータベースであるためです。例:
create database adb_demo;create database if not exists adb_demo2;
左上隅の 実行 をクリックします。これでデータベースが作成されます。
ステップ 5:データのインポートとクエリ
前提条件
AnalyticDB for MySQL データを格納する Object Storage Service (OSS) のディレクトリを作成します。
OSS を有効化します。「OSS の有効化」をご参照ください。
バケットを作成します。「バケットの作成」をご参照ください。
重要OSS バケットは、AnalyticDB for MySQL クラスターと同じリージョンにある必要があります。
ディレクトリを作成します。「ディレクトリの作成」をご参照ください。
テストオブジェクトをアップロードします。「オブジェクトのアップロード」をご参照ください。
この例では、
oss_import_test_data.txtオブジェクトを OSS の<bucket-name>.oss-cn-hangzhou.aliyuncs.com/adb/ディレクトリにアップロードします。行は改行で区切られ、列はセミコロン (;) で区切られています。サンプルデータは次のとおりです。uid;other 12;hello_world_1 27;hello_world_2 28;hello_world_3 33;hello_world_4 37;hello_world_5 40;hello_world_6 ...
AnalyticDB for MySQL クイックスタートガイドに従って、クラスターの作成、IP アドレスホワイトリストの設定、アカウントとデータベースの作成など、事前準備を完了してください。「操作手順」をご参照ください。
操作手順
CREATE TABLE ステートメントを実行して、
adb_demoデータベースに外部テーブルを作成します。CSV、Parquet、TEXT 形式のデータに対する OSS 外部テーブルの作成構文については、「OSS 外部テーブルの構文」をご参照ください。OSS データをクエリします。
外部テーブルのクエリは、AnalyticDB for MySQL 内部テーブルのクエリと同じ構文を使用します。次の例のように、直接データをクエリできます。
select uid, other from oss_import_test_external_table where uid < 100 limit 10;大規模な CSV または TEXT データオブジェクトの場合は、クエリパフォーマンスを向上させるために、クエリ前にデータを AnalyticDB for MySQL にインポートすることを強く推奨します。
Parquet データオブジェクトの場合は、直接クエリでも一般的に高いパフォーマンスが得られます。必要に応じて、クエリ前にデータを AnalyticDB for MySQL にインポートするかどうかを判断できます。
CREATE TABLE ステートメントを実行して、
adb_oss_import_testという名前の送信先テーブルをadb_demoデータベースに作成し、OSS からインポートされたデータを格納します。CREATE TABLE IF NOT EXISTS adb_oss_import_test ( uid string, other string ) DISTRIBUTED BY HASH(uid);-
INSERT ステートメントを実行して、OSS 外部テーブルから AnalyticDB for MySQL にデータをインポートします。
重要デフォルトでは、
INSERT INTOステートメントおよびINSERT OVERWRITE SELECTステートメントは同期書き込みでデータをインポートします。数百ギガバイトなど大量のデータをインポートする場合、クライアントと AnalyticDB for MySQL サーバー間の接続を長時間維持する必要があります。この期間中にネットワークの問題が発生すると接続が中断され、データインポートが失敗する可能性があります。そのため、大量のデータをインポートする場合は、SUBMIT JOB INSERT OVERWRITE SELECTステートメントを使用して非同期でデータをインポートすることを推奨します。-
方法 1:
INSERT INTOステートメントを実行してデータをインポートします。プライマリキーに重複する値がある場合、新しいデータは無視され、既存のデータは更新されません。この動作はINSERT IGNORE INTOを使用する場合と同等です。「INSERT INTO」をご参照ください。次のステートメントが例です。INSERT INTO adb_oss_import_test SELECT * FROM oss_import_test_external_table; -
方法 2: INSERT OVERWRITE ステートメントを実行してデータをインポートします。このステートメントはテーブル内の既存のデータを上書きします。次のステートメントが例です。
INSERT OVERWRITE adb_oss_import_test SELECT * FROM oss_import_test_external_table; -
方法 3:
INSERT OVERWRITEステートメントを実行してデータを非同期でインポートします。SUBMIT JOBステートメントを使用して非同期タスクを送信できます。書き込みタスクを高速化するために、/*+ direct_batch_load=true*/ヒントワードを追加できます。「非同期書き込み」をご参照ください。次のステートメントが例です。SUBMIT JOB INSERT OVERWRITE adb_oss_import_test SELECT * FROM oss_import_test_external_table;次の結果が返されます。
+---------------------------------------+ | job_id | +---------------------------------------+ | 2020112122202917203100908203303****** |非同期タスクの送信方法の詳細については、「非同期インポートタスクの送信」をご参照ください。
-
adb_oss_import_testテーブル内のデータをクエリするには、次のコマンドを実行します。SELECT * FROM adb_oss_import_test;
OSS 外部テーブルの構文
パーティションなしの OSS 外部テーブル
CREATE TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OSS'
TABLE_PROPERTIES='{
"endpoint":"endpoint",
"url":"OSS_LOCATION",
"accessid":"accesskey_id",
"accesskey":"accesskey_secret",
"format":"CSV|ORC|Parquet",
"delimiter":";",
"skip_header_line_count":1,
"charset":"utf-8"
}';
|
外部テーブルの種類 |
パラメーター |
必須 |
説明 |
|
CSV、Parquet、OSS ORC 形式のファイル用外部テーブル |
ENGINE='OSS' |
はい |
テーブルエンジンです。このパラメーターを OSS に設定します。 |
|
endpoint |
OSS バケットの エンドポイント です。AnalyticDB for MySQL は VPC 経由でのみ OSS にアクセスできます。 説明
OSS コンソール にログインし、対象バケットの名前をクリックします。バケットの 概要 ページで、エンドポイント を確認します。 |
||
|
url |
OSS ファイルまたはフォルダのパスです。
|
||
|
accessid |
OSS の管理権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID です。 AccessKey ID の取得方法については、「アカウントと権限」をご参照ください。 |
||
|
accesskey |
OSS の管理権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret です。 AccessKey Secret の取得方法については、「アカウントと権限」をご参照ください。 |
||
|
CSV ファイル用外部テーブル |
delimiter |
CSV データファイルの列区切り文字を定義します。 |
|
|
Parquet または OSS ORC ファイル用外部テーブル |
format |
データファイルのフォーマットです。
説明
|
|
|
CSV ファイル用外部テーブル |
null_value |
いいえ |
CSV データファイルの 重要
このパラメーターは、カーネルバージョン 3.1.4.2 以降のクラスターでのみサポートされています。 |
|
ossnull |
CSV データファイルで値を
説明
上記の例は、 |
||
|
skip_header_line_count |
データインポート時にファイルの先頭からスキップするヘッダー行の数です。CSV ファイルの最初の行はテーブルヘッダーです。このパラメーターを 1 に設定すると、データインポート中に最初の行が自動的にスキップされます。 デフォルト値は 0 で、スキップされる行はありません。 |
||
|
oss_ignore_quote_and_escape |
フィールド値内の引用符とエスケープ文字を無視するかどうかを指定します。デフォルト値は false で、引用符とエスケープ文字は無視されません。 重要
このパラメーターは、カーネルバージョン 3.1.4.2 以降のクラスターでのみサポートされています。 |
||
|
charset |
OSS 外部テーブルの文字セットです。有効な値:
重要
このパラメーターは、カーネルバージョン 3.1.10.4 以降のクラスターでのみサポートされています。 |
-
CREATE EXTERNAL TABLE ステートメントの列名とその順序は、ソースの Parquet または ORC ファイル内のものと一致している必要があります。列名の大文字と小文字は区別されません。
-
ソースファイルの一部の列のみを使用して外部テーブルを作成できます。CREATE EXTERNAL TABLE ステートメントで指定されていない列は無視されます。
-
CREATE EXTERNAL TABLE ステートメントに Parquet または ORC ファイルに存在しない列が含まれている場合、その列に対するクエリは NULL を返します。
AnalyticDB for MySQL では、OSS 外部テーブルを CSV 形式で使用して Hive TEXT ファイルを読み書きできます。このようなテーブルを作成するステートメントの例を次に示します。
CREATE TABLE adb_csv_hive_format_oss (
a tinyint,
b smallint,
c int,
d bigint,
e boolean,
f float,
g double,
h varchar,
i varchar, -- binary
j timestamp,
k DECIMAL(10, 4),
l varchar, -- char(10)
m varchar, -- varchar(100)
n date
) ENGINE = 'OSS' TABLE_PROPERTIES='{
"format": "csv",
"endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
"accessid":"LTAI****************",
"accesskey":"yourAccessKeySecret",
"url":"oss://testBucketname/adb_data/",
"delimiter": "\\1",
"null_value": "\\\\N",
"oss_ignore_quote_and_escape": "true",
"ossnull": 2
}';
CSV フォーマットの OSS 外部テーブルを作成して Hive TEXT ファイルを読み取る場合は、以下に注意してください。
-
Hive TEXT ファイルのデフォルトの列区切り文字は \1 です。OSS 外部テーブルを使用して CSV フォーマットで Hive TEXT ファイルを読み取りおよび書き込みする場合は、
delimiterパラメーター内で\1を\\1としてエスケープする必要があります。 -
Hive TEXT ファイルのデフォルトの
NULL値は \N です。OSS 外部テーブルを使用して CSV フォーマットで Hive TEXT ファイルを読み取りおよび書き込みする場合は、null_valueパラメーターで\Nを\\\\Nとしてエスケープする必要があります。 -
Hive の他の基本データ型(たとえば
BOOLEAN)は、AnalyticDB for MySQL のデータの型に 1 対 1 でマッピングされます。ただし、BINARY、CHAR(n)、およびVARCHAR(n)型はすべて、AnalyticDB for MySQL のVARCHAR型にマッピングされます。
パーティション付き OSS 外部テーブル
OSS データソースにパーティションが含まれている場合、データは OSS 内の階層ディレクトリ構造で格納されます。次の例を参照してください。
parquet_partition_classic/
├── p1=2020-01-01
│ ├── p2=4
│ │ ├── p3=SHANGHAI
│ │ │ ├── 000000_0
│ │ │ └── 000000_1
│ │ └── p3=SHENZHEN
│ │ └── 000000_0
│ └── p2=6
│ └── p3=SHENZHEN
│ └── 000000_0
├── p1=2020-01-02
│ └── p2=8
│ ├── p3=SHANGHAI
│ │ └── 000000_0
│ └── p3=SHENZHEN
│ └── 000000_0
└── p1=2020-01-03
└── p2=6
├── p2=HANGZHOU
└── p3=SHENZHEN
└── 000000_0
上記のデータでは、p1、p2、p3 がそれぞれレベル 1、レベル 2、レベル 3 のパーティションです。このようなデータソースでは、通常、パーティション単位でデータをクエリします。これを行うには、OSS 外部テーブルを作成する際にパーティションキー列を指定する必要があります。Parquet ファイル用のパーティション付き OSS 外部テーブルを作成するステートメントの例を次に示します。
CREATE TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OSS'
TABLE_PROPERTIES='{
"endpoint":"endpoint",
"url":"OSS_LOCATION",
"accessid":"accesskey_id",
"accesskey":"accesskey_secret",
"format":"parquet",
"partition_column":"p1, p2, p3"
}';
-
TABLE_PROPERTIES内のpartition_columnパラメーターは、p1、p2、p3 などのパーティションキー列を指定します。パーティションキー列は、レベル 1 からレベル 3 のパーティションの順序でpartition_columnパラメーター内に宣言する必要があります。 -
列定義には、p1、p2、p3 などのパーティションキー列とそのデータ型を含める必要があります。パーティションキー列は、列定義の末尾に配置する必要があります。
-
列定義内のパーティションキー列の順序は、
partition_columnパラメーター内の順序と一致している必要があります。 -
パーティションキー列でサポートされるデータ型は、
BOOLEAN、TINYINT、SMALLINT、INT、INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL、VARCHAR、STRING、DATE、およびTIMESTAMPです。 -
データをクエリする際、パーティションキー列は他のデータ列と同様に表示および使用されます。
-
フォーマットを指定しない場合、デフォルトのフォーマットは CSV です。
-
その他のパラメーターの詳細については、「パラメーターの説明」をご参照ください。
参照
データをインポートする他の方法については、「サポートされるデータソース」をご参照ください。