Back to IF3140 Sistem Basis Data

Topic

Questions/Cues

  • Apa itu dekomposisi dan apa saja jenisnya?

  • Kapan kita menggunakan horizontal & vertical splitting?

  • Apa itu denormalisasi dan apa tujuannya?

  • Bagaimana cara mengelola data yang terdenormalisasi?

Schema Tuning: Dekomposisi (Splitting Tables)

Dekomposisi atau Splitting Tables adalah teknik memecah satu tabel menjadi beberapa tabel terpisah untuk meningkatkan performa. Ada dua jenis utama:

  • Horizontal Splitting: Memecah tabel berdasarkan baris (rows). Ini sangat berguna jika ada pemisahan data yang alami, seperti memisahkan data transaksi aktif dengan data arsip historis yang jarang diakses.

  • Vertical Splitting: Memecah tabel berdasarkan kolom (columns). Ini efektif jika beberapa kolom sangat sering diakses sementara kolom lain (terutama yang berukuran besar) jarang diakses. Dengan memisahkannya, query yang hanya butuh kolom-kolom penting akan membaca lebih sedikit data page.

Schema Tuning: Denormalisasi

Denormalisasi adalah proses yang secara sengaja “melanggar” atau “memundurkan” hasil normalisasi untuk tujuan performa. Tujuannya adalah untuk meminimalkan kebutuhan operasi JOIN yang mahal. Teknik ini digunakan ketika query yang paling sering dijalankan selalu membutuhkan data dari beberapa tabel yang digabungkan.

Beberapa cara denormalisasi:

  • Menambah Kolom Redundan: Menyalin kolom dari satu tabel ke tabel lain untuk menghindari JOIN.

  • Menambah Kolom Turunan (Derived): Menyimpan hasil agregat (seperti SUM atau COUNT) secara precomputed di dalam tabel.

  • Menggabungkan Tabel (Collapsing): Menggabungkan dua tabel yang memiliki relasi 1-ke-1 menjadi satu tabel.

  • Menggandakan Tabel (Duplicating): Mengambil beberapa bagian dari sebuah tabel yang memiliki relasi 1-ke-1 menjadi dua tabel. Dapat digunakan ketika beberapa orang masih perlu mengakses bagian dari sebuah tabel.

Mengelola Integritas pada Denormalisasi

Denormalisasi mempercepat pembacaan data tetapi memperlambat dan memperumit modifikasi data. Karena data menjadi redundan, integritasnya harus dijaga. Beberapa cara untuk mengelolanya adalah:

  • Triggers: Membuat trigger yang secara otomatis memperbarui data redundan setiap kali data asli berubah. Ini solusi terbaik dari sisi integritas, meski bisa membebani performa.

  • Logika Aplikasi: Menyematkan logika update di dalam setiap transaksi aplikasi. Ini berisiko jika tidak semua developer mengikuti aturan yang sama.

  • Rekonsiliasi Batch: Menjalankan proses batch secara berkala untuk menyinkronkan kembali data. Cocok jika konsistensi 100% tidak diperlukan setiap saat.

Summary

Schema Tuning adalah tentang memodifikasi struktur tabel untuk performa. Ini bisa dilakukan melalui dekomposisi, yaitu memecah tabel secara horizontal (berdasarkan baris) atau vertikal (berdasarkan kolom) untuk mengurangi jumlah data yang diakses. Alternatif lainnya adalah denormalisasi, sebuah teknik yang sengaja menambah redundansi dengan tujuan utama menghilangkan operasi JOIN yang mahal. Namun, denormalisasi memerlukan mekanisme tambahan seperti triggers atau logika aplikasi untuk menjaga integritas data.