2
ฉันควรล็อคแถวในฐานข้อมูลคลาวด์ของฉันในขณะที่พวกเขากำลังแก้ไขโดยผู้ใช้
ฉันกำลังสร้างแอปพลิเคชันเดสก์ท็อปที่ยังคงมีข้อมูลในระบบคลาวด์ สิ่งหนึ่งที่ฉันกังวลคือการเริ่มต้นแก้ไขรายการในแอปพลิเคชันและปล่อยไว้ชั่วขณะหนึ่งทำให้ข้อมูลกลายเป็นเก่า สิ่งนี้สามารถเกิดขึ้นได้อย่างชัดเจนหาก 2 คนพยายามแก้ไขรายการเดียวกันในเวลาเดียวกัน เมื่อพวกเขาเสร็จสิ้นการแก้ไขและต้องการบันทึกข้อมูลฉันจะต้องเขียนทับสิ่งที่มีอยู่ในฐานข้อมูลหรือตรวจสอบว่าพวกเขาเริ่มแก้ไขหลังจากการเปลี่ยนแปลงครั้งล่าสุดและบังคับให้พวกเขาละทิ้งการเปลี่ยนแปลงหรืออาจให้พวกเขามีความเสี่ยง เขียนทับการเปลี่ยนแปลงของคนอื่น ฉันคิดถึงการเพิ่มเขตข้อมูลis_lockedและlock_timestampตาราง DB เมื่อผู้ใช้เริ่มแก้ไขรายการแถวจะเปลี่ยนis_lockedเป็นจริงและตั้งค่าการประทับเวลาล็อคเป็นเวลาปัจจุบัน ฉันจะมีเวลาบ้างที่จะล็อค (ตัวอย่างเช่น 5 นาที) หากบุคคลอื่นพยายามแก้ไขรายการพวกเขาจะได้รับข้อความแจ้งว่ารายการนั้นถูกล็อคและเมื่อการล็อคหมดอายุโดยอัตโนมัติ หากผู้ใช้เดินออกไปในขณะที่แก้ไขล็อคจะหมดอายุโดยอัตโนมัติหลังจากช่วงเวลาสั้น ๆ และเมื่อผู้ใช้จะได้รับการเตือนว่าล็อคหมดอายุและถูกบังคับให้รีสตาร์ทการแก้ไขหลังจากที่มีการรีเฟรชข้อมูล นี่จะเป็นวิธีที่ดีในการป้องกันการเขียนทับข้อมูลเก่าหรือไม่? มันเกินความจริงหรือเปล่า (ฉันไม่คาดหวังว่าแอปพลิเคชั่นจะมีผู้ใช้มากกว่าสองสามคนพร้อมกันในบัญชีเดียว) (ข้อกังวลอื่น ๆ ที่ฉันมีคือ 2 คนได้รับการล็อคสำหรับไอเท็มเดียวกัน แต่ฉันเชื่อว่าเป็นเงื่อนไขการแข่งขันที่ฉันพอใจ)