Menentukan Tipe Aplikasi
BERLAKU UNTUK:
Azure Database for PostgreSQL - Hyperscale (Citus)
Menjalankan kueri yang efisien pada grup server Hyperscale (Citus) mengharuskan tabel didistribusikan dengan benar di seluruh server. Distribusi yang direkomendasikan bervariasi menurut jenis aplikasi dan pola kuerinya.
Secara umum ada dua jenis aplikasi yang bekerja dengan baik di Hyperscale (Citus). Langkah pertama dalam pemodelan data adalah mengidentifikasi mana yang lebih mirip dengan aplikasi Anda.
Melihat sekilas
| Aplikasi Multi-Tenant | Aplikasi Real-Time |
|---|---|
| Terkadang lusinan atau ratusan meja dalam skema | Sejumlah kecil tabel |
| Kueri yang berkaitan dengan satu penyewa (perusahaan/toko) pada satu waktu | Kueri analitik yang relatif sederhana dengan agregasi |
| Beban kerja OLTP untuk melayani klien web | Volume serap tinggi dari sebagian besar data yang tidak dapat diubah |
| Beban kerja OLAP yang melayani kueri analitik per penyewa | Sering berpusat di sekitar tabel kejadian besar |
Contoh dan Karakteristik
Aplikasi Multi-Tenant
Aplikasi ini biasanya merupakan aplikasi SaaS yang melayani perusahaan, akun, atau organisasi lain. Sebagian besar aplikasi SaaS bersifat relasional secara inheren. Mereka memiliki dimensi alami untuk mendistribusikan data di seluruh node: hanya dipecah oleh tenant_id.
Hyperscale (Citus) memungkinkan Anda untuk menskalakan database Anda ke jutaan penyewa tanpa harus merancang ulang aplikasi Anda. Anda dapat menyimpan semantik relasional yang Anda butuhkan, seperti gabungan, kendala kunci asing, transaksi, ACID, dan konsistensi.
- Contoh: Situs web yang menghosting store-front untuk bisnis lain, seperti solusi pemasaran digital, atau alat otomatisasi penjualan.
- Karakteristik: Kueri yang berkaitan dengan penyewa tunggal daripada penggabungan informasi dari seluruh penyewa. Ini mencakup beban kerja OLTP untuk melayani klien web, dan beban kerja OLAP yang melayani kueri analitik per penyewa. Memiliki lusinan atau ratusan tabel dalam skema database Anda juga merupakan indikator untuk model data multi-penyewa.
Penskalaan aplikasi multi-penyewa dengan Hyperscale (Citus) juga memerlukan perubahan minimal pada kode aplikasi. Kami memiliki dukungan untuk kerangka kerja populer seperti Ruby on Rails dan Django.
Analitik Real-Time
Aplikasi membutuhkan paralelisme besar-besaran, mengoordinasikan ratusan inti untuk hasil yang cepat untuk kueri numerik, statistik, atau penghitungan. Dengan pemecahan dan paralelisasi kueri SQL di beberapa node, Hyperscale (Citus) memungkinkan untuk melakukan kueri real-time di miliaran rekaman dalam waktu kurang dari satu detik.
Tabel dalam model data analitik real-time biasanya didistribusikan oleh kolom seperti user_id, host_id, atau device_id.
- Contoh: Dasbor analitik yang berhadapan dengan pelanggan memerlukan waktu respons sub-detik.
- Karakteristik: Beberapa tabel, seringkali berpusat di sekitar tabel besar peristiwa perangkat, situs atau pengguna dan membutuhkan volume serap tinggi dari sebagian besar data yang tidak dapat diubah. Kueri analitik yang relatif sederhana (tetapi intensif secara komputasi) melibatkan beberapa agregasi dan GROUP BYs.
Jika situasi Anda menyerupai salah satu kasus di atas, maka langkah selanjutnya adalah memutuskan cara memecah data Anda di grup server. Pilihan kolom distribusi administrator database harus sesuai dengan pola akses kueri umum untuk memastikan performa.
Langkah berikutnya
- Pilih kolom distribusi untuk tabel di aplikasi Anda untuk mendistribusikan data secara efisien