Basis Data Temporal

Document Sample
Basis Data Temporal Powered By Docstoc
					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, waktu-
selesai]. 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 benar-
benar 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 dimensi-
dimensi 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.3
PEGAWAI
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 pada
PEGAWAI,   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_VT
NAMA       NIP         GAJI         DNO   VST            VET
Andi       1234        20000        5     2000-06-15     2001-05-31
Andi       1234        25000        5     2001-06-01     Now
Jundi      1222        25000        4     1998-08-20     1999-01-31
Jundi      1222        30000        5     1999-02-01     2000-03-31
Jundi      1222        40000        5     2000-04-01     Now
Fathur     1231        28000        4     1998-05-01     1999-08-10
Umar       1331        38000        5     2000-08-01     Now
DEPT_VT
DEP_NAMA       DNO     MGR_NIP       VST           VET
Riset          5       1220          1998-09-20    1999-03-31
Riset          5       1222          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 dan
DEPT_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 seperti
NIP   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 dan
DEPT_TST,   ini ditunjukkan pada gambar 2.5
PEG_TT
NAMA       NIP       GAJI         DNO     TST    TET


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_BT
     NAMA      NIP          GAJI      DNO     VST            VET            TST                    TET
v1   Andi      1234         20000     5       1997-06-15     now            1997-06-08, 13:05:58   1998-06-04, 08:56:12
v2   Andi      1234         20000     5       1997-06-15     1998-05-31     1998-06-04, 08:56:12   Uc
v3   Andi      1234         25000     5       1998-06-01     now            1998-06-04, 08:56:12   Uc
v4   Jundi     1222         30000     4       1996-05-01     now            1996-04-27, 16:22:05   1997-08-12, 10:11:07
v5   Jundi     1222         30000     4       1996-05-01     1997-08-10     1997-08-12, 10:11:07   Uc
v6   Umar      1331         38000     5       1998-08-01     now            1998-07-28, 09:25:37   Uc



DEPT_BT
      D_NAMA          DNO     MGR_NIP       VST            VET            TST                      TET
v7    Riset           5       1220          1996-09-20     now            1996-09-15, 14:52:12     1996-03-28, 09:23:57
v8    Riset           5       1220          1996-09-20     1997-03-31     1997-03-28, 09:23:57     Uc
v9    Riset           5       1221          1997-04-01     now            1997-03-28, 09:23:57     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    menjadi TS(T), v2.TET menjadi uc, dan insert v2 pada EMP_BT;
               v2   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 1998-
06-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 TET-
nya 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 contoh
v6.   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.

				
DOCUMENT INFO
Description: Basisdata temporal dalam pengertian yang umum adalah meliputi semua aplikasi yang memerlukan informasi waktu ketika semua data diatur dalam basisdata. A