Kapan Melakukan Agregasi Awal
Tentukan pilihan antara agregasi langsung, VIEW materialisasi, dan OLAP hilir — berdasarkan kesegaran data dan biaya
Kapan Melakukan Agregasi Awal adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Tiga Strategi untuk Kueri Agregat
- Langsung — hitung ulang setiap kali
- Terwujud — simpan dan segarkan secara berkala
- Dipicu/Disimpan dalam Tembolok — perbarui secara inkremental setiap kali terjadi perubahan
Agregasi Langsung
Sederhana dan selalu mutakhir:
SELECT user_id, COUNT(*) FROM orders WHERE status = 'paid' GROUP BY user_id;Kapan Agregasi Langsung Cukup
Kuerinya cukup cepat (indeks bagus, hasil kecil, pemanggilan jarang). Jadikan langsung sebagai pilihan default — lakukan optimasi hanya setelah Anda mengukur masalahnya.
Agregasi Terwujud
Untuk laporan mahal yang "cukup mutakhir":
CREATE MATERIALIZED VIEW user_revenue_30d AS
SELECT user_id, SUM(total) AS revenue
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days'
GROUP BY user_id;
-- Refresh nightly:
REFRESH MATERIALIZED VIEW CONCURRENTLY user_revenue_30d;Agregasi Dipicu / Inkremental
Untuk dasbor waktu nyata, pelihara tabel ringkasan dengan pemicu:
CREATE TABLE user_summary (
user_id BIGINT PRIMARY KEY,
order_count INT NOT NULL DEFAULT 0,
revenue NUMERIC(12,2) NOT NULL DEFAULT 0
);
CREATE FUNCTION incr_summary() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO user_summary (user_id, order_count, revenue)
VALUES (NEW.user_id, 1, NEW.total)
ON CONFLICT (user_id) DO UPDATE
SET order_count = user_summary.order_count + 1,
revenue = user_summary.revenue + EXCLUDED.revenue;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_summary AFTER INSERT ON orders
FOR EACH ROW EXECUTE FUNCTION incr_summary();Pertukaran
| Strategi | Kesegaran | Biaya Penulisan | Biaya Pembacaan |
|---|---|---|---|
| Langsung | Seketika | Tidak ada | Tinggi |
| Terwujud | Tidak mutakhir | Batch penyegaran | Rendah |
| Dipicu | Seketika | Setiap penulisan | Rendah |
Pilih berdasarkan Rasio Pembacaan/Penulisan
- Banyak penulisan, pembacaan sesekali → langsung (atau tampilan terwujud secara batch)
- Banyak pembacaan, penulisan sedang → tampilan terwujud
- Banyak pembacaan DAN penulisan, kesegaran sangat penting → ringkasan yang dipicu
Praagregasi Eksternal
Untuk analitik berskala gudang data, arahkan agregasi ke:
- Basis data OLAP (ClickHouse, Druid)
- model dbt pada gudang data terpisah
- agregasi kontinu TimescaleDB (ekstensi PostgreSQL)
Tabel Ringkasan vs Tampilan Terwujud
Tabel ringkasan khusus memungkinkan pembaruan inkremental; tampilan terwujud memaksa penyegaran penuh. Seimbangkan upaya pengembangan dengan kesederhanaan operasional.
Hindari Pemicu pada Tabel yang Sibuk
Ringkasan berbasis pemicu menambah latensi penulisan pada setiap operasi. Untuk tabel berfrekuensi tinggi (peristiwa, metrik), pilih penyegaran tampilan terwujud secara batch.
Waspadai Invalidasi Tembolok
"Hanya ada dua hal sulit dalam CS." Ringkasan yang dipicu adalah tembolok. Bug di dalamnya muncul sebagai angka dasbor yang salah. Tambahkan pekerjaan rekonsiliasi harian yang menghitung ulang dari sumber.
Wujudkan Alur Multi-Tahap
Rangkai tampilan terwujud: tahap 1 mengagregasi peristiwa, tahap 2 mengagregasi tahap 1. Segarkan secara berurutan.
Ringkasan
Lakukan praagregasi ketika pembacaan mendominasi biaya.
- Langsung → paling sederhana, selalu mutakhir
- Tampilan terwujud → kueri mahal, ketidakmutakhiran dapat diterima
- Ringkasan yang dipicu → selalu mutakhir, menambah biaya penulisan
- Pilih berdasarkan profil pembacaan/penulisan Anda
Pemeriksaan Singkat
Anda memiliki dasbor waktu nyata yang harus menampilkan pendapatan pengguna hingga detik terkini. Strategi mana yang paling sesuai?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kapan Melakukan Agregasi Awal” gratis?
Ya — teks lengkap “Kapan Melakukan Agregasi Awal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kapan Melakukan Agregasi Awal”?
Tentukan pilihan antara agregasi langsung, VIEW materialisasi, dan OLAP hilir — berdasarkan kesegaran data dan biaya Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Kapan Melakukan Agregasi Awal” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- VIEW Biasa: Penggunaan Ulang Logis
- VIEW yang Dapat Diperbarui dan Pemicu INSTEAD OF
- VIEW MATERIALIZED dan Strategi REFRESH
- Kapan Melakukan Agregasi Awal