انا لسا فريش ف اغذرني علي سوالي ممكن يكون سطحي ، انا كنت شغال علي ECommerce app وكنت اشتغلت علي موضوع لو فيه product واحد او ال count واحد بس في stock فيه tow user داخلين علي نفس ال product انا حلتها ب حلين واحد transaction عاديه ب عملت ال row version وانا ب جيب ال product وكدا كدا ال transaction هي read commit ف ال user التاني هيستني لحد ما user واحد يكتب وuser اتنين يدخل بعدها هيرمي ex انا ال row version اتغير وهكذا هل دا حل سليم ?
الحل التاني ان خليت ال transaction isolation level serializable وكان بيحصل deadlock ف خليت وانا بقرا ال row product عمل عليها lock for update عشان لو اي req جه تاني ميعملوش read مره واحده ويحصل deadlock بعدين والحل مشي طبعاا انا مش شغال غير علي instance واحده بس هل الحلول صح ولا انا ماشي بطريقه غير صحيحه مع العلم ان اول طريقه جربتها هو ان اعمل lock في ram .
هو ده حل مناسب جدا عمتا انك تختار isolation level مناسب هيكون مفيد عيبه بس مع الوقت هيكون يبطس السيستم ممكن نسخدم ال versioniong (optimistic locking) هيكون حل مناسب برده
انا لسا فريش ف اغذرني علي سوالي ممكن يكون سطحي ، انا كنت شغال علي ECommerce app وكنت اشتغلت علي موضوع لو فيه product واحد او ال count واحد بس في stock فيه tow user داخلين علي نفس ال product انا حلتها ب حلين واحد transaction عاديه ب عملت ال row version وانا ب جيب ال product وكدا كدا ال transaction هي read commit ف ال user التاني هيستني لحد ما user واحد يكتب وuser اتنين يدخل بعدها هيرمي ex انا ال row version اتغير وهكذا هل دا حل سليم ?
الحل التاني ان خليت ال transaction isolation level serializable وكان بيحصل deadlock ف خليت وانا بقرا ال row product عمل عليها lock for update عشان لو اي req جه تاني ميعملوش read مره واحده ويحصل deadlock بعدين والحل مشي طبعاا انا مش شغال غير علي instance واحده بس هل الحلول صح ولا انا ماشي بطريقه غير صحيحه مع العلم ان اول طريقه جربتها هو ان اعمل lock في ram .
هو ده حل مناسب جدا عمتا انك تختار isolation level مناسب هيكون مفيد عيبه بس مع الوقت هيكون يبطس السيستم
ممكن نسخدم ال versioniong (optimistic locking)
هيكون حل مناسب برده