Show Assalamualaikum warahmatullahi wabarakatuh. Saya ingin berbagi sedikit perbincangan tentang database bersama beberapa senior software engineer di Bandung.
Ketika kami berbincang, sampailah pada poin database transaction. Dengan sedikit kaget dan terheran-heran, orang ini tidak tahu apa itu database transaction. Namun, saya positive thinking mungkin orang ini lupa. Wajar seorang manusia itu lupa apalagi dihadapkan dengan beberapa ribu baris kodingan atau beberapa ratus tabel. Toh, saya juga banyak lupanya dibanding ingatnya. Untuk itu, saya berterima kasih kepada si mbah Google, Stack Overflow, beserta jajarannya. :( A. Pengertian Database TransactionDatabase transaction adalah salah satu subset yang disediakan SQL. Gunanya untuk mengatur alur data transaksi dalam suatu database. Transaction ini biasanya digunakan didalam trigger. Namun, jangan samakan transaction ini dengan trigger. Trigger dijalankan untuk menanggapi perubahan tertentu pada tabel tertentu. Mari saya contohkan ilustrasinya. Toko-Queen mempunyai barang (10) dan ingin mengirim barang ke salah satu cabang Toko-War (5) dan War ini tidak memiliki barang tersebut. Proses Alur Data yang SuksesLalu, kita bagi menjadi beberapa proses alur data:
Flow di atas adalah kasus yang dimana semua proses alur datanya berhasil selamat sampai tujuan akhir. Lalu, bagaimana jika di tengah-tengah proses terdapat kegagalan? Kegagalan ini bisa disebabkan banyak hal (internet mati, mati lampu, salah tipe data, dan lain-lain). Proses Alur Data yang GagalFlow di atas update stock source terdapat kegagalan, sedangkan update stock destination berhasil. Ini akan berakibat fatal sebab stok dari Queen tidak berkurang, sedangkan Stock War bertambah dengan sendirinya. Seram, bukan? :( B. Konsep Database TransactionKarena kasus sejenis itu, para ilmuwan dunia “Juru Ketik” membuat yang disebut proses Transaction. Dengan ini, jika ada kegagalan dalam 1 node (proses), seluruh transaksi (proses input) akan dibatalkan. Sementara itu, jika berhasil akan di-commit. Transaction terdiri atas hal-hal berikut:
C. Implementasi Transaction MySQLFungsi CREATE TABLEFungsi INSERT TABLEFungsi BEGIN dan ROLLBACK
Di atas adalah contoh sederhana implementasi SQL transaction di MySQL. Lalu, bagaimana dengan postgres atau sistem manajemen database lain? Kurang lebih sama. Yang terpenting bukanlah cara implementasinya, melainkan konsep dari SQL transaction tersebut. KesimpulanDatabase transaction ini sangat penting digunakan, apalagi jika kalian bermain di sistem informasi penjualan, sistem informasi keuangan, pembayaran, dan sejenisnya. Atau, secara sederhana, jika kalian bermain dengan tabel yang banyak dan saling berelasi.
|