נעילה לוגית ב Web
WebPage באפליקציה דוט נטית, מציגה Grid עם נתונים, משתמשים רבים רואים את ה Grid הנ"ל, וכל משתמש יכול ללחוץ על רשומה בגריד, ובעצם לנעול אותה לשימושו (עד אשר ישחרר). כאשר משתמש לוחץ על רשומה, מתעדכן ב DB שדה אינדיקציה המעיד על כך שהרשומה ננעלה (וגם מתועד מי נעל), וכאשר הגולש משחרר את הרשומה, האינדיקציה נמחקת (וגם מי נועל). הנ"ל עובד יפה, פרט למקר קצה שבו יש בעצם תחרות בין 2 משתמשים (או יותר), ובשל בעיית סנכרון זמנים, כאשר הם מנסים לנעול את אותה רשומה, לעיתים שניהם "מצליחים" (בפועל ב DB מעודכן שרק אחד נועל, אבל גם השני קיבל את המסך שמעיד על הצלחה בנעילה). הנ"ל קורה מכיוון ששניהם שולפים את אינדיקציית ה "נעול" מה DB באותו שבריר שנייה, ושניהם מקבלים "לא נעול".
כיצד ניתן להתגבר על בעיה זו ? חשבתי להוסיף השהייה זמן רנדומלי לפני ביצע הנעילה, אך הרי גם במצב זה יתכן ש 2 גולשים יקבלו את אותו הזמן, ושוב יגיעו לבסיס הנתונים באותו שבריר שנייה...
WebPage באפליקציה דוט נטית, מציגה Grid עם נתונים, משתמשים רבים רואים את ה Grid הנ"ל, וכל משתמש יכול ללחוץ על רשומה בגריד, ובעצם לנעול אותה לשימושו (עד אשר ישחרר). כאשר משתמש לוחץ על רשומה, מתעדכן ב DB שדה אינדיקציה המעיד על כך שהרשומה ננעלה (וגם מתועד מי נעל), וכאשר הגולש משחרר את הרשומה, האינדיקציה נמחקת (וגם מי נועל). הנ"ל עובד יפה, פרט למקר קצה שבו יש בעצם תחרות בין 2 משתמשים (או יותר), ובשל בעיית סנכרון זמנים, כאשר הם מנסים לנעול את אותה רשומה, לעיתים שניהם "מצליחים" (בפועל ב DB מעודכן שרק אחד נועל, אבל גם השני קיבל את המסך שמעיד על הצלחה בנעילה). הנ"ל קורה מכיוון ששניהם שולפים את אינדיקציית ה "נעול" מה DB באותו שבריר שנייה, ושניהם מקבלים "לא נעול".