Sistem Pengurusan Basis Data - Transaksi: Memahami Asas dan Lebih Lanjut
Hai sana, para ahli basis data masa depan! Saya begitu gembira untuk membawa anda ke dalam dunia menarik transaksi basis data. Sebagai guru sains komputer di lingkungan anda, saya telah melihat banyak murid kesulitan dengan topik ini, tetapi saya berjanji kepada anda, pada akhir panduan ini, anda akan menjadi ahli transaksi! Mari kita masuk ke dalam!
Apa Itu Transaksi?
Sebelum kita masuk ke hal-hal kecil, mari kita mulai dari asas. Bayangkan anda di mesin ATM, mengambil wang. Anda masukkan kad, masukkan PIN, pilih jumlah, danambil wang anda. Proses keseluruhan ini, dari awal ke akhir, adalah satu transaksi. Dalam istilah basis data, transaksi adalah urutan operasi yang dilakukan sebagai unit kerja logik yang tunggal.
Berikut adalah contoh ringkas apa yang mungkin kelihatan seperti transaksi dalam pseudocode:
MULA TRANSaksi
BACA saldo DARI account DIMANA id = 12345
JIKA saldo >= 100 MAKA
KEMASKINI account SETELAH saldo = saldo - 100 DIMANA id = 12345
BERIKAN 100 dolar
SEBALIKNYA
TAMPILKAN "Dana tidak cukup"
AKHIR JIKA
KOMITI TRANSaksi
Transaksi ini memastikan bahawa sama ada semua langkah selesai berjaya (wang diambil dan saldo dikemaskini) atau tiada (jika tiada cukup wang, tiada perubahan).
Properti ACID
Sekarang, mari kita bicarakan empat tiang utama transaksi, iaitu properti ACID. Ini adalah penting untuk memelihara integriti dan keserasian data dalam sistem basis data.
Atomik
Atomik memastikan bahawa transaksi dianggap sebagai unit tunggal, tidak boleh dipisahkan. Ini adalah segalanya atau tiada apa-apa - sama ada semua operasi dalam transaksi selesai berjaya, atau tiada.
Contoh:
MULA TRANSaksi;
KEMASKINI accounts SETELAH balance = balance - 100 DIMANA id = 'Alice';
KEMASKINI accounts SETELAH balance = balance + 100 DIMANA id = 'Bob';
KOMITI;
Jika sebarang bahagian transaksi ini gagal (misalnya, akaun Bob tidak wujud), keseluruhan transaksi akan dipulangkan, dan saldo Alice kekal unchanged.
Keserasian
Keserasian memastikan bahawa transaksi membawa basis data dari satu keadaan valid ke yang lain. Ia menjaga integriti syarat-syarat basis data.
Contoh: Katakanlah kita ada peraturan bahawa semua saldo akaun mestilah positif.
MULA TRANSaksi;
KEMASKINI accounts SETELAH balance = balance - 200 DIMANA id = 'Alice';
-- Jika saldo Alice menjadi negatif, transaksi akan dibatalkan
KOMITI;
Isolasi
Isolasi memastikan bahawa eksekusi bersamaan transaksi meninggalkan basis data dalam keadaan yang sama seperti yang akan dicapai jika transaksi dieksekusi secara berurutan.
Contoh: Imaginasi dua transaksi berjalan bersamaan:
-- Transaksi 1
MULA TRANSaksi;
KEMASKINI accounts SETELAH balance = balance - 100 DIMANA id = 'Alice';
-- Ada penundaan di sini
KEMASKINI accounts SETELAH balance = balance + 100 DIMANA id = 'Bob';
KOMITI;
-- Transaksi 2
MULA TRANSaksi;
Pilih balance DARI accounts DIMANA id = 'Alice';
KOMITI;
Isolasi memastikan bahawa Transaksi 2 akan melihat saldo Alice sebelum transfer atau selepasnya, tetapi bukan di antara.
Keabadian
Keabadian menjamin bahawa sekali transaksi telah dikomiti, ia akan kekal begitu, bahkan dalam kejadian kehilangan kuasa, kerosakan, atau ralat.
Contoh: Setelah menjalankan transaksi ini:
MULA TRANSaksi;
MASUKKAN kedalam audit_log (action, timestamp) NILAI ('User login', CURRENT_TIMESTAMP);
KOMITI;
Rekod yang dimasukkan akan kekal walaupun jika sistem rosak segera selepas itu.
Serializability
Serializability adalah tahap isolasi tertinggi antara transaksi. Ia memastikan bahawa eksekusi bersamaan transaksi menghasilkan keadaan basis data yang akan dicapai jika transaksi ini dieksekusi secara berurutan dalam suatu urutan.
mari kita lihat contoh:
Transaksi 1: R(X), W(X)
Transaksi 2: R(X), W(X)
Jadual berurutan yang mungkin:
- T1 diikuti oleh T2: R1(X), W1(X), R2(X), W2(X)
- T2 diikuti oleh T1: R2(X), W2(X), R1(X), W1(X)
Jadual bersamaan adalah serializable jika hasilnya setanding dengan salah satu jadual berurutan ini.
Jadual Setara
Dua jadual dianggap setara jika:
- Mereka melibatkan set transaksi yang sama
- Mereka memesan operasi konflik dari transaksi yang tidak dibatalkan dalam cara yang sama
mari kita lihat contoh:
Jadual 1: R1(X), R2(X), W1(X), W2(X) Jadual 2: R2(X), R1(X), W1(X), W2(X)
Jadual ini setara kerana operasi konflik (W1(X) dan W2(X)) dalam urutan yang sama dalam kedua-dua jadual.
Keadaan Transaksi
Transaksi melalui keadaan berbeza semasa lifecycle mereka. Berikut adalah jadual yang menggabungkan keadaan ini:
Keadaan | Description |
---|---|
Aktif | Keadaan awal; transaksi kekal dalam keadaan ini semasa ia dijalankan |
Sebahagian Dikomiti | Selepas pernyataan akhir telah dijalankan |
Gagal | Selepas penemuan bahawa eksekusi biasa tidak boleh terus |
Dibatalkan | Selepas transaksi telah dipulangkan dan basis data dipulangkan ke keadaannya sebelum transaksi dimulakan |
Dikomiti | Selepas penyelesaian berjaya transaksi |
Mengerti keadaan ini adalah penting untuk pengurusan transaksi secara berkesan dan memastikan integriti data.
Dalam kesimpulan, transaksi adalah konsep asas dalam sistem pengurusan basis data, memastikan keserasian dan integriti data. Dengan memahami properti ACID, serializability, jadual setara, dan keadaan transaksi, anda telah berada di jalur menuju menjadi ahli basis data!
Ingat, latihan membuat sempurna. Cobalah implementasi konsep ini dalam sistem basis data sebenar, dan anda akan melihat betapa kuat transaksi boleh. Selamat berkoding, para pentadbir basis data masa depan!
Credits: Image by storyset