JDBC ドライバーを使用して Dataphin に接続する方法について説明します。
前提条件
JDBC ドライバーを使用する前に、Dataphin OpenAPI 機能を有効化する必要があります。
概要
2 つの認証モード:Dataphin JDBC ドライバーは、シンプルモードとプロキシモードの 2 つの認証モードをサポートしています。詳細については、「認証モード」をご参照ください。
一貫した実行結果:Dataphin JDBC ドライバーで SQL ステートメントを実行することは、Dataphin コンソールで実行することと同じです。そのため、実行結果は一貫しています。権限、マスキングルール、セキュリティ設定、コード仕様など、Dataphin で設定された機能も、Dataphin JDBC ドライバーの実行結果に影響します。
制限事項
JDBC を使用して、すべてのコンピュートエンジンおよび一部のデータソースから Dataphin に接続できます。サポートされているデータソースには、MySQL、Oracle、MaxCompute、Hive、AnalyticDB for MySQL 3.0、StarRocks、AnalyticDB for PostgreSQL、Doris が含まれます。
Dataphin JDBC ドライバーで SQL ステートメントを実行すると、Dataphin は SQL 変換やデータマスキングなどのタスクのためにステートメントを前処理します。結果データも Dataphin を介して転送されます。これらのプロセスはパフォーマンスオーバーヘッドを引き起こす可能性があり、コンピュートエンジンを直接クエリする場合と比較してクエリ時間が長くなることがあります。
Dataphin JDBC ドライバーは、処理のために OpenAPI を介して SQL ステートメントを Dataphin に送信し、その後、基盤となるコンピュートエンジンに転送します。Dataphin JDBC ドライバーを使用する前に、予想される呼び出し量を評価し、Dataphin クラスターとコンピュートエンジンをスケールアウトする必要があるかどうかを判断する必要があります。
説明この評価を実行できない場合は、Dataphin クラスターのキャパシティ評価リクエストを Dataphin O&M チームに提出できます。これには、コンピュートエンジンのキャパシティ評価は含まれません。
Dataphin は現在、トラフィック制御や同時実行制御をサポートしていません。潜在的な影響を慎重に評価してください。
JDBC ドライバーのバージョンとダウンロードリンク
ドライバーの JAR パッケージを入手するには、Dataphin O&M チームにお問い合わせください。
接続パラメーター
Dataphin JDBC がプラットフォームの AccessKey ID と AccessKey Secret (プロキシモード) を使用する場合、set 構文を使用してアクセスユーザーを設定できます。
set dp_delegation_uid = 'target_source_user_uid';set dp_delegation_name = 'target_user_name';
JDBC URL フォーマット: jdbc:dataphin://host:port/catalog?[tenant_id=TenantID][&ssl=true][&log_level=Log_Level][&user=UserName][&password=PassWord][&delegation_uid=DelegationUid][&account_type=AccountType][&connect_timeout=ConnectTimeout][&engine=engine_type][compute_project=ProjectName]
パラメーター名では大文字と小文字が区別されます。
角括弧 ([]) は説明のためだけのものであり、実際の接続文字列からは省略する必要があります。
パラメーター | 必須 | 説明 | 例 |
host | はい | Dataphin OpenAPI のドメイン名。 ドメイン名は、[個人センター] の [AccessKey 管理] ページにある [OpenAPI 呼び出しアドレス] セクションから取得できます。次の図をご参照ください。
| dataphin-openapi.****.aliyun.com |
port | いいえ | ポートは、Dataphin OpenAPI で HTTPS が有効になっているかどうかによって決まります。HTTPS が有効な場合、ポートは | 80 |
catalog | はい | デフォルトのクエリ範囲。
説明
| Exprojectname |
tenant_id | はい | クエリ対象のテナント ID。 | 111***111 |
ssl | いいえ | HTTPS を使用するかどうかを指定します。
| False |
currentschema | いいえ | データソースのスキーマ。
| information_schema |
compute_project | いいえ | プロジェクトの英語名を指定します。このプロジェクトは SQL クエリを実行します。プロジェクトとそれにバインドされたコンピュートエンジンは、クエリ対象のテーブルに対する読み取り権限を持っている必要があります。
| Exprojectname |
user | はい | ユーザーまたはプラットフォームの AccessKey ID。プロキシモードを使用する場合、プラットフォームの AccessKey ID を指定します。
| kIB**********PT0 |
log_level | いいえ | ログレベル。有効な値:
| DEBUG |
password | はい | 指定されたユーザーの AccessKey Secret。
| Cy**************r2T |
delegation_uid | いいえ | プロキシモードでは、このパラメーターは代理実行する Dataphin ユーザーを指定します。 代理実行される Dataphin ユーザーについては、選択した account_type に基づいて対応するアカウント ID を提供する必要があります。このパラメーターを設定すると、プロキシモードが有効になります。 | 999***999 |
account_type | いいえ | プロキシモードで認証を使用する場合、代理実行されるユーザーのアカウントタイプを指定する必要があります。
説明
| USER_ID |
connect_timeout | いいえ | 接続取得タイムアウト (秒単位)。
| 10 |
engine | いいえ | セッションまたは接続文字列の project_name で指定されたプロジェクトのコンピュートエンジン。Hadoop コンピュートエンジンの場合、デフォルトのエンジンは Hive ですが、このパラメーターを使用して Impala または Spark に設定できます。エンジンタイプは、コンピュートエンジンで事前に設定されている必要があります。指定されたエンジンがプロジェクトでサポートされていない場合、この設定は無視され、警告が返されます。有効な値:
説明 このパラメーターは、データソースにアクセスする際には無視されます。 | MaxCompute |
acceleration_source | いいえ | アクセラレーションソースを指定します。テナント内の任意のアクセラレーションソースのコードを選択できます。 | starrocks_code |
acceleration_resource_group | いいえ | アクセラレーションリソースグループ。選択したアクセラレーションソース用に設定されたリソースグループを選択できます。 | starrocks_resource_group |
認証モード
シンプルモード
ユーザー名をユーザーの AccessKey ID に、パスワードをユーザーの AccessKey Secret に設定します。これにより、そのユーザーとして接続が認証されます。AccessKey を表示するには、「Dataphin OpenAPI AccessKey 管理」をご参照ください。
JDBC ドライバーを介して Dataphin にアクセスすると、Dataphin は AccessKey を認証し、要求されたリソースまたは SQL ステートメントに対してユーザーを承認します。その後、Dataphin はそのユーザーとして SQL ステートメントを実行します。
プロキシモード
プロキシモードを使用する前に、Dataphin O&M チームに連絡して、この機能を有効化および設定する必要があります。
プロキシモードは通常、Dataphin とのシステムレベルの統合に使用されます。この方法では、個人ユーザーの AccessKey を配布または設定する必要がありません。接続文字列 (JDBC URL) で代理実行されるユーザーを指定して、そのユーザーの権限に基づいて操作が承認されるようにすることができます。プラットフォームレベルの AccessKey は高い権限を持ち、任意のユーザーを代理実行できます。たとえば、クライアントがプラットフォームの AccessKey を使用する場合、userA が接続するときに delegation_uid=userA を設定します。Dataphin は、その接続に対して userA を代理実行し、そのユーザーのプロファイルに基づいて権限チェックを実行します。
Dataphin ドライバー
com.aliyun.dataphin.jdbc.DataphinDriver
API | 説明 | 定義 |
connect | データベース接続を確立します。 | |
acceptsURL | URL がサポートされているかどうかを確認します。 | |
com.aliyun.dataphin.jdbc.DataphinConnection
API | 説明 | 定義 |
createStatement | Statement オブジェクトを作成します。 | |
prepareStatement | PreparedStatement オブジェクトを作成します。 | |
com.aliyun.dataphin.jdbc.DataphinStatement
API | 説明 | 定義 |
executeQuery | SQL ステートメントを実行し、ResultSet オブジェクトを返します。 | |
setFetchSize | 1 回のバッチでデータベースからフェッチする行数を指定します。このパラメーターが設定されていないか、0 に設定されている場合、デフォルト値の 1000 が使用されます。 | |
cancel |
| |
com.aliyun.dataphin.jdbc.DataphinPrepareStatement
API | 説明 | 定義 |
executeQuery | SQL ステートメントを実行し、ResultSet オブジェクトを返します。 | |
com.aliyun.dataphin.jdbc.DataphinResultSetMetaData
API | 説明 | 定義 |
getColumnCount | 結果セットの列数を取得します。 | |
getColumnName | 結果セットの列名を取得します。 | |
com.aliyun.dataphin.jdbc.ResultSet
API | 説明 | 定義 |
next | カーソルを | |
com.aliyun.dataphin.jdbc.DatabaseMetaData
API | 説明 | 定義 |
getTables | テーブル情報を取得します。
| |
getColumns | テーブルの列情報を取得します。
| |
例
Dataphin JDBC ドライバーを使用してカタログ情報を取得できます。
1. テーブルの一覧表示
プロジェクト内の物理テーブルと物理ビューを一覧表示します。
構文
SHOW TABLES
[FROM db_name]
[LIKE 'pattern']パラメーター
db_name:
Dataphin プロジェクト名:プロジェクト内の物理テーブルを表示します。
開発プロジェクトおよびデータブロックの場合、明示的に _Dev サフィックスを追加する必要があります。
db_name が指定されていない場合、デフォルトで接続文字列で指定された project_name になります。
結果
名前 | タイプ | 説明 |
dim_user | 論理テーブル | ユーザーテーブル。 |
ods_user | 物理テーブル | ユーザーソーステーブル。 |
ods_user_logical_view | 論理ビュー | 論理ビュー。 |
ods_user_physical_view2 | 物理ビュー | 物理ビュー。 |
2. テーブルスキーマの取得
物理テーブルまたは物理ビューのスキーマを表示します。
構文
{DESCRIBE | DESC} table_name;このコマンドは、物理テーブルと物理ビューのみをサポートします。
パラメーター
table_name:物理テーブルまたは物理ビューの名前。
結果
名前 | タイプ | 説明 |
ID | BigInt | ユーザー ID。 |
Name | String | ユーザー名。 |
DS | String | パーティション時間。 |
サーバーサイドの接続制御
最大接続数:デフォルト値は 100 です。
接続タイムアウト:デフォルト値は 288000 秒 (2 時間) です。確立された接続がアイドル状態のままである場合、この期間が経過すると自動的に切断されます。切断された接続で操作を実行しようとすると、エラーまたはクローズ例外が返されます。これは、JDBC URL の
Connection_Idle_Timeoutに対応します。
MaxCompute における JDBC タスクのメタデータ
JDBC タスクが Dataphin から MaxCompute 実行インスタンスに送信されると、次のメタデータが送信に含まれます。
パラメーター | 説明 |
logical_project | JDBC タスクが実行される Dataphin プロジェクトの名前。 |
EXT_JDBC_TASKRUN_ID | JDBC タスクの ID。 |
EXT_DPN_TENANT_ID | JDBC タスクが実行される Dataphin テナントの ID。 |
EXT_PLATFORM_ID | タスクを MaxCompute に送信する上位プラットフォームの ID。デフォルト値は Dataphin です。 |
biz_id | JDBC タスクを実行する Dataphin ユーザーの ID。 |
odps.idata.userenv | ユーザー環境情報。これには、Java SDK バージョン、Java バージョン、IP アドレス、およびデバイスの MAC 情報が含まれます。例:
|
この情報は、MaxCompute の請求書の分析やジョブの実行時間の表示などのユースケースに使用できます。詳細については、「MaxCompute プロジェクトの上位 N 個のコストと時間のかかるジョブのアカウントに関する統計を収集する」をご参照ください。
