全部产品
Search
文档中心

PolarDB:Distribusi transparan

更新时间:Jul 03, 2025

Topik ini menjelaskan konsep distribusi transparan di PolarDB-X dan cara kerja fitur tersebut.

Informasi latar belakang

Ketika aplikasi berbasis database MySQL stand-alone mengalami hambatan performa atau sumber daya, migrasi ke database terdistribusi sering menjadi solusi efektif untuk memenuhi kebutuhan bisnis.

Namun, pengguna biasanya menghadapi tantangan berikut setelah beralih ke database terdistribusi:

  • Bagaimana data didistribusikan di seluruh database?

  • Tabel mana yang perlu dibagi secara horizontal? Bagaimana tabel dipartisi, kunci partisi apa yang digunakan, dan berapa jumlah partisi yang optimal?

  • Node data mana yang menyimpan data saya? Bagaimana menangani ketidakseimbangan sumber daya?

Untuk mengatasi masalah-masalah ini, pengguna harus memahami cara kerja database terdistribusi dan skenario penggunaannya. Namun, pemanfaatan database terdistribusi secara efektif tidaklah mudah.

Untuk menyederhanakan penggunaan database terdistribusi dan mempermudah transisi dari database stand-alone, Alibaba Cloud menghadirkan fitur distribusi transparan in-kernel di PolarDB-X 2.0.

Catatan

Fitur ini hanya mendukung database dalam mode AUTO.

Apa itu distribusi transparan?

Fitur distribusi transparan di PolarDB-X 2.0 memberikan kebijakan partisi default dan distribusi data untuk memungkinkan pengguna menghubungkan aplikasi ke database terdistribusi tanpa perlu memodifikasi aplikasi.

Kemampuan inti dari distribusi transparan adalah membantu pengguna menentukan skema partisi untuk tabel dan mendistribusikan data tabel tersebut di seluruh node data (DNs) PolarDB-X.

Untuk pengguna yang beralih dari database MySQL stand-alone ke database PolarDB-X terdistribusi, pernyataan SQL untuk membuat tabel bisnis dapat dikategorikan menjadi dua:

  • Kategori satu: Pernyataan SQL tidak menggunakan sintaksis partisi MySQL. Tabel yang dibuat dengan pernyataan ini disebut tabel MySQL non-partisi.

  • Kategori dua: Pernyataan SQL menggunakan sintaksis partisi MySQL, seperti Partition By Hash(id). Tabel yang dibuat dengan pernyataan ini disebut tabel MySQL partisi.

Jika pengguna membuat tabel dengan pernyataan kategori dua, mereka dianggap telah memilih skema partisi untuk bisnis mereka karena sintaksis partisi MySQL digunakan secara eksplisit. Tabel-tabel ini dianggap sebagai tabel partisi manual oleh PolarDB-X, dan partisinya didistribusikan secara merata ke DNs untuk beban yang seimbang.

Tabel yang dibuat dari pernyataan kategori satu menjadi fokus utama distribusi transparan PolarDB-X, yang bertujuan membantu pengguna memilih skema partisi dan distribusi data.

Fitur distribusi transparan PolarDB-X menyediakan tiga skema partisi dan distribusi data untuk tabel yang dibuat dari pernyataan kategori satu:

  • Tabel Non-Partisi: Tabel MySQL tetap tidak dipartisi di PolarDB-X, dengan DNs tetap ditetapkan untuk tabel-tabel tersebut. Pengguna dapat menggunakan tabel-tabel ini seperti menggunakan tabel MySQL stand-alone konvensional.

  • Tabel Sharding: Tabel MySQL tetap tidak dipartisi di PolarDB-X, namun tabel-tabel tersebut secara otomatis di-shard dan didistribusikan ke DNs.

  • Tabel Partisi: Tabel MySQL non-partisi secara otomatis dipartisi oleh PolarDB-X.

    • Tabel utama dipartisi horizontal HASH berdasarkan kunci utama.

    • Indeks global digunakan secara default, dan partisi horizontal dilakukan berdasarkan kolom indeks.

Fitur distribusi transparan bekerja dalam tiga mode berdasarkan skema partisi dan distribusi data:

  • Pembagian tabel

  • Pemartisian otomatis

  • Pemartisian manual (default)

Mode kerja distribusi transparan

Anda dapat memilih mode kerja yang sesuai dengan kebutuhan bisnis Anda berdasarkan skema partisi atau distribusi data yang diinginkan saat menghubungkan aplikasi ke database terdistribusi, terutama pada penghubungan pertama kali.

Tabel berikut menjelaskan mode kerja beserta kelebihan dan kekurangannya:

Mode kerja

Deskripsi

Kelebihan dan kekurangan

Pembagian tabel

Untuk semua tabel dalam database logis:

  • Jika tabel logis tidak secara eksplisit menggunakan sintaksis partisi MySQL, tabel tersebut tidak dipartisi dan didistribusikan secara acak ke DNs PolarDB-X untuk penyeimbangan beban.

  • Jika tabel logis secara eksplisit menggunakan sintaksis partisi MySQL, tabel tersebut dipartisi dan setiap partisi didistribusikan secara merata ke DNs.

Kelebihan:

  • Mudah digunakan tanpa modifikasi aplikasi.

  • Kompatibilitas SQL terbaik.

  • Kedekatan maksimum dengan MySQL dalam performa query SQL.

Kekurangan:

  • Beban tidak seimbang di antara DNs karena frekuensi akses tabel dan baris yang dipindai bervariasi.

Pemartisian otomatis

Jika tabel dalam database logis tidak secara eksplisit menggunakan sintaksis partisi MySQL:

  • Tabel-tabel tersebut secara otomatis dipartisi horizontal berdasarkan kunci utamanya.

  • Indeks global secara otomatis digunakan, dan partisi horizontal dilakukan berdasarkan kolom indeks.

Kelebihan:

  • Mudah digunakan dengan hampir nol modifikasi aplikasi.

  • Skalabilitas horizontal.

Kekurangan:

  • Throughput tulis berkurang karena beberapa indeks global perlu dipertahankan.

  • Beban tidak seimbang di antara DNs dan skalabilitas buruk karena hot spot indeks global yang bervariasi.

Pemartisian manual (default)

Untuk semua tabel dalam database logis:

  • Jika tabel logis tidak secara eksplisit menggunakan sintaksis partisi MySQL, tabel tersebut dianggap sebagai tabel non-partisi dan ditetapkan ke DN yang sama.

  • Jika tabel logis secara eksplisit menggunakan sintaksis partisi MySQL, tabel tersebut dipartisi dan setiap partisi didistribusikan secara merata ke DNs.

Kelebihan:

  • Adaptabilitas terhadap berbagai skenario bisnis.

  • Memberikan performa optimal, penyeimbangan beban, dan skalabilitas linier.

Kekurangan:

  • Lebih sulit dipahami dan digunakan.

  • Modifikasi aplikasi diperlukan.

Catatan

Ketiga mode kerja dapat digunakan secara kombinasi. Misalnya, Anda dapat menggunakan pemartisian manual bersamaan dengan pembagian tabel atau pemartisian otomatis untuk memenuhi berbagai kebutuhan.

Untuk informasi lebih lanjut tentang skenario yang sesuai untuk mode-mode ini, lihat Praktik Terbaik.