Anda dapat menggunakan fitur akses sumber data AnalyticDB jarak jauh dari AnalyticDB for PostgreSQL untuk mengakses data dari instans lain dalam akun Alibaba Cloud yang sama. Fitur ini memungkinkan Anda melakukan kueri gabungan pada sumber data eksternal, memastikan ketepatan waktu data dan mengurangi redundansi.
Kueri lintas instans melibatkan setidaknya dua instans: instans lokal yang memulai kueri dan instans jarak jauh yang berfungsi sebagai sumber data eksternal.
Versi yang Didukung
AnalyticDB for PostgreSQL V6.0: V6.6.0.0 atau lebih baru.
AnalyticDB for PostgreSQL V7.0: V7.0.3.0 atau lebih baru.
AnalyticDB for PostgreSQL dalam Mode Serverless: V2.1.1.5 atau lebih baru.
Anda dapat melihat versi minor di halaman Informasi Dasar instans pada konsol AnalyticDB for PostgreSQL. Jika instans Anda tidak memenuhi versi yang diperlukan, perbarui versi minor instans tersebut.
Prasyarat
Instans lokal dan jarak jauh harus berada dalam virtual private cloud (VPC) yang sama.
Persiapan
Dalam contoh ini, kueri lintas instans dilakukan antara instans lokal A dan instans jarak jauh B. Anda dapat mengakses tabel di database remote_db dari instans jarak jauh B melalui database local_db di instans lokal A untuk kueri gabungan.
Buat akun awal untuk instans lokal A dan instans jarak jauh B.
Tambahkan alamat IP atau blok CIDR klien ke Daftar Putih Alamat IP dari kedua instans.
Siapkan data uji.
Pada instans lokal A, buat database dan skema untuk membuat tabel eksternal dan mengakses data dari instans jarak jauh B.
Sambungkan ke instans lokal A.
psql -h gp-bp166cyrtr4p*****-master.gpdb.rds.aliyuncs.com -p 5432 -d postgres -U gpdbaccountJika instans Elastic Compute Service (ECS) Anda tidak berada dalam VPC yang sama dengan instans AnalyticDB for PostgreSQL, atau jika Anda menyambungkan dari perangkat lokal, gunakan Titik Akhir Publik dari instans tersebut.
Pada instans lokal A, buat database bernama
local_db, lalu beralih ke databaselocal_db.CREATE DATABASE local_db; \c local_dbBuat skema di database
local_dbdari instans lokal A.CREATE SCHEMA s02;
Pada instans jarak jauh B, buat database dan tabel untuk menanyakan data tabel dari instans jarak jauh B melalui instans lokal A.
Sambungkan ke instans jarak jauh B dengan cara yang sama seperti Anda menyambungkan ke instans lokal A.
Pada instans jarak jauh B, buat database bernama
remote_dbdan beralih ke databaseremote_db.CREATE DATABASE remote_db; \c remote_dbSiapkan data uji di database
remote_dbdari instans jarak jauh 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');
Prosedur
Langkah 1: Tambahkan sumber data ke instans lokal
Masuk ke Konsol AnalyticDB for PostgreSQL. Temukan instans lokal A dan klik ID instans tersebut.
Di panel navigasi sebelah kiri, klik External Data Source Management.
Klik tab Remote AnalyticDB Data Source Access dan klik Add Data Source. Di panel yang muncul, konfigurasikan parameter-parameter sesuai penjelasan dalam tabel berikut.
Parameter
Deskripsi
Local Instance ID
ID dari instans lokal A. Parameter ini ditentukan secara otomatis.
Local Database Name
Nama database pada instans lokal A. Dalam contoh ini,
local_dbdigunakan.Local Initial Account
Akun awal dari instans lokal A. Jika Anda telah membuat akun awal, Anda tidak perlu menentukan parameter ini.
Local Initial Password
Kata sandi akun awal.
Remote Instance ID
ID dari instans jarak jauh B.
Remote Database Name
Nama database pada instans jarak jauh B. Dalam contoh ini,
remote_dbdigunakan.Remote Initial Account
Akun awal dari instans jarak jauh B.
Remote Initial Password
Kata sandi akun awal.
Data Source Name
Nama sumber data. Contoh: example_name.
Klik OK. Setelah status koneksi sumber data berubah menjadi Running, Anda dapat menjalankan kueri lintas instans.
CatatanSetelah menambahkan sumber data, status koneksi berubah menjadi Adding Remote AnalyticDB Data Source. Proses ini memerlukan waktu kurang dari 1 menit dan tidak memengaruhi pembuatan instans atau operasi baca/tulis data.
Setelah sumber data ditambahkan, Anda dapat melakukan operasi berikut:
Klik Edit di kolom Actions untuk mengubah akun database dan kata sandi dari instans jarak jauh.
Klik Remove di kolom Actions untuk menghapus sumber data.
Langkah 2: Kueri data lintas instans
Jika instans AnalyticDB for PostgreSQL jarak jauh berada dalam mode Serverless, data dari instans dalam keadaan penskalaan tidak dapat diakses.
Sambungkan ke instans lokal A dan beralih ke skema
s02dari databaselocal_db.Di skema
s02dari instans lokal A, buat tabel asing untuk tabel t1, t2, dan t3 dari instans jarak jauh B.PentingSkema di instans lokal tidak boleh berisi tabel dengan nama yang sama dengan tabel jarak jauh. Jika tidak, operasi akan gagal.
Impor beberapa tabel sekaligus
Sintaks:
IMPORT FOREIGN SCHEMA remote_schema -- Nama skema di instans jarak jauh. [LIMIT TO ( table_name [, ...] ) ] -- Nama tabel di instans jarak jauh. FROM SERVER server_name -- Nama sumber data yang dikonfigurasi di Langkah 1. INTO local_schema -- Nama skema di instans lokal.Contoh:
IMPORT FOREIGN SCHEMA s01 LIMIT TO (t1, t2, t3) FROM SERVER example_name INTO s02;CatatanLihat IMPORT FOREIGN SCHEMA untuk detail sintaks lebih lanjut.
Impor satu tabel
Sintaks:
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ -- Nama tabel di instans jarak jauh. { column_name data_type } ] -- Struktur tabel dari instans jarak jauh. [, ... ] ) SERVER server_name -- Nama sumber data yang dikonfigurasi di Langkah 1. [ OPTIONS ( option 'value' [, ... ] ) ] -- Nama skema dan tabel di instans lokal.Contoh:
CREATE FOREIGN TABLE s01.t1(a int, b int) SERVER example_name OPTIONS(schema_name 's02', table_name 't1');CatatanLihat CREATE FOREIGN TABLE untuk detail sintaks lebih lanjut.
Kueri data tabel t1 di database
remote_dbdari instans jarak jauh B melalui databaselocal_dbdari instans lokal A.CatatanAnalyticDB for PostgreSQL tidak mengizinkan Anda mengakses data dalam format
Database.Schema.Table.SELECT * FROM s02.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)
Referensi
Kueri Lintas Database: Menjelaskan cara menanyakan data lintas database dalam instans yang sama.