דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. מניעת race condition ב-DB

מניעת race condition ב-DB

מתוזמן נעוץ נעול הועבר תכנות
42 פוסטים 7 כותבים 2.2k צפיות 6 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ
    מנצפךמ
    מנצפך
    כתב ב נערך לאחרונה על ידי
    #31

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

    אפשר להקצות את כל השרת רק לזה, אם אתה רוצה למנוע מצבים של עומס (כי זה תהליך אחד שעושה את כל הקבלות).

    שאר הפתרונות שיש כאן הם ברמת הDB, ומשתנים ממנוע אחד למשנהו ואפילו מגירסה לגירסה.

    yossizY תגובה 1 תגובה אחרונה
    5
    • מנצפךמ מנצפך

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

      אפשר להקצות את כל השרת רק לזה, אם אתה רוצה למנוע מצבים של עומס (כי זה תהליך אחד שעושה את כל הקבלות).

      שאר הפתרונות שיש כאן הם ברמת הDB, ומשתנים ממנוע אחד למשנהו ואפילו מגירסה לגירסה.

      yossizY
      yossizY
      yossiz
      כתב ב נערך לאחרונה על ידי yossiz
      #32

      @מנצפך תודה, הפתרון שלך דומה מאוד לפתרון 3 שהצעתי, רק שאני הצעתי להשתמש בשירות מובנה של ה-DB ואתה מציע לממש את זה בעצמי.

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

      לעצם הפתרון, אחרי מחשבה אני תופס שלכאורה זה הפתרון הכי זול (מבחינת נעילות) שקיים. הנעילה תהיה רק על הפעולה שחייבת נעילה.

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
      👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

      nigunN תגובה 1 תגובה אחרונה
      1
      • מנצפךמ
        מנצפךמ
        מנצפך
        כתב ב נערך לאחרונה על ידי
        #33

        לא הבנתי על מה אתה מדבר? כי בפתרון שלי אין שום מימוש של נעילה

        yossizY תגובה 1 תגובה אחרונה
        0
        • מנצפךמ מנצפך

          לא הבנתי על מה אתה מדבר? כי בפתרון שלי אין שום מימוש של נעילה

          yossizY
          yossizY
          yossiz
          כתב ב נערך לאחרונה על ידי
          #34

          @מנצפך נכון, התכוונתי למצב שמגביל את הגישה לאחד אחד. זה שוה ערך לנעילה.

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
          👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

          תגובה 1 תגובה אחרונה
          0
          • מנצפךמ
            מנצפךמ
            מנצפך
            כתב ב נערך לאחרונה על ידי
            #35

            זה לא מגביל את הקליינט בשליחת בקשה כמובן. רק התשובה תתמהמה מעט.

            תגובה 1 תגובה אחרונה
            0
            • yossizY yossiz

              @מנצפך תודה, הפתרון שלך דומה מאוד לפתרון 3 שהצעתי, רק שאני הצעתי להשתמש בשירות מובנה של ה-DB ואתה מציע לממש את זה בעצמי.

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

              לעצם הפתרון, אחרי מחשבה אני תופס שלכאורה זה הפתרון הכי זול (מבחינת נעילות) שקיים. הנעילה תהיה רק על הפעולה שחייבת נעילה.

              nigunN
              nigunN
              nigun
              כתב ב נערך לאחרונה על ידי
              #36

              @yossiz אמר במניעת race condition ב-DB:

              בל לעומת זה אני רואה חסרונות גם כן, ובפרט בפרוייקט בגודל זה (כלומר קטן מאוד כרגע) לא נראה לי ששוה לי ההשקעה.

              איזה חסרונות קיימים בנעילה בקוד?
              (באיזה שפה הקוד כתוב?)

              מייל: nigun@duck.com

              dovidD yossizY 2 תגובות תגובה אחרונה
              0
              • nigunN nigun

                @yossiz אמר במניעת race condition ב-DB:

                בל לעומת זה אני רואה חסרונות גם כן, ובפרט בפרוייקט בגודל זה (כלומר קטן מאוד כרגע) לא נראה לי ששוה לי ההשקעה.

                איזה חסרונות קיימים בנעילה בקוד?
                (באיזה שפה הקוד כתוב?)

                dovidD
                dovidD
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #37

                @nigun בנעילה בקוד יש שתי בעיות:
                א. בתחזוקת הקוד לעולם צריך לזכור את האחריות הזאת
                ב. צריך לוודא שאין מצב של ריצה מקבילה של מופעים, אסור שהתוכנה תרוץ פעמיים.

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                nigunN תגובה 1 תגובה אחרונה
                5
                • nigunN nigun

                  @yossiz אמר במניעת race condition ב-DB:

                  בל לעומת זה אני רואה חסרונות גם כן, ובפרט בפרוייקט בגודל זה (כלומר קטן מאוד כרגע) לא נראה לי ששוה לי ההשקעה.

                  איזה חסרונות קיימים בנעילה בקוד?
                  (באיזה שפה הקוד כתוב?)

                  yossizY
                  yossizY
                  yossiz
                  כתב ב נערך לאחרונה על ידי yossiz
                  #38

                  @nigun אני לא בטוח שיש שום חסרונות בנעילה בקוד. (עריכה: עיין מה שכתב דוד למעלה)
                  זה nodejs.

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

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
                  👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

                  תגובה 1 תגובה אחרונה
                  3
                  • dovidD dovid

                    @nigun בנעילה בקוד יש שתי בעיות:
                    א. בתחזוקת הקוד לעולם צריך לזכור את האחריות הזאת
                    ב. צריך לוודא שאין מצב של ריצה מקבילה של מופעים, אסור שהתוכנה תרוץ פעמיים.

                    nigunN
                    nigunN
                    nigun
                    כתב ב נערך לאחרונה על ידי
                    #39

                    @dovid אמר במניעת race condition ב-DB:

                    ב. צריך לוודא שאין מצב של ריצה מקבילה של מופעים, אסור שהתוכנה תרוץ פעמיים.

                    מה הבעיה? ריצה מקבילה של מספר מופעים באותו אפליקציה או ריצה של מספר אפליקציות?

                    מייל: nigun@duck.com

                    yossizY תגובה 1 תגובה אחרונה
                    0
                    • nigunN nigun

                      @dovid אמר במניעת race condition ב-DB:

                      ב. צריך לוודא שאין מצב של ריצה מקבילה של מופעים, אסור שהתוכנה תרוץ פעמיים.

                      מה הבעיה? ריצה מקבילה של מספר מופעים באותו אפליקציה או ריצה של מספר אפליקציות?

                      yossizY
                      yossizY
                      yossiz
                      כתב ב נערך לאחרונה על ידי
                      #40

                      @nigun הנעילה מגינה מפני מספר מופעים באותו תהליך, אבל אם יש מספר מופעים של התהליך לא תעזור הנעילה.
                      אבל זה לא לגמרי נכון כי זה תלוי איך עושים את הנעילה.

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
                      👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

                      nigunN תגובה 1 תגובה אחרונה
                      0
                      • yossizY yossiz

                        @nigun הנעילה מגינה מפני מספר מופעים באותו תהליך, אבל אם יש מספר מופעים של התהליך לא תעזור הנעילה.
                        אבל זה לא לגמרי נכון כי זה תלוי איך עושים את הנעילה.

                        nigunN
                        nigunN
                        nigun
                        כתב ב נערך לאחרונה על ידי
                        #41

                        @yossiz
                        לא יודע איך עובד נעילה בנוד
                        אבל לכאורה כל עוד לכל התהליכים יש גישה לאותו מרחב בזיכרון
                        אז הנעילה עובדת על כולם
                        אולי בנוד זה עובד אחרת (אולי לכן יש ישום של נעילה מתוך רדיס)

                        מייל: nigun@duck.com

                        yossizY תגובה 1 תגובה אחרונה
                        0
                        • nigunN nigun

                          @yossiz
                          לא יודע איך עובד נעילה בנוד
                          אבל לכאורה כל עוד לכל התהליכים יש גישה לאותו מרחב בזיכרון
                          אז הנעילה עובדת על כולם
                          אולי בנוד זה עובד אחרת (אולי לכן יש ישום של נעילה מתוך רדיס)

                          yossizY
                          yossizY
                          yossiz
                          כתב ב נערך לאחרונה על ידי
                          #42

                          @nigun אמר במניעת race condition ב-DB:

                          אבל לכאורה כל עוד לכל התהליכים יש גישה לאותו מרחב בזיכרון

                          אנחנו סוטים קצת, אבל אני לא מבין את דבריך כי לתהליכים שונים אין גישה לאותו מרחב זיכרון

                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
                          👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

                          תגובה 1 תגובה אחרונה
                          1

                          שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                          נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                          בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                          הרשמה התחברות
                          תגובה
                          • תגובה כנושא
                          התחברו כדי לפרסם תגובה
                          • מהישן לחדש
                          • מהחדש לישן
                          • הכי הרבה הצבעות


                          • 1
                          • 2
                          • 3
                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום