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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עדכון תהליך ה NODEJS לאחר ביצוע עריכה בד"ב MySQL

עדכון תהליך ה NODEJS לאחר ביצוע עריכה בד"ב MySQL

מתוזמן נעוץ נעול הועבר תכנות
13 פוסטים 2 כותבים 176 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מחובר
    dovidD מחובר
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #2

    ריענון או גילוי שינויים רלוונטי רק אם חלק מהמערכת אינה תחת שליטתך.
    במידה והכל בשליטה שלך אז אף פעם אין צורך ב"ריענון", צריך סך הכל ליידע את השרת בשינוי עצמו.
    השאלה המרכזית היא מה שורש השינוי.
    למשל בשינוי כתיב, היכן מבוצע השינוי, מול איזה שרת?
    אתה צריך "ללכת" למקור השינוי ולדאוג שהוא יפנה לשרת הnode עם דיווח על העדכון במלואו ("הערך X שונה Y לZ").

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    ח 2 תגובות תגובה אחרונה
    2
    • ח מנותק
      ח מנותק
      חוקר
      השיב לdovid ב נערך לאחרונה על ידי
      #3

      @dovid
      הכל בשליטתי, במקרה זו למשל יש שתי מקורות שינוי.
      א. בממשק של המזכיר של ישיבה על קברו (פריימוורק YII2 מבוסס PHP). [עשיתי לו אפשרות הוספת שורה חדשה - כמעט ולא בשימוש, עריכת שורה - בשימוש לתיקונים, וחלון יבוא מאקסל ע"י העתק הדבק - שזה מה שהכי שימושי]
      ב. בד"ב עצמו ע"י PMA למשל.
      רוב השינויים מבוצעים ע"י המזכיר באופציה א, אלא א"כ זה משהו שינוי מרובה לפי קריטיונים וכדומה שאז אני עושה בד"ב.
      רק שזה 2 מערכות, זה PHP והמערכת עצמה בנוד.
      אז לכאורה אצטרך לעשות API ולהגדיר בYII2 בכל אחד מהשלושה דלעיל שיבצע קריאה לשרת לAPI לתהליך הנוד לביצוע ריענון?
      (בשינויים שאני יעשה אוכל לקרוא לזה בצורה ידנית)

      תגובה 1 תגובה אחרונה
      0
      • ח מנותק
        ח מנותק
        חוקר
        השיב לdovid ב נערך לאחרונה על ידי
        #4

        @dovid אמר בעדכון תהליך ה NODEJS לאחר ביצוע עריכה בד"ב MySQL:

        אתה צריך "ללכת" למקור השינוי ולדאוג שהוא יפנה לשרת הnode עם דיווח על העדכון במלואו ("הערך X שונה Y לZ").

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

        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי dovid
          #5

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

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          ח 2 תגובות תגובה אחרונה
          2
          • ח מנותק
            ח מנותק
            חוקר
            השיב לdovid ב נערך לאחרונה על ידי
            #6

            @dovid
            לא מכחיש, אולי אני צריך קצת ללמוד את הקטע שבו אני קצת חושש.
            הרי תהליך הנוד הוא תהליך שלפעמים מבוצע עליו ריענון, הן בגלל שינויים, והן ע"י הפעלה מחדש או כל סיבה אחרת שיכולה לגרום לתהליך לקרוס ולאתחל את עצמו מחדש.
            לכן נתונים אמיתיים אני חייב לשמור בד"ב ולא רק בתהליך, אך היות שאין צורך לבדוק כל פעם מחדש כי התהליך כשהוא רץ הוא רץ ללא הפסקה בשונה מPHP שהייתי חייב הכל הכל הכל לבדוק בכל קריאה, לכן אני כן יכול להסתמך עליו.
            אך אני כל פעם מכין את עצמי לקראת אפשרות של ניקוי הנתונים בתהליך שאז אני שולף מהד"ב.
            אשמח אם מישהו יוכל לתת לי יותר הבנה וכלים להתמודד בקטע זה.
            ואגב לגבי

            @dovid אמר בעדכון תהליך ה NODEJS לאחר ביצוע עריכה בד"ב MySQL:

            היחיד שצריך לעדכן את הDB זה הנוד

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

            dovidD תגובה 1 תגובה אחרונה
            0
            • ח מנותק
              ח מנותק
              חוקר
              השיב לdovid ב נערך לאחרונה על ידי
              #7

              @dovid
              מה שאני כן מתחיל לחשוב תוך כדי לפצל לשניים, ליצור פונקציית Start, ופונקציית UpDate
              ואז מה שאמור להשתנות רק ע"י השרת הזה יעלה ע"י ה Start ומה שיכול להשתנות ע"י גורם חיצוני יעודכן ע"י ה UpDate

              תגובה 1 תגובה אחרונה
              1
              • dovidD מחובר
                dovidD מחובר
                dovid ניהול
                השיב לחוקר ב נערך לאחרונה על ידי
                #8

                @חוקר אמר בעדכון תהליך ה NODEJS לאחר ביצוע עריכה בד"ב MySQL:

                @dovid
                הרי תהליך הנוד הוא תהליך שלפעמים מבוצע עליו ריענון, הן בגלל שינויים, והן ע"י הפעלה מחדש או כל סיבה אחרת שיכולה לגרום לתהליך לקרוס ולאתחל את עצמו מחדש.
                לכן נתונים אמיתיים אני חייב לשמור בד"ב ולא רק בתהליך, אך היות שאין צורך לבדוק כל פעם מחדש כי התהליך כשהוא רץ הוא רץ ללא הפסקה בשונה מPHP שהייתי חייב הכל הכל הכל לבדוק בכל קריאה, לכן אני כן יכול להסתמך עליו.
                אך אני כל פעם מכין את עצמי לקראת אפשרות של ניקוי הנתונים בתהליך שאז אני שולף מהד"ב.
                אשמח אם מישהו יוכל לתת לי יותר הבנה וכלים להתמודד בקטע זה.

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

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

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

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                ח תגובה 1 תגובה אחרונה
                3
                • ח מנותק
                  ח מנותק
                  חוקר
                  השיב לdovid ב נערך לאחרונה על ידי
                  #9

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

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • dovidD מחובר
                    dovidD מחובר
                    dovid ניהול
                    השיב לחוקר ב נערך לאחרונה על ידי
                    #10

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

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    ח תגובה 1 תגובה אחרונה
                    1
                    • ח מנותק
                      ח מנותק
                      חוקר
                      השיב לdovid ב נערך לאחרונה על ידי
                      #11

                      @dovid אמר בעדכון תהליך ה NODEJS לאחר ביצוע עריכה בד"ב MySQL:

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

                      כעת יש לי מערכת עם טבלה של מעל 10K רשומות של אנשי קשר מפוצלים לפי פרוייקט כל פרוייקט כ 2K.
                      המספרים אמורים לגדול בכל מפעיל נוסף, גם בזה היית אומר שבכל ריענון לרענן תמיד הכל או כן לחשוש למשאבים מיותרים, ולרענן רק לפרוייקט שבוצע שינוי?

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • dovidD מחובר
                        dovidD מחובר
                        dovid ניהול
                        השיב לחוקר ב נערך לאחרונה על ידי
                        #12

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

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        ח תגובה 1 תגובה אחרונה
                        0
                        • ח מנותק
                          ח מנותק
                          חוקר
                          השיב לdovid ב נערך לאחרונה על ידי
                          #13

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

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

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

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

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