Tutorial membuat softbox lighting
mari kita liat video berikut di bawah ini
jangan lupa like,koment dan subscribe
jika bermanfaat silahkan bagi, bila menyukai silahkan di like/suka. bila menunggu video lainnya yang bermanfaat silahkan di subscribe
like koment dan subscribe tidak membuat anda rugi maupun membayar, ini sangat gratis tanpa di pungut biaya
thanks before
JS
Saturday, November 4, 2017
Sunday, October 29, 2017
Pembahasan transaksi manajemen
Abstrak : Transaksi adalah sebuah aksi atau serangkaian
aksi, yang dilakukan oleh user atau aplikasi yang mengakses atau mengubah isi
dari database atau dapat juga dikatakan sebagai unit kerja logical (Logical
unit of work) dari suatu database, sehingga yang dimaksud dengan majemen
transaksi (transaction management) adalah pengaturan transaksi-transaksi
yang digunakan/diakses oleh suatu aplikasi/sistem. Transaksi-transaksi ini
perlu diatur untuk mempertahankan ACID (atomicity, consistency, isolation, and
durability). Selain transaksi terdapat pula concurrency control atau
konkurensi kontrol, concurrency control atau konkurensi kontrol merupakan suatu
sistem manajemen database ( DBMS ) konsep yang digunakan untuk mengatasi
konflik dengan mengakses simultan atau mengubah data yang dapat terjadi dengan
sistem multi-user. Kontrol konkurensi, bila diterapkan ke DBMS, dimaksudkan
untuk mengkoordinasikan transaksi simultan sambil menjaga integritas
data banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu
(waktu bersamaan). Serta ada pula recovery system yakni suatu cara utuk
mengembalikan data yang sudah rusak kembali menjadi benar atau baik.
PEMBAHASAN
A. Transaksi
Transaksi adalah sebuah aksi atau serangkaian aksi, yang dilakukan oleh user
atau aplikasi yang mengakses atau mengubah isi dari database atau transaksi
juga bisa diartikan sebagai pengeksekusian sebuah program/aplikasi yang
melakukan pengaksesan dan perubahan basis data. Namun apabila kita ingin
melakukan transaksi data setelah melakukan transksi haruslah tetap konsisten
dan DBMS yang kita gunakan juga harus menjamin bahwa setiap transaksi harus
dapat dikerjakan secara utuh atau tidak sama sekali. Tidak boleh ada
transaksi yang hanya dikerjakan sebagian, karena dapat menyebabkan
inkonsistensi basis data. Misalkan ketika kita melakukan pengubahan,
penambahan atau penghapusan suatu tabel maka akan berdampak pada isi tabel
tersebut dan pada saat eksekusi transaksi terjadi kagagalan, maka akan
menimbulkan ketidak konsistenan integrasi antar tabel. Namun Untuk
menjamin agar integritas dapat tetap terpelihara maka setiap transaksi harus
memiliki sifat-sifat:
1. Atomik,
merupakan satu kesatuan tunggal yang tidak dapat dipisah laksanakan perkerjaannya
dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak
sama sekali.
2. Konsisten,
dimana eksekusi transaksi secara tunggal harus dapat menjamin data tetap
konsisten setelah transaksi berakhir.
3. 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 dapat dimulai dan bisa berakhir.
4. Bertahan,
dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan
baik, harus dapat bertahan bahkan jika seandainya sistem menjadi mati.
Terhentinya suatu
transaksi tidak selalu diakibatkan oleh kegagalan insidental baik dari
perangkat keras (crash) ataupun kemacetan sistem operasi (hang). Tapi
lebih sering terjadi karena user sengaja menghentikan transaksi atau karena
penghentian transaksi oleh DBMS akibat adanya kondisi tak diinginkan, seperti
deadlock atau timeout.
Sebuah transaksi dapat
menghasilkan dua kemungkinan:
a. Jika
dilaksanakan lengkap seluruhnya, transaksi tersebut telah di commit dan
basis data mencapai keadaan konsisten baru.
b. Jika
transaksi tidak sukses, maka transaksi dibatalkan dan basis data dikembalikan
ke keadaan konsisten sebelumnya (rollback).
Transaksi yang sudah
di commit tidak dapat dibatalkan lagi. Jika ada kesalahan, maka harus
dilakukan transaksi lain yang membalik dampak transaksi sebelumnya
Ketika transaksi
dilaksanakan/ dilakukan dari awal sampai akhir maka terdapat beberapa kemungkinan
yang akan terjadi, yaitu :
1. Aktif
(Active), yang merupakan status awal (initial state) sebuah transaksi yang
menunjukkan transaksi tersebut masih dieksekusi.
2. Berhasil
Sebagian (Partially Committed), yaitu keadaan yang dicapai transaksi tepat
pada saat operasi terakhir dalam transaksi selesai dikerjakan.
telah merefleksikan
perubahan-perubahan yang memang diinginkan transaksi.
Ketika sebuah
transaksi mulai dikerjakan, maka transaksi itu berada dalam status aktif.
Jika terjadi penghentian sebelum operasi berakhir, maka transaksi segera
beralih ke status gagal/failed. Namun, bila keseluruhan
transaksi selesai dikerjakan, maka transaksi itu berada pada status berhasil
sebagian/partially committed, dimana perubahan-perubahan data masih berada
di dalam memori utama yang bersifat volatile/tidak permanen.
Transaksi dalam status ini masih mungkin untuk pindah ke status failed, karena
ada pembatalan transaksi baik sengaja maupun tidak. Jika tidak beralih ke
status failed, maka nilai-nilai data yang ada di memori utama akan direkam ke
dalam disk yang bersifat permanen. Begitu proses perekaman selesai, maka
transaksi beralih ke status committed.
Sementara itu,
transaksi yang berada pada status failed, maka DBMS harus menjalan proses rollback.
Proses tersebut dapat berupa:
· Mengulangi
pelaksanaan transaksi / restart, yang dilakukan pada transaksi yang
failed akbiat kemacetan perangkat keras ataupun perangkat lunak dan bukannya
penghentian transaksi secara sengaja oleh user.
· Mematikan
transaksi / kill, yang dilakukan untuk transaksi yang dihentikan
secara sengaja oleh user atau akibat adanya kesalahan lojik dalam penulisan
aplikasi.
Operasi-operasi yang
dapat dilakukan oleh transksi yaitu :
Ø read(x)
mengeksekusi operasi pembacaan (read)
Ø write(x)
mengeksekusi perintah penulisan kembali
ke database (write).
Misalkan Transaksi transfer uang sebesar
$50 dari rekening A ke rekening B, didefinisikan sbg berikut:
1. read (A)
2.
A A – 50
3. write (A)
4. read (B)
5. B
B + 50
6.
write (B)
Consistency
requirement – jumlah A dan B tidak berubah setelah eksekusi transaksi.
Atomicity requirement
— Jika transaksi gagal dijalankan setelah langkah ke 3 dan sebelum langkah ke
6, maka sistem harus menjamin bahwa perubahan yang terjadi tidak direfleksikan
di database, jika hal ini tidak dapat dilakukan maka akan menghasilkan
inconsistency.
State (keadaan) Transaksi
B. Concurrency Control
konkurensi kontrol merupakan suatu sistem manajemen database
( DBMS ) konsep yang digunakan untuk mengatasi konflik dengan mengakses
simultan atau mengubah data yang dapat terjadi dengan sistem multi-user.
Kontrol konkurensi, bila diterapkan ke DBMS, dimaksudkan untuk
mengkoordinasikan transaksi simultan sambil menjaga integritas
data banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu
(waktu bersamaan).
Ilustrasi
: ada dua wisatawan yang pergi ke kios elektronik pada saat yang sama untuk
membeli tiket kereta api untuk tujuan yang sama pada kereta yang
sama. Hanya ada satu kursi di kiri pelatih, tetapi tanpa kontrol
concurrency, mungkin wisatawan yang baik akan berakhir membeli tiket untuk satu
kursi. Namun, dengan kontrol concurrency, database ini tidak akan terjadi.. Kedua
wisatawan akan masih dapat mengakses database kereta tempat duduk, tetapi
concurrency kontrol akan menjaga keakuratan data dan memungkinkan hanya satu
jalan untuk membeli kursi.
Kokurensi ini banyak
yang menggunakannya hal tersebut dikarenakan beberapa fakor, diantarany :
ü Idle time
(waktu menganggur) kecil.
ü time
(waktu tanggap) lebih baik.
Akan tetapi konkurensi
juga suka ada masalah, dan masalah umum yang sering terjadi pada komkurensi
adala
- Masalah kehilangan modifikasi
- Masalah kehilangan modifikasi
sementara
- Masalah analisa yang tidak
konsisten
§ Masalah
Kehilangan Modifikasi
Contoh:
|
Transaksi A
|
Waktu
|
Transaksi B
|
|
=
|
|
|
=
|
|
Baca R
|
t1
|
=
|
|
=
|
|
|
=
|
|
=
|
t2
|
Baca R
|
|
=
|
|
|
=
|
|
Modifikasi R
|
t3
|
=
|
|
=
|
|
|
=
|
|
=
|
t4
|
Modifikasi R
|
|
=
|
|
|
=
|
· Transaksi
A membaca R pada t1, transaksi B membaca R pada t2.
· Transaksi
A memodifikasi R pada t3.
· Transaksi
B memodifikasi record yang sama pada t4.
· Modifikasi
dari transaksi A akan hilang karena transaksi B akan memodifikasi R tanpa
memperhatikan modifikasi dari transaksi A pada t3
§ Masalah
kehilangan modifikasi sementara
Masalah ini timbul
jika transaksi membaca suatu record yang sudah dimodifikasi oleh transaksi lain
tetapi belum terselesaikan (uncommited), terdapat kemungkinan kalau transaksi
tersebut dibatalkan (rollback).
Contoh:
|
Transaksi A
|
Waktu
|
Transaksi B
|
|
=
|
|
|
=
|
|
=
|
t1
|
Modifikasi R
|
|
=
|
|
|
=
|
|
Baca R
|
t2
|
=
|
|
=
|
|
|
=
|
|
=
|
t3
|
rollback
|
|
=
|
|
|
=
|
· Transaksi
B memodifikasi record R pada t1
· Transaksi
A membaca R pada t2.
· Pada
saat t3 transaksi B dibatalkan.
· Maka
transaksi A akan membaca record yang salah
|
Transaksi A
|
Waktu
|
Transaksi B
|
|
=
|
|
|
=
|
|
=
|
t1
|
Modifikasi R
|
|
=
|
|
|
=
|
|
Modifikasi R
|
t2
|
=
|
|
=
|
|
|
=
|
|
=
|
t3
|
rollback
|
|
=
|
|
|
=
|
· Pada
waktu t2 transaksi A memodifikasi R
· Karena
transaksi B dibatalkan pada waktu t3, maka transaksi A memodifikasi record yang
salah
§ Masalah
analisa yang tidak konsisten
Contoh :
Nilai 1 =
40 Nilai 2 =
50 Nilai 3 = 30
|
Transaksi A
|
Waktu
|
Transaksi B
|
|
=
|
|
|
=
|
|
Baca nilai 1 (40)
Juml = 40
|
t1
|
=
=
|
|
=
|
|
|
=
|
|
Baca nilai 2 (50)
Juml = 90
|
t2
|
=
|
|
=
|
|
|
=
|
|
=
|
t3
|
Baca nilai 3 (30)
|
|
=
|
|
|
=
|
|
=
|
t4
|
Modifikasi nilai 3
30 " 20
|
|
=
|
|
|
=
|
|
t5
|
Baca nilai 1 (40)
|
|
|
|
|
=
|
|
|
t6
|
Modifikasi nilai 1
40 " 50
|
|
|
|
|
=
|
|
|
t7
|
Commit
|
|
|
|
|
||
|
Baca nilai 3 (20)
Juml = 110
(bukan 120)
|
t8
|
|
|
=
|
|
|
· Transaksi
A menjumlah nilai 1, nilai 2 dan nilai 3.
· Transaksi
B " nilai 1 + 10 ; nilai 3 - 10
· Pada
waktu t8, transaksi A membaca nilai yang salah karena nilai 3 sudah
· dimodifikasi
menjadi 20 (transaksi B sudah melakukan commit sebelum transaksi A membaca
nilai 3).
Namun ada dua cara
atau mekanisme untuk menyelesaikan masalah-masalah di atas, yaitu :
v Locking.
Locking adalah
salah satu mekanisasi pengontrolan konkuren.
Konsep dasarnya
adalah: ketika suatu transaksi memerlukan jaminan kalau record yang
diinginkan tidak akan berubah secara mendadak, maka diperlukan kunci untuk
record tersebut.
Fungsinya kunci (lock)
adalah dengan menjaga record tersebut agar tidak dimodifikasi oleh transaksi
lain.
Cara kerja dari kunci:
1. Pertama kita asumsikan terdapat 2
macam kunci:
· Kunci
X : kunci yang eksklusif.
· Kunci
S : kunci yang digunakan bersama-sama.
2. Jika transaksi A
menggunakan kunci X pada record R, maka permintaan dari transaksi B untuk suatu
kunci pada R ditunda, dan B harus menunggu sampai A melepaskan kunci tersebut.
3. Jika transaksi A menggunakan kunci
S pada record R, maka:
· Bila
transaksi B ingin menggunakan kunci X, maka B harus menunggu sampai A
melepaskan kunci tersebut.
· Bila
transaksi B ingin menggunakan kunci S, maka B dapat menggunakan kunci S bersama
A.
Tabel Kunci:
|
X
|
S
|
-
|
X = kunci X
|
|
|
X
|
N
|
N
|
Y
|
S = kunci S
|
|
S
|
N
|
Y
|
Y
|
N = No
|
|
-
|
Y
|
Y
|
Y
|
Y = Yes
|
4. - Bila suatu
transaksi hanya melakukan pembacaan saja, secara otomatis ia memerlukan kunci
S " baca (S)
- Bila transaksi tersebut ingin
memodifikasi record maka secara otomatis ia memerlukan kunci
S " memodifikasi (X)
- Bila transaksi tersebut sudah
menggunakan kunci S, setelah itu ia akan memodifikasi record, maka kunci S akan
dinaikan ke level kunci X.
5. Kunci X dan kunci S
akan dilepaskan pada saat synchpoint (synchronization point). Synchpoint
menyatakan akhir dari suatu transaksi dimana basis data berada pada state yang
konsisten. Bila synchpoint ditetapkan maka:
- Semua modifikasi program
menjalankan operasi commit atau rollback.
- Semua kunci dari record
dilepaskan.
Misalkan untuk menyelesaikan
permasalahan kehilangan modifikasi
|
Transaksi A
|
Waktu
|
Transaksi B
|
|
=
|
|
|
=
|
|
Baca R
(kunci S)
|
t1
|
=
|
|
=
|
|
|
=
|
|
=
|
t2
|
Baca R
(kunci S)
|
|
=
|
|
|
=
|
|
Modifikasi R
(kunci S)
tunggu
|
t3
|
=
|
|
=
|
|
|
=
|
|
=
|
t4
|
Modifikasi R
(kunci X)
tunggu
|
|
=
|
|
|
=
|
|
|
|
=
|
|
|
tunggu
|
|
|
tunggu
|
· Pada
waktu t3, transaksi A memerlukan kunci X, maka transaksi A harus menunggu
sampai B melepaskan kunci S.
· Transaksi
B juga harus menunggu pada t4.
· Maka
tidak akan ada yang kehilangan modifikasi, tetapi terdapat keadaan baru
yaitu deadlock.
Deadlock, yaitu suatu kondisi
dimana ke-2 transaksi dalam keadaan menunggu, sehingga keduanya tidak akan
pernah selesai dieksekusi.
ika pelepasan kunci
terlalu cepat dilakukan, maka bisa terjadi inkonsistensi informasi. Tapi
bila dilepas di akhir transaksi, bisa terjadi deadlock. Hal ini merupakan
kondisi dilematis pada sebuah sistem konkuren yang memanfaatkan mekanisme locking.
v Time Stamping
Salah satu alternatif
concurrency control yang dapat menghilangkan deadlock adalah time stamping.
Secara umum, timestamping (TS) adalah penanda waktu saat transaksi
terjadi. Hal ini untuk mengurutkan eksekusi transaksi agar sama dengan
eksekusi serial.
Time stamp dapat
berupa:
- waktu sistem saat transaksi
dimulai, atau
- penghitung logik (logical
counter) yang terus bertambah nilainya tiap kali terjadi transaksi baru.
Jika time stamp transaksi a lebih
kecil dari pada time stamp transaksi b , atau
TS(Ta) < TS(Tb), maka transaksi
a (Ta) selalu dilaksanakan sebelum transaksi b (Tb).
Contoh:
Misal rekaman pada basis data memuat TS
168, yang mengidentifikasikan transaksi dengn TS 168 adalah transaksi yang
terkemudian yang sukses mengupdate rekaman yang bersangkutan. Maka jika
ada transaksi dengan TS 170 mencoba mengupdate rekaman yang sama, maka update
ini akan diijinkan, karena TS yang dimiliki lebih kemudian dari TS pada
rekaman. Saat transaksi ini dilakukan, TS pada rekaman akan diatur
menjadi 170. Sekarang, jika transaksi yang akan mengupdate rekaman
tersebut memiliki TS 165, maka update ditolak karena TS-nya
< TS di rekaman.
Selain transaksi, item
data juga memiliki nilai time stamp. Untuk setiap item data Q, ada 2 nilai time
stamp, yaitu:
a. Read
time stamp atau R-timestamp(Q), yang menunjukkan nilai TS terbesar dari setiap
transaksi yang berhasil menjalankan operasi read(Q).
b. Write
time stamp atau W-timestamp(Q), yang menunjukkan nilai TS terbesar dari setiap
transaksi yang berhasil menjalankan operasi write(Q).
Time stamp ini
akan selalu diperbarui ketika ada perintah baru read(Q) atau write(Q) yang
dijalankan
Cara pemberian nilai timestamp:
- Global (systemwide)
monotonically increasing number
- Local (site) monotonically
increasing number.
C. Recovery System
Recovery merupakan
upaya untuk mengembalikan basis data ke keadaaan yang dianggap benar setelah
terjadinya suatu kegagalan.
Terdapat beberapa
jenis pemulihan :
- Pemulihan terhadap kegagalan
transaksi : Kesatuan prosedur alam program yang dapat mengubah /
memperbarui data pada sejumlah tabel.
- Pemulihan terhadap kegagalan
media : Pemulihan karena kegagalan media dengan cara mengambil atau memuat
kembali salinan basis data (backup)
- Pemulihan terhadap kegagalan
sistem : Karena gangguan sistem, hang, listrik terputus alirannya.
Mekanisme recovery
memiliki dua bagian utama, yaitu:
- Aksi-aksi yang ditempuh selama
transaksi berjalan normal untuk menjamin adanya informasi yang memadai
yang kelak dibutuhkan oleh mekanisme recovery.
- Aksi-aksi yang ditempuh setelah
terjadinya kerusakan/ kegagalan sistem yang dilakukan untuk memulihkan isi
basis data ke suatu keadaan yang menjamin konsistensi basis data,
keatomikan, dan ketahanan transaksi.
Skema Mekanisme Recovery
Dengan asumsi ruang
disk yang dialokasikan untuk basis data tidak mengalami kerusakan, maka ada 3
pilihan skema untuk menjalankan mekanisme recovery secara otomatis begitu
kerusakan atau kegagalan sistem telah terjadi. Ketiga skema pilihan itu adalah:
- File Log dengan Penundaan
Pengubahan (Incremental Log With Defered Update)
- File Log dengan Pengubahan
langsung (Incremental Log With Immediate Updates)
- Page Bayangan (Shadow Paging),
yang memerlukan akses ke disk yang lebih sedikit.
Recovery untuk Transaksi Konkuren
a. Interaksi dengan pengendalian
konkurensi
Skema recovery ini
akan banyak tergantung pada skema pengendalian konkurensi yang digunakan. Untuk
menjalankan proses roll back terhadap transaksi yang gagal/ batal,kita harus
membatalkan perubahan yang telah dilakukan oleh transaksi tersebut.
Jika
sebuah transaksi T telah mengubah sebuah item data Q, tidak boleh ada transaksi
lain yang boleh mengubah item data yang sama hingga T telah di-commit ataupun
di-roll back. Kita dapat menjamin hal ini dengan memanfaatkan Loking Protokol
Dua Fase yang Ketat, yang menerapkan penguncian dengan mode exclusive hingga
akhir transaksi.
b. Restart recovery
Pada saat sistem
melakukan pemulihan data, ia membentuk dua buah daftar. Yang pertama adalah
daftar undo (undo-list) yang terdiri atas transaksi-transaksi yang harus
dikenai operasi undo dan daftar redo (redo-list) yang berisi
transaksi-transaksi yang harus dikenai operasi redo.
III. PENUTUP
A. Kesimpulan
– Transaksi merupakan
sebuah aksi untuk mengakses atau merubah basis data.
– Dalam transaksi
terapat dua hasil atau output yaitu commit atau rollback
– Jika transaksi
berjalan sukses maka dikatakan commit, sebaliknya jika transaksi tidak berjalan
sukses maka transaksi dibatalkan dan kembali ke keadaan semula dikatakan
rollback
– Data harus tetap
konsisten
– Kontrol
konkurensi merupakan suatu masalah yang timbul ketika beberapa proses
terjadi bersamaan
– Dua
keuntungan apabila menggunakan konkurensi yaitu Idle time (waktu
menganggur) kecil dan time (waktu tanggap) lebih baik.
– Tiga
masalah utama yang sring terjadi di konkurensi, yait :
o Masalah
kehilangan modifikasi
o Masalah
kehilangan modifikasi sementara
o Masalah
analisa yang tidak konsisten
– Dua
mekanisme untuk mengatasi masalah-masalah umum dalam konkurensi yaitu : locking
dan time stamping
– Recovery
merupakan upaya untuk mengemblikan kembali data yang sudah rusak
3. Gagal
(Failed), yang merupakan keadaan dimana sebuah transaksi terhenti
pengeksekusiannya sebelum tuntas sama sekali.
4. Batal
(Aborted), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum
dikerjakan yang tentu dengan terlebih dahulu diawali dengan mengembalikan semua
data yang telah diubah ke nilai-nilai semula. (yang menjadi tanggung jawab
DBMS).
5. Berhasil
Sempurna (Committed), keadaan dimana transaksi telah dinyatakan
berhasil dikerjakan seluruhnya dan basis data telah merefleksikan
perubahan-perubahan yang memang diinginkan transaksi.
Ketika sebuah
transaksi mulai dikerjakan, maka transaksi itu berada dalam status aktif.
Jika terjadi penghentian sebelum operasi berakhir, maka transaksi segera
beralih ke status gagal/failed. Namun, bila keseluruhan transaksi
selesai dikerjakan, maka transaksi itu berada pada status berhasil
sebagian/partially committed, dimana perubahan-perubahan data masih berada
di dalam memori utama yang bersifat volatile/tidak permanen.
Transaksi dalam status ini masih mungkin untuk pindah ke status failed, karena
ada pembatalan transaksi baik sengaja maupun tidak. Jika tidak beralih ke
status failed, maka nilai-nilai data yang ada di memori utama akan direkam ke
dalam disk yang bersifat permanen. Begitu proses perekaman selesai, maka
transaksi beralih ke status committed.
Sementara itu,
transaksi yang berada pada status failed, maka DBMS harus menjalan proses rollback.
Proses tersebut dapat berupa:
Mengulangi
pelaksanaan transaksi / restart, yang dilakukan pada transaksi yang
failed akbiat kemacetan perangkat keras ataupun perangkat lunak dan bukannya
penghentian transaksi secara sengaja oleh user.
Mematikan
transaksi / kill, yang dilakukan untuk transaksi yang dihentikan
secara sengaja oleh user atau akibat adanya kesalahan lojik dalam penulisan
aplikasi.
Subscribe to:
Comments (Atom)
