0Pricing
SQL Academy · Pelajaran

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

StrategiKesegaranBiaya PenulisanBiaya Pembacaan
LangsungSeketikaTidak adaTinggi
TerwujudTidak mutakhirBatch penyegaranRendah
DipicuSeketikaSetiap penulisanRendah

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

  1. VIEW Biasa: Penggunaan Ulang Logis
  2. VIEW yang Dapat Diperbarui dan Pemicu INSTEAD OF
  3. VIEW MATERIALIZED dan Strategi REFRESH
  4. Kapan Melakukan Agregasi Awal
← Kembali ke SQL Academy