BAB I PENDAHULUAN 1.1 Latar Belakang Fungsi agregasi adalah suatu fungsi yang menerima sebuah koleksi (set atau multiset) nilai sebagai masukan dan mengembalikan sebuah nilai [SIL02]. Beberapa fungsi agregasi yang umumnya dikenal adalah AVG (rata-rata), MIN (minimum), MAX (maksimum), SUM (total), dan COUNT (jumlah). Operator agregasi pada sistem basis data menerima masukan berupa relasi atau atribut dari sebuah relasi dan mengembalikan keluaran sebuah nilai atau relasi summary. Pemrosesan operator agregasi ini biasanya dilakukan dengan terlebih dahulu mempartisi relasi masukan menjadi beberapa kelompok tuple dengan nilai yang identik untuk satu atau lebih atribut, kemudian menerapkan fungsi agregasi untuk masing-masing kelompok tuple tersebut [BOH06]. Penerapan fungsi agregasi pada basis data memiliki peranan yang cukup penting, terutama pada aplikasi seperti data warehouse yang membutuhkan summary dari keseluruhan data. Saat ini, aplikasi basis data pada dunia nyata, seperti pada bidang keuangan, medis, dan sains, banyak yang membutuhkan pengelolaan aspek waktu dari data yang disimpan. Basis data yang mendukung aspek waktu, di luar waktu yang didefinisikan oleh user (user-defined time), disebut basis data temporal [JEN98]. Aspek temporal yang umumnya didukung oleh basis data temporal adalah valid time yang berkaitan dengan keberlakuan data di dunia nyata dan transaction time yang berkaitan dengan waktu ketika data dicatat pada basis data. Dengan adanya aspek temporal ini, maka pemrosesan fungsi agregasi pada basis data temporal akan menjadi lebih kompleks karena harus memperhatikan dimensi waktu dari data yang disimpan. Biasanya pemrosesan fungsi agregasi terhadap data temporal memerlukan proses tambahan pada saat mempartisi relasi masukan menjadi kelompok tuple, yaitu mengelompokkan data yang memiliki keberlakuan waktu yang sama. Sebenarnya saat ini sudah ada beberapa metode yang dikembangkan untuk memproses fungsi agregasi pada basis data temporal seperti pada [MOT97, KIM99, MOO00, GOV03, TAO04, BOH06]. Namun mereka hanya membahas pemrosesan fungsi agregasi untuk relasi valid-time, yaitu relasi yang hanya mendukung dimensi temporal valid time. Sedangkan untuk relasi bitemporal, yaitu relasi yang mendukung dimensi temporal valid time dan transaction time, belum ada yang membahas. Agar penanganan fungsi agregasi pada basis data temporal yang ada dapat digunakan untuk relasi bitemporal, maka dibutuhkan suatu pengembangan sehingga aspek waktu yang ditangani tidak hanya valid time saja, tetapi juga meliputi transaction time. I-1 I-2 Salah satu algoritma yang telah dikembangkan untuk memproses fungsi agregasi untuk relasi valid time adalah aggregation tree [KLI95]. Algoritma ini menggunakan struktur pohon untuk mengelompokkan data yang memiliki keberlakuan waktu yang sama. Setelah pohon dibangun, nilai agregasi dapat dihitung dengan prosedur depth first search. Salah satu kekurangan dari algoritma ini adalah dalam hal penanganan query dengan fungsi agregasi yang mengandung klausa GROUP BY di mana sebelum diproses relasi masukan harus dipartisi terlebih dahulu berdasarkan nilai suatu atribut. Dengan algoritma ini, penanganan jenis query tersebut mengharuskan pembangunan pohon untuk masing-masing kelompok tuple. Agar pemrosesan query dengan GROUP BY tidak perlu membangun sejumlah pohon, dibutuhkan modifikasi terhadap struktur aggregation tree. Untuk memodelkan relasi bitemporal, para ahli telah mengembangkan suatu model konseptual yang disebut dengan bitemporal conceptual data model (BCDM). Ide utama dari BCDM adalah menambahkan aspek temporal ke dalam fakta yang tersimpan pada basis data dengan tetap mempertahankan kesederhanaan model relasional. Setiap tuple pada basis data diberikan timestamp yang berupa himpunan (tt, vt) yang berarti pada status basis data di waktu tt (transaction time), fakta yang tersimpan pada tuple valid di dunia nyata pada waktu vt (valid time). Walaupun strukturnya sederhana, namun representasi internal BCDM sulit untuk diimplementasikan. Oleh karena itu, dibutuhkan suatu model representasi yang memungkinkan model konseptual ini dapat diimplementasikan pada sebuah relational database management system (RDBMS). Beberapa model representasi relasi bitemporal baik dengan bentuk relasi 1NF (First Normal Form) maupun N1NF (Non First Normal Form) telah diusulkan, dengan kekurangan dan kelebihannya masing-masing [JEN94]. Pada bentuk 1NF, aspek waktu dilekatkan pada tuple, sedangkan pada bentuk N1NF, aspek waktu dilekatkan pada level atribut. Salah satu permasalahan pada bentuk 1NF adalah redundansi data. Sedangkan pada N1NF, permasalahan muncul karena hingga saat ini RDBMS yang ada hanya melakukan pengelolaan data dalam bentuk 1NF, sehingga bentuk N1NF tidak dapat diimplementasikan secara langsung pada RDBMS. Beberapa bahasa query telah dikembangkan untuk memudahkan perancangan basis data temporal. Bahasa query ini disebut dengan bahasa query temporal. Umumnya bahasa query temporal merupakan pengembangan dari bahasa query relasional dengan menambahkan beberapa keyword dan sintaks untuk query yang membutuhkan penanganan dimensi waktu yang didukung oleh basis data temporal (query temporal). Salah satu bahasa tersebut adalah TSQL2 yang dikembangkan dari bahasa query SQL92. Karena relasi bitemporal pada tugas akhir ini diimplementasikan pada RDBMS, dibutuhkan suatu mekanisme konversi query temporal, dalam hal ini query retrieval yang mengandung fungsi agregasi, menjadi bahasa query relasional, sehingga query temporal terhadap relasi bitemporal dapat diproses. I-3 1.2 Rumusan Masalah Berdasarkan latar belakang yang telah dijabarkan, maka rumusan masalah yang akan dikaji pada tugas akhir ini adalah: 1. Bagaimana fungsi agregasi diterapkan pada data temporal yang memperhatikan aspek temporal dari data, terutama pada relasi bitemporal. 2. Bagaimana mengembangkan lebih lanjut metode pemrosesan fungsi agregasi menggunakan aggregation tree untuk relasi valid-time sehingga dapat digunakan untuk relasi bitemporal. 3. Bagaimana memodifikasi aggregation tree agar dapat menangani query yang mengandung klausa GROUP BY tanpa harus membangun pohon untuk masing-masing kelompok tuple relasi masukan, dan dapat memproses query yang mengandung fungsi agregasi spesifik temporal. 4. Bagaimana melakukan konversi query temporal dengan fungsi agregasi dalam bahasa TSQL2 menjadi bahasa query standar SQL92 untuk mendukung metode pemrosesan agregasi terhadap relasi bitemporal yang disimpan dalam sebuah RDBMS. 1.3 Tujuan Tujuan utama dari tugas akhir ini adalah melakukan analisis penanganan fungsi agregasi pada relasi bitemporal dengan mengembangkan lebih lanjut algoritma aggregation tree. Adapun tujuan lebih rinci yang ingin dicapai pada pelaksanaan tugas akhir ini adalah: 1. Menganalisis penerapan fungsi agregasi pada relasi bitemporal. 2. Memahami metode pemrosesan fungsi agregasi yang telah dikembangkan untuk relasi validtime menggunakan aggregation tree. 3. Melakukan modifikasi terhadap aggregation tree agar dapat menangani query dengan klausa GROUP BY tanpa harus membangun pohon untuk masing-masing kelompok tuple relasi masukan, dan dapat memproses query yang mengandung fungsi agregasi spesifik temporal. 4. Menentukan sebuah metode pemrosesan query temporal dalam bahasa TSQL2 yang mengandung fungsi agregasi terhadap relasi bitemporal yang disimpan pada RDBMS. 5. Membangun sebuah perangkat lunak sebagai antarmuka (middleware) yang dapat memproses masukan query temporal dengan fungsi agregasi terhadap suatu relasi bitemporal yang telah direpresentasikan pada sebuah RDBMS dan kemudian menampilkan hasilnya. 1.4 Batasan Masalah Pelaksanaan tugas akhir ini menggunakan batasan-batasan sebagai berikut: 1. Query yang ditangani adalah query retrieval data dengan operator fungsi agregasi yang tidak mengandung subquery dan operasi himpunan, serta hanya melibatkan sebuah relasi. 2. Kapasitas memory yang digunakan untuk pemrosesan agregasi diasumsikan tidak berhingga. I-4 3. Mengadopsi sintaks query temporal TSQL2, yang dikembangkan berdasarkan BCDM dan merupakan ekstensi dari SQL92 yang banyak digunakan sebagai bahasa query standar oleh RDBMS umumnya. 4. Perangkat lunak hanya spesifik untuk sebuah RDBMS tertentu. 1.5 Metodologi Pelaksanaan tugas akhir ini menggunakan metodologi dengan tahapan sebagai berikut: 1. Studi literatur Pada tahap ini, dipelajari berbagai macam literatur yang terkait dengan topik tugas akhir, seperti literatur yang membahas tentang basis data temporal, model representasi relasi bitemporal pada RDBMS, sintaks query temporal TSQL2 secara umum dan yang terkait dengan fungsi agregasi, serta literatur mengenai pemrosesan fungsi agregasi pada basis data konvensional maupun pada basis data temporal relasi valid-time terutama mengenai aggregation tree. 2. Analisis permasalahan Hal-hal yang dianalisis pada tahap ini meliputi: a. Penerapan fungsi agregasi terhadap data temporal pada relasi bitemporal. b. Penerapan algoritma aggregation tree untuk relasi bitemporal. c. Modifikasi aggregation tree untuk penanganan fungsi agregasi spesifik temporal dan klausa GROUP BY. d. Metode pemrosesan query temporal dengan fungsi agregasi dalam bahasa TSQL2 terhadap relasi bitemporal yang disimpan pada RDBMS. 3. Pembangunan perangkat lunak Tahap ini dapat dibagi menjadi beberapa sub-tahap sebagai berikut: a. Analisis kebutuhan perangkat lunak. b. Perancangan perangkat lunak berdasarkan hasil analisis, termasuk di dalamnya perancangan antarmuka Graphical User Interface (GUI). c. Implementasi perangkat lunak. 4. Pengujian hasil analisis metode pemrosesan fungsi agregasi didasarkan pada hasil query menggunakan perangkat lunak yang telah dibangun. 5. Penarikan kesimpulan berdasarkan hasil pengujian yang telah dilakukan. 1.6 Sistematika Pembahasan Buku laporan tugas akhir ini disusun berdasarkan sistematika pembahasan sebagai berikut: BAB I Berisi pendahuluan yang menguraikan tentang latar belakang masalah, rumusan masalah, tujuan, batasan masalah, metodologi, dan sistematika pembahasan buku tugas akhir. I-5 BAB II Berisi dasar teori yang menjelaskan tentang teori-teori terkait pelaksanaan tugas akhir yaitu mengenai basis data temporal, BCDM dengan model representasinya, dan fungsi agregasi termasuk algoritma pemrosesan agregasi yang sudah dikembangkan sebelumnya. BAB III Berisi analisis permasalahan yang meliputi analisis fungsi agregasi pada relasi bitemporal, jenis-jenis query temporal terhadap relasi bitemporal, algoritma pemrosesan agregasi menggunakan aggregation tree termasuk modifikasi yang diperlukan untuk dapat diterapkan pada relasi bitemporal dan menangani fungsi agregasi spesifik temporal dan klausa GROUP BY, serta pemrosesan query temporal terhadap relasi bitemporal yang disimpan dalam RDBMS hingga mendapatkan hasilnya. BAB IV Berisi penjelasan mengenai pembangunan perangkat lunak untuk menguji analisis yang telah dilakukan sebelumnya beserta pengujian yang dilakukan. BAB V Berisi kesimpulan dari pelaksanaan tugas akhir dan saran untuk pengembangan selanjutnya.