basisdata+temporal

Upload: agus-andrianto

Post on 07-Jul-2015

230 views

Category:

Documents


0 download

TRANSCRIPT

2.1 Basisdata Temporal Basisdata temporal dalam pengertian yang umum adalah meliputi semua aplikasi yang memerlukan informasi waktu ketika semua data diatur dalam basisdata. Aplikasi basisdata temporal telah dikembangkan sejak dahulu ketika penggunaan basisdata ditemukan. Ada banyak aplikasi yang memerlukan data waktu untuk memelihara informasi dalam basisdata. Misalnya Rumah Sakit yang membutuhkan pemeliharaan riwayat penyakit pasien, reservation (hotel, perusahaan penerbangan, persewaan mobil, dan lain-lain) yang mencatat waktu dan tanggal pemesanan, asuransi yang membutuhkan pemeliharaan riwayat klaim dan riwayat kecelakaan. Dalam basisdata perusahaan misalnya, suatu perusahaan akan memelihara data tentang pekerjaan, gaji dan proyek dari seorang pegawai. Dalam aplikasi FRS online juga memelihara data tentang nilai, matakuliah yang diambil oleh mahasiswa tiap semester per tahun ajaran. Fakta-fakta diatas menunjukkan bahwa secara nyata sebagian aplikasi basisdata memiliki beberapa informasi temporal. 2.1.1 Kalender dan Dimensi Waktu Dalam basisdata temporal, waktu dianggap sebagai sequence atau deretan titik dalam granularitas yang ditentukan oleh aplikasi. Seandainya beberapa aplikasi temporal tidak pernah memerlukan unit-unit waktu yang lebih kecil dari satu detik, maka setiap titik waktu bisa ditunjukkan dalam satu detik dengan menggunakan granularitas ini. Namun dalam kenyataannya, setiap detik adalah durasi pendek dari waktu, bukan titik, karena mungkin detik bisa dibagi lagi kedalam bentuk yang lebih kecil yaitu milidetik, mikrodetik dan seterusnya. Para ahli basisdata temporal telah menggunakan istilah chronon sebagai pengganti titik untuk menggambarkan granularitas minimal pada aplikasi tertentu. Konsekuensi utama dengan memilih granularitas minimal adalah kejadian yang terjadi pada saat yang bersamaan akan dianggap sebagai kejadian yang simultan. Karena tidak ada yang mengetahui waktu waktu berawal dan berakhir, maka dibutuhkan suatu panduan yang menunjukkan informasi tentang waktu. Berbagai kalender digunakan sebagai panduan waktu dan bermacam-macam versi seperti kalender Gregorian, kalender Cina, kalender Islam, dan lain-lain dengan acuan yang berbeda.

Sebuah kalender mengorganisasikan waktu menjadi unit-unit waktu yang berbeda. Kebanyakan kalender mengelompokkan 60 detik menjadi 1 menit, 60 menit menjadi 1 jam, 24 jam menjadi 1 hari (berdasarkan rotasi bumi), dan 7 hari menjadi 1 minggu. Lebih jauh lagi mengelompokkan hari menjadi minggu, mengelompokkan minggu menjadi bulan dan bulan menjadi tahun. Pada kalender Gregorian, yang banyak digunakan oleh negara-negara barat, sekumpulan hari dikelompokkan menjadi bulan dan satu bulan bisa terdiri dari 28 hari, 29 hari, 30 hari atau 31 hari dan mengelompokkan 12 bulan menjadi 1 tahun. Pada SQL2, tipe data temporal menggunakan date yang menunjukkan tahun, bulan, tanggal dengan format yyyy-mm-dd), time yang menunjukkan jam, menit dan detik (hh:mm:ss) serta timestamp yaitu kombinasi date dan time dengan pilihan pembagian detik ke dalam sub-sub detik jika diperlukan. Oracle menyatakan timestamp dengan date. 2.1.2 Konsep Temporal Sebuah basisdata temporal akan menyimpan informasi ketika sebuah kejadian terjadi, atau ketika fakta tertentu dianggap benar. Ada beberapa jenis informasi temporal yang berbeda yaitu kejadian titik (point events) dan kejadian durasi (duration events). Point events adalah sebuah titik waktu tunggal dalam sebuah granularitas yang dimasukkan ke dalam basisdata ketika fakta itu terjadi. Sebagai contoh kejadian pada bank yang melayani deposito mungkin berhubungan dengan timestamp ketika transaksi deposito terjadi. Duration events adalah kebalikannya yaitu periode waktu tertentu dalam basisdata. Sebagai contoh seorang pegawai mungkin sudah bekerja pada sebuah perusahaan dari tanggal 15 Agustus 1998 samapai dengan 20 Nopember 2004. Periode waktu ditunjukkan oleh awal dan akhir titik waktu [waktu-mulai, waktuselesai]. Sebagai contoh suatu kejadian ditunjukkan sebagai periode waktu [1998-8-15, 2004-11-20]. Periode waktu demikian seringkali diartikan sebagai kumpulan titik-titik waktu dari waktu-mulai sampai dengan waktu-selesai. Dengan menganggap

granularitasnya hari maka periode waktu [1998-8-15, 2004-11-20] menunjukkan himpunan semua hari dari tanggal 15 Agustus 1998 sampai dengan 20 Nopember 2004.

2.1.3 Waktu Valid dan Waktu Transaksi Fakta tertentu yang berhubungan dengan titik waktu atau periode waktu dalam basisdata bisa diartikan bermacam-macam. Arti yang paling alami dari waktu tersebut adalah waktu ketika suatu kejadian terjadi atau periode waktu dimana sebuah kejadian dianggap benar dalam dunia nyata. Jika pengertian ini digunakan maka waktu tersebut disebut sebagai waktu valid. Basisdata temporal menggunakan arti ini sebagai valid time basisdata. Terdapat juga pengertian lain yaitu jika waktu menunjukkan saat informasi benarbenar dimasukkan kedalam basisdata yaitu nilai dari jam sistem ketika informasi trsebut valid di dalam sistem. Pada kasus ini, waktu tersebut disebut sebagai waktu transaksi. Basisdata temporal menggunakan arti ini sebagai transaction time basisdata. Dua pengertian diatas dianggap yang paling umum dan ditunjuk sebagai dimensidimensi waktu. Pada beberapa aplikasi hanya satu dari dimensi itu yang digunakan dan dalam kasus lain kedua dimensi waktu tersebut digunakan. Basisdata temporal yang menggunakan kedua dimensi waktu tersebut disebut sebagai basisdata bitemporal. 2.1.4 Baris Versioning Pada basisdata relasional bisa ditambahkan atribut waktu yang menandai setiap perubahan pada baris. Penambahan ini dinamakan baris versioning. Menurut kebutuhannya, pembuatan baris versioning berkembang sebagai relasi waktu valid (valid time relation), relasi waktu transaksi (transaction time relation) dan relasi waktu bitemporal (bitemporal relation). 2.1.4.1 Relasi Waktu Valid Sekarang akan dilihat perbedaan jenis basisdata temporal yang ditunjukkan pada model relasional. Pertama, misal akan disertakan riwayat perubahan sebagaimana yang terjadi pada dunia nyata. Contohnya basisdata pada gambar 2.3PEGAWAI NAMA NIP GAJI DNO

DEPARTEMEN DEP_NAMA DNO MGR_NIP

Gambar 2.3 Contoh basisdata PERUSAHAAN Diasumsikan untuk aplikasi ini menggunakan granularitas hari. Kemudian dari kedua relasi diatas PEGAWAI dan DEPARTEMEN diubah menjadi relasi waktu valid dengan cara menambahkan atribut VST (Valid Start Time) dan VET (Valid End Time) yang tipe datanya adalah date karena menggunakan granularitas hari. Hal ini ditunjukkan pada gambar 2.3 dimana relasinya diganti menjadi PEG_VT dan DEPT_VT.PEG_VT NAMA NIP GAJI DNO VST VET

DEPT_VT DEP_NAMA DNO MGR_NIP VST VET

Gambar 2.4 Skema basisdata valid time Misal dibandingkan antara relasi PEG_VT dengan relasi non temporal PEGAWAI pada gambar 2.3. Pada PEG_VT, masing-masing baris V menyajikan informasi pegawai yang valid (di dunia nyata) hanya selama periode waktu [V.VST, V.VET], sementara padaPEGAWAI,

masing-masing baris menyajikan hanya informasi saat ini dari masing-masing

pegawai. Pada PEG_VET, informasi saat ini dari masing-masing pegawai memiliki nilai yang khusus yaitu now sebagai valid end time. Nilai now adalah variabel temporal yang secara implisit menyajikan waktu saat ini. Pada relasi non temporal PEGAWAI hanya akan melibatkan baris dari PEG_VT yang VET-nya adalah now.PEG_VTNAMA Andi Andi Jundi Jundi Jundi Fathur Umar NIP 1234 1234 1222 1222 1222 1231 1331 GAJI 20000 25000 25000 30000 40000 28000 38000 DNO 5 5 4 5 5 4 5 VST 2000-06-15 2001-06-01 1998-08-20 1999-02-01 2000-04-01 1998-05-01 2000-08-01 VET 2001-05-31 Now 1999-01-31 2000-03-31 Now 1999-08-10 Now

DEPT_VTDEP_NAMA Riset Riset DNO 5 5 MGR_NIP 1220 1222 VST 1998-09-20 1999-03-31 VET 1999-03-31 Now

Tabel 2.1 Beberapa versi baris pada relasi valid time PEG_VT dan DEPT_VT Tabel 2.1 diatas menunjukkan beberapa baris pada relasi valid time PEG_VT danDEPT_VT.

Ada dua versi dari Andi, tiga versi dari Jundi, satu versi dari Fathur dan satu

versi dari Umar. Sekarang dapat dilihat bagaimana relasi valid time berlaku ketika informasi diubah. Ketika satu atau lebih atribut dari pegawai diubah, maka tidak akan dilakukan penindasan data pada baris yang diubah tersebut melainkan dengan cara membuat versi yang baru dan menutup versi saat ini dengan cara mengubah VET menjadi waktu berakhir. Pada saat user mengubah gaji Andi pada tanggal 1 Juni 2001 menjadi 25000, versi kedua dari Andi telah dibuat. Pada saat data diubah, versi pertama dari Andi adalah pada kolom VET berisi now, tetapi setelah diubah, now berubah menjadi 31 Mei 2001 (1 hari sebelum tanggal 1 Juni karena menggunakan granularitas hari), untuk menunjukkan bahwa versi tersebut telah ditutup atau tidak berlaku lagi dan versi yang kedua adalah versi yang terbaru. Perlu diperhatikan bahwa pada relsi valid time, user harus menyediakan waktu valid secara umum ketika terjadi perubahan data. Contohnya data gaji Andi yang diubah masuk dalam basisdata pada tanggal 15 Mei 2001jam 8 pagi, walaupun gaji baru yang diterima Andi secara nyata diterima tanggal 1 Juni 2001. Hal ini disebut dengan proactive update, karena data yang dimasukkan dalam basisdata adalah belum terjadi pada dunia nyata. Jika data yang dimasukkan dalam basisdata adalah setelah terjadi pada dunia nyata makan disebut dengan retroactive update. Jika data yang dimasukkan dalam basisdata adalah bersamaan saat terjadi di dunia nyata maka hal ini disebut dengan simultaneous update. Operasi menghapus pegawai dalam basisdata temporal dilakukan dengan menmbahkan valid time untuk menunjukkan bahwa versi saat ini telah ditutup dan tidak berlaku lagi. Contohnya jika Andi meninggalkan pekerjaannya pada 19 Januari 2001, kemudian VET akan diubah dari now menjadi 2001-01-19. Pada tabel 2.1 tidak ada versi saat ini dari Fathur karena dia meninggalkan pekerjaannya pada 1999-08-10 dan secara

logika data tersebut telah terhapus. Tetapi karena menggunakan basisdata temporal, maka informasi Fathur yang lama masih tersedia. Operasi insert pegawai baru dilakukan dengan menciptakan baris versi pertama dari pegawai yang baru tersebut, dan membuat versi saat ini, dengan VST menjadi waktu efektif ketika dia pertama kali bekerja. Pada tabel 2.1 digambarkan Umar yang baru masuk kerja pada 2000-08-01. Perlu dicatat bahwa pada relasi valid time, kunci (key) dari non temporal sepertiNIP

pada PEGAWAI, tidak lagi menjadi unik pada masing-masing baris. Kunci dari relasi

baru PEG_VT adalah kombinasi dari kunci non temporal dan VST. Jadi digunakan (NIP,VST) sebagai

primary key.

2.1.4.2 Relasi Waktu Transaksi Pada basisdata transaction time, ketika terjadi perubahan pada basisdata, timestamp yang sebenarnya dari waktu transaksi perubahan baik itu operasi insert, update maupun delete selalu dicatat. Jika basisdata non temporal PEGAWAI pada contoh diatas diubah menjadi basisdata transaction time, maka akan ditambahkan dengan atribut TST (Transaction Start Time) dan TET (Transaction End Time) yang tipe datanya adalah timestamp. Relasi PEGAWAI dan DEPARTEMEN diatas diubah menjadi PEG_TST danDEPT_TST, PEG_TT NAMA NIP GAJI DNO TST TET

ini ditunjukkan pada gambar 2.5

DEPT_TT DEP_NAMA DNO MGR_NIP TST TET

Gambar 2.5 Skema basisdata transaction time Pada PEG_TT, masing-masing baris V menyajikan versi informasi dari pegawai yang dibuat pada waktu yang sebenarnya yaitu V.TST dan secara logika telah dihapus pada waktu yang sebenarnya yaitu V.TET. pada PEG_TT, versi saat ini dari masing-masing pegawai memiliki nilai khusus yaitu uc (until change) yang menunjukkan waktu transaksi berakhir dan menunjukkan bahwa baris tersebut adalah valid sampai baris tersebut diubah oleh transaksi yang lain.

2.1.4.3 Relasi Waktu Bitemporal Beberapa aplikasi membutuhkan baik valid time maupun transaction time. Basisdata yang menggunakan kedua dimensi waktu tersebut dinamakan basisdata bitemporal. Contohnya terdapat pada gambar 2.6 yang menunjukkan skema relasi waktu bitemporal.

PEG_BT NAMA NIP GAJI DNO VST VET TST TET

DEPT_BT DEP_NAMA DNO MGR_NIP VST VET TST TET

Gambar 2.6 Skema basisdata bitemporal time Pada gambar diatas menunjukkan bagaiman PEGAWAI dan DEPARTEMEN pada relasi non temporal menjadi relasi bitemporal yaitu PEG_BT dan DEPARTEMEN_BT. Tabel 2.2 dibawah menunjukkan beberapa baris dalam relasi bitemporal.PEG_BTNAMA v1 v2 v3 v4 v5 v6 Andi Andi Andi Jundi Jundi Umar NIP 1234 1234 1234 1222 1222 1331 GAJI 20000 20000 25000 30000 30000 38000 DNO 5 5 5 4 4 5 VST 1997-06-15 1997-06-15 1998-06-01 1996-05-01 1996-05-01 1998-08-01 VET now 1998-05-31 now now 1997-08-10 now TST 1997-06-08, 13:05:58 1998-06-04, 08:56:12 1998-06-04, 08:56:12 1996-04-27, 16:22:05 1997-08-12, 10:11:07 1998-07-28, 09:25:37 TET 1998-06-04, 08:56:12 Uc Uc 1997-08-12, 10:11:07 Uc Uc

DEPT_BTD_NAMA v7 v8 v9 Riset Riset Riset DNO 5 5 5 MGR_NIP 1220 1220 1221 VST 1996-09-20 1996-09-20 1997-04-01 VET now 1997-03-31 now TST 1996-09-15, 14:52:12 1997-03-28, 09:23:57 1997-03-28, 09:23:57 TET 1996-03-28, 09:23:57 Uc Uc

Tabel 2.2 Beberapa versi baris pada relasi bitemporal PEG_BT dan DEPT_BT Pada tabel diatas, baris yang memiliki TET uc adalah baris yang menunjukkan informasi valid saat ini, sementara baris yang yang TET-nya adalah timestamp maka baris tersebut valid sampai timestamp tersebut dimasukkan. Atribut TST pada masing-masing baris adalah timestamp yang menunjukkan kapan transaksi tersebut berawal.

Sekarang akan dibahas bagaimana operasi update dilakukan pada relasi bitemporal. Pada model basisdata temporal, tidak ada atribut yang secara fisik berubah pada setiap baris kecuali untuk atribut TET dengan nilai uc. Untuk menggambarkan bagaiman menciptakan sebuah baris baru, maka dicontohkan pada relasi PEG_BT. Versi saat ini V pada pegawai memiliki uc pada atribut TET-nya. Jika suatu atribut misalnya gaji akan diupdate, maka transaksi T yang menunjukkan operasi update harus memiliki dua parameter yaitu nilai baru dari gaji dan VT ketika gaji baru menjadi efektif pada dunia nyata. Diasumsikan bahwa VT- adalah titik waktu sebelum VT diisi dengan nilai granularitas valid time dan transaksi T memiliki timestamp TS(T). Kemudian aturan dibawah ini menunjukkan bagaimana operasi update dilakukan pada tabel PEG_BT: 1. Membuat duplikat v2 pada versi V saat ini; set v2.VET menjadi VT-,v2.TST v2

menjadi TS(T), v2.TET menjadi uc, dan insert v2 pada EMP_BT;

adalah duplikat dari versi V setelah ditutup pada valid time VT-.

2. Membuat duplikat v3 pada versi V saat ini; set v3.VST menjadi VT, v3.VET menjadi now, v3.GAJI menjadi gaji yang baru, v3.TST menjadi TS(T),v3.TET

menjadi uc dan insert v3 pada PEG_BT; v3 menunjukkan versi

yang terbaru saat ini. 3. Set V.TET menjadi TS(T) karena versi yang sekarang sudah tidak menunjukkan lagi informasi yang benar. Seperti pada ilustrasi diatas, dimisalkan 3 baris pertama disebut dengan v1, v2 dan v3 pada PEG_BT. Sebelum gaji Andi berubah dari 20000 menjadi 25000, hanya v1 yang ada pada PEG_BT dan merupakan versi yang saat itu berlaku, TET-nya adalah uc. Kemudian transaksi T yang timestamp TS(T) adalah 1998-06-04, 08:56:12 melakukan update gaji menjadi 25000 dengan valid time yang efektif 1998-06-01. Baris v2 tercipta, yang merupakan duplikat v1 kecuali pada atribut VET yang diset menjadi 1998-05-31, satu hari sebelum valid time yang terbaru dan TST-nya adalah timestamp pada saat terjadi update gaji. Baris v3 juga tercipta, yang memiliki gaji baru, VST-nya diset menjadi 199806-01, dan TST-nya juga timestamp yang menunjukkan waktu transaksi update.

Akhirnya, TET dari v1 diset menjadi timestamp pada saat transaksi terjadi, 1998-06-04, 08:56:12. Sebagai catatan bahwa operasi diatas menggunakan retroactive update. Untuk operasi delete pada model relasi bitemporal digunakan contoh v4 dan v5 dari relasi PEG_BT diatas. Disini pegawai yang bernama Jundi meninggalkan perusahaan pada 10 Agustus 1997, dan operasi delete secara logika ditunjukkan oleh transaksi T dengan TS(T) = 1997-08-12, 10:11:07. Sebelumnya, v4 adalah versi saat ini dan TETnya adalah uc. Operasi delete secara logika diimplementasikan dengan mengeset v9.TET menjadi 1997-08-12, 10:11:07, dan menciptakan versi akhir v5 untuk Jundi dengan VET adalah 1997-08-10. Untuk operasi insert versi pertama untuk pegawai baru ditunjukkan oleh contohv6.

Disini pegawai yang bernama Umar masuk ke perusahaan secara logika ditunjukkan

oleh transaksi T(TS) = 1998-07-28, 09:25:37, dengan VET diset menjadi now dan TET diset menjadi uc.