Apa itu transaksi database?

114

Dapatkah seseorang memberikan penjelasan yang lugas (tetapi tidak sesederhana mungkin) tentang transaksi yang diterapkan pada komputasi (bahkan jika disalin dari Wikipedia)?

Vlad Gudim
sumber

Jawaban:

239

Transaksi adalah unit kerja yang ingin Anda perlakukan sebagai "keseluruhan". Itu harus terjadi secara penuh atau tidak sama sekali.

Contoh klasik adalah mentransfer uang dari satu rekening bank ke rekening bank lain. Untuk melakukan itu, Anda harus terlebih dahulu menarik jumlah dari akun sumber, dan kemudian menyetorkannya ke akun tujuan. Operasi tersebut harus berhasil sepenuhnya. Jika Anda berhenti di tengah jalan, uang itu akan hilang, dan itu Sangat Buruk.

Dalam database modern, transaksi juga melakukan beberapa hal lain - seperti memastikan bahwa Anda tidak dapat mengakses data yang telah ditulis orang lain di tengah jalan. Tetapi ide dasarnya sama - transaksi ada untuk memastikan, bahwa apa pun yang terjadi, data yang Anda kerjakan akan dalam keadaan yang masuk akal . Mereka menjamin bahwa TIDAK akan ada situasi di mana uang ditarik dari satu akun, tetapi tidak disimpan ke akun lain.

Vilx-
sumber
Terima kasih atas contoh yang sangat sederhana
Nomadme
penjelasan yang bagus!
Yan Myo Aung
81

Transaksi adalah cara untuk merepresentasikan perubahan keadaan. Transaksi idealnya memiliki empat sifat, umumnya dikenal sebagai ACID:

  • Atom (jika perubahan dilakukan, itu terjadi dalam satu gerakan; Anda tidak akan pernah melihat "setengah perubahan")
  • Konsisten (perubahan hanya dapat terjadi jika status baru sistem akan valid; upaya apa pun untuk melakukan perubahan yang tidak valid akan gagal, meninggalkan sistem dalam status valid sebelumnya)
  • Terisolasi (tidak ada orang lain yang melihat bagian mana pun dari transaksi sampai dilakukan)
  • Tahan lama (setelah perubahan terjadi - jika sistem menyatakan bahwa transaksi telah dilakukan, klien tidak perlu khawatir tentang "mengosongkan" sistem untuk membuat perubahan "tetap")

Lihat entri ACID Wikipedia untuk lebih jelasnya.

Meskipun ini biasanya diterapkan pada database, tidak harus demikian. (Secara khusus, lihat Memori Transaksional Perangkat Lunak .)

Jon Skeet
sumber
46

Berikut penjelasan sederhananya. Anda perlu mentransfer 100 dolar dari akun A ke akun B. Anda dapat melakukan:

accountA -= 100;
accountB += 100;

atau

accountB += 100;
accountA -= 100;

Jika terjadi kesalahan antara operasi pertama dan kedua pada pasangan, Anda memiliki masalah - entah 100 dolar hilang, atau muncul tiba-tiba.

Transaksi adalah mekanisme yang memungkinkan Anda menandai sekelompok operasi dan mengeksekusinya sedemikian rupa sehingga semua operasi dijalankan (komit), atau status sistem seolah-olah belum mulai dijalankan sama sekali (rollback).

beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;

akan mentransfer 100 dolar atau meninggalkan kedua akun dalam keadaan awal.

gigi tajam
sumber
31

"Serangkaian pernyataan manipulasi data yang harus benar-benar lengkap atau gagal sepenuhnya, meninggalkan database dalam keadaan yang konsisten"

Rad
sumber
2
Tidak hanya database. Kita dapat memperluas konsep ini ke komponen lain - seperti layanan antrian, atau keadaan sistem eksternal. Jadi, "Serangkaian pernyataan manipulasi data yang harus benar-benar lengkap atau gagal sepenuhnya, meninggalkan sistem dalam keadaan yang konsisten"
Michał Chaniewski
10

Transaksi adalah urutan dari satu atau lebih operasi SQL yang diperlakukan sebagai satu unit.

Secara khusus, setiap transaksi tampaknya berjalan dalam isolasi, dan lebih jauh lagi, jika sistem gagal, setiap transaksi akan dijalankan secara keseluruhan atau tidak semua.

Konsep transaksi dimotivasi oleh dua perhatian yang sepenuhnya independen. Yang satu berkaitan dengan akses bersamaan ke database oleh banyak klien, dan yang lainnya berkaitan dengan memiliki sistem yang tahan terhadap kegagalan sistem.

Transaksi mendukung apa yang dikenal sebagai properti ACID:

  • J: Atomicity;
  • C: Konsistensi;
  • I: Isolasi;
  • D: Daya Tahan.
Mourad BENKDOUR
sumber
1

Saya menyarankan bahwa definisi 'pemrosesan transaksi' akan lebih berguna, karena mencakup transaksi sebagai konsep dalam ilmu komputer.

Dari wikipedia:

Dalam ilmu komputer, pemrosesan transaksi adalah pemrosesan informasi yang dibagi menjadi operasi-operasi individual yang tidak dapat dibagi-bagi, yang disebut transaksi. Setiap transaksi harus berhasil atau gagal sebagai satu kesatuan yang lengkap; itu tidak bisa tetap dalam keadaan perantara.

http://en.wikipedia.org/wiki/Transaction_processing#Implementations

Adam Cooper
sumber
1

Selain tanggapan di atas, perlu dicatat bahwa, setidaknya dalam teori, tidak ada batasan apa pun tentang jenis sumber daya apa yang terlibat dalam transaksi.

Seringkali, ini hanya database, atau beberapa database yang berbeda, tetapi juga dapat dibayangkan bahwa printer mengambil bagian dalam transaksi, dan dapat menyebabkan transaksi tersebut gagal, misalnya jika terjadi kemacetan kertas.

Erwin Smout
sumber
1

Transaksi dapat didefinisikan sebagai kumpulan tugas yang dianggap sebagai unit pemrosesan minimum. Setiap unit pemrosesan minimum tidak dapat dibagi lebih lanjut.

Operasi utama sebuah transaksi adalah membaca dan menulis.

Semua transaksi harus mengandung empat properti yang umumnya dikenal sebagai properti ACID untuk tujuan memastikan keakuratan, kelengkapan, dan integritas data.

putaran
sumber
0

Saya pikir transaksi adalah tindakan atom dalam istilah DBMS.

itu artinya tidak bisa dipisahkan. ya, dalam transction, mungkin ada beberapa instruksi untuk dijalankan oleh sistem. tetapi mereka terikat bersama untuk menyelesaikan satu tugas dasar.

sebagai contoh. Anda perlu berjalan melalui jembatan (anggaplah ini sebagai transction), dan untuk melakukan ini, katakanlah, Anda memerlukan 100 langkah. secara keseluruhan, langkah-langkah ini tidak dapat dipisahkan. setelah Anda menyelesaikan setengahnya, hanya ada dua pilihan untuk Anda: terus selesaikan semuanya, dan kembali ke titik awal. Ini seperti hasil dari sebuah transaksi: sukses (berkomitmen) dan gagal (rollback)

fwoncn
sumber
0

Transaksi adalah unit tak terpisahkan dari pemrosesan data -Semua transaksi harus memiliki properti ACID:

yaitu: Atomicity, Consistency, Isolation dan Durable Transaction adalah semua atau tidak sama sekali tetapi tidak intermidiate (itu berarti jika Anda mentransfer uang dari satu akun ke akun lain, satu akun harus kehilangan sebanyak itu dan akun lainnya harus mendapatkan jumlah itu, tetapi jika Anda mentransfer uang dari satu akun dan akun lain masih kosong yang tidak akan menjadi transaksi)

Mohamed Seif
sumber