Bagikan melalui


Memodelkan aplikasi analitik waktu nyata di Azure Cosmos DB untuk PostgreSQL

Penting

Azure Cosmos DB for PostgreSQL tidak lagi didukung untuk proyek baru. Jangan gunakan layanan ini untuk proyek baru. Sebagai gantinya, gunakan salah satu dari dua layanan ini:

Kolokasikan tabel besar dengan kunci shard

Untuk memilih kunci shard untuk aplikasi analitik operasional real-time, ikuti panduan berikut:

  • Pilih kolom yang umum di tabel besar
  • Pilih kolom yang merupakan dimensi alami dalam data, atau bagian utama dari aplikasi. Beberapa contoh:
    • Di dunia keuangan, aplikasi yang menganalisis tren keamanan mungkin akan menggunakan security_id.
    • Dalam beban kerja analitik pengguna tempat Anda ingin menganalisis metrik penggunaan situs web, user_id akan menjadi kolom distribusi yang baik

Dengan menempatkan tabel besar secara bersamaan, Anda dapat memproses kueri SQL dengan mendistribusinya ke node pekerja secara paralel. Menekan kueri menghindari pengacakan data antar node melalui jaringan. Operasi seperti JOIN, agregat, rollup, filter, dan LIMIT dapat dijalankan secara efisien.

Untuk memvisualisasikan kueri terdistribusi paralel pada tabel dikolokasi, pertimbangkan diagram ini:

Diagram penggabungan yang terjadi pada node pekerja.

Tabel users dan events keduanya dipisahkan oleh user_id, jadi baris terkait untuk ID pengguna yang sama ditempatkan bersama pada node pekerja yang sama. SQL JOIN dapat terjadi tanpa memindahkan informasi di antara pekerja.

Model data optimal untuk aplikasi real time

Mari kita lanjutkan dengan contoh aplikasi yang menganalisis kunjungan dan metrik situs web pengguna. Ada dua tabel "fakta"--pengguna dan peristiwa--dan tabel "dimensi" lain yang lebih kecil.

Diagram tabel pengguna, peristiwa, dan lain-lain.

Untuk menerapkan kekuatan super tabel terdistribusi di Azure Cosmos DB for PostgreSQL, ikuti langkah-langkah berikut:

  • Mendistribusikan tabel fakta besar pada kolom yang sama. Dalam kasus kami, pengguna dan peristiwa didistribusikan di user_id.
  • Tandai tabel kecil/dimensi (device_types, countries, dan 'event_types) sebagai tabel referensi.
  • Pastikan untuk menyertakan kolom distribusi dalam batasan kunci primer, unik, dan asing pada tabel terdistribusi. Menyertakan kolom mungkin memerlukan mengubah kunci menjadi komposit. Perlu memperbarui kunci untuk tabel referensi.
  • Saat Anda menggabungkan tabel terdistribusi besar, pastikan untuk menggunakan kunci shard sebagai kunci penggabungan.
-- Distribute the fact tables

SELECT create_distributed_table('users', 'user_id');
SELECT create_distributed_table('products', 'user_id', colocate_with => 'users');

-- Turn dimension tables into reference tables, with synchronized copies
-- maintained on every worker node

SELECT create_reference_table('countries');
-- similarly for device_types and event_types...

Langkah berikutnya

Sekarang kita telah selesai mempelajari pemodelan data untuk aplikasi yang dapat diskalakan. Langkah selanjutnya adalah menyambungkan dan mengkueri database dengan bahasa pemrograman pilihan Anda.