Minggu, 20 Oktober 2013

Manajemen Transaksi part 1

1.konsep Transaksi

Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian pengubahan data. 

DBMS yang kita gunakan harus dapat menjamin bahwa setiap satuan transaksi harus dikerjakan secara utuh atau tidak sama sekali. Tidak boleh ada transaksi yang hanya dikerjakan sebagian karena hal itu akan dapat menyebabkan adanya inkonsistensi basis data. 


 Karakteristik Transaksi

-Atomicity (Atomik), yaitu dimana operasi-operasi didalam suatu transaksi harus dapat dikerjakan semua atau tidak dikerjakan sama sekali. 
-Consistentcy (Konsisten), dimana eksekusi transaksi secara tunggal harus dapat menjamin data tetap konsisten setelah sebuah transaksi berakhir.
-Isolated (Terisolasi), jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan secara bersamaan maka semua transaksi yang dilaksanakan pada saat yang bersamaan tersebut harus bisa dimulai dan harus bisa berakhir.
-Durability (Daya Tahan), di mana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya system mati/ down.

Status Transaksi

-Active (Aktif), yang merupakan status awal (initial state) sebuah transaksi yang menunjukkan transaksi tersebut masih dieksekusi.
-Partially Committed (Berhasil Sebagian), yaitu keadaan yang dicapai oleh suatu transaksi tepat pada saat operasi/ instruksi terakhir dalam transaksi selesai dikerjakan.
-Failed (Gagal), yang merupakan keadaan dimana sebuah transaksi terhenti pengeksekusiannya sebelum tuntas sama sekali.
-Aborted (Batal)yaitu keadaan dimana sebuah transaksi dianggap tidak/belum dikerjakan.
-Committed (Berhasil Sempurna)keadaan di mana transaksi telah dinyatakan berhasil dikerjakan seluruhnya

Transaksi mengakses data dengan operasi:

-read(X), mentransfer data item X dari database ke local buffer yang dimiliki oleh transaksi yang mengeksekusi operasi pembacaan (read)
-write(X), mentransfer data item X dari local buffer dari aksi transaksi yang mengeksekusi perintah penulisan kembali ke database (write)

Contoh Implementasi Transaksi

misal transaksi transfer uang sebesar $50 dari rekening A ke rekening B, maka transaksi tersebut dapat di definisikan sebagai berikut:

read(A)
A:=A-50
write(A)
read(B)
•B:=B+50
•write(B)






Manajemen Transaksi part 2

1.Protocol Transaksi Konkruen

Eksekusi Konkurensi

Pada eksekusi konkurensi, banyak transaksi dimungkinkan untuk diproses secara bersama-sama dalam suatu sistem.
Memperbolehkan banyak transaksi untuk mengupdate data secara konkuren akan menyebabkan beberapa komplikasi dengan konsistensi data dan untuk memastikan bahwa konsistensi tetap terjaga dengan baik pada eksekusi konkuren, membutuhkan usaha yang lebih kuat.

Keuntungan konkurensi :
- Meningkatkan utilitas disk dan prosesor

- Mengurangi rata – rata waktu respon transaksi

Schedule

Dalam konkurensi dikenal dengan konsep penjadwalan (schedule) yang akan membantu mengidentifikasi eksekusi agar konsistensi datanya tetap terjaga
Penjadwalan / Schedule merupakan urutan yang mengindikasikan urutan kronologis instruksi yang mana dari transaksi konkuren yang akan dieksekusi.

Misal T1 adalah transaksi transfer $50 dari A ke B, dan T2 adalah transfer 10% dari jumlah rekening A ke B. Penjadwalan berikut adalah pada transaksi serial, dimana T1 dulu yang diselesaikan baru diikuti oleh T2














Contoh penjadwalan selanjutnya, dengan transaksi yang sama, tetapi dalam bentuk transaksi konkurensi, tapi ekivalen dengan penjadwalan sebelumnya.















Pada contoh penjadwalan yang pertama dan yang kedua, jumlah rekening A + B sebelum dan sesudah transaksi sama, tapi tidak dengan contoh penjawalan konkurensi berikut :

Manajemen Transaksi part 4

3.Serializability

merupakan pengontrolan secara konkurensi kepada kebenaran dari kriteria yang membutuhkan eksekusi konkuren dari transaksi dan harus ekuivalen terhadap efek dari eksekusi serial transaksi tersebut.
Sistem basis data harus dapat mengontrol eksekusi konkurensi dari suatu transaksi untuk memastikan database tetap terjaga konsistensinya
Eksekusi secara serial pada suatu transaksi dapat menjaga database tetap konsisten
Sebuah jadwal (yang mungkin konkuren), serializable jika setara dengan penjadwalan secara serial. Pada bagian ini ada dua bentuk ekivalensi penjadwalan (Schedule Equivalence) : Conflict dan View Serializability
Pada serializability kita abaikan operasi selain dari instruksi read dan write, serta diasumsikan bahwa transaksi dapat melakukan perhitungan terhadap data di dalam buffer lokal diantara instruksi read dan write.

Conflict Serializability

Instruksi Ii dan Ij masing – masing dari transaksi Ti dan Tj , konflik jika dan hanya jika ada beberapa item data yang sama (Q) diakses secara bersama – sama baik oleh Ii dan Ij , serta setidaknya salah satu dari instruksi melakukan operasi write (Q).
1. Jika Ii = read(Q) dan Ij = read(Q), maka Ii dan Ij tidak konflik
2. Jika Ii = read(Q) dan Ij = write(Q), maka Ii dan Ij konflik
3. Jika Ii = write(Q) dan Ij = read(Q), maka Ii dan Ij konflik

4. Jika Ii = write(Q) dan Ij = write(Q), maka Ii dan Ij konflik

Secara intuitif, konflik diantara Ii dan Ij memaksakan perintah logika temporal diantara keduanya
Jika Ii dan Ij merupakan instruksi dari transaksi berbeda dan tidak konflik, maka urutan instruksi Ii dan Ij dapat ditukar sehingga menghasilkan jadwal baru dengan hasil yang tetap sama
Jika jadwal S dapat ditransformasikan menjadi jadwalan S’oleh serangkaian pertukaran instruksi yang non-konflik, maka bisa dikatakan S dan S’ adalah conflict equivalent
Bisa dikatakan bahwa jadwal S adalah conflict serializable jika conflict equivalent terhadap penjadwalan serial
Contoh penjadwalan yang tidak conflict serializable :







Penjadwalan 3 di bawah bisa ditransformasikan ke penjadwalan 1, penjadwalan serial dimana T2 diikuti T1 , dengan serangkaian penukaran instruksi yang tidak konflik. Oleh karena itu penjadwalan di bawah ini conflict serializability :














  View  Serializability

Misalkan S dan S’ adalah dua jadwal dengan serangkaian transaksi yang sama. S dan S’ adalah view equivalent.
view serializability dilihat berdasarkan pada operasi read dan write saja.
Sebuah jadwal S adalah view seralizable , setara dengan penjadwalan serial.
Setiap penjadwalan conflict serializable, juga view seriable 
Penjadwalan di bawah ini adalah penjadwalan yang view serializable tapi tidak conflict serializable.







Penjadwalan di bawah menghasilkan outcome yang sama sebagai jadwal serial (T1, T2)


Manajemen Transaksi part 3

2.Recoverability

Recovery merupakan upaya untuk mengembalikan basis data ke keadaaan yang dianggap benar setelah terjadinya suatu kegagalan.

Jenis-jenis kerusakan/kegagalan pada DBMS

1.Kegagalan Transaksi (Transaction Failure)
•Kesalahan logika (Logical Error), di mana program/ sistem tidak dapat melanjutkan eksekusi normalnya karena adanya kondisi internal tertentu seperti masukan yang salah/ rusak, data tidak tersedia, nilai data diluar batas domain yang diperbolehkan (overflow), logika program yang tidak tepat (bugs) atau batas sumber daya sistem (resource) seperti memori  habis.
•Kesalahan sistem (System Error), dimana program/ sistem telah memasuki kondisi yang tidak diharapkan seperti terjadinya deadlock , sebagai hasil dari tidak tereksekusinya program/ sistem secara normal

2.Kerusakan sistem (System Crash)

Hardware macet (hang), menyebabkan isi media penyimpanan sementara (volatile storage) hilang

3. Kegagalan/ kerusakan Disk (Disk Failure)

terjadinya bad sector atau disk macet pada saat berlangsungnya operasi I/O ke disk.

Teknik Recovery

Prosedur recovery yang digunakan tergantung dari kegagalan yang terjadi pada basis data. Terdapat 2 kasus kerusakkan : 

1.Jika basis data rusak secara fisik seperti : disk head crash dan menghancurkan basis data,  maka  yang  terpenting  adalah  melakukan  penyimpanan kembali  backup  basis data yang  terakhir  dan  mengaplikasikan kembali  operasi-operasi  update transaksi yang telah commit dengan menggunakan log file. Dengan asumsi bahwa log file-nya tidak rusak.

2.Jika basis data tidak rusak secara fisik  tetapi  menjadi tidak konsisten, sebagai contoh  :  sistem  crash  sementara  transaksi  dieksekusi,  maka  yang  perlu dilakukan  adalah   membatalkan   perubahan-perubahan   yang   menyebabkan basis data tidak  konsisten. Mengulang beberapa transaksi sangat diperlukan juga untuk meyakinkan  bahwa  perubahan2  yang  dilakukan  telah  disimpan di dalam secondary  storage

Disini tidak perlu menggunakan salinan backup basis data, tetapi me-rastore basis data ke dalam keadaan yang konsisten dengan menggum=nakan before dan after-image yang di tangani oleh log fire

Ada 3 teknik utama dalam melakukan recovery:


         1.Defered upate / perubahan yang ditunda :

                Perubahan pada basis data tidak akan berlangsung sampai transaksi ada pada poin disetujui (COMMIT). Jika terjadi kegagalan maka tidak akan terjadi perubahan, tetapi diperlukan operasi UNDO untuk mencegah akibat dari kegagalan tersebut.

2.Immediate Update / perubahan langsung :
Perubahan Di teknik ini, database akan diupdate oleh beberapa   transaksi sebelum transaksi mencapai titik point. Operasi secara khusus disimpan di log pada disk dengan force-writing sebelum diaplikasikan ke  database. Jika transaksi gagal setelah menyimpan beberapa perubahan pada database tetapi mencapai titik commit, efek dari operasi pada database harus undone (lepas/ buka); harus rolled back.
Jika transaksi mencapai commit sebelum semua perubahan ditulis ke database dikenal dengan algoritma UNDO/ REDO. Variasi dari algoritma ini adalah semua update disimpan dalam database sebelum  sebuah transaksi mencapai commit (membutuhkan hanya UNDO), dikenal dengan algoritma UNDO/NO-REDO

3.Shadow Paging :
          Menggunakan page bayangan dimana pada prosesnya terdiri dari 2 tabel yang sama, yang satu menjadi tabel transaksi dan yang lain digunakan sebagai cadangan. Ketika transaksi mulai berlangsung kedua tabel ini sama dan selama berlangsung tabel transaksi yang menyimpan semua perubahan ke database, tabel bayangan akan digunakan jika terjadi kesalahan.
Keuntungannya adalah tidak membutuhkan REDO atau UNDO, kelemahannya membuat terjadinya fragmentasi.



Selasa, 08 Oktober 2013

Tugas 2

Manajemen Transaksi

Tugas 1

Operator Relasional

Operator Relasional bag.2

2.Struktur Query Language
    
       Merupakan sekumpulan perintah khusus yang digunakan untuk mengakses data dalam database relasional.

Tiga clause yg menjadi dasar dari sebuah ekspresi SQL 

1. Select, digunakan untuk menetapkan daftar atribut (field) yang diinginkan sebagai hasil dari query.
2. From, digunakan untuk menetapkan tabel (atau gabungan tabel) yang akan ditelusuri selama query data dilakukan.
3. Where, sifatnya opsional, digunakan sebagai predikat (kriteria) yang harus dipenuhi dalam memperoleh hasil query.

Bentuk umum dari SQL query adalah:
                                         select A1, A2, ... , An
                                         from t1,t2, ...,tm
                                         [ where P ]

dimana :
A1, A2, … , An merupakan daftar atribut.
t1, t2,  …, tm merupakan daftar tabel/relasi
P merupakan predikat query.
[ ]  merupakan tanda opsional (boleh digunakan, boleh tidak digunakan).




Penggunaan Clause Select dan Clause From 











Menampilkan kolom name dan age pada relasi Students
Select name, age
From Students









Menampilkan kolom name pada relasi Students
Select name
From Students









Penggunaan Clause where

Tentukan tupel pada Students, yang namenya = Smith
Select *
From Students
Where name = “Smith”









Tentukan tupel pada Students, yang agenya >=18 dan gpa >=3.0 
Select *
From Students
Where age>=18 and gpa>=3.0







Operator Relasional bag.1

1.Relasi Aljabar
      
       Merupakan kumpulan operasi terhadap relasi, dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru. relasi aljabar juga lebih bersifat operasional, dan sangat berguna untuk merepresentasikan eksekusi perencanaan.

Jenis Operasi


1.
 Union ( È )  
 A È B adalah relasi dengan atribut yang sama untuk setiap A dan B, dimana terdiri dari semua himpunan yang terdapat pada A atau B atau kedua-duanya.



2. Intersect ( Ç )
 A Ç B adalah relasi dengan atribut yang sama untuk setiap A dan B, dimana terdiri dari semua himpunan  yang terdapat pada A dan B.











3. Difference ( - )
 A - B adalah relasi dengan atribut yang sama untuk setiap A dan B, dimana terdiri dari semua himpunan yang terdapat pada A, tetapi tidak terdapat pada B.











4. Cartesian Product ( X/TIMES)
  A TIMES B adalah relasi yang terdiri dari semua himpunan untuk setiap elemen relasi pada A dikombinasikan dengan semua elemen pada relasi B.










5. Select (s) Operation
  adalah ekstraksi terhadap suatu baris pada suatu relasi yang memenuhi kondisi tertentu. Kondisi untuk relasi, direpresentasikan menggunakan klausa WHERE dan dapat dikombinasikan dengan operator logika dan/atau matematika.











Menentukan tupel pada Students, yang namenya = Smith
sname=“Smith”(Students)







Menentukan tupel pada Students, yang agenya ³18 dan gpa > 3.0
sage³18 Ùgpa>3.0(Students)








6. Project (p) Operation
  
adalah ekstraksi terhadap suatu atribut (kolom) pada suatu relasi yang memenuhi kondisi tertentu.











Menampilkan kolom name pada relasi Students
pname(Students)







Menampilkan kolom name dan age pada relasi Students
• pname,age(Students)









Operasi Tambahan

 
1. 
Operasi Join (  )
   Digunakan untuk menggabungkan dua relasi atau lebih dengan hasil berupa gabungan dari kolom-kolom yang berasal dari relasi-relasi tersebut.


2.Condition Join/Theta Join
  
Menghasilkan suatu relasi gabungan yang memiliki tupel-tupel sesuai dengan kondisi kondisi yang telah ditentukan.

3
3.Natural Join
  Digunakan untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria pada kolom yang sama

4.Operasi Division (/)
  Menghasilkan suatu relasi dari dua buah relasi yang terdiri dari atribut/kolom dari relasi A yang tidak terdapat pada relasi B dengan tupel-tupel dari relasi A yang memiliki kesamaan dengan tupel-tupel yang ada pada relasi B secara keseluruhan dan tidak terdapat duplikasi data.