Topik ini menjelaskan cara menggunakan fitur Auto Load untuk tabel eksternal. Fitur ini secara otomatis memuat data dari MaxCompute dan Object Storage Service (OSS) sesuai permintaan atau secara penuh.
Skenario
Hologres sangat kompatibel dengan layanan komputasi data besar cloud-native MaxCompute, Alibaba Cloud Data Lake Formation (DLF), dan Alibaba Cloud Object Storage Service (OSS). Anda dapat menggunakan tabel eksternal untuk mempercepat kueri pada data yang disimpan di MaxCompute atau OSS tanpa melakukan migrasi data. Untuk mempercepat kueri pada banyak tabel, Anda dapat menggunakan fitur pemuatan otomatis. Fitur ini secara otomatis menyinkronkan metadata dari MaxCompute dan DLF serta membuat tabel eksternal Hologres, sehingga mengurangi upaya manual dalam pembuatan tabel tersebut.
-
Pemuatan tabel eksternal sesuai permintaan: Mode ini ideal untuk skenario di mana hanya sejumlah kecil tabel sumber data memerlukan percepatan kueri. Saat Anda mengaktifkan fitur ini, Hologres secara otomatis membuat tabel eksternal yang sesuai ketika Anda melakukan kueri pada tabel di MaxCompute atau OSS, sehingga mempercepat kueri tersebut.
Catatan-
Jika skema dan tabel dengan nama yang sama sudah ada di Hologres, fitur pemuatan otomatis tidak akan dipicu saat Anda melakukan kueri pada tabel MaxCompute atau OSS. Sebagai gantinya, tabel internal yang sudah ada di Hologres akan dikueri.
-
Karena pemuatan otomatis membuat tabel eksternal, akun yang digunakan untuk kueri harus memiliki izin untuk membuat dan menghapus skema serta tabel di database. Namun, jika tabel eksternal tersebut sudah dibuat, hanya izin kueri yang diperlukan untuk operasi selanjutnya.
-
Fitur ini hanya memicu pemuatan otomatis pada saat kueri dilakukan. Fitur ini tidak memuat data secara berkala.
-
-
Pemuatan penuh tabel eksternal: Mode ini ideal untuk skenario dengan banyak tabel atau beberapa sumber data yang memerlukan percepatan kueri. Saat fitur ini diaktifkan, sistem secara otomatis membuat tabel eksternal yang sesuai dengan sumber data saat Anda menjalankan kueri. Proses ini membuat pemetaan lengkap semua tabel dari sumber data. Setelah pemuatan penuh awal, Anda dapat mengonfigurasi pemeriksaan berkala untuk memastikan bahwa tabel baru yang ditambahkan juga secara otomatis dibuat sebagai tabel eksternal saat dikueri. Pendekatan ini mengoptimalkan pengelolaan banyak tabel eksternal dan ideal untuk meningkatkan performa kueri Business Intelligence (BI).

Fitur
-
Hologres V1.1.43 dan versi yang lebih baru mendukung pemuatan otomatis tabel eksternal MaxCompute. Awalnya, fitur ini hanya mendukung sumber data model dua lapis MaxCompute.
-
Pada Hologres V1.3.28 dan versi yang lebih baru, nilai default parameter
hg_experimental_load_all_foreign_table_interval_timediubah dari5 minmenjadi30 min. Perubahan ini mengurangi konsumsi sumber daya sistem akibat pemeriksaan berkala selama pemuatan penuh tabel eksternal. -
Hologres V2.2.1 dan versi yang lebih baru mendukung fitur-fitur berikut. Jika instans Anda menggunakan V2.1 atau versi sebelumnya, Anda dapat menghubungi dukungan teknis Hologres untuk melakukan upgrade instans.
-
Parameter baru,
hg_experimental_load_foreign_table_mode = ['query' | 'period'], ditambahkan untuk mengontrol mode pemuatan otomatis tabel eksternal. -
Pemuatan otomatis tabel eksternal mendukung data dari proyek model tiga lapis MaxCompute. Untuk informasi lebih lanjut tentang model tiga lapis MaxCompute, lihat Operasi skema.
-
Pemuatan otomatis tabel eksternal mendukung evolusi skema untuk tabel eksternal MaxCompute, seperti penambahan kolom, penghapusan kolom, serta modifikasi nama dan urutan kolom.
Untuk tabel eksternal Hologres yang sudah ada, jika skema sumber data eksternal berubah, Anda dapat menggunakan parameter Grand Unified Configuration (GUC) berikut untuk mengaktifkan pemeriksaan evolusi skema. Saat parameter ini diaktifkan, metadata tabel eksternal MaxCompute secara otomatis diperbarui pada saat kueri dilakukan. Aktifkan GUC ini pada tingkat sesi sesuai kebutuhan. Jangan mengaktifkannya pada tingkat database, karena hal tersebut dapat menghasilkan banyak pekerjaan pemeriksaan evolusi skema dan meningkatkan beban sistem.
set hg_experimental_enable_auto_load_check_schema_evolution = on;CatatanPemuatan otomatis tabel eksternal saat ini belum mendukung evolusi skema untuk tabel eksternal OSS.
-
Pemuatan otomatis tabel eksternal mendukung pemuatan melalui metadata DLF untuk mempercepat kueri pada data yang disimpan di OSS. Untuk informasi lebih lanjut, lihat Percepat kueri pada data di data lake berbasis OSS menggunakan DLF.
-
Batasan
-
Saat menggunakan pemuatan otomatis untuk tabel eksternal, parameter pemetaan untuk sumber data MaxCompute dan OSS tidak boleh diawali dengan hg_ atau holo_. Kata-kata ini merupakan kata kunci yang dicadangkan di Hologres.
-
Satu kueri dapat memuat otomatis maksimal enam tabel. Jika kueri melibatkan lebih dari enam tabel, proses pemuatan otomatis gagal. Anda harus menjalankan kueri lagi untuk memuat tabel eksternal yang tersisa.
-
Jika tabel MaxCompute berisi tipe data yang tidak didukung oleh tabel eksternal Hologres, tabel eksternal tersebut tidak dapat dibuat secara otomatis. Anda harus menggunakan pernyataan
CREATE FOREIGN TABLEuntuk membuat tabel eksternal secara manual dengan hanya memilih bidang yang didukung. -
Jika Anda menggunakan Auto Load untuk memuat data OSS secara otomatis, Anda harus menjalankan perintah
CREATE USER MAPPING. Perintah ini menentukan ID AccessKey dan Rahasia AccessKey untuk akun yang digunakan mengakses DLF dan OSS, seperti Akun Alibaba Cloud Anda. -
Jika Anda memuat tabel dari beberapa sumber data eksternal ke skema Hologres yang sama, tabel eksternal yang baru dibuat akan menimpa tabel eksternal yang sudah ada dengan nama yang sama. Untuk menghindarinya, kaitkan sumber data yang berbeda dengan skema Hologres yang berbeda.
-
Saat menggunakan Auto Load untuk tabel eksternal, jika Anda menentukan skema yang tidak ada di Hologres, sistem dapat membuat skema tersebut secara otomatis. Namun, pengguna harus memiliki izin `db_admin`.
-
Untuk skenario yang melibatkan pemuatan otomatis penuh tabel eksternal:
-
Jangan mengatur interval pemuatan otomatis kurang dari 5 menit.
-
Jangan mengaktifkan pemuatan otomatis penuh untuk sumber data eksternal yang berisi lebih dari 1.000 tabel.
-
Prosedur
Aktifkan pemuatan otomatis
-
Sintaks
-- Aktifkan pemuatan otomatis ALTER DATABASE <nama database> SET hg_experimental_enable_auto_load_foreign_table = on; -
Deskripsi parameter
nama database: Nama database Hologres.
(Opsional) Atur mode pemuatan otomatis
Pada Hologres V2.2.1 dan versi yang lebih baru, Anda dapat mengatur mode pemuatan otomatis sesuai kebutuhan bisnis. Mode pemuatan otomatis harus diaktifkan pada tingkat database. Jika Anda tidak mengatur mode, mode pemuatan sesuai permintaan akan digunakan secara default. Langkah ini tidak diperlukan untuk versi Hologres sebelum V2.2.1.
Sintaks
ALTER DATABASE <nama database> SET hg_experimental_load_foreign_table_mode = ['query' | 'period']-
Nilai parameter dijelaskan sebagai berikut:
-
query (default): Pemuatan tabel eksternal sesuai permintaan.
-- Atur mode pemuatan ke pemuatan sesuai permintaan ALTER DATABASE <nama database> SET hg_experimental_load_foreign_table_mode = 'query'; -
period: Pemuatan penuh tabel eksternal.
-- Atur mode pemuatan ke pemuatan penuh ALTER DATABASE <nama database> SET hg_experimental_load_foreign_table_mode = 'period';
-
Konfigurasikan pemetaan
-
Sintaks
-
Konfigurasi pemetaan MaxCompute
-
Untuk Hologres V2.2.1 dan versi yang lebih baru
-- Untuk proyek model tiga lapis MaxCompute ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>.<mc_schema>, [...]'; -- Untuk proyek model dua lapis MaxCompute ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>, [...]'; -
Untuk versi Hologres sebelum V2.2.1
ALTER DATABASE <database> SET hg_experimental_default_odps_project_list='<odps_project_name_1>,<odps_project_name_2>...';
-
-
Konfigurasi pemetaan DLF
-- Katalog Default DLF ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_database> [...]'; -- Katalog Kustom ALTER DATABASE <database> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_catalog>.<dlf_database>, [...]';
-
-
Parameter
Nama parameter
Deskripsi
database
Nama database Hologres.
hologres_schema
Nama skema Hologres.
mc_project
Nama proyek MaxCompute yang akan dimuat otomatis. Masuk ke Konsol MaxCompute dan buka halaman untuk mendapatkan nama proyek MaxCompute.
odps_foreign_server
Server yang digunakan untuk mengakses proyek MaxCompute. Nilainya tetap
odps_server.odps_project_name
Nama proyek MaxCompute. Anda dapat menentukan beberapa proyek. Pisahkan nama proyek dengan koma (,).
Nilai default-nya kosong, yang berarti metadata tabel di proyek MaxCompute mana pun tidak dimuat secara berkala.
CatatanParameter ini hanya diperlukan untuk versi Hologres sebelum V2.2.1.
mc_schema
Nama skema MaxCompute.
CatatanParameter ini hanya diperlukan untuk proyek yang mengaktifkan model tiga lapis. Untuk informasi lebih lanjut tentang skema, lihat Operasi skema.
dlf_foreign_server
Server eksternal yang dibuat berdasarkan DLF_FDW. Anda dapat menjalankan perintah berikut untuk mendapatkan nama server eksternal. Untuk informasi lebih lanjut, lihat Percepat kueri pada data di data lake berbasis OSS menggunakan DLF.
SELECT * FROM pg_foreign_server;dlf_catalog
Nama katalog data tempat database DLF yang akan dimuat otomatis berada. Masuk ke Konsol Data Lake Formation, pilih , lalu dapatkan nama katalog data dari tab Data Catalog.
dlf_database
Nama database DLF yang akan dimuat otomatis. Masuk ke Konsol Data Lake Formation, pilih , lalu dapatkan nama database dari tab Database.
Kueri data
Anda dapat langsung melakukan kueri pada data di tabel MaxCompute atau DLF yang sesuai.
-- Kueri data di proyek MaxCompute
SELECT * FROM <hologres_schema>.<mc_table>;
-- Kueri data DLF
SELECT * FROM <hologres_schema>.<dlf_table>;
Operasi tambahan
Nonaktifkan pemuatan otomatis
-
Sintaks
---- Nonaktifkan pemuatan otomatis ALTER DATABASE <nama database> SET hg_experimental_enable_auto_load_foreign_table = off;CatatanSetelah Anda menonaktifkan pemuatan otomatis, sistem berhenti menyinkronkan metadata dari sumber data eksternal dan membuat tabel eksternal baru. Anda hanya dapat melihat tabel eksternal dan data yang sudah dimuat di Hologres. Untuk menambahkan lebih banyak tabel eksternal, Anda harus menjalankan perintah IMPORT secara manual. Untuk informasi lebih lanjut, lihat IMPORT FOREIGN SCHEMA.
-
Deskripsi parameter
nama database: Nama database Hologres.
Lihat sumber data dengan pemuatan otomatis yang diaktifkan
-- Sebelum V2.2, lihat sumber data MaxCompute yang dikonfigurasi
SHOW hg_experimental_default_odps_project_list;
-- Di V2.2 dan versi yang lebih baru, lihat sumber data MaxCompute dan DLF yang dikonfigurasi
SHOW hg_experimental_auto_load_foreign_schema_mapping;
Atur periode inspeksi
Setelah Anda mengonfigurasi sumber data untuk pemuatan penuh, Anda dapat menggunakan parameter waktu berikut untuk mengatur pemeriksaan berkala. Jika tabel baru ditambahkan ke sumber data, sistem secara otomatis memuatnya sebagai tabel eksternal Hologres saat kueri dijalankan setelah periode pemeriksaan yang ditentukan. Interval default-nya adalah 30 menit. Artinya, jika tabel baru ditambahkan, tabel tersebut secara otomatis dimuat sebagai tabel eksternal saat dikueri 30 menit kemudian.
-
Sintaks
-- Atur periode inspeksi untuk database Hologres yang ditentukan menjadi 600 detik ALTER DATABASE <nama database> SET hg_experimental_load_all_foreign_table_interval_time = 600; -
Deskripsi parameter
nama database: Nama database Hologres.
Atur periode pemeriksaan minimal 600 detik (10 menit) atau lebih lama.
Hapus tabel eksternal yang dimuat
Jika Anda tidak lagi memerlukan percepatan kueri pada tabel eksternal tertentu, Anda dapat menjalankan pernyataan DROP untuk menghapusnya. Untuk informasi lebih lanjut, lihat DROP FOREIGN TABLE.
Contoh penggunaan
Contoh 1: Pemuatan tabel eksternal sesuai permintaan
Contoh ini menggunakan sumber data MaxCompute untuk menunjukkan pemuatan otomatis pada proyek model dua lapis dan tiga lapis. Rinciannya sebagai berikut:
-
Model dua lapis: Nama proyek adalah
mc_project, dan 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 pemuatan otomatis.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on; -
Konfigurasi pemetaan.
--- Untuk V2.2.1 dan versi yang lebih baru ALTER DATABASE holo_demo SET hg_experimental_auto_load_foreign_schema_mapping = 'hologres_schema:odps_server.mc_project'; --- Untuk versi sebelum V2.2.1 ALTER DATABASE holo_demo SET hg_experimental_default_odps_project_list='mc_project'; -
Kueri tabel eksternal.
SELECT * FROM hologres_schema.mc_table;
-
-
Model tiga lapis
-
Aktifkan pemuatan otomatis.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on; -
Konfigurasi 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 tabel eksternal.
SELECT * FROM holo_schema_3layer.mc_table;
-
Contoh 2: Pemuatan otomatis penuh tabel eksternal
Contoh ini menggunakan sumber data DLF. Anda dapat memuat otomatis tabel eksternal DLF dengan mengikat ke Katalog Default DLF atau katalog kustom.
-
Katalog Default DLF
Siapkan pemuatan otomatis untuk database
dlf_dbdi Katalog Default DLF. Setelah penyiapan selesai, semua tabel di database ini secara otomatis dibuat sebagai tabel eksternal Hologres. Sistem juga secara berkala memuat tabel baru dari database ini berdasarkan periode pemeriksaan yang dikonfigurasi olehhg_experimental_load_all_foreign_table_interval_time.-
Buat layanan eksternal
dlf_serverdan konfigurasikan informasi Endpoint-nya. Untuk informasi lebih lanjut, lihat Percepat kueri pada data di data lake berbasis OSS menggunakan DLF.-- Buat server 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' ); -
Buat pemetaan pengguna.
Auto Load mengharuskan Anda menjalankan perintah
CREATE USER MAPPINGuntuk menentukan ID AccessKey dan Rahasia AccessKey guna mengakses DLF dan OSS. Untuk informasi lebih lanjut, lihat Percepat kueri pada data di data lake berbasis OSS menggunakan DLF.CREATE USER MAPPING FOR <account_uid> server <server_name> options ( dlf_access_id 'accessid', dlf_access_key 'accesskey', oss_access_id 'accessid', oss_access_key 'accesskey' ); -
Aktifkan pemuatan otomatis.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on; -
Atur pemetaan dan mode pemuatan.
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 tabel eksternal.
SELECT * FROM holo_schema.dlf_table;
-
-
Katalog kustom DLF
-
Buat server eksternal dan konfigurasikan informasi Endpoint-nya. Untuk informasi lebih lanjut, lihat Percepat kueri pada data di data lake berbasis OSS menggunakan DLF.
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' ); -
Buat pemetaan pengguna.
Auto Load mengharuskan Anda menjalankan perintah
CREATE USER MAPPINGuntuk menentukan ID AccessKey dan Rahasia AccessKey guna mengakses DLF dan OSS. Untuk informasi lebih lanjut, lihat Percepat kueri pada data di data lake berbasis OSS menggunakan DLF.CREATE USER mapping FOR <account_uid> server <server_name> options ( dlf_access_id 'accessid', dlf_access_key 'accesskey', oss_access_id 'accessid', oss_access_key 'accesskey' ); -
Aktifkan pemuatan otomatis.
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on; -
Konfigurasi pemetaan, mode pemuatan, dan periode pemeriksaan.
-- Konfigurasi pemetaan SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema:DLF_server.dlf_catalog.dlf_db'; -- Atur mode pemuatan ke pemuatan penuh tabel eksternal SET hg_experimental_load_foreign_table_mode = 'period'; -- Atur periode inspeksi menjadi 600 detik SET hg_experimental_load_all_foreign_table_interval_time = 600; -
Kueri data tabel eksternal.
SELECT * FROM holo_schema.dlf_table;
-