Topik ini menjelaskan cara menggunakan fitur Pemuatan Otomatis untuk secara otomatis membuat tabel asing bagi tabel MaxCompute dan Object Storage Service (OSS) dalam mode pemuatan sesuai permintaan atau pemuatan penuh berdasarkan kebutuhan bisnis Anda.
Skenario
Hologres terintegrasi mendalam dengan MaxCompute, Data Lake Formation (DLF), dan OSS. Anda dapat meminta data di MaxCompute atau OSS menggunakan tabel asing di Hologres tanpa perlu memigrasikan data dari MaxCompute atau OSS ke Hologres. Jika ingin mempercepat kueri pada sejumlah besar tabel, Anda dapat menggunakan fitur Pemuatan Otomatis untuk secara otomatis membuat tabel asing di Hologres. Metadata MaxCompute dan DLF disinkronkan secara otomatis ke tabel asing, menghilangkan kebutuhan untuk membuat tabel asing secara manual.
Pemuatan sesuai permintaan: Mode ini cocok untuk skenario di mana Anda ingin mempercepat kueri pada sejumlah kecil tabel. Saat mode ini diaktifkan dan kueri dimulai, Hologres secara otomatis membuat tabel asing untuk tabel MaxCompute atau OSS yang ingin Anda kueri guna mempercepat proses tersebut. Tabel asing diberi nama sama dengan tabel MaxCompute atau OSS.
CatatanJika tabel internal di Hologres memiliki nama skema dan nama tabel yang sama dengan tabel MaxCompute atau OSS yang dikueri, fitur Pemuatan Otomatis tidak dipicu, dan data dikueri dari tabel internal.
Untuk memastikan bahwa kueri Anda memicu pembuatan tabel asing setelah fitur Pemuatan Otomatis diaktifkan, pastikan akun yang digunakan untuk memulai kueri memiliki izin untuk membuat dan menghapus tabel serta skema di database tertentu. Jika tabel asing dibuat menggunakan fitur Pemuatan Otomatis, cukup pastikan bahwa akun tersebut memiliki izin kueri.
Mode ini hanya dipicu saat Anda memulai kueri dan tidak secara berkala membuat tabel asing.
Pemuatan penuh: Mode ini cocok untuk skenario di mana Anda ingin mempercepat kueri pada sejumlah besar tabel atau tabel dari banyak sumber. Setelah mode ini diaktifkan, sistem secara otomatis membuat tabel asing untuk semua tabel sumber. Anda juga dapat mengonfigurasi parameter untuk menentukan interval pemeriksaan tabel sumber baru. Dengan cara ini, sistem secara otomatis membuat tabel asing untuk tabel sumber baru saat Anda memulai kueri. Ini membantu mengoptimalkan pengelolaan sejumlah besar tabel asing dan cocok untuk percepatan kueri berbasis BI.

Deskripsi
Dalam Hologres V1.1.43 dan versi lebih baru, fitur Pemuatan Otomatis mendukung proyek MaxCompute yang menggunakan model dua lapis.
Dalam Hologres V1.3.28 dan versi lebih baru, nilai default parameter
hg_experimental_load_all_foreign_table_interval_timediubah dari5 minmenjadi30 minuntuk mengurangi konsumsi sumber daya sistem yang disebabkan oleh tugas inspeksi otomatis. Parameter ini menentukan interval pemeriksaan tabel sumber baru saat menggunakan mode pemuatan penuh.Dalam Hologres V2.2.1 dan versi lebih baru, fitur berikut didukung. Jika versi instance Hologres Anda adalah V2.1 atau lebih lama, hubungi dukungan teknis Hologres untuk meningkatkan instance Anda.
Konfigurasi
hg_experimental_load_foreign_table_mode = ['query' | 'period']didukung untuk memungkinkan Anda menentukan mode implementasi fitur Pemuatan Otomatis.Fitur Pemuatan Otomatis mendukung proyek MaxCompute yang menggunakan model tiga lapis. Untuk informasi lebih lanjut tentang model tiga lapis MaxCompute, lihat Operasi terkait skema.
Fitur Pemuatan Otomatis mendukung pembaruan metadata berdasarkan evolusi skema tabel MaxCompute. Evolusi skema mencakup operasi seperti menambahkan kolom, menghapus kolom, mengubah nama kolom, dan mengubah urutan kolom.
Jika tabel asing dibuat untuk tabel MaxCompute, dan evolusi skema dilakukan pada tabel MaxCompute, Anda dapat mengonfigurasi parameter GUC untuk mengaktifkan pemeriksaan evolusi skema. Setelah Anda mengonfigurasi parameter GUC, sistem secara otomatis memperbarui metadata di tabel asing yang memetakan ke tabel MaxCompute saat kueri dimulai. Kami merekomendasikan Anda mengonfigurasi parameter GUC untuk sesi tetapi bukan database. Jika tidak, sejumlah besar tugas untuk memeriksa perubahan skema tabel akan dihasilkan, meningkatkan beban kerja sistem.
set hg_experimental_enable_auto_load_check_schema_evolution = on;CatatanFitur Pemuatan Otomatis tidak mendukung pembaruan metadata berdasarkan evolusi skema tabel OSS.
Fitur Pemuatan Otomatis mendukung pemuatan otomatis metadata di DLF untuk mempercepat kueri dari tabel di OSS. Untuk informasi lebih lanjut, lihat Gunakan DLF untuk membaca data dari dan menulis data ke OSS.
Batasan
Pastikan bahwa parameter sumber data MaxCompute dan OSS tidak dimulai dengan hg_ atau holo_. Awalan tersebut adalah kata kunci cadangan di Hologres.
Maksimal enam tabel asing dapat dibuat secara otomatis untuk satu kueri. Oleh karena itu, Anda dapat menjalankan pernyataan SQL untuk meminta hingga enam tabel. Jika lebih dari enam tabel ditentukan dalam pernyataan kueri, fitur Pemuatan Otomatis gagal. Anda harus memodifikasi pernyataan kueri agar fitur Pemuatan Otomatis berfungsi.
Jika tabel MaxCompute berisi data yang jenisnya tidak didukung oleh Hologres, sistem gagal membuat tabel asing untuk tabel MaxCompute. Anda hanya dapat memilih bidang yang didukung secara manual untuk membuat tabel asing dengan menjalankan pernyataan
CREATE FOREIGN TABLE.Untuk menggunakan fitur Pemuatan Otomatis untuk secara otomatis membuat tabel asing untuk tabel OSS, Anda harus menjalankan pernyataan
CREATE USER MAPPINGuntuk menentukan ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses DLF dan OSS untuk akun Anda, termasuk akun Alibaba Cloud Anda.Jika beberapa tabel asing dengan nama yang sama dibuat dalam skema yang sama di Hologres untuk tabel di sumber data yang berbeda, hanya tabel terbaru yang dipertahankan. Oleh karena itu, kami sarankan Anda mengaitkan sumber data yang berbeda dengan skema yang berbeda di Hologres.
Jika Anda menggunakan fitur Pemuatan Otomatis untuk secara otomatis membuat tabel asing dan skema yang ditentukan tidak ada di Hologres, Anda harus diberi izin admin pada database untuk memungkinkan sistem secara otomatis membuat skema.
Saat menggunakan mode pemuatan penuh, perhatikan hal-hal berikut:
Kami sarankan Anda mengatur interval pembuatan tabel asing setidaknya 5 menit.
Kami sarankan Anda tidak menggunakan mode ini untuk sumber data yang berisi lebih dari 1.000 tabel.
Prosedur
Aktifkan Pemuatan Otomatis
Sintaks
-- Aktifkan fitur Pemuatan Otomatis. ALTER DATABASE <nama database> SET hg_experimental_enable_auto_load_foreign_table = on;Parameter
nama database: nama database Hologres.
(Opsional) Konfigurasikan mode Pemuatan Otomatis
Dalam Hologres V2.2.1 dan versi lebih baru, Anda dapat mengonfigurasi mode Pemuatan Otomatis berdasarkan kebutuhan bisnis Anda. Mode Pemuatan Otomatis hanya dapat dikonfigurasi pada tingkat database. Jika Anda tidak menentukan mode, mode pemuatan sesuai permintaan digunakan. Anda tidak perlu menentukan mode untuk versi sebelum Hologres V2.2.1.
Sintaks
ALTER DATABASE <nama database> SET hg_experimental_load_foreign_table_mode = ['query' | 'period']Nilai valid
query: Mode pemuatan sesuai permintaan digunakan. Ini adalah nilai default.
-- Tentukan mode pemuatan sesuai permintaan. ALTER DATABASE <nama database> SET hg_experimental_load_foreign_table_mode = 'query';period: Mode pemuatan penuh digunakan.
-- Tentukan mode pemuatan penuh. ALTER DATABASE <nama database> SET hg_experimental_load_foreign_table_mode = 'period';
Konfigurasikan pemetaan
Sintaks
Konfigurasikan pemetaan antara MaxCompute dan Hologres
Hologres V2.2.1 dan versi lebih baru
-- Sintaks untuk proyek MaxCompute yang menggunakan model tiga lapis ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>.<mc_schema>, [...]'; -- Sintaks untuk proyek MaxCompute yang menggunakan model dua lapis ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>, [...]';Versi sebelum Hologres V2.2.1
ALTER DATABASE <database> SET hg_experimental_default_odps_project_list='<odps_project_name_1>,<odps_project_name_2>...';
Konfigurasikan pemetaan antara DLF dan Hologres
-- Katalog Default DLF ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_database> [...]'; -- Sintaks untuk katalog kustom DLF ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_catalog>.<dlf_database>, [...]';
Parameter
Parameter
Deskripsi
database
Nama database Hologres.
hologres_schema
Nama skema di database Hologres.
mc_project
Nama proyek MaxCompute untuk mana Anda ingin mengaktifkan fitur Pemuatan Otomatis. Anda dapat masuk ke Konsol MaxCompute dan memilih di panel navigasi di sebelah kiri untuk mendapatkan nama proyek MaxCompute.
odps_foreign_server
Server yang digunakan untuk mengakses proyek MaxCompute. Nilainya tetap sebagai
odps_server.odps_project_name
Nama proyek MaxCompute untuk mana Anda ingin secara berkala membuat tabel asing. Anda dapat menentukan beberapa proyek. Pisahkan beberapa nama proyek dengan koma (,).
Secara default, parameter ini dibiarkan kosong, yang menunjukkan bahwa tabel asing tidak dibuat secara berkala untuk proyek MaxCompute.
CatatanParameter ini hanya valid untuk versi sebelum Hologres V2.2.1.
mc_schema
Nama skema di database MaxCompute.
CatatanParameter ini hanya diperlukan untuk proyek yang menggunakan model tiga lapis. Untuk informasi lebih lanjut tentang skema, lihat Operasi terkait skema.
dlf_foreign_server
Server asing yang dibuat berdasarkan DLF_FDW. Anda dapat menjalankan pernyataan berikut untuk mendapatkan nama server asing. Untuk informasi lebih lanjut, lihat Gunakan DLF untuk membaca data dari dan menulis data ke OSS.
SELECT * FROM pg_foreign_server;dlf_catalog
Nama katalog tempat database DLF berada. Untuk mendapatkan nama katalog, Anda dapat masuk ke Konsol DLF, memilih di panel navigasi di sebelah kiri, dan kemudian klik tab Catalog List.
dlf_database
Nama database DLF untuk mana Anda ingin mengaktifkan fitur Pemuatan Otomatis. Untuk mendapatkan nama database, Anda dapat masuk ke Konsol DLF, memilih di panel navigasi di sebelah kiri, dan kemudian klik tab Database.
Kueri data
Anda dapat meminta data dari MaxCompute dan DLF menggunakan tabel asing.
-- Kueri data dari MaxCompute.
SELECT * FROM <hologres_schema>.<mc_table>;
-- Kueri data dari DLF.
SELECT * FROM <hologres_schema>.<dlf_table>;Operasi lainnya
Nonaktifkan Pemuatan Otomatis
Sintaks
---- Nonaktifkan fitur Pemuatan Otomatis. ALTER DATABASE <nama database> SET hg_experimental_enable_auto_load_foreign_table = off;CatatanSetelah Anda menonaktifkan fitur Pemuatan Otomatis, sistem tidak lagi menyinkronkan metadata dari sumber data untuk membuat tabel asing. Anda hanya dapat melihat tabel asing dan metadata yang ada di Hologres. Jika Anda ingin membuat tabel asing dalam kasus ini, Anda harus secara manual menjalankan pernyataan IMPORT FOREIGN SCHEMA. Untuk informasi lebih lanjut, lihat IMPORT FOREIGN SCHEMA.
Parameter
nama database: nama database Hologres.
Lihat sumber data untuk mana fitur Pemuatan Otomatis diaktifkan
-- Lihat sumber data MaxCompute untuk mana fitur Pemuatan Otomatis diaktifkan di versi sebelum Hologres V2.2.
SHOW hg_experimental_default_odps_project_list;
-- Lihat sumber data MaxCompute dan DLF untuk mana fitur Pemuatan Otomatis diaktifkan di Hologres V2.2 dan versi lebih baru.
SHOW hg_experimental_auto_load_foreign_schema_mapping;Konfigurasikan interval untuk inspeksi berkala
Jika Anda mengonfigurasi mode pemuatan penuh untuk sumber data, sistem memeriksa tabel baru pada interval yang ditentukan. Jika tabel baru dibuat, sistem secara otomatis membuat tabel asing untuk tabel baru tersebut saat Anda memulai kueri. Interval default adalah 30 menit. Jika tabel baru dibuat selama interval 30 menit sebelum Anda memulai kueri, sistem secara otomatis membuat tabel asing untuk tabel baru tersebut.
Sintaks
-- Atur interval inspeksi menjadi 600 detik untuk database Hologres. ALTER DATABASE <nama database> SET hg_experimental_load_all_foreign_table_interval_time = 600;Parameter
nama database: nama database Hologres.
Kami sarankan Anda mengatur interval inspeksi menjadi lebih besar dari atau sama dengan 600 detik (10 menit).
Hapus tabel asing
Jika tabel asing tidak lagi diperlukan, Anda dapat menjalankan pernyataan DROP untuk menghapus tabel asing. Untuk informasi lebih lanjut, lihat DROP FOREIGN TABLE.
Contoh
Contoh 1: Gunakan mode pemuatan sesuai permintaan
Dalam contoh ini, fitur Pemuatan Otomatis diaktifkan untuk proyek MaxCompute yang menggunakan model dua lapis dan proyek MaxCompute yang menggunakan model tiga lapis.
Model dua lapis: Nama proyek adalah
mc_projectdan nama tabel adalahmc_table.Model tiga lapis: Nama proyek adalah
mc_3_layer_project, nama skema adalahmc_schema, dan nama tabel adalahmc_table.
Model dua lapis
Aktifkan fitur Pemuatan Otomatis.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;Konfigurasikan pemetaan.
--- Untuk Hologres V2.2.1 dan versi lebih baru ALTER DATABASE holo_demo SET hg_experimental_auto_load_foreign_schema_mapping = 'hologres_schema:odps_server.mc_project'; --- Untuk versi sebelum Hologres V2.2.1 ALTER DATABASE holo_demo SET hg_experimental_default_odps_project_list='mc_project';Kueri data menggunakan tabel asing.
SELECT * FROM hologres_schema.mc_table;
Model tiga lapis
Aktifkan fitur Pemuatan Otomatis.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;Konfigurasikan pemetaan.
ALTER DATABASE holo_demo SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema_3layer:odps_server.mc_3_layer_project.mc_schema';Kueri data menggunakan tabel asing.
SELECT * FROM holo_schema_3layer.mc_table;
Contoh 2: Gunakan mode pemuatan penuh
Dalam contoh ini, sumber data DLF digunakan. Anda dapat mengaktifkan fitur Pemuatan Otomatis untuk tabel di katalog default DLF atau katalog kustom.
Katalog default DLF
Bagian ini menjelaskan cara menggunakan mode pemuatan penuh untuk database
dlf_dbdi katalog default DLF. Sistem secara otomatis membuat tabel asing di Hologres untuk semua tabel di database. Sistem juga secara berkala memeriksa tabel baru di database pada interval yang ditentukan oleh parameterhg_experimental_load_all_foreign_table_interval_timedan secara otomatis membuat tabel asing untuk tabel baru di database.Buat server asing bernama
dlf_serverdan konfigurasikan titik akhir. Untuk informasi lebih lanjut, lihat Gunakan DLF untuk membaca data dari dan menulis data ke OSS.-- Buat server asing. CREATE SERVER IF NOT EXISTS dlf_server FOREIGN data wrapper dlf_fdw options ( dlf_endpoint 'dlf-share.cn-beijing.aliyuncs.com', oss_endpoint 'oss-cn-beijing-internal.aliyuncs.com' );Konfigurasikan pemetaan pengguna.
Untuk menggunakan fitur Auto Load, Anda harus mengeksekusi pernyataan
CREATE USER MAPPINGuntuk menentukan ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses DLF dan OSS. Untuk informasi lebih lanjut, lihat Gunakan DLF untuk membaca data dari dan menulis data ke OSS.CREATE USER MAPPING FOR <User ID> server <server_name> options ( dlf_access_id 'accessid', dlf_access_key 'accesskey', oss_access_id 'accessid', oss_access_key 'accesskey' );Aktifkan fitur Auto Load.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;Konfigurasikan pemetaan dan mode Auto Load.
SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema:dlf_server.dlf_db'; SET hg_experimental_load_foreign_table_mode = 'period'; SET hg_experimental_load_all_foreign_table_interval_time = 10;Kueri data menggunakan tabel asing.
SELECT * FROM holo_schema.dlf_table;
Katalog kustom DLF
Buat server asing dan konfigurasikan titik akhir. Untuk informasi lebih lanjut, lihat Gunakan DLF untuk membaca data dari dan menulis data ke OSS.
CREATE SERVER IF NOT EXISTS DLF_server FOREIGN data wrapper dlf_fdw options ( dlf_endpoint 'dlf-share.cn-beijing.aliyuncs.com', oss_endpoint 'oss-cn-beijing-internal.aliyuncs.com' );Konfigurasikan pemetaan pengguna.
Untuk menggunakan fitur Pemuatan Otomatis, Anda harus menjalankan pernyataan
CREATE USER MAPPINGuntuk menentukan ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses DLF dan OSS. Untuk informasi lebih lanjut, lihat Gunakan DLF untuk membaca data dari dan menulis data ke OSS.CREATE USER mapping FOR <User ID> server <server_name> options ( dlf_access_id 'accessid', dlf_access_key 'accesskey', oss_access_id 'accessid', oss_access_key 'accesskey' );Aktifkan fitur Pemuatan Otomatis.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;Konfigurasikan pemetaan, mode Pemuatan Otomatis, dan interval inspeksi.
-- Konfigurasikan pemetaan. SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema:DLF_server.dlf_catalog.dlf_db'; -- Konfigurasikan mode pemuatan penuh. SET hg_experimental_load_foreign_table_mode = 'period'; -- Atur interval inspeksi menjadi 600 detik. SET hg_experimental_load_all_foreign_table_interval_time = 600;Kueri data menggunakan tabel asing.
SELECT * FROM holo_schema.dlf_table;