Menangani race kondisi dengan lock record database pada Laravel.

Поделиться
HTML-код
  • Опубликовано: 5 янв 2025

Комментарии • 34

  • @Warkim
    @Warkim Год назад

    Mantebs mase

  • @lalugaluhhaibara1179
    @lalugaluhhaibara1179 Год назад

    terimakasih bang sangat membantu

  • @HumamAfif-r6v
    @HumamAfif-r6v День назад

    izin bertanya ini apakah berguna untuk nosql juga? dan wajib pake db transaction function kah?

  • @SeptAndro
    @SeptAndro Год назад

    Aplikasi gua baru kena kasus seperti ini, lumayan saldo ada yg jebol 😢, untung masih bisa terdeteksi

  • @delvinlotusiana2704
    @delvinlotusiana2704 6 месяцев назад

    Bang kalau bole request, theme IDE nya dark aja bang
    Kalau boleh

  • @DummyAccount-i2v
    @DummyAccount-i2v 5 месяцев назад +1

    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

    • @extraodev
      @extraodev  5 месяцев назад

      bisa banget nerapin ini. cara lainnya adalah nerapin queue, atau nerapin optimistic insert.

    • @DummyAccount-i2v
      @DummyAccount-i2v 5 месяцев назад

      @@extraodev alright bang thankss

    • @HumamAfif-r6v
      @HumamAfif-r6v День назад

      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

  • @AdnanErlansyah-nx7xp
    @AdnanErlansyah-nx7xp 3 месяца назад

    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.

    • @extraodev
      @extraodev  3 месяца назад

      maksudnya gimana? withTrans itu hubungannya dengan transactional

    • @AdnanErlansyah-nx7xp
      @AdnanErlansyah-nx7xp 3 месяца назад

      @@extraodev mksd nya soft delete data

  • @bimaaryawicaksana4778
    @bimaaryawicaksana4778 8 месяцев назад

    Bang jadi kalo kita bikin toko online itu terapinnya di transactionnya atau di pas masukan barang ke cart atau keranjang?

    • @extraodev
      @extraodev  8 месяцев назад

      biasanya, waktu dia confirm dan waiting payment.

    • @extraodev
      @extraodev  8 месяцев назад

      karena disini kita biasanya hold stock

  • @heyroziq
    @heyroziq Год назад

    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.

    • @extraodev
      @extraodev  11 месяцев назад

      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.

    • @heyroziq
      @heyroziq 11 месяцев назад

      Thanks bang, sudah solve. bener pakai cache, di laravel pakai cache lock.@@extraodev

  • @skankbaplank8854
    @skankbaplank8854 2 месяца назад

    bang kalo atomic lock cache laravel yang mana baik ya?

    • @extraodev
      @extraodev  2 месяца назад

      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

  • @sofyanmaulana3804
    @sofyanmaulana3804 6 месяцев назад

    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?

    • @extraodev
      @extraodev  6 месяцев назад

      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.

    • @sofyanmaulana3804
      @sofyanmaulana3804 6 месяцев назад

      @@extraodev bikinin videonga bang, kayaknga banyak yang punya case sama deh wkwk

  • @Conten619
    @Conten619 8 месяцев назад

    Kalo kasusnya pas nyimpen gimana bang ?misal klo mau nyimpen ngecek nomor urut dl,

    • @extraodev
      @extraodev  8 месяцев назад

      gimana tuh maksudnya? tinggal cocokin aja ini kasus bisa dilock record ngga

    • @sofyanmaulana3804
      @sofyanmaulana3804 6 месяцев назад

      ​@@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?

  • @edwinfarid_
    @edwinfarid_ 10 месяцев назад +1

    Kalau kondisi kasus bank yang di atas, lebih bagus pake queue atau lock record bang?

    • @extraodev
      @extraodev  10 месяцев назад

      kalau sync, ada beberapa cara salah satunya lock record.
      kalau async bisa pakai queue.

  • @maulanamuhammadrizky7242
    @maulanamuhammadrizky7242 Год назад

    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 🙏

    • @extraodev
      @extraodev  Год назад +1

      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)

    • @maulanamuhammadrizky7242
      @maulanamuhammadrizky7242 Год назад

      @@extraodev siyapp, makasih jawabannya bang 🙏

  • @orz14
    @orz14 Год назад

    silau bang