Topik ini menjelaskan cara menghubungkan ke Dataphin menggunakan driver Java Database Connectivity (JDBC).
Prasyarat
Dataphin JDBC menggunakan Dataphin OpenAPI untuk menjalankan kueri SQL. Sebelum menggunakan Dataphin JDBC, Anda harus mengaktifkan fitur Dataphin OpenAPI terlebih dahulu.
Ikhtisar fungsi
Dua mode autentikasi: Dataphin JDBC mendukung dua mode autentikasi: mode dasar dan modus proxy. Untuk informasi selengkapnya, lihat Authentication modes.
Konsistensi hasil eksekusi: Menjalankan pernyataan SQL melalui Dataphin JDBC setara dengan menjalankannya di UI Dataphin. Oleh karena itu, hasil eksekusi SQL konsisten dengan hasil yang ditampilkan di UI Dataphin. Konfigurasi di Dataphin—seperti izin, aturan penyamaran data, pengaturan keamanan, dan spesifikasi kode—juga memengaruhi hasil eksekusi melalui Dataphin JDBC.
Batasan
Dataphin tidak mendukung koneksi JDBC jika mesin komputasi adalah Databricks, SelectDB, atau Doris.
Saat Dataphin JDBC menjalankan pernyataan SQL, Dataphin melakukan operasi pra-pemrosesan seperti terjemahan SQL dan penyamaran data. Data hasil juga ditransmisikan dan diteruskan melalui Dataphin. Proses-proses ini menyebabkan degradasi performa sehingga kueri memerlukan waktu lebih lama dibandingkan kueri langsung ke mesin komputasi.
Dataphin JDBC menjalankan pernyataan SQL dengan mengirimkannya ke Dataphin melalui Dataphin OpenAPI. Dataphin kemudian memproses pernyataan tersebut dan meneruskannya ke mesin komputasi yang mendasari untuk dieksekusi. Sebelum menggunakan Dataphin JDBC, Anda harus menilai volume panggilan dan menentukan apakah perlu melakukan penskalaan kluster Dataphin serta mesin komputasi.
CatatanJika Anda tidak dapat menilai kapasitas sendiri, ajukan permintaan penilaian kapasitas untuk kluster Dataphin kepada tim Operasi dan Pemeliharaan (O&M) Dataphin. Permintaan ini tidak mencakup penilaian kapasitas untuk mesin komputasi.
Dataphin tidak mendukung pembatasan kecepatan atau kontrol konkurensi. Anda harus menilai dampaknya secara hati-hati.
Versi driver JDBC dan tautan unduhan
Hubungi insinyur O&M Dataphin untuk mendapatkan paket JAR driver.
Parameter koneksi
Saat Dataphin JDBC menggunakan ID AccessKey dan Rahasia AccessKey platform (modus proxy), Anda dapat menggunakan sintaks set untuk menentukan pengguna akses.
set dp_delegation_uid = 'target_source_user_uid';set dp_delegation_name = 'target_user_name';
Format URL JDBC: 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]
Nama parameter bersifat case-sensitive.
Tanda kurung siku ([]) hanya untuk ilustrasi. Anda harus menghapusnya saat menjalankan perintah.
Parameter | Wajib | Deskripsi | Contoh |
host | Ya | Nama domain Dataphin OpenAPI. Anda dapat memperoleh nama domain Dataphin dari OpenAPI Call Address di Personal Center > AccessKey Management. Gambar berikut menunjukkan contohnya.
| dataphin-openapi.****.aliyun.com |
port | Tidak | Nomor port bergantung pada apakah HTTPS diaktifkan untuk Dataphin OpenAPI. Jika HTTPS diaktifkan, port-nya adalah | 80 |
catalog | Ya | Cakupan data yang dapat dikueri secara default.
Catatan
| Exprojectname |
tenant_id | Ya | ID penyewa untuk kueri. | 111***111 |
ssl | Tidak | Menentukan apakah akan menggunakan HTTPS.
| False |
currentschema | Tidak | Skema sumber data.
| information_schema |
compute_project | Tidak | Nama bahasa Inggris proyek. Proyek ini digunakan untuk menjalankan kueri SQL. Proyek dan mesin komputasi yang terhubung dengannya harus memiliki izin baca pada tabel yang dikueri.
| Exprojectname |
user | Ya | ID AccessKey pengguna atau platform. Dalam modus proxy, gunakan ID AccessKey platform.
| kIB**********PT0 |
log_level | Tidak | Tingkat logging. Nilai yang valid:
| DEBUG |
password | Ya | Rahasia AccessKey pengguna akses.
| Cy**************r2T |
delegation_uid | Tidak | Saat Anda menggunakan AccessKey platform, Anda dapat bertindak sebagai proxy untuk pengguna lain guna membuat koneksi dan mengakses Dataphin. Parameter ini menentukan pengguna Dataphin yang akan diproksi. Untuk pengguna Dataphin yang akan diproksi, Anda harus meneruskan ID akun yang sesuai berdasarkan account_type yang dipilih. Setelah Anda menyetel parameter ini, modus proxy akan digunakan untuk autentikasi. | 999***999 |
account_type | Tidak | Saat Anda menggunakan modus proxy untuk autentikasi, Anda harus menentukan tipe akun pengguna yang diproksi.
Catatan
| USER_ID |
connect_timeout | Tidak | Periode timeout maksimum untuk mendapatkan koneksi, dalam detik.
| 10 |
engine | Tidak | Mesin offline untuk proyek yang ditentukan oleh project_name dalam session atau string koneksi. Jika merupakan sumber komputasi Hadoop, mesin default-nya adalah Hive. Anda dapat menyetel parameter ini ke Impala atau Spark. Untuk menyetel tipe mesin, Anda harus mengonfigurasinya terlebih dahulu di sumber komputasi. Jika mesin yang ditentukan tidak didukung oleh proyek, pengaturan tersebut akan diabaikan, tetapi peringatan akan dilaporkan. Nilai yang valid:
Catatan Parameter ini diabaikan saat Anda mengakses sumber data. | MaxCompute |
acceleration_source | Tidak | Menentukan sumber akselerasi. Anda dapat memilih kode sumber akselerasi apa pun dalam penyewa tersebut. | starrocks_code |
acceleration_resource_group | Tidak | Kelompok sumber daya akselerasi. Anda dapat memilih kelompok sumber daya yang telah dikonfigurasi untuk sumber akselerasi yang dipilih. | starrocks_resource_group |
Mode autentikasi
Mode dasar
Anda dapat menyetel username ke ID AccessKey pengguna dan password ke Rahasia AccessKey pengguna. Akses akan diidentifikasi sebagai pengguna tersebut. Untuk informasi selengkapnya tentang cara melihat AccessKey, lihat Dataphin OpenAPI AccessKey management.
Saat mengakses Dataphin melalui driver JDBC, Dataphin mengautentikasi AccessKey dan memberikan otorisasi kepada pemilik AccessKey tersebut untuk mengakses resource atau menjalankan pernyataan SQL. Dataphin kemudian mengidentifikasi pengguna yang menjalankan pernyataan SQL tersebut.
Modus proxy
Sebelum menggunakan modus proxy, hubungi tim O&M Dataphin untuk mengaktifkan dan mengonfigurasi fitur ini.
Modus proxy biasanya digunakan untuk integrasi antara sistem dan Dataphin. Metode ini menghindari kebutuhan untuk mendistribusikan atau mengonfigurasi AccessKey bagi setiap pengguna. Dengan menentukan pengguna proxy dalam string koneksi JDBC (URL JDBC), operasi akan diotorisasi berdasarkan pengguna yang ditentukan. AccessKey tingkat platform memiliki izin tinggi dan dapat bertindak sebagai proxy untuk semua pengguna. Seperti yang ditunjukkan pada gambar berikut, klien dikonfigurasi dengan AccessKey platform. Saat userA mengakses klien, Anda harus menentukan delegation_uid=userA untuk menunjukkan bahwa akses tersebut merupakan proxy untuk userA. Izin fungsi dan izin data userA kemudian digunakan untuk verifikasi izin.
Detail driver Dataphin
com.aliyun.dataphin.jdbc.DataphinDriver
Antarmuka | Deskripsi fungsi | Definisi antarmuka |
connect | Mendapatkan koneksi database. | |
acceptsURL | Memeriksa apakah URL didukung. | |
com.aliyun.dataphin.jdbc.DataphinConnection
Antarmuka | Deskripsi | Definisi antarmuka |
createStatement | Membuat objek Statement. | |
prepareStatement | Membuat objek PreparedStatement. | |
com.aliyun.dataphin.jdbc.DataphinStatement
Antarmuka | Deskripsi | Definisi antarmuka |
executeQuery | Menjalankan pernyataan SQL dan mengembalikan objek ResultSet. | |
setFetchSize | Mengambil data hasil secara batch berdasarkan jumlah baris yang ditentukan. Jika parameter ini tidak disetel atau disetel ke 0, nilai default-nya adalah 1.000. | |
cancel | Membatalkan eksekusi objek Statement. | |
com.aliyun.dataphin.jdbc.DataphinPrepareStatement
Antarmuka | Deskripsi | Definisi antarmuka |
executeQuery | Menjalankan pernyataan SQL dan mengembalikan objek ResultSet. | |
com.aliyun.dataphin.jdbc.DataphinResultSetMetaData
Antarmuka | Deskripsi | Definisi antarmuka |
getColumnCount | Mendapatkan jumlah kolom dalam skema hasil. | |
getColumnName | Mendapatkan nama kolom dari skema hasil. | |
com.aliyun.dataphin.jdbc.ResultSet
Antarmuka | Deskripsi | Definisi antarmuka |
next | Mengambil data hasil eksekusi SQL baris demi baris. | |
com.aliyun.dataphin.jdbc.DatabaseMetaData
Antarmuka | Deskripsi | Definisi antarmuka |
getTables | Mendapatkan informasi tabel.
| |
getColumns | Mendapatkan informasi bidang suatu tabel.
| |
Contoh
Anda dapat mengambil informasi catalog menggunakan driver Dataphin JDBC.
1. Mendapatkan daftar tabel
Operasi ini mengambil daftar tabel fisik dan tampilan fisik dalam suatu proyek.
Sintaks
SHOW TABLES
[FROM db_name]
[LIKE 'pattern']Deskripsi parameter
db_name:
Nama proyek Dataphin. Tabel fisik dalam proyek yang ditentukan akan ditampilkan.
Untuk proyek pengembangan dan domain data, Anda harus secara eksplisit menambahkan _Dev.
Jika Anda tidak menentukan db_name, tabel dalam proyek yang ditentukan oleh project_name dalam URL akan ditampilkan secara default.
Hasil pengembalian
Nama | Tipe | Komentar |
dim_user | LOGICAL TABLE | Tabel pengguna. |
ods_user | PHYSICAL TABLE | Tabel sumber pengguna. |
ods_user_logical_view | LOGICAL_VIEW | Tampilan logis. |
ods_user_physical_view2 | PHYSICAL_VIEW | Tampilan fisik. |
2. Mendapatkan skema tabel
Operasi ini mengambil detail bidang tabel fisik atau tampilan fisik.
Sintaks
{DESCRIBE | DESC} table_name;Hanya tabel fisik dan tampilan fisik yang didukung.
Deskripsi parameter
table_name: Nama tabel fisik atau tampilan fisik.
Hasil pengembalian
Nama | Tipe | Komentar |
ID | BigInt | ID pengguna. |
Name | String | Username. |
DS | String | Waktu partisi. |
Kontrol koneksi sisi server
Koneksi maksimum: Nilai default-nya adalah 100.
Timeout koneksi: Nilai default-nya adalah 288.000 detik (2 jam). Jika suatu layanan terhubung ke database tetapi tetap idle selama periode tertentu, koneksi akan diputus secara otomatis. Jika Anda melakukan operasi melalui koneksi ini, error akan dilaporkan atau koneksi ditutup secara tak terduga. Hal ini berkaitan dengan parameter Connection_Idle_Timeout dalam URL koneksi.
Informasi tentang pekerjaan Dataphin JDBC yang dikirimkan ke instans MaxCompute untuk eksekusi
Saat Anda mengirimkan pekerjaan Dataphin JDBC ke instans MaxCompute untuk dieksekusi, sistem juga mengirimkan informasi terkait Dataphin. Tabel berikut menjelaskan informasi tersebut.
Parameter | Deskripsi |
logical_project | Nama proyek Dataphin tempat pekerjaan JDBC dijalankan. |
EXT_JDBC_TASKRUN_ID | ID pekerjaan JDBC. |
EXT_DPN_TENANT_ID | ID penyewa Dataphin tempat pekerjaan JDBC dijalankan. |
EXT_PLATFORM_ID | ID platform lapisan atas yang mengirimkan pekerjaan ke MaxCompute. Nilai default-nya adalah Dataphin. |
biz_id | ID anggota Dataphin yang menjalankan pekerjaan JDBC. |
odps.idata.userenv | Informasi lingkungan pengguna. Ini mencakup versi Java SDK, versi Java, alamat IP, dan alamat MAC perangkat. Contoh:
|
Anda dapat menggunakan informasi yang dikirimkan untuk menganalisis tagihan MaxCompute dan melihat waktu yang dikonsumsi oleh pekerjaan. Untuk informasi selengkapnya, lihat Collect statistics on accounts of top N costs and time-consuming jobs of MaxCompute projects.
