Bang kalau untuk buat web misal kayak booking hotel gitu kan ga boleh ada 2 tanggal checkin yang sama buat 1 kamar, apakah bisa nerapin sistem ini? Atau ada cara lain yang lebih bagus
kalo case ini,tinggal lakuin pengecekan si,apakah ada data pada range tanggal checkin-checkout,ceknya dua kali,didalam rentang tanggal ada apa ngga,dan diseluruh data booking pada kamar itu ada apa ngga,kalo ga ada baru perbolehkan
Kang kalo untuk dibarengi dengan withTrashed untuk mendapatkan data yg telah di soft delete itu gak bisa ya? soalnya pas di update yg kedua kali nya dr user yg berbeda itu pas diupdatenya nganggep data nya null terus.
Bang gimana kalau casenya buat lock data yang null apakah bisa? misalkan kondisi kalau datanya null maka buat record baru, tapi kalau sudah ada bakal update aja. Waktu race condition 2 request bersamaan jatuhnya bakal created 2 record yang sama, padahal yang diinginkan cuman 1, sisanya update yg udah ada.
maksudnya 2 data itu sama? karena barengan? nah ini bisa ditangani dengan lock record ini. tapi kalau kita ngelakuin pengecekan diawal, sebelum saving misalnya if (null) then create new. ini ada potensi ketika barengan akan create 2. maka solusinya adalah kalau di banking kita bisa pakai cache, tentuin aja apa yang jadiin key, sebelum create checking cache itu dulu.
tergantung kegunaannya mas, di video ini lebih ke lock record yang mana const nya adalah tidak ada yang boleh mengedit row itu selama transaksi masih berlangsung, jadi blocking
Bang gua punya kondisi kayak gini, gua punya aplikasi buat generate kartu ujian, di mana kartu ujian itu punya tabel sendiri, jadi skemanya itu insert bukan update, dan di tabel kartu ujian ini, si nomor ujiannya berurutan, misal : PMB-20240001, PMB-20240002, dst. Naah ada kondisi di mana ada kemungkinan banyak orang melakukan generate kartu ujian di waktu bersamaan bersamaan, sehingga saat insert nomor ujian, itu nomor ujiannya sama bang, ada saran?
lakukan lock pada table, kalau di video ini kan lock record. atau cara yang lainnya adalah bisa pakai queue. jadi meskipun semua orang generate bersamaan, tetep yang generate adalah queue.
@@extraodevnaah bener nih bang, misal gua punya kondisi kayak gini, gua punya aplikasi buat generate kartu ujian, di mana kartu ujian itu punya tabel sendiri, jadi skemanya itu insert bukan update, dan di tabel kartu ujian ini nomor ujiannya berurutan, misal : PMB-20240001, PMB-20240002, dst. Naah ada kondisi di mana ada kemungkinan banyak orang melakukan generate kartu ujian bersamaan, sehingga saat insert nomor ujian, itu nomor ujiannya sama bang, ada saran?
Bang izin tanya. 1. Kalo misalnya nerapin locking kaya gini, bakalan ngaruh ke user lain ga ya dampak dari issue performancenya? 2. Kalo misalnya pake message broker kira kira bisa ga ya buat handle issue performa? Thanks bang, mohon dijawab 🙏
1. Iya dan tidak, iya jika user mau update record yang sama. tidak perngaruh jika tidak mengakses record. 2. Untuk kasus ini, ditujukan supaya tidak terjadi race condition. kalaupun pakai message broker untuk kirim ke sini misalnya, akan tetap juga, simpan ke database dengan kemungkinan race condition. tapi sangat memungkinkan jika kita menggunakan message broker dengan sistem antrian, sehingga tidak memungkinkan untuk mengakses data yang sama, (karena ngantri)
Mantebs mase
terimakasih bang sangat membantu
izin bertanya ini apakah berguna untuk nosql juga? dan wajib pake db transaction function kah?
bisa juga mas
Aplikasi gua baru kena kasus seperti ini, lumayan saldo ada yg jebol 😢, untung masih bisa terdeteksi
Bang kalau bole request, theme IDE nya dark aja bang
Kalau boleh
Bang kalau untuk buat web misal kayak booking hotel gitu kan ga boleh ada 2 tanggal checkin yang sama buat 1 kamar, apakah bisa nerapin sistem ini? Atau ada cara lain yang lebih bagus
bisa banget nerapin ini. cara lainnya adalah nerapin queue, atau nerapin optimistic insert.
@@extraodev alright bang thankss
kalo case ini,tinggal lakuin pengecekan si,apakah ada data pada range tanggal checkin-checkout,ceknya dua kali,didalam rentang tanggal ada apa ngga,dan diseluruh data booking pada kamar itu ada apa ngga,kalo ga ada baru perbolehkan
Kang kalo untuk dibarengi dengan withTrashed untuk mendapatkan data yg telah di soft delete itu gak bisa ya? soalnya pas di update yg kedua kali nya dr user yg berbeda itu pas diupdatenya nganggep data nya null terus.
maksudnya gimana? withTrans itu hubungannya dengan transactional
@@extraodev mksd nya soft delete data
Bang jadi kalo kita bikin toko online itu terapinnya di transactionnya atau di pas masukan barang ke cart atau keranjang?
biasanya, waktu dia confirm dan waiting payment.
karena disini kita biasanya hold stock
Bang gimana kalau casenya buat lock data yang null apakah bisa? misalkan kondisi kalau datanya null maka buat record baru, tapi kalau sudah ada bakal update aja. Waktu race condition 2 request bersamaan jatuhnya bakal created 2 record yang sama, padahal yang diinginkan cuman 1, sisanya update yg udah ada.
maksudnya 2 data itu sama? karena barengan? nah ini bisa ditangani dengan lock record ini.
tapi kalau kita ngelakuin pengecekan diawal, sebelum saving misalnya
if (null) then create new.
ini ada potensi ketika barengan akan create 2.
maka solusinya adalah kalau di banking kita bisa pakai cache, tentuin aja apa yang jadiin key, sebelum create checking cache itu dulu.
Thanks bang, sudah solve. bener pakai cache, di laravel pakai cache lock.@@extraodev
bang kalo atomic lock cache laravel yang mana baik ya?
tergantung kegunaannya mas, di video ini lebih ke lock record yang mana const nya adalah tidak ada yang boleh mengedit row itu selama transaksi masih berlangsung, jadi blocking
Bang gua punya kondisi kayak gini, gua punya aplikasi buat generate kartu ujian, di mana kartu ujian itu punya tabel sendiri, jadi skemanya itu insert bukan update, dan di tabel kartu ujian ini, si nomor ujiannya berurutan, misal :
PMB-20240001,
PMB-20240002,
dst.
Naah ada kondisi di mana ada kemungkinan banyak orang melakukan generate kartu ujian di waktu bersamaan bersamaan, sehingga saat insert nomor ujian, itu nomor ujiannya sama bang, ada saran?
lakukan lock pada table, kalau di video ini kan lock record. atau cara yang lainnya adalah bisa pakai queue. jadi meskipun semua orang generate bersamaan, tetep yang generate adalah queue.
@@extraodev bikinin videonga bang, kayaknga banyak yang punya case sama deh wkwk
Kalo kasusnya pas nyimpen gimana bang ?misal klo mau nyimpen ngecek nomor urut dl,
gimana tuh maksudnya? tinggal cocokin aja ini kasus bisa dilock record ngga
@@extraodevnaah bener nih bang, misal gua punya kondisi kayak gini, gua punya aplikasi buat generate kartu ujian, di mana kartu ujian itu punya tabel sendiri, jadi skemanya itu insert bukan update, dan di tabel kartu ujian ini nomor ujiannya berurutan, misal :
PMB-20240001,
PMB-20240002,
dst.
Naah ada kondisi di mana ada kemungkinan banyak orang melakukan generate kartu ujian bersamaan, sehingga saat insert nomor ujian, itu nomor ujiannya sama bang, ada saran?
Kalau kondisi kasus bank yang di atas, lebih bagus pake queue atau lock record bang?
kalau sync, ada beberapa cara salah satunya lock record.
kalau async bisa pakai queue.
Bang izin tanya.
1. Kalo misalnya nerapin locking kaya gini, bakalan ngaruh ke user lain ga ya dampak dari issue performancenya?
2. Kalo misalnya pake message broker kira kira bisa ga ya buat handle issue performa?
Thanks bang, mohon dijawab 🙏
1. Iya dan tidak, iya jika user mau update record yang sama. tidak perngaruh jika tidak mengakses record.
2. Untuk kasus ini, ditujukan supaya tidak terjadi race condition. kalaupun pakai message broker untuk kirim ke sini misalnya, akan tetap juga, simpan ke database dengan kemungkinan race condition.
tapi sangat memungkinkan jika kita menggunakan message broker dengan sistem antrian, sehingga tidak memungkinkan untuk mengakses data yang sama, (karena ngantri)
@@extraodev siyapp, makasih jawabannya bang 🙏
silau bang
Hahaha