All Products
Search
Document Center

AnalyticDB:Kueri lintas instans

Last Updated:Mar 18, 2026

AnalyticDB for PostgreSQL menggunakan pembungkus data asing (FDW) untuk membantu Anda mengkueri data lintas instans dalam akun Alibaba Cloud secara mudah dan cepat. Hal ini memastikan ketepatan waktu data serta mengurangi redundansi data.

Pengenalan

Sebuah perusahaan atau organisasi mungkin menjalankan beberapa instans untuk mendukung berbagai bidang bisnis atau aplikasi. Dalam situasi tertentu, Anda perlu mengkueri data lintas instans untuk mencapai analisis lintas unit bisnis. Sebelumnya, Anda mungkin menggunakan salah satu metode berikut untuk melakukan kueri lintas instans:

  • Menyimpan salinan data yang sama pada instans yang berbeda. Metode ini dapat menyebabkan ketidaksesuaian data dan redundansi data.

  • Menyimpan data di penyimpanan bersama, seperti bucket Object Storage Service (OSS). Metode ini tidak menjamin ketepatan waktu data.

Untuk mengatasi masalah tersebut, tim Alibaba Cloud mengembangkan FDW berdasarkan arsitektur pemrosesan paralel masif (MPP) dari AnalyticDB for PostgreSQL dan komunikasi antar node komputasi. FDW memanfaatkan performa node komputasi untuk mengimplementasikan akses data paralel antar instans, meningkatkan efisiensi akses data. Performa FDW beberapa kali lebih tinggi dibandingkan dengan ekstensi postgres_fdw asli.

image.png

Catatan penggunaan

  • Instans sumber dan tujuan harus milik akun Alibaba Cloud yang sama serta berada di wilayah dan virtual private cloud (VPC) yang sama.

  • Jika instans sumber dalam mode Serverless sedang dalam keadaan penskalaan, Anda tidak dapat mengakses data instans tersebut.

  • Fitur kueri lintas instans hanya didukung untuk versi minor berikut:

    • AnalyticDB for PostgreSQL V7.0 dalam mode penyimpanan elastis: V7.0.1.x dan yang lebih baru.

    • AnalyticDB for PostgreSQL V6.0 dalam mode penyimpanan elastis: V6.3.11.2 dan yang lebih baru.

    • AnalyticDB for PostgreSQL dalam mode Serverless: V1.0.6.x dan yang lebih baru.

  • Metode verifikasi kata sandi AnalyticDB for PostgreSQL V7.0 telah diubah. Jika Anda ingin mengakses instans AnalyticDB for PostgreSQL V7.0 dari instans AnalyticDB for PostgreSQL V6.0 atau instans AnalyticDB for PostgreSQL dalam mode Serverless, Submit a ticket.

  • Tabel asing FDW hanya mendukung operasi SELECT dan INSERT. Operasi UPDATE dan DELETE tidak didukung.

  • Hanya AnalyticDB for PostgreSQL V7.0 dalam mode penyimpanan elastis yang mendukung pushdown join dan aggregate pushdown.

  • Hanya optimizer Orca dalam AnalyticDB for PostgreSQL V7.0 dalam mode penyimpanan elastis yang dapat menghasilkan rencana eksekusi untuk tabel asing FDW. AnalyticDB for PostgreSQL V6.0 dalam mode penyimpanan elastis dan AnalyticDB for PostgreSQL dalam mode Serverless menggunakan optimizer asli untuk menghasilkan rencana eksekusi untuk tabel asing FDW.

Prosedur

Untuk mengaktifkan fitur kueri data lintas instans A dan B yang milik akun Alibaba Cloud yang sama, ikuti langkah-langkah berikut. Kedua instans berada di wilayah dan VPC yang sama. Setelah mengaktifkan fitur ini, Anda dapat mengakses tabel database db02 Instans B dari database db01 Instans A. Kemudian, Anda dapat menggunakan komunikasi antar node komputasi untuk memfasilitasi kueri terkait dengan tabel database db01.

  1. Gunakan alat psql untuk terhubung ke instans A dan B. Untuk informasi lebih lanjut, lihat Koneksi Klien.

  2. Buat database pada instans A dan B.

    Buat database bernama db01 pada Instans A dan beralih ke database db01.

    CREATE DATABASE db01;
    \c db01

    Buat database bernama db02 pada Instans B dan beralih ke database db02.

    CREATE DATABASE db02;
    \c db02
  3. Instal ekstensi greenplum_fdw dan gp_parallel_retrieve_cursor di database db01 Instans A dan database db02 Instans B. Untuk informasi lebih lanjut, lihat Instal, Perbarui, dan Hapus Ekstensi.

  4. Dapatkan alamat IP internal Instans A dan tambahkan alamat IP ke daftar putih Instans B. Untuk informasi tentang cara mengonfigurasi daftar putih, lihat Konfigurasikan Daftar Putih Alamat IP.

    Eksekusi pernyataan berikut pada Instans A untuk mendapatkan alamat IP internal:

    SELECT dbid, address FROM gp_segment_configuration;
  5. Siapkan data uji pada database db02 Instans B.

    CREATE SCHEMA s01;
    
    CREATE TABLE s01.t1(a int, b int, c text); 
    CREATE TABLE s01.t2(a int, b int, c text); 
    CREATE TABLE s01.t3(a int, b int, c text); 
    
    INSERT INTO s01.t1 VALUES(generate_series(1,10),generate_series(11,20),'t1');
    INSERT INTO s01.t2 VALUES(generate_series(11,20),generate_series(11,20),'t2');
    INSERT INTO s01.t3 VALUES(generate_series(21,30),generate_series(11,20),'t3')
  6. Buat server dan pemetaan pengguna pada database db01 Instans A.

    • Buat server.

      CREATE SERVER remote_adbpg FOREIGN DATA WRAPPER greenplum_fdw
          OPTIONS (host 'gp-xxxxxxxx-master.gpdb.zhangbei.rds.aliyuncs.com',
                   port '5432',
                   dbname 'db02');

      Tabel berikut menggambarkan parameter.

      Parameter

      Deskripsi

      host

      Titik akhir internal Instans B.

      Anda dapat masuk ke Konsol AnalyticDB for PostgreSQL dan buka halaman Basic Information Instans B untuk melihat internal endpoint di bagian Database Connection Information.

      port

      Nomor port internal Instans B. Nilai default: 5432.

      dbname

      Nama database sumber. Dalam contoh ini, parameter ini disetel ke db02.

    • Buat pemetaan pengguna. Untuk informasi lebih lanjut tentang pemetaan pengguna, lihat CREATE USER MAPPING.

      CREATE USER MAPPING FOR PUBLIC SERVER remote_adbpg
          OPTIONS (user 'report', password '******');

      Tabel berikut menggambarkan parameter.

      Parameter

      Deskripsi

      user

      Nama akun database yang digunakan untuk terhubung ke Instans B.

      Akun database harus memiliki izin baca pada database db02. Jika Anda ingin melakukan operasi INSERT, izin tulis juga diperlukan. Untuk informasi tentang cara membuat akun database, lihat Buat akun database.

      password

      Kata sandi akun database.

  7. Aktifkan fitur kueri lintas instans untuk database db01 Instans A.

    Anda dapat menggunakan salah satu metode berikut untuk mengaktifkan fitur kueri lintas instans:

    • Buat tabel asing untuk tabel sumber.

      CREATE SCHEMA s01;
      CREATE FOREIGN TABLE s01.t1(a int, b int) 
      	server remote_adbpg options(schema_name 's01', table_name 't1');

      Metode ini memiliki kelebihan dan kekurangan berikut:

      • Kelebihan: Anda dapat menentukan struktur DDL kustom untuk tabel asing. Misalnya, tabel t1 di database db02 berisi bidang a, b, dan c, tetapi database db01 hanya berisi bidang a dan b. Dengan menggunakan metode ini, Anda dapat menentukan bidang saat membuat tabel asing.

      • Kekurangan: Anda harus mengetahui struktur DDL setiap tabel. Waktu yang lama diperlukan untuk mengimpor beberapa tabel asing sekaligus.

    • Impor semua tabel dari skema database sumber.

      CREATE SCHEMA s01;
      IMPORT FOREIGN SCHEMA s01 LIMIT TO (t1, t2, t3) 
      	FROM SERVER remote_adbpg INTO s01;

      Metode ini memiliki kelebihan dan kekurangan berikut:

      • Kelebihan: Anda dapat mengimpor tabel asing dalam waktu singkat tanpa perlu mengetahui struktur DDL setiap tabel.

      • Kekurangan: Tabel asing harus memiliki nama dan bidang yang sama dengan tabel di database sumber.

      Untuk informasi lebih lanjut, lihat IMPORT FOREIGN SCHEMA.

  8. Kueri data database db02 Instans B dari database db01 Instans A.

    SELECT * FROM s01.t1;

    Hasil sampel:

     a  | b  | c
    ----+----+----
      2 | 12 | t1
      3 | 13 | t1
      4 | 14 | t1
      7 | 17 | t1
      8 | 18 | t1
      1 | 11 | t1
      5 | 15 | t1
      6 | 16 | t1
      9 | 19 | t1
     10 | 20 | t1
    (10 baris)

Uji performa

Gambar berikut menunjukkan hasil uji performa TPC-H pada kueri lokal dan kueri lintas instans. Set data uji berukuran 1 TB.image.png

  • Saat melibatkan sejumlah besar data (1 TB dalam contoh ini), performa kueri lintas instans sekitar setengah dari performa kueri lokal.

  • Untuk mengkueri data lintas instans, Anda harus mentransmisikan data melalui jaringan. Untuk mengurangi operasi I/O jaringan, kami sarankan menambahkan kondisi filter tambahan ke klausa WHERE untuk tabel asing.

Referensi

AnalyticDB for PostgreSQL mendukung fitur kueri lintas database. Untuk informasi lebih lanjut, lihat Kueri Data Lintas Database.