Mulai versi V3.0.38, Hologres memperkenalkan jalur akses yang ditingkatkan dan dipercepat untuk MaxCompute, yang dikenal sebagai Common Table. Topik ini menjelaskan cara menggunakan Common Table untuk mengakses data MaxCompute.
Pendahuluan
Common Table menggunakan reader native C++ untuk membaca data dari MaxCompute. Dibandingkan dengan jalur akses SQE/HQE, Common Table menawarkan keunggulan berikut:
menunjukkan "Didukung", dan menunjukkan "Tidak didukung".
Feature | SQE/HQE | Common Table |
Performance | High | Very high. Performance 33% lebih tinggi dibandingkan dengan SQE/HQE dan lebih dari 200% lebih tinggi dibandingkan dengan open storage API. |
Dynamic data masking | Memerlukan konfigurasi terpisah untuk aturan penyamaran. | Mewarisi aturan penyamaran data dari MaxCompute, sehingga memastikan hasil kueri konsisten dengan MaxCompute. |
Schema Evolution | . Pembacaan file langsung tidak didukung, yang mengakibatkan performa sedikit lebih rendah. | untuk pembacaan file langsung, memberikan performa tinggi. |
Encryption at rest |
|
|
ACID 1.0 tables | ||
PK Delta Table | ||
Append Delta Table |
Izin
Mengakses tabel eksternal MaxCompute menggunakan Common Table memerlukan izin yang sesuai. Untuk memberikan izin kepada pengguna agar dapat mengakses proyek MaxCompute beserta tabel-tabelnya, lihat Mengelola izin pengguna menggunakan perintah.
Untuk menyelaraskan lebih baik dengan izin kueri di MaxCompute, Hologres V4.0 dan versi yang lebih baru menerapkan proses verifikasi izin yang diperbarui.
Metode pembuatan
Tindakan
Izin (Hologres V3.0, V3.1, dan V3.2)
Izin (Hologres V4.0 dan versi yang lebih baru)
Foreign Table
Buat tabel eksternal MaxCompute secara massal menggunakan IMPORT FOREIGN SCHEMA
Describe, List
Describe, List
Query data
Describe, Select
Select
External Database
Lihat metadata tabel eksternal
Describe
Describe
Query data
Describe, Select
Select
Hologres hanya mendukung pembacaan snapshot terbaru dari MaxCompute Delta Table.
Menulis data dari Hologres ke MaxCompute Delta Table tidak didukung.
Terlepas dari jalur akses yang digunakan, Anda tidak dapat melakukan kueri terhadap tabel MaxCompute yang memiliki keamanan tingkat baris (row-level security) yang diaktifkan.
Pembaruan fitur
Deskripsi | Versi yang didukung |
Mendukung predicate pushdown untuk kueri MaxCompute ke node pembaca data. | >=4.1.6 |
Mendukung pembacaan tipe data JSON dari MaxCompute. | >=4.1.1 |
Mendukung kueri terhadap tabel Append Delta MaxCompute. | >= 3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Mendukung penggunaan spillRead untuk kueri pada tabel Delta MaxCompute guna mengatasi error yang disebabkan oleh jumlah file unspilled yang berlebihan. | >= 3.0.41 >= 3.1.10 >= 3.2.0 >= 4.0.0 |
Mendukung pembacaan tabel MaxCompute yang berisi nilai default. | >=3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Mendukung Auto Split Size, yang secara otomatis menentukan ukuran split berdasarkan spesifikasi instans. | >=3.1.33 >=3.2.0 >=4.0.0 |
Mendukung kueri data bertipe TIMESTAMP_NTZ. | >= 3.0.41 >= 3.1.10 >=3.2.0 >=4.0.0 |
Mendukung predicate pushdown untuk filter equality pada atribut seperti clustering keys dan primary keys dalam tabel Delta. Fitur ini meningkatkan efisiensi filter dan performa kueri. | >= 4.0.6 |
Aktifkan Common Table
Anda dapat mengaktifkan Common Table pada tingkat session, database, atau instans sesuai dengan kasus penggunaan Anda.
Tingkat session
-- Aktifkan Common Table pada tingkat session. Anda harus menjalankan perintah ini bersamaan dengan kueri atau pernyataan DML Anda. SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';Tingkat database
-- Aktifkan Common Table pada tingkat database. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';Tingkat instans
-- Aktifkan Common Table pada tingkat instans. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
Nonaktifkan Common Table
Tingkat session
-- Nonaktifkan Common Table pada tingkat session. Anda harus menjalankan perintah ini bersamaan dengan kueri atau pernyataan DML Anda. SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';Tingkat database
-- Nonaktifkan Common Table pada tingkat database. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';Tingkat instans
-- Nonaktifkan Common Table pada tingkat instans. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
Verifikasi jalur akses saat ini
Anda dapat menggunakan SQL berikut untuk memeriksa. Jika output-nya adalah
odps:common_table,dlf:hqe, hal ini menunjukkan bahwa Anda menggunakan Common Table.SHOW hg_experimental_external_catalog_routing;Untuk kueri historis, Anda dapat memeriksa field query_extinfo di Slow Query Log. Jika terdapat
driver:CommonTable, hal ini menunjukkan bahwa tautan Common Table digunakan.
Auto Split Size
Parameter Auto Split Size secara default diatur ke off, yang berarti fitur ini dinonaktifkan. Anda dapat mengaktifkan atau menonaktifkannya sesuai kebutuhan berdasarkan skenario aktual Anda. Konfigurasi parameter ini dilakukan sebagai berikut:
Aktifkan Auto Split Size
V4.0 dan versi yang lebih baru
Tingkat session
-- Aktifkan Auto Split Size pada tingkat session. SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';Tingkat database
-- Aktifkan Auto Split Size pada tingkat database. ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';Tingkat instans
-- Aktifkan Auto Split Size pada tingkat instans. ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
Versi sebelum V4.0
Tingkat session
-- Aktifkan Auto Split Size pada tingkat session. SET hg_experimental_enable_common_table_auto_split_size = 'on';Tingkat database
-- Aktifkan Auto Split Size pada tingkat database. ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on';Tingkat instans
-- Aktifkan Auto Split Size pada tingkat instans. ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';
Nonaktifkan Auto Split Size
V4.0 dan versi yang lebih baru
Tingkat session
-- Nonaktifkan Auto Split Size pada tingkat session. SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';Tingkat database
-- Nonaktifkan Auto Split Size pada tingkat database. ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';Tingkat instans
-- Nonaktifkan Auto Split Size pada tingkat instans. ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
Versi sebelum V4.0
Tingkat session
-- Nonaktifkan Auto Split Size pada tingkat session. SET hg_experimental_enable_common_table_auto_split_size = 'off';Tingkat database
-- Nonaktifkan Auto Split Size pada tingkat database. ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off';Tingkat instans
-- Nonaktifkan Auto Split Size pada tingkat instans. ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';
Aktifkan filter pushdown ke node pembaca data
Hologres V4.1.6 memperkenalkan dukungan untuk filter pushdown ke node pembaca data. Fitur ini secara signifikan meningkatkan performa dalam skenario dengan laju filter tinggi. Secara default, fitur ini dinonaktifkan pada Hologres V4.1. Jalankan pernyataan SQL berikut untuk mengaktifkannya secara global:
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=true');Nonaktifkan filter pushdown ke node pembaca data
Hologres V4.1.6 dan versi yang lebih baru mendukung filter pushdown ke node pembaca data. Fitur ini secara signifikan meningkatkan performa dalam skenario dengan laju filter tinggi. Jalankan pernyataan SQL berikut untuk menonaktifkan fitur ini secara global. Secara default, fitur ini dinonaktifkan pada Hologres V4.1.
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=false');