_Back to _ IF3140 Sistem Basis Data

Naufarrel Zhafif Abhista 13523149

Soal 1

OperasiCostBanyaknya Tuple
12100
910600
10012222
849133
0 (Pipelined)133
Total2772133 (Tuple final)

Penjelasan:

  1. Untuk seleksi buku dengan atribut penulis bernilai ‘Andrea Hirata’, ada indeks yang berlaku. Maka, digunakan metode A3 (Primary Index, pada Non-Key):
    • Pemindaian dilakukan dengan  blok
    • Tuple:
      • Total ada 500 variasi penulis
      • Hanya akan diambil 1 penulis
      • Karena distribusi seragam, estimasi tuple:  tuple.
  2. Untuk join buku dan peminjaman, kita memiliki 100 tuple buku dari langkah sebelumnya. Kita bisa menggunakan bid dari setiap buku untuk mencari data di Peminjaman menggunakan secondary index-nya. Metode terbaiknya adalah Nested-Loop Join.
    • Cost: Menggunakan formula dasar Nested-Loop Join: .
      • blok.
      • tuple.
      • Cost =  blok.
    • Banyaknya Tuple:
      • Kita mencari berapa kali 100 buku (Hasil #2) dipinjam.
      • Rata-rata peminjaman per buku =   kali.
      • Estimasi tuple = 100 buku * 6 = 600 tuple.
  3. Untuk seleksi pelanggan berumur lebih dari atau sama dengan 21, karena pencarian didasarkan pada umur, dapat dianggap pencarian dilakukan dengan metode A1 (Linear Scan)
    • Pemindaian dilakukan dengan 
    • Tuple:
      • Total ada 24 - 7 + 1 = 18 variasi umur.
      • Kondisi umur >= 21 mencakup umur 21, 22, 23, 24 (4 variasi).
      • Karena distribusi seragam, estimasi tuple:  tuple.
  4. Join hasil Pelanggan dengan Hasil Join Sebelumnya ((Hasil #1) ⋈ (Hasil #3)) dapat menggunakan Hash Join lagi. Hasil join sebelumnya (Hasil #3) lebih kecil dalam jumlah blok, sehingga akan menjadi build input.
    • Cost:
      • Blok Hasil #1:   blok.
      • Blok Hasil #3 (berdasarkan asumsi soal): tuples per block peminjaman = 300.000 / 15.000 = 20. Ukuran tuple hasil join 2x lipat, jadi tuples per block hasil3 = 10. Maka  blok
    • Cost =  blok.
    • Banyaknya Tuple:
      • Dari 600 peminjaman di Hasil #3, kita ingin tahu berapa yang dilakukan oleh pelanggan berumur >= 21.
      • Fraksi pelanggan berumur >= 21 adalah 4/18.
      • Estimasi tuple = 600 * (4 / 18) ≈ 133 tuple.
  5. Proyeksi Nama
    • Karena asumsi mekanisme evaluasi adalah pipeline, hasil dari join terakhir (Hasil #4) langsung dialirkan ke operasi proyeksi tanpa disimpan ke disk.
    • Cost: 0 (biayanya sudah termasuk dalam operasi join sebelumnya).
    • Banyaknya Tuple: Operasi proyeksi tidak mengubah jumlah tuple, hanya kolomnya 133 tuple.

Soal 2

1. Ekspresi Aljabar Relasional Awal

Ekspresi awal yang diberikan adalah:

2. Transformasi dengan Aturan Ekuivalensi

Kita dapat mengoptimalkan ekspresi ini dengan menerapkan aturan “mendorong proyeksi sedini mungkin” (Push Projection). Tujuannya adalah untuk mengurangi ukuran (jumlah atribut/kolom) dari relasi-relasi perantara, sehingga proses join selanjutnya menjadi lebih ringan.

Dengan menerapkan aturan ekuivalensi No. 8 (Distribusi Proyeksi terhadap Join), kita mendapatkan ekspresi baru yang lebih optimal:

Ekspresi ini secara signifikan mengurangi jumlah data yang harus diproses pada setiap langkah join.

3. Rencana Evaluasi (Evaluation Plan) Baru dan Estimasi Biaya

Berikut adalah tabel rencana evaluasi berdasarkan ekspresi yang telah dioptimalkan, dengan memanfaatkan index yang tersedia.

OperasiCost (Akses Blok)**Banyaknya Tuple
10012222
(dari hasil #1)02222
12100
0100
901600
(dari hasil #5)0600
339133
​ (dari hasil #7)0133
Total2253133 (Tuple final)

Penjelasan Estimasi Biaya:

  1. Seleksi Pelanggan & Proyeksi (Hasil #1 & #2):

    • Tidak ada index pada umur, jadi menggunakan Linear Scan. Cost = 1001.

    • Proyeksi ke nama dan pid dilakukan secara pipelined (Cost = 0).

  2. Seleksi Buku & Proyeksi (Hasil #3 & #4):

    • Menggunakan primary index pada penulis. Metodenya adalah Index Scan.

    • Cost = **

    • Proyeksi ke bid dilakukan secara pipelined (Cost = 0). Hasilnya (100 tuple bid) sangat kecil dan hanya membutuhkan 1 blok.

  3. Join Buku dan Peminjaman (Hasil #5):

    • Menggunakan hasil proyeksi Buku (100 tuple bid dalam 1 blok) untuk mencari data di Peminjaman melalui secondary index-nya pada bid. Metode terbaik adalah Index Nested-Loop Join.

    • Cost = .

  4. Join Pelanggan dengan Hasil Join Sebelumnya (Hasil #7):

    • Menggunakan Hash Join. Build input adalah hasil join sebelumnya yang sudah diproyeksi ke pid (600 tuple, sangat kecil, ~1 blok). Probe input adalah hasil proyeksi Pelanggan (2222 tuple).

    • Ukuran blok probe input: Tuple Pelanggan setelah proyeksi lebih kecil, anggap blocking factor menjadi 20. Maka, bprobe​=⌈2222/20⌉=112 blok.

    • Cost = .

Kesimpulan

Dengan menerapkan aturan ekuivalensi (Push Projection) DAN memanfaatkan index yang tersedia, total biaya untuk rencana evaluasi baru ini adalah 2.253.

Ini menunjukkan bahwa rencana ini lebih optimal daripada rencana di soal 1 (yang biayanya 2.772), membuktikan bahwa menerapkan aturan ekuivalensi seperti mendorong proyeksi dapat menghasilkan rencana eksekusi yang lebih cepat dan efisien.