Hologres V3.2 dan versi yang lebih baru memungkinkan Anda mengakses data katalog Paimon melalui Data Lake Formation (DLF). Fitur ini menyediakan antarmuka terpadu dan meningkatkan efisiensi manajemen metadata.
Informasi latar belakang
Alibaba Cloud Data Lake Formation (DLF) adalah platform terkelola penuh yang menyediakan metadata terpadu, penyimpanan data, dan manajemen data. Layanan ini menawarkan fitur seperti manajemen metadata, pengelolaan izin, dan optimasi penyimpanan. Dengan menyatukan metadata, format tabel data lake, dan penyimpanan data, DLF menyederhanakan Operasi dan Pemeliharaan (O&M) dalam membangun dan mengelola data lake, sehingga memungkinkan bisnis fokus pada inovasi dan wawasan data. Untuk informasi selengkapnya, lihat Apa itu Data Lake Formation?.
Fitur
Hologres
3.2dan versi yang lebih baru mendukung fitur-fitur berikut:Menghubungkan ke katalog Paimon di DLF melalui external database. Untuk informasi selengkapnya, lihat EXTERNAL DATABASE.
Anda dapat menggunakan CREATE/DROP EXTERNAL SCHEMA untuk membuat atau menghapus database di katalog Paimon secara cascade.
Anda dapat menggunakan CREATE/DROP EXTERNAL TABLE untuk membuat atau menghapus tabel di katalog Paimon secara cascade.
Anda dapat melihat semua database dan tabel di katalog Paimon.
Anda dapat membaca data dari tabel Paimon secara penuh atau inkremental menggunakan dynamic tables. Untuk informasi selengkapnya, lihat CREATE DYNAMIC TABLE.
Anda dapat mengumpulkan statistik untuk external tables menggunakan ANALYZE dan AUTO ANALYZE guna membantu pengoptimal menghasilkan rencana kueri optimal. Untuk informasi selengkapnya, lihat ANALYZE dan AUTO ANALYZE.
Anda dapat mencerminkan data dari external tables.
Time Travel: Anda dapat melakukan kueri snapshot historis tabel Paimon berdasarkan timestamp, versi, atau tag.
Kueri branch: Anda dapat melakukan kueri data branch Paimon dan snapshot historis berdasarkan branch.
Anda dapat melakukan kueri tabel sistem Paimon, seperti tabel Snapshots dan Tags.
Hologres
4.0dan versi yang lebih baru mendukung operasi DML berikut:Anda dapat melakukan penulisan konkuren ke tabel primary key Paimon menggunakan
INSERT INTOatauINSERT OVERWRITE. Proses penulisan dioptimalkan untuk mendukung shuffling berdasarkan bucket sebelum penulisan, sehingga mengurangi pembentukan small files.Mekanisme caching berbasis memori disediakan untuk mendukung penulisan ke tabel Paimon yang memerlukan caching, seperti tabel dengan
First RowMerge Engine, tabel yang menghasilkanChangelogmenggunakan mekanismelookup, atau tabel denganDeletion Vectoryang diaktifkan.Anda dapat menggunakan operasi
UPDATEdanDELETEpada tabel Paimon.Mulai dari V3.2.6 dan V4.0.6, Anda dapat membaca data dari tag yang sesuai dengan snapshot Paimon yang telah kedaluwarsa.
Prasyarat
DLF V2.5 atau versi yang lebih baru telah diaktifkan, dan katalog Paimon telah dibuat. Untuk informasi selengkapnya, lihat Otorisasi dan aktifkan DLF dan Data catalog.
CatatanUntuk informasi tentang wilayah yang didukung, lihat Titik akhir layanan.
Anda telah membeli instans Hologres dan mengaktifkan layanan akselerasi data lake. Untuk informasi selengkapnya, lihat Percepat akses data OSS menggunakan DLF.
Batasan
Anda hanya dapat mengakses layanan DLF di wilayah yang sama dengan instans Hologres Anda.
Anda tidak dapat menggunakan fitur akselerasi data lake OSS di HoloWeb untuk membuat katalog Paimon DLF secara visual.
Hanya external tables Paimon yang dipetakan melalui external database yang mendukung kueri Time Travel, kueri branch, dan pencermatan data.
Kueri Time Travel tidak didukung untuk tabel yang telah mengalami schema evolution.
Dynamic tables tidak mendukung kueri Time Travel untuk tabel dan branch Paimon.
Pencermatan data untuk external tables tidak mendukung tabel primary key Paimon.
Membaca data dari partisi default tabel Paimon tidak didukung, termasuk partisi dengan nilai kosong atau NULL.
Fitur akselerasi data lake tidak dapat diaktifkan untuk instans secondary read-only.
Perintah
TRUNCATEtidak dapat dieksekusi pada external tables. Sebagai gantinya, Anda dapat menggunakanINSERT OVERWRITEuntuk memasukkan data kosong.Menulis data ke tabel dynamic bucket Paimon tidak didukung. Tabel-tabel ini adalah tabel yang dibuat tanpa menentukan parameter
bucketatau denganbucket = -1.Operasi
UPDATEhanya didukung untuk tabel primary key Paimon dengan merge enginededuplicateataupartial-update. Memperbarui primary key tidak didukung.Operasi
DELETEhanya didukung untuk tabel primary key Paimon yang menggunakan merge enginededuplicateatau merge enginepartial-updatedengan propertipartial-update.remove-record-on-deleteyang diaktifkan.External tables tidak mendukung transaksi DML campuran. Protokol two-phase commit hanya diimplementasikan dalam satu operasi DML untuk memastikan atomicity penulisan terdistribusi.
Petakan katalog Paimon menggunakan external database
Buat external database (mode SLR)
Service-linked role (SLR) adalah peran RAM yang entitas tepercayanya merupakan layanan Alibaba Cloud. SLR dirancang untuk menyelesaikan masalah otorisasi dalam akses lintas layanan. Dalam kebanyakan kasus, SLR dibuat atau dihapus secara otomatis saat Anda menggunakan fitur tertentu, sehingga Anda tidak perlu membuat atau menghapusnya secara manual. SLR membantu mengonfigurasi izin yang diperlukan agar layanan Alibaba Cloud dapat berjalan sebagaimana mestinya serta mencegah risiko akibat kesalahan operasi. Untuk informasi selengkapnya, lihat Service-linked roles.
Skenario
Mode SLR cocok untuk skenario di mana Anda menggunakan identitas saat ini untuk mengakses data di external database. Secara default, Hologres menggunakan SLR dan identity pass-through untuk mengimplementasikan akses lintas layanan.
Prosedur
Untuk instans yang baru dibeli atau instans yang ditingkatkan ke Hologres V2.2 atau versi yang lebih baru, sistem akan secara otomatis membuat SLR. Anda dapat melewati langkah ini.
CatatanUntuk instans Hologres sebelum V2.2, buka halaman Quick Authorization for Access Control untuk membuat SLR.
Hubungkan ke instans Hologres dan buat external database.
CREATE EXTERNAL DATABASE EXT_DATABASE_NAME WITH catalog_type 'paimon', metastore_type 'dlf-rest', dlf_catalog 'DLF_CATALOG_NAME', comment 'paimon catalog on dlf';Lihat skema dan tabel di external database.
-- Kueri skema di database eksternal. SELECT * FROM hologres.hg_external_schemas('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>'</span>); -- Kueri tabel di suatu skema. SELECT * FROM hologres.hg_external_tables ('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>'</span>, '<span class="var-span" contenteditable="true" data-var="EXT_SCHEMA_NAME"><ext_schema_name>'</span>);Lakukan kueri data tabel.
SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME;
Buat external database (mode STS)
Alibaba Cloud Security Token Service (STS) adalah layanan yang mengelola izin akses temporary. RAM menyediakan dua jenis identitas: RAM user dan RAM role. RAM role tidak memiliki kredensial identitas permanen, melainkan memperoleh kredensial identitas temporary, yang disebut token STS, dari STS. Anda dapat menyesuaikan periode validitas dan izin akses token STS tersebut. Untuk informasi selengkapnya, lihat Apa itu STS?.
Skenario
Mode STS cocok untuk skenario di mana Anda menggunakan akses cross-account atau akun kustom Hologres (akun BASIC) untuk mengakses data di external database.
Prosedur
Login ke Konsol RAM, buat RAM role, dan berikan izin AliyunDLFFullAccess atau AliyunDLFReadOnlyAccess kepada role tersebut. Untuk informasi selengkapnya, lihat Buat RAM role dan berikan izin kepadanya.
Tambahkan kebijakan kepercayaan untuk mengizinkan RAM role diasumsikan oleh layanan Alibaba Cloud tepercaya, yaitu Hologres. Untuk informasi selengkapnya, lihat Ubah kebijakan kepercayaan RAM role.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "hologres.aliyuncs.com" ] } } ], "Version": "1" }Login ke Konsol Data Lake Formation. Di katalog tujuan, berikan izin kepada RAM role untuk mengakses database dan tabel.
Di Hologres, buat external database dan tentukan RAM role di atas dalam kebijakan autentikasi.
CREATE EXTERNAL DATABASE <ext_database_name> WITH catalog_type 'paimon' metastore_type 'dlf-rest' dlf_catalog 'paimon_catalog' rolearn 'acs:ram::106380604****:role/***-ramrole' comment 'katalog paimon di dlf' ;Di Hologres, buat pemetaan pengguna untuk mengaitkan RAM user atau akun BASIC yang perlu mengakses katalog DLF dengan RAM role.
CREATE USER MAPPING FOR "<RAM user | basic account>" EXTERNAL DATABASE EXT_DATABASE_NAME OPTIONS ( rolearn 'acs:ram::10638060***:role/***ramrole' );CatatanUntuk informasi selengkapnya tentang pemetaan pengguna, lihat CREATE USER MAPPING.
Untuk informasi selengkapnya tentang cara membuat RAM user, lihat Buat RAM user.
Untuk informasi selengkapnya tentang cara membuat akun BASIC, lihat Manajemen pengguna.
Login ke Konsol manajemen Hologres sebagai RAM user atau hubungkan ulang ke instans Hologres sebagai akun BASIC. Kemudian, eksekusi pernyataan kueri SQL berikut.
SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;
Untuk operasi terkait external databases, lihat EXTERNAL DATABASE.
Untuk operasi terkait external schemas, lihat EXTERNAL SCHEMA.
Untuk operasi terkait external tables, lihat EXTERNAL TABLE.
Kumpulkan statistik untuk external tables
Perintah ANALYZE dan AUTO ANALYZE mengumpulkan statistik tentang konten tabel di database. Pengoptimal menggunakan statistik ini untuk menghasilkan rencana kueri optimal dan meningkatkan efisiensi kueri. Untuk informasi selengkapnya, lihat ANALYZE dan AUTO ANALYZE.
-- Perbarui statistik tabel. Secara default, statistik semua kolom di tabel dikumpulkan.
analyze <ext_database_name>.<ext_schema_name>.<ext_table_name>;
-- Perbarui statistik kolom tertentu. Lebih banyak data disampel dibandingkan saat memperbarui statistik seluruh tabel, sehingga statistik menjadi lebih akurat. Ini terutama digunakan untuk memperbarui kolom kondisional.
analyze <ext_database_name>.<ext_schema_name>.<ext_table_name>(<colname>, <colname>);
-- Aktifkan Auto Analyze.
ALTER EXTERNAL DATABASE <ext_database_name> WITH enable_auto_analyze 'true';Kueri Time Travel
Hologres V3.2 dan versi yang lebih baru mendukung Time Travel. Anda dapat melakukan kueri snapshot historis tabel Paimon berdasarkan timestamp, versi, atau tag. Anda juga dapat melakukan kueri tabel sistem Paimon Snapshots dan Tags di Hologres untuk mendapatkan detail snapshot tabel tujuan. Untuk informasi selengkapnya tentang tabel sistem, lihat Paimon System Tables.
Kueri tabel sistem Paimon Snapshots
SELECT * FROM hologres.hg_list_snapshots('EXT_DATABASE_NAME.<span class="var-span" contenteditable="true" data-var="EXT_SCHEMA_NAME">EXT_SCHEMA_NAME.EXT_TABLE_NAME'</span>);Tabel berikut menjelaskan pemetaan antara bidang di tabel sistem Snapshots dan bidang di tabel sistem Paimon.
Bidang tabel sistem Snapshots | Type | Deskripsi | Bidang tabel sistem Paimon yang sesuai |
branch_name | TEXT | Nama cabang. | branch_name |
snapshot_id | TEXT | ID snapshot. | snapshot_id |
schema_id | TEXT | ID skema tabel. | schema_id |
commit_kind | TEXT | Jenis commit data tabel. | commit_kind |
commit_time | TIMESTAMPTZ | Waktu commit. | commit_time |
extend_info | TEXT (JSON) | Properti tersisa dari tabel sistem Paimon Snapshots. | Properti tersisa dari tabel sistem Paimon Snapshots |
Anda juga dapat menggunakan fungsi hologres.hg_list_versions untuk melakukan kueri tabel sistem Paimon Snapshots. Untuk kueri tabel Paimon, versi berkorespondensi dengan ID snapshot.
SELECT * FROM hologres.hg_list_versions('EXT_DATABASE_NAME.<span class="var-span" contenteditable="true" data-var="EXT_SCHEMA_NAME">EXT_SCHEMA_NAME.EXT_TABLE_NAME'</span>);Kueri tabel sistem Paimon Tag
SELECT * FROM hologres.hg_list_tags('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span>);Tabel berikut menjelaskan pemetaan antara bidang di tabel sistem Tag dan bidang di tabel sistem Paimon.
Bidang tabel sistem Tag | Tipe | Deskripsi | Bidang tabel sistem Paimon yang sesuai |
branch_name | TEXT | Nama cabang. | branch_name |
tag_name | TEXT | Nama tag. | tag_name |
snapshot_id | TEXT | ID snapshot. | snapshot_id |
schema_id | TEXT | ID skema tabel. | schema_id |
commit_time | TIMESTAMPTZ | Waktu commit. | commit_time |
extend_info | TEXT (JSON) | Properti tersisa dari tabel sistem Paimon Tag. | Properti tersisa dari tabel sistem Paimon Tag |
Kueri snapshot Paimon historis berdasarkan timestamp
SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME FOR TIMESTAMP AS OF 'TIMESTAMP';Kueri snapshot Paimon historis berdasarkan versi
Untuk tabel Paimon, versi berkorespondensi dengan ID snapshot.
SELECT * FROM '<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span> FOR VERSION AS OF '<span class="var-span" contenteditable="true" data-var="VERSION"><version>'</span>;Kueri snapshot Paimon historis berdasarkan tag
SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME FOR TAG AS OF 'TAG';Kueri branch
Hologres V3.2 dan versi yang lebih baru mendukung kueri data dari branch tertentu tabel Paimon dan mendukung properti fallback branch. Untuk informasi selengkapnya tentang branch Paimon, lihat Manage Branch.
Kueri tabel sistem Branch
SELECT * FROM hologres.hg_list_branches('<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span>);Tabel berikut menjelaskan pemetaan antara bidang di tabel sistem Branch dan bidang di tabel sistem Paimon.
Bidang | Tipe | Deskripsi | Bidang tabel sistem Paimon yang sesuai |
branch_name | TEXT | Nama cabang. | branch_name |
create_time | TIMESTAMPTZ | Waktu pembuatan cabang. | create_time |
extend_info | TEXT (JSON) | Properti tersisa dari tabel sistem Paimon Branch. | Properti tersisa dari tabel sistem Paimon Branch |
Kueri data dari branch tertentu
SELECT * FROM EXT_DATABASE_NAME.EXT_SCHEMA_NAME.EXT_TABLE_NAME FOR branch AS OF 'TAG';Jika properti scan.fallback-branch ditetapkan untuk tabel Paimon dan partisi tidak ada saat pekerjaan kueri membaca data dari branch saat ini, pembaca akan mencoba membaca data partisi dari fallback branch. Untuk informasi selengkapnya tentang fallback branches, lihat Manage Branch.
Kueri data snapshot historis dari branch tertentu
-- Kueri berdasarkan timestamp.
SELECT * FROM '<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span> FOR branch AS OF '<span class="var-span" contenteditable="true" data-var="BRANCH_NAME"><branch_name>'</span> TIMESTAMP AS OF '<span class="var-span" contenteditable="true" data-var="TIMESTAMP"><timestamp>'</span>;
-- Kueri berdasarkan tag.
SELECT * FROM '<span class="var-span" contenteditable="true" data-var="EXT_DATABASE_NAME"><ext_database_name>.<ext_schema_name>.<ext_table_name>'</span> FOR branch AS OF '<span class="var-span" contenteditable="true" data-var="BRANCH_NAME"><branch_name>'</span> TAG AS OF '<span class="var-span" contenteditable="true" data-var="TAG_NAME"><tag_name>'</span>;Akselerasi citra tabel Lakehouse
Hologres V3.2 dan versi yang lebih baru menyediakan fitur pencermatan tabel data lake untuk mempercepat kueri data di data lakes. Fitur ini mendukung pencermatan metadata dan data serta dapat menyinkronkan perubahan dari sumber data eksternal ke Hologres secara near-real time atau pada interval tertentu. Fitur ini juga mendukung pencermatan penuh tabel dan pencermatan parsial tabel partisi. Anda dapat menggunakan parameter untuk mengontrol cakupan data yang dicerminkan secara fleksibel. Untuk informasi selengkapnya, lihat Pencermatan tabel data lake.
Akses tabel Paimon menggunakan foreign tables
Buat server asing.
Untuk informasi selengkapnya tentang operasi pada foreign servers, lihat Operasi tambahan pada foreign servers (SQL).
Sintaksis DLF
CatatanBerlaku untuk DLF V2.5 dan versi yang lebih baru.
Sintaksis SQL adalah sebagai berikut:
-- create foreign server CREATE SERVER IF NOT EXISTS SERVER_NAME FOREIGN DATA WRAPPER dlf_fdw OPTIONS ( catalog_type 'paimon', metastore_type 'dlf-rest', dlf_catalog 'DLF_CATALOG_NAME' );Sintaksis DLF 1.0
CatatanBerlaku untuk DLF V1.0.
Sintaksis SQL adalah sebagai berikut:
-- create foreign server CREATE SERVER IF NOT EXISTS SERVER_NAME FOREIGN DATA WRAPPER dlf_fdw OPTIONS ( dlf_region '', dlf_endpoint 'dlf-share..aliyuncs.com', oss_endpoint 'oss-REGION_ID-internal.aliyuncs.com', dlf_catalog 'dlf_catalog_name' );Buat tabel asing.
Gunakan IMPORT FOREIGN SCHEMA
Untuk informasi selengkapnya tentang cara menggunakan IMPORT FOREIGN SCHEMA, lihat IMPORT FOREIGN SCHEMA.
Buat foreign table menggunakan IMPORT FOREIGN SCHEMA
-- Buat tabel asing menggunakan IMPORT FOREIGN SCHEMA. IMPORT FOREIGN SCHEMA <dlf_db_name> FROM SERVER <server_name> INTO <holo_schema_name> options (if_table_exist 'update');Buat foreign table dengan menentukan nama tabel
IMPORT FOREIGN SCHEMA <dlf_db_name> limit to (table_name[,....]) FROM SERVER <server_name> into <holo_schema_name> options (if_table_exist 'update');
Pernyataan CREATE FOREIGN TABLE
Untuk informasi selengkapnya tentang cara menggunakan CREATE FOREIGN TABLE, lihat CREATE FOREIGN TABLE.
CREATE FOREIGN TABLE FOREIGN_TABLE_NAME ( column_name data_type [, ... ] ) SERVER SERVER_NAME options ( schema_name 'DLF_DB_NAME', table_name 'DLF_TABLE_NAME' );
Akses tabel Paimon menggunakan dynamic table
Dynamic table dapat secara otomatis memproses dan menyimpan hasil agregasi data dari satu atau beberapa tabel dasar. Dynamic table memiliki kebijakan refresh data bawaan. Anda dapat menetapkan kebijakan refresh data yang berbeda sesuai kebutuhan untuk mengimplementasikan aliran data otomatis dari tabel dasar ke dynamic table, sehingga memenuhi kebutuhan bisnis untuk pengembangan terpadu, aliran data otomatis, dan ketepatan waktu pemrosesan. Hologres V3.0 dan versi yang lebih baru memungkinkan Anda menggunakan external tables MaxCompute dan external tables DLF sebagai tabel dasar dynamic table. Untuk informasi selengkapnya, lihat Dynamic tables.
Penyegaran Penuh
CREATE DYNAMIC TABLE paimon_dt_table
WITH (
auto_refresh_mode='full',
freshness='3 minutes'
)AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;Penyegaran inkremental
CREATE DYNAMIC TABLE paimon_dt_table_increamental
WITH (
auto_refresh_mode='incremental',
freshness='3 minutes'
)AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;Refresh otomatis
CREATE DYNAMIC TABLE paimon_dt_table_auto
WITH (
auto_refresh_mode='auto',
freshness='3 minutes'
)AS SELECT * FROM <ext_database_name>.<ext_schema_name>.<ext_table_name>;Operasi DML
INSERT INTO
-- Gunakan SQL Hologres untuk membuat tabel primary key Paimon dan memasukkan data.
CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name> (
id BIGINT,
customer_id BIGINT,
item TEXT,
amount FLOAT,
dt TEXT,
PRIMARY KEY (id)
)
WITH (
"table_format" = 'paimon',
"file_format" = 'orc',
"merge-engine" = 'deduplicate', -- Contoh merge engine. Sesuaikan sesuai kebutuhan.
"bucket" = '4' -- Contoh jumlah bucket.
);
INSERT INTO <ext_database_name>.<ext_schema_name>.<ext_table_name> (id, customer_id, item, amount, dt) VALUES
(1, 1001, 'apple', 3.50, '2025-09-10'),
(2, 1002, 'banana', 2.00, '2025-09-10'),
(3, 1003, 'orange', 4.20, '2025-09-11');INSERT OVERWRITE
-- Gunakan SQL Hologres untuk membuat tabel append-only Paimon dan memasukkan data.
CREATE EXTERNAL TABLE <ext_database_name>.<ext_schema_name>.<ext_table_name> (
id BIGINT,
name TEXT,
amount FLOAT8,
dt TEXT
)
LOGICAL PARTITION BY LIST(dt)
WITH (
"table_format" = 'paimon',
"file_format" = 'parquet',
"merge-engine" = 'deduplicate',
"bucket-key" = 'id',
"bucket" = '2'
);
INSERT OVERWRITE <ext_database_name>.<ext_schema_name>.<ext_table_name>(id, name, amount, dt) VALUES
(1, 'Alice', 100.50, '2025-09-01'),
(2, 'Bob', 200.00, '2025-09-01'),
(3, 'Carol', 150.75, '2025-09-02');UPDATE
UPDATE <ext_database_name>.<ext_schema_name>.<ext_table_name> SET amount= 5 where id= 1;DELETE
DELETE FROM <ext_database_name>.<ext_schema_name>.<ext_table_name> WHERE id = 2;