לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי         אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 20-07-2019, 21:28
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,408
בתגובה להודעה מספר 1 שנכתבה על ידי Nati323 שמתחילה ב "למה להשתמש ב triggeres ב SQL?"

כל פעם שאתה רוצה שבעקבות שאילתא מסויימת יקרה משהו בצורה אוטומטית וללא צורך לנהל את זה באפליקציה.

האם אתה צריך את זה? לא יודע. כשתצטרך, תדע שזה קיים...

דוגמאות אפשר לתת בשפע, וגם דוגמאות סותרות. למשל, יכול להיות שאתה רוצה למנוע מחיקת מידע בטעות, ותעשה trigger שמשכפל מידע שנמחק לטבלת מחיקות. אבל אם זה הייתי אני - לא הייתי מאפשר למחוק את המידע מלכתחילה מהטבלה, אלא במקום זה שם טור is_deleted ופשוט מעדכן אותו ל 1. למעשה, במידת האפשר, הייתי (ואני אכן עושה זאת, זה לא תאורטי) מונע מהמשתמש של האפליקציה בכלל שאילתות DELETE, בטח בצורה גלובלית... אם צריך ואין דרך לעשות מחיקה לוגית כנ"ל, אז הייתי נותן הרשאה ספציפית על טבלה ספציפית. אבל זה רק אני...

בעיני (אני הקטן), הדבר משול לכתיבת לוגיקה אפליקטיבית במקום לא-לה: במערכת שאמורה רק לשמור נתונים. יש אולי מקרי קצה מאוד מאוד ספציפים (ביצועים? שזמן ה roundtrip ל DB משנה?) שאולי יש לזה לגיטימיות. לא יצא לי באופן אישי להתקל במקרים כאלה, אבל יכול להיות שזה רק כי לא עבדתי במספיק מקומות. בכל המקומות שעבדתי בהם והשתמשו בזה, ידעתי שהשתמשו בזה רק כי זה הרס לנו את החיים... אז אתה מקלל את החמור שעשה את זה, וממשיך הלאה. כי לגעת בזה זה כל כך מסוכן, כי כמובן שבנו טילי טילים על ההנחות של מה שזה עושה.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 24-07-2019, 07:47
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,408
בתגובה להודעה מספר 3 שנכתבה על ידי Nati323 שמתחילה ב "תודה על התגובה, אכן בתור..."

truncate כחלק מלוגיקה אפליקטיבית? נשמע לי משהו נדיר ביותר... נשמע כמו משהו שיכול לקרות רק כשמשתמשים ב DB לא כדי לאחסן נתונים, אלא ב anti-pattern כלשהו כמו DB-as-IPC, DB-as-queue וכיוצ"ב (וגם אז נשמע כמו מתכון ל race condition אא"כ מנהלים נעילות בצד ודואגים לרמת מקביליות שהיא בדיוק 1), או אם משתמשים בטבלה ואז מרוקנים אותה כדי בעצם להשתמש בטבלה זמנית, במקום להשתמש ב... טבלה זמנית

החסרון הוא שאם יש לך באג בקוד, בין אם הוא קורה ספונטנית, ובין אם הוא קורה בגלל בעיית אבטחה (SQL Injection וכיוצ"ב), אי אפשר באמת למחוק את המידע[*], בטעות או בכוונה, וכל שתצטרך כדי להחזיר אותו, הוא לאפס את ערך טור ה deleted...

[*] צריך אבל לחשוב גם על update, שגם הוא כמובן יכול למחוק מידע. בהתאמה, ניתן למזער נזקים על ידי הגבלת המשתמש האפליקטיבי לאיפשור update רק לטורים שבאמת צריכים אותו. ואפשר לעבוד גם בתור append-only: אף אחד לא יכול לעדכן, אף אחד לא יכול למחוק - כל הזמן רק מוסיפים, וכשקוראים את המידע, קוראים את הנתון האחרון. כך, בעצם, גם אם פרצו לאפליקציה לגמרי, הנזק מוגבל לנזק זמני - אם אתה מוחק את הרשומות שנוצרו אחרי הפריצה, המצב חוזר לקדמותו, מבלי שתצטרך לחזור לגיבוי אחרון (שמי יודע מתי הוא היה וכמה מידע הלך לאיבוד בינתיים. וכן, לחכמים שקוראים את זה, אני יודע מה זה point in time recovery. לא כולם יודעים, לא לכולם יש, וכו'.)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +3. השעה כעת היא 23:27

הדף נוצר ב 0.32 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2019 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר