全部产品
Search
文档中心

Hologres:Pemuatan Otomatis

更新时间:Jul 02, 2025

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.

    Catatan
    • Jika 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_time diubah dari 5 min menjadi 30 min untuk 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;
      Catatan

      Fitur 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 MAPPING untuk 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 Workspaces > Projects 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.

    Catatan

    Parameter ini hanya valid untuk versi sebelum Hologres V2.2.1.

    mc_schema

    Nama skema di database MaxCompute.

    Catatan

    Parameter 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 Metadata > Metadata 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 Metadata > Metadata 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;
    Catatan

    Setelah 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.

Catatan

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

Catatan

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_project dan nama tabel adalah mc_table.

  • Model tiga lapis: Nama proyek adalah mc_3_layer_project, nama skema adalah mc_schema, dan nama tabel adalah mc_table.

  • Model dua lapis

    1. Aktifkan fitur Pemuatan Otomatis.

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    2. 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';
    3. Kueri data menggunakan tabel asing.

      SELECT * FROM hologres_schema.mc_table;
  • Model tiga lapis

    1. Aktifkan fitur Pemuatan Otomatis.

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    2. 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';
    3. 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_db di 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 parameter hg_experimental_load_all_foreign_table_interval_time dan secara otomatis membuat tabel asing untuk tabel baru di database.

    1. Buat server asing bernama dlf_server dan 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'
      );
    2. Konfigurasikan pemetaan pengguna.

      Untuk menggunakan fitur Auto Load, Anda harus mengeksekusi pernyataan CREATE USER MAPPING untuk 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'
      );
    3. Aktifkan fitur Auto Load.

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    4. 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;
    5. Kueri data menggunakan tabel asing.

      SELECT * FROM holo_schema.dlf_table;
  • Katalog kustom DLF

    1. 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'
      );
    2. Konfigurasikan pemetaan pengguna.

      Untuk menggunakan fitur Pemuatan Otomatis, Anda harus menjalankan pernyataan CREATE USER MAPPING untuk 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'
      );
    3. Aktifkan fitur Pemuatan Otomatis.

      ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;
    4. 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;
    5. Kueri data menggunakan tabel asing.

      SELECT * FROM holo_schema.dlf_table;