All Products
Search
Document Center

PolarDB:Edisi Terdistribusi

Last Updated:Jun 03, 2026

PolarDB for PostgreSQL Distributed Edition adalah database terdistribusi yang dibangun di atas PolarDB for PostgreSQL. Database ini mendukung skalabilitas horizontal untuk menangani volume data hingga sub-petabyte, menjamin konsistensi dalam transaksi terdistribusi, serta mempertahankan semua kemampuan edisi terpusat—menjadikannya pilihan tepat ketika data atau throughput tulis Anda melebihi kapasitas yang dapat ditangani oleh node tunggal.

Arsitektur teknis

PolarDB for PostgreSQL Distributed Edition terdiri dari dua jenis node inti:

  • Compute Nodes (CNs): Titik akses untuk kluster yang mengurai SQL, menghasilkan rencana kueri terdistribusi, dan mengelola metadata.

  • Data Nodes (DNs): Menyimpan shard data fisik dari tabel.

Setiap CN atau DN merupakan kluster PolarDB for PostgreSQL ber-high-availability (HA) dengan node read-write (RW), node read-only (RO), dan penyimpanan terdistribusi (PolarStore) untuk keandalan tingkat komponen.

Keunggulan arsitektur

  • Skalabilitas horizontal online: Tambahkan node secara online untuk memperluas kapasitas komputasi dan penyimpanan, mengatasi hambatan mesin tunggal untuk data skala petabyte dan konkurensi tinggi.

  • Metode penskalaan fleksibel: Arsitektur penyimpanan bersama mendukung skala keluar (scale-out, tambah node) dan skalabilitas vertikal (scale-up, tingkatkan spesifikasi node).

  • Ketersediaan tinggi dan biaya rendah: PolarStore menggunakan replika triplikat dengan ParallelRaft untuk ketersediaan data tinggi. Anda hanya membayar satu replika, dan penyimpanan ditagih berdasarkan penggunaan aktual tanpa perencanaan kapasitas manual.

  • Kinerja tinggi: Optimasi I/O berbasis PolarFS menghadirkan IOPS tinggi melalui pembersihan halaman kotor paralel, pembacaan/penulisan batch, dan caching ukuran tabel.

  • Backup dan pemulihan cepat: Buat backup dalam hitungan detik. Tersedia beberapa metode pemulihan, termasuk point-in-time restore (PITR).

Pola pengembangan terdistribusi

Saat mengembangkan pada PolarDB for PostgreSQL Distributed Edition, pilih salah satu dari dua pola distribusi data berikut berdasarkan skenario bisnis Anda:

  • Pemisahan horizontal: Mendistribusikan baris dari tabel besar ke beberapa DN melalui penghashan kolom distribusi. Cocok untuk tabel besar seperti tabel pengguna atau pesanan. Untuk kinerja optimal, sertakan kolom distribusi dalam filter kueri.

    • Tabel terdistribusi: Tabel yang secara logis terpadu tetapi datanya terbagi di beberapa DN. Misalnya, aplikasi mengakses tabel sensors_data, tetapi data tersebut sebenarnya disimpan dalam shard seperti sensors_data_shard1 dan sensors_data_shard2.

    • Kolom distribusi: Kolom yang nilai hash-nya menentukan penempatan data di berbagai DN. Contoh: sensor_id.

    • Tabel replikasi: Tabel yang sepenuhnya disalin ke setiap DN. Digunakan untuk tabel dimensi kecil, seperti tabel negara atau konfigurasi, yang sering di-join dengan tabel terdistribusi, sehingga mengubah JOIN lintas-node menjadi JOIN lokal dan meningkatkan kinerja kueri secara signifikan.

    • Transaksi terdistribusi: Ketika suatu operasi (eksplisit BEGIN ... COMMIT/ROLLBACK atau implisit) memodifikasi data di beberapa DN, sistem secara otomatis menggunakan transaksi terdistribusi untuk menjamin kepatuhan ACID.

      Catatan

      Modifikasi apa pun pada tabel replikasi akan memicu transaksi terdistribusi.

    • CN Primary/Follower: Semua CN memproses kueri, tetapi operasi DDL (seperti CREATE TABLE) hanya dijalankan pada CN primary. Perubahan tersebut disinkronkan secara otomatis ke semua node lain (CN dan DN).

  • Pemisahan vertikal: Menempatkan tabel dari modul bisnis berbeda pada DN terpisah untuk isolasi resource. Misalnya, tabel transaksi frekuensi tinggi dan tabel pelaporan backend dapat dijalankan pada node terpisah. CN menyembunyikan topologi dasar, sehingga aplikasi mengakses semua tabel seolah-olah menggunakan database standalone.

Panduan pengembangan

  1. Persiapan:

    1. Buat akun database

      Buka Konsol PolarDB. Pada halaman Cluster List, klik ID kluster target. Pilih Configuration and Management > Account Management, lalu .image

      Catatan

      Akun database mencakup privileged accounts dan standard accounts, masing-masing memiliki . Buat akun sesuai kebutuhan bisnis Anda.

    2. Atur daftar putih kluster

      Buka PolarDB console. Pada halaman Cluster List, klik ID kluster target. Di bawah Configuration and Management > Cluster Whitelist, tambahkan atau .image

      Catatan
      • Jika Anda menggunakan Instance ECS untuk mengakses PolarDB dan Instance ECS berada dalam VPC yang sama dengan kluster PolarDB, tambahkan alamat IP pribadi Instance ECS ke grup daftar putih IP baru, atau tambahkan security group Instance ECS ke daftar putih kluster.

      • Jika Anda menggunakan Instance ECS untuk mengakses PolarDB tetapi Instance ECS tidak berada dalam VPC yang sama dengan kluster PolarDB, tambahkan alamat IP publik Instance ECS ke grup daftar putih IP baru, atau tambahkan security group Instance ECS ke daftar putih kluster.

      • Jika Anda mengakses PolarDB dari lingkungan on-premises, tambahkan alamat IP publik lingkungan on-premises Anda ke grup daftar putih IP baru.

        Untuk mendapatkan alamat IP publik lingkungan lokal Anda pada sistem operasi Linux, buka terminal dan jalankan perintah curl ifconfig.me.

        • Sistem operasi Windows: Buka command prompt, masukkan curl ip.me, lalu tekan Enter.

        • Sistem operasi macOS: Buka Terminal, masukkan curl ifconfig.me, lalu tekan Enter.

        Jika jaringan on-premises Anda menggunakan proxy, alamat IP yang diperoleh mungkin berbeda dari alamat IP publik aktual Anda. Tambahkan rentang alamat IP 0.0.0.0/0 ke daftar putih kluster PolarDB. Setelah terhubung ke kluster, jalankan perintah SELECT pid,usename,datname,client_addr,state,query FROM pg_stat_activity WHERE state = 'active'; untuk mendapatkan alamat IP publik aktual Anda dan tambahkan ke daftar putih kluster. Kemudian, hapus rentang alamat IP 0.0.0.0/0 dari daftar putih.

        image

      • Rentang alamat IP 0.0.0.0/0 mengizinkan akses dari semua sumber. Menambahkan rentang ini ke daftar putih kluster menimbulkan risiko keamanan tinggi. Jangan tambahkan rentang ini ke daftar putih kecuali benar-benar diperlukan.

    3. Dapatkan titik akhir database dan port

      Login ke PolarDB console. Di daftar kluster, klik ID kluster untuk membuka halaman Basic Information-nya. Lalu, Anda dapat melihat informasi titik akhir di bagian Database Connections.image

      Catatan
      • Secara default, kluster PolarDB for PostgreSQL terdistribusi memiliki satu Primary Endpoint. Port default-nya adalah 5432.

      • Gunakan titik akhir Private atau Public sesuai dengan lingkungan akses Anda.

        • Untuk mengakses kluster PolarDB dari Instance ECS dalam VPC yang sama dengan kluster PolarDB, gunakan titik akhir Private.

        • Untuk mengakses kluster PolarDB dari lingkungan on-premises Anda, gunakan titik akhir Public. Titik akhir publik tidak tersedia secara default — klik Apply untuk membuatnya.

      • Kluster PolarDB tidak dapat mencapai kinerja optimal saat diakses melalui public endpoint.

      • Host virtual dan server ringan tidak dapat terhubung ke kluster PolarDB melalui Private.

  2. Hubungkan ke kluster terdistribusi

    Gunakan DMS untuk menghubungkan ke kluster

    Data Management (DMS) adalah tool Alibaba Cloud yang menyediakan manajemen data, manajemen skema, manajemen pengguna, audit keamanan, tren data, pelacakan data, grafik BI, optimasi kinerja, dan manajemen server. Kelola kluster PolarDB Anda langsung di DMS tanpa alat tambahan.

    1. Login ke PolarDB console. Di daftar kluster, klik ID kluster yang ingin Anda hubungkan untuk membuka halaman Basic Information-nya. Di pojok kanan atas halaman, klik Log On To Database.

    2. Pada kotak dialog yang muncul, masukkan akun dan kata sandi database yang telah Anda buat untuk kluster tersebut, lalu klik Login.

    3. Setelah login ke kluster, pilih Database Instances > Instances Connected di panel navigasi kiri untuk mengelola kluster PolarDB .image

    Gunakan client untuk menghubungkan ke kluster

    Prosedur ini menggunakan pgAdmin 4 v9.0 untuk menghubungkan ke kluster PolarDB.

    1. Unduh dan instal client pgAdmin 4.

    2. Buka client pgAdmin 4, klik kanan Servers, lalu pilih Register > Server....image

    3. Pada tab General, atur nama koneksi. Pada tab Connection, konfigurasikan informasi koneksi kluster, lalu klik Save.image

      Parameter

      Deskripsi

      Host name/address

      Titik akhir dan port kluster PolarDB.

      • Untuk mengakses kluster PolarDB dari Instance ECS, dan Instance ECS berada dalam VPC yang sama dengan kluster PolarDB, tentukan titik akhir Private dan port-nya.

      • Untuk mengakses kluster PolarDB dari lingkungan on-premises Anda, tentukan titik akhir Public dan port-nya.

      • Port default-nya adalah .

      Port

      Username

      Akun dan kata sandi database kluster PolarDB.

      Password

    4. Koneksi berhasil akan menampilkan halaman berikut.image

      Catatan

      postgres adalah database sistem default. Jangan lakukan operasi apa pun pada database ini.

    Gunakan psql untuk menghubungkan ke kluster

    Unduh psql dari PostgreSQL Downloads untuk menghubungkan ke kluster PolarDB. Anda juga dapat menggunakan psql dalam untuk menghubungkan ke kluster PolarDB.

    Catatan
    • Metode koneksi sama untuk Windows dan Linux.

    • Dokumentasi resmi psql mencakup penggunaan detail.

    Sintaks

    psql -h <host> -p <port> -U <username> -d <dbname>

    Parameter

    Deskripsi

    host

    Titik akhir kluster dan port kluster PolarDB.

    • Untuk mengakses kluster PolarDB dari Instance ECS, dan Instance ECS berada dalam VPC yang sama dengan kluster PolarDB, tentukan titik akhir Private dan port-nya.

    • Untuk mengakses kluster PolarDB dari lingkungan on-premises Anda, tentukan titik akhir Public dan port-nya.

    • Port default-nya adalah

    port

    username

    Akun database kluster PolarDB.

    dbname

    .

    Contoh

    Hubungkan ke kluster menggunakan bahasa pemrograman

    Menghubungkan ke kluster mirip dengan menghubungkan ke database PostgreSQL biasa — cukup perbarui titik akhir, port, akun, dan kata sandi.

    Java

    Hubungkan ke kluster menggunakan driver JDBC PostgreSQL dalam proyek Java berbasis Maven.

    1. Tambahkan dependensi driver JDBC PostgreSQL ke file pom.xml Anda. Contoh kode:

      <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.2.18</version>
      </dependency>
    2. Hubungkan ke kluster. Ganti placeholder <HOST>, <PORT>, <USER>, <PASSWORD>, <DATABASE>, <YOUR_TABLE_NAME>, dan <YOUR_TABLE_COLUMN_NAME> dengan parameter koneksi kluster aktual.

      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.ResultSet;
      import java.sql.Statement;
      
      public class PolarDBConnection {
          public static void main(String[] args) {
              // URL, username, dan password database.
              String url = "jdbc:postgresql://<HOST>:<PORT>/<DATABASE>";
              String user = "<USER>";
              String password = "<PASSWORD>";
      
              try {
                  // Muat driver JDBC PostgreSQL.
                  Class.forName("org.postgresql.Driver");
                  
                  // Bangun koneksi.
                  Connection conn = DriverManager.getConnection(url, user, password);
                  
                  // Buat objek Statement.
                  Statement stmt = conn.createStatement();
                  
                  // Jalankan kueri SQL.
                  ResultSet rs = stmt.executeQuery("SELECT * FROM <YOUR_TABLE_NAME>");
                  
                  // Proses set hasil.
                  while (rs.next()) {
                      System.out.println(rs.getString("<YOUR_TABLE_COLUMN_NAME>"));
                  }
                  
                  // Tutup resource.
                  rs.close();
                  stmt.close();
                  conn.close();
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

    Python

    Hubungkan ke kluster menggunakan library psycopg2 dalam Python 3.

    1. Instal library psycopg2.

      pip3 install psycopg2-binary
    2. Hubungkan ke kluster. Ganti placeholder <HOST>, <PORT>, <USER>, <PASSWORD>, <DATABASE>, dan <YOUR_TABLE_NAME> dengan parameter koneksi kluster aktual.

      import psycopg2
      
      try:
          # Parameter koneksi
          conn = psycopg2.connect(
              host="<HOST>",  # Titik akhir kluster.
              database="<DATABASE>",  # Nama database.
              user="<USER>",  # Username.
              password="<PASSWORD>",  # Kata sandi.
              port="<PORT>"  # Nomor port.
          )
      
          # Buat objek cursor.
          cursor = conn.cursor()
      
          # Jalankan kueri.
          cursor.execute("SELECT * FROM <YOUR_TABLE_NAME>")
      
          # Dapatkan semua hasil.
          records = cursor.fetchall()
          for record in records:
              print(record)
              
      except Exception as e:
          print("Error:", e)
      finally:
          # Tutup koneksi.
          if 'cursor' in locals():
              cursor.close()
          if 'conn' in locals():
              conn.close()

    Go

    Hubungkan ke kluster menggunakan paket database/sql dan driver lib/pq dalam Go 1.23.0.

    1. Instal driver lib/pq.

      go get -u github.com/lib/pq
    2. Hubungkan ke kluster. Ganti placeholder <HOST>, <PORT>, <USER>, <PASSWORD>, <DATABASE>, dan <YOUR_TABLE_NAME> dengan parameter koneksi kluster aktual.

      package main
      
      import (
          "database/sql"
          "fmt"
          "log"
      
          _ "github.com/lib/pq" // Inisialisasi driver PostgreSQL.
      )
      
      func main() {
          // Format string koneksi.
          connStr := "user=<USER> password=<PASSWORD> dbname=<DATABASE> host=<HOST> port=<PORT> sslmode=disable"
      
          // Buka koneksi database.
          db, err := sql.Open("postgres", connStr)
          if err != nil {
              log.Fatal(err)
          }
          defer db.Close() // Tutup koneksi saat program berakhir.
      
          // Uji koneksi.
          err = db.Ping()
          if err != nil {
              log.Fatal(err)
          }
          fmt.Println("Connected to PostgreSQL!")
      
          // Jalankan kueri.
          rows, err := db.Query("SELECT * FROM <YOUR_TABLE_NAME>")
          if err != nil {
              log.Fatal(err)
          }
          defer rows.Close()
      }
      
  3. Buat dan kelola tabel terdistribusi serta tabel replikasi

  4. Operasi DML pada tabel terdistribusi

  5. Topik tambahan: