Tüm Ürünler
Search
Belge Merkezi

Hologres:Automatic loading of foreign tables (Auto Load)

Son Güncelleme:Oct 06, 2026

MaxCompute veya Object Storage Service (OSS) içinde depolanan büyük ölçekli verilerde sorgu performansını artırmak istediğinizde, CREATE FOREIGN TABLE komutunu kullanarak yabancı tabloları manuel olarak oluşturmak pratik olmayabilir. Auto Load özelliği, MaxCompute ve OSS (Data Lake Formation aracılığıyla) meta verilerini otomatik olarak senkronize ederek Hologres yabancı tablolarını isteğe bağlı veya zamanlanmış şekilde oluşturur ve bu işlem yükünü ortadan kaldırır.

Automatic loading

Yükleme modunu seçin

İsteğe bağlı yükleme Tam yükleme
Çalışma şekli Bir MaxCompute veya OSS tablosunu ilk kez sorguladığınızda ilgili yabancı tabloyu oluşturur Veri kaynağındaki tüm tablolar için başlangıçta yabancı tablolar oluşturur; yeni tabloları periyodik olarak senkronize eder
En uygun kullanım Sorgu hızlandırması gerektiren az sayıda tablo Sorgu hızlandırması gerektiren çok sayıda tablo veya birden fazla veri kaynağı
Parametre değeri query (varsayılan) period

İsteğe bağlı yükleme davranışı:

  • Aynı ada sahip bir Hologres şeması ve tablosu zaten varsa Auto Load tetiklenmez. Bunun yerine mevcut iç tablo sorgulanır.

  • Sorguyu çalıştıran hesabın, veritabanında şema ve tablo oluşturma ile silme iznine sahip olması gerekir; ancak bu izin yalnızca ilk sorgu için gereklidir. Sonraki sorgular için sadece sorgu izni yeterlidir.

  • Tablolar yalnızca sorgu sırasında oluşturulur, zamanlamaya göre oluşturulmaz.

Tam yükleme davranışı:

  • Kurulum tamamlandıktan sonra veri kaynağındaki tüm tablolar Hologres yabancı tabloları olarak oluşturulur.

  • Veri kaynağına eklenen yeni tablolar, bir sonraki kontrol aralığında (varsayılan: 30 dakika) otomatik olarak yabancı tablo olarak yüklenir.

  • 1.000'den fazla tablo içeren veri kaynakları için tam yüklemeyi etkinleştirmeyin.

  • Kontrol aralığını 600 saniye (10 dakika) veya daha uzun olarak ayarlayın.

Sınırlamalar

  • MaxCompute ve OSS veri kaynakları için eşleme parametreleri hg_ veya holo_ ile başlayamaz; bunlar Hologres'te ayrılmış ön eklerdir.

  • Tek bir sorgu en fazla 6 tabloyu otomatik olarak yükleyebilir. Bir sorgu 6'dan fazla tabloyu içeriyorsa otomatik yükleme işlemi başarısız olur. Kalan yabancı tabloları yüklemek için sorguyu tekrar çalıştırın.

  • Bir MaxCompute tablosu, Hologres yabancı tabloları tarafından desteklenmeyen veri türleri içeriyorsa yabancı tablo otomatik olarak oluşturulamaz. Yalnızca desteklenen alanları seçerek tabloyu manuel olarak oluşturmak için CREATE FOREIGN TABLE komutunu kullanın.

  • Data Lake Formation (DLF) üzerinden OSS verileriyle Auto Load özelliğini kullanmak için, DLF ve OSS'e erişen hesap için AccessKey ID ve AccessKey secret değerlerini belirtmek amacıyla CREATE USER MAPPING komutunu çalıştırın.

  • Birden fazla harici veri kaynağından gelen tablolar aynı Hologres şemasına yüklenirse, yeni oluşturulan bir yabancı tablo aynı ada sahip mevcut yabancı tablonun üzerine yazar. Bu durumu önlemek için farklı veri kaynaklarını farklı Hologres şemalarıyla ilişkilendirin.

  • Hologres'te bulunmayan bir şemanın otomatik olarak oluşturulması için db_admin izinleri gerekir.

  • Şema evrimi (sütun ekleme, sütun silme, sütun adlarını ve sırasını değiştirme) MaxCompute yabancı tabloları (V2.2.1+) için desteklenir ancak OSS yabancı tabloları için desteklenmez.

Sürüm gereksinimleri

Sürüm Eklenen özellikler
V1.1.43+ MaxCompute yabancı tabloları için Auto Load (yalnızca iki katmanlı model)
V1.3.28+ Varsayılan kontrol aralığı 5 dakikadan 30 dakikaya değiştirildi
V2.2.1+ hg_experimental_load_foreign_table_mode parametresi; MaxCompute üç katmanlı model desteği; MaxCompute yabancı tabloları için şema evrimi; OSS sorguları için DLF meta veri yükleme
Not

Örneğiniz V2.1 veya önceki bir sürümdeyse ve V2.2.1+ özelliklerine ihtiyacınız varsa yükseltme için Hologres teknik destek ile iletişime geçin.

Yabancı tablolar için Auto Load özelliğini etkinleştirin

Kurulum dört adımdan oluşur. 2. Adım yalnızca Hologres V2.2.1 ve sonraki sürümler için geçerlidir.

  1. Otomatik yüklemeyi etkinleştirin

  2. (V2.2.1+, isteğe bağlı) Yükleme modunu ayarlayın

  3. Şema eşlemelerini yapılandırın

  4. Verileri sorgulayın ve kurulumu doğrulayın

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

1. Adım: Otomatik yüklemeyi etkinleştirin

ALTER DATABASE <database_name> SET hg_experimental_enable_auto_load_foreign_table = on;

<database_name> ifadesini Hologres veritabanınızın adıyla değiştirin.

2. Adım: Yükleme modunu ayarlayın

Bu adım Hologres V2.2.1 ve sonraki sürümler için geçerlidir. Önceki sürümler için bu adımı atlayın; varsayılan olarak isteğe bağlı yükleme (query) kullanılır.

Mod, veritabanı düzeyinde ayarlanmalıdır.

-- On-demand loading (default)
ALTER DATABASE <database_name> SET hg_experimental_load_foreign_table_mode = 'query';

-- Full loading
ALTER DATABASE <database_name> SET hg_experimental_load_foreign_table_mode = 'period';

3. Adım: Şema eşlemelerini yapılandırın

Her bir Hologres şemasını, yansıtması gereken harici veri kaynağıyla eşleyin.

MaxCompute eşlemeleri (V2.2.1+)

-- Three-layer model project
ALTER DATABASE <database_name> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>.<mc_schema>, [...]';

-- Two-layer model project
ALTER DATABASE <database_name> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<odps_foreign_server>.<mc_project>, [...]';

MaxCompute eşlemeleri (V2.2.1 öncesi)

ALTER DATABASE <database_name> SET hg_experimental_default_odps_project_list='<odps_project_name_1>,<odps_project_name_2>...';

DLF eşlemeleri (V2.2.1+)

-- Default catalog
ALTER DATABASE <database_name> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_database> [...]';

-- Custom catalog
ALTER DATABASE <database_name> SET hg_experimental_auto_load_foreign_schema_mapping = '<hologres_schema>:<dlf_foreign_server>.<dlf_catalog>.<dlf_database>, [...]';

Parametreler

Parametre Açıklama Varsayılan
database_name Hologres veritabanının adı —
hologres_schema Hologres şemasının adı —
odps_foreign_server Sabit değer: odps_server odps_server
mc_project MaxCompute projesinin adı. Bunu MaxCompute konsolu altında Workspace > Project Management bölümünde bulabilirsiniz —
mc_schema MaxCompute şemasının adı. Yalnızca üç katmanlı model projeleri için gereklidir. Bkz. Şema işlemleri —
odps_project_name (Yalnızca V2.2.1 öncesi) MaxCompute projesinin adı. Birden fazla adı virgülle ayırın. boş (periyodik olarak proje yüklenmez)
dlf_foreign_server DLF_FDW ile oluşturulan yabancı sunucu. Adı almak için SELECT * FROM pg_foreign_server; komutunu çalıştırın. Bkz. DLF kullanarak OSS tabanlı bir veri gölündeki verilerde sorguları hızlandırma —
dlf_catalog DLF veri kataloğunun adı. Bunu Data Lake Formation konsolu altında Metadata > Metadata Management > Data Catalog sekmesinde bulabilirsiniz —
dlf_database DLF veritabanının adı. Bunu Data Lake Formation konsolu altında Metadata > Metadata Management > Database sekmesinde bulabilirsiniz —

4. Adım: Verileri sorgulayın ve kurulumu doğrulayın

Eşlenen şema üzerinde bir sorgu çalıştırın. Auto Load, ilk erişimde yabancı tabloyu oluşturur (isteğe bağlı mod) veya tabloların zaten yüklendiğini onaylar (tam mod).

-- Query a MaxCompute table
SELECT * FROM <hologres_schema>.<mc_table>;

-- Query a DLF table
SELECT * FROM <hologres_schema>.<dlf_table>;

Hangi veri kaynaklarının yapılandırıldığını onaylamak için aşağıdaki komutu çalıştırın:

-- V2.2.1 and later
SHOW hg_experimental_auto_load_foreign_schema_mapping;

-- Earlier than V2.2.1
SHOW hg_experimental_default_odps_project_list;

Diğer işlemler

Otomatik yüklemeyi devre dışı bırakın

ALTER DATABASE <database_name> SET hg_experimental_enable_auto_load_foreign_table = off;

Devre dışı bırakıldıktan sonra Hologres, harici veri kaynaklarından meta veri senkronizasyonunu ve yeni yabancı tablolar oluşturmayı durdurur. Mevcut yabancı tablolar sorgulanabilir durumda kalır. Daha fazla yabancı tabloyu manuel olarak eklemek için IMPORT FOREIGN SCHEMA komutunu kullanın.

Tam yükleme için kontrol aralığını ayarlayın

Tam yükleme modu için Hologres'in veri kaynağında yeni tabloları ne sıklıkla denetleyeceğini yapılandırın. Yeni bir tablo algılandığında, aralık sona erdikten sonraki sorguda otomatik olarak yabancı tablo olarak yüklenir.

-- Set the check interval to 600 seconds (10 minutes)
ALTER DATABASE <database_name> SET hg_experimental_load_all_foreign_table_interval_time = 600;

Varsayılan: 1800 saniye (30 dakika). Minimum: 600 saniye (10 dakika).

MaxCompute yabancı tabloları için şema evrimini etkinleştirin

Bir MaxCompute veri kaynağının şeması değiştiğinde (sütun eklendi, silindi veya yeniden adlandırıldı), yabancı tablo meta verilerini sorgu sırasında otomatik olarak güncellemek için bu Grand Unified Configuration (GUC) parametresini oturum düzeyinde etkinleştirin.

SET hg_experimental_enable_auto_load_check_schema_evolution = on;
Önemli

Bu parametreyi yalnızca oturum düzeyinde etkinleştirin. Veritabanı düzeyinde etkinleştirilmesi çok sayıda şema evrimi denetleme işi oluşturur ve sistem yükünü artırır.

Not

Şema evrimi OSS yabancı tabloları için desteklenmez.

Yabancı tabloyu silin

Bir yabancı tabloda sorgu hızlandırmayı durdurmak için DROP deyimiyle tabloyu kaldırın. Bkz. DROP FOREIGN TABLE.

Örnekler

Örnek 1: MaxCompute projesinden isteğe bağlı yükleme

Bu örnek, hem iki katmanlı hem de üç katmanlı MaxCompute model projeleri için isteğe bağlı yüklemeyi göstermektedir.

İki katmanlı model Üç katmanlı model
Proje mc_project mc_3_layer_project
Şema — mc_schema
Tablo mc_table mc_table

İki katmanlı model

-- Step 1: Enable automatic loading
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;

-- Step 2: Configure the mapping
-- V2.2.1 and later
ALTER DATABASE holo_demo SET hg_experimental_auto_load_foreign_schema_mapping = 'hologres_schema:odps_server.mc_project';
-- Earlier than V2.2.1
ALTER DATABASE holo_demo SET hg_experimental_default_odps_project_list='mc_project';

-- Step 3: Query the table (the foreign table is created on first query)
SELECT * FROM hologres_schema.mc_table;

Üç katmanlı model

-- Step 1: Enable automatic loading
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;

-- Step 2: Configure the mapping
ALTER DATABASE holo_demo SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema_3layer:odps_server.mc_3_layer_project.mc_schema';

-- Step 3: Query the table
SELECT * FROM holo_schema_3layer.mc_table;

Örnek 2: DLF veri kaynağından tam yükleme

Bu örnek, bir DLF veritabanı için tam yüklemeyi göstermektedir; hem varsayılan katalogdan hem de özel katalogdan yükleme yapılır.

DLF varsayılan kataloğu

dlf_db içindeki tüm tablolar Hologres yabancı tabloları olarak yüklenir. Sistem, yapılandırılan aralığa göre periyodik olarak yeni tabloları denetler.

-- Step 1: Create the DLF foreign 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'
);

-- Step 2: Create a user mapping with credentials for DLF and OSS
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'
);

-- Step 3: Enable automatic loading
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;

-- Step 4: Configure the mapping and set full loading mode
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 = 600;

-- Step 5: Query a table
SELECT * FROM holo_schema.dlf_table;

DLF özel kataloğu

-- Step 1: Create the DLF foreign 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'
);

-- Step 2: Create a user mapping
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'
);

-- Step 3: Enable automatic loading
ALTER DATABASE holo_demo SET hg_experimental_enable_auto_load_foreign_table = on;

-- Step 4: Configure the mapping, loading mode, and check interval
SET hg_experimental_auto_load_foreign_schema_mapping = 'holo_schema:DLF_server.dlf_catalog.dlf_db';
SET hg_experimental_load_foreign_table_mode = 'period';
SET hg_experimental_load_all_foreign_table_interval_time = 600;

-- Step 5: Query a table
SELECT * FROM holo_schema.dlf_table;

Sonraki adımlar