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

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

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

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

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

    בשונה מהפוסט הזה, יש לי נתונים כגון סטטיסטיקות שאני לא מעוניין לבצע עדכון בשרת על כל עדכון בד"ב כי זה משתנה מאוד הרבה פעמים, למשל בישיבה על קברו לאחר המענה אני משמיע למאזין/מציג לצופה את מספר ההשתפויות ביום זה במסלול הנוכחי.
    עד היום הייתי מבצע שאילתת sum מול הד"ב (mysql) על התאריך והמסלול המבוקש, זהו בזבוז משאבים, (בהתחשב בכך שזה בין 15K ל 25K פעמיים ביום)
    אני רוצה לשנות את זה.
    ברעיון הייתי יכול לבצע משתנה בשרת (node) שמכיל את הנתון מפוצל לי מסלולים, ובכל השתתפות להעלות את המונה, ולאפס אותו כל יום בחמש לפנות בוקר (או להשאיר וכל יום יווצר מחדש לתאריך החדש להיום).
    אני חושש מה יקרה באם אני יבצע שינוי בשרת וירענן את התהליך, ואז המשתנה מתאפס, או באם אבצע שינוי ידני (חריג) בטבלת ההשתפות.
    לכן אני עדיין מעוניין לבצע ריענון נתונים מול השרת, אבל למעט בו, לבצע שילוב.
    זאת אומרת נניח כל 3-5 דקות לבצע ריענון, ואז המונה מעלה שוב את התוצאות לפי ההשתתפות, עד לריענון הבא.
    בישיבה על קברו ניתן לומר שאני יכול לבצע רינון 24/6 כל 3-5 דקות כי הוא משתנה 24/6. אבל בחלק מהמערכות אין לי עניין לרענן כל הזמן, רק באם יש תנועה, ולכן חשבתי על כיון בדומה למה ש @yossiz כתב כאן
    https://tchumim.com/post/76384
    ולבצע בדיקה באם הנתון מיושן מכמה דקות אז לרענן את הנתון לפני ההשמעה
    האם יש למישהו רעיון או כיון יותר טוב

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

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

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

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

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

        @dovid אמר בריענון נתונים מתוך הד"ב לאחר משך זמן כלשהו:

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

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

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

          למעשה יש לי כאן התלבטות ואשמח אם יש למישהו כיון לייעץ לי.
          הרי בדר"כ שמירת הנתונים האמתיים מתבצעת בד"ב (mysql בענייננו).
          יש לי כעת פרוייקט שיש בו טבלת של הרשמה מסויימת, שכל הזמן נרשמים שם אנשים, ייתכן לכל אחד כ 30 שורות, אבל אין כפילויות, כל שורה היא במסלול אחר.
          הקטע הוא שאני צריך בתוכנה של הניהול שיוצגו פילוחים בזמן אמת, לפי כארבע קטגוריות, כגון עיר המנוי, מצב אישי של המנוי וכו', והכל מפולח לפי מסלול ולפי סוג ההרשמה אותו בחר וכו'.
          השאלה היא כך, השרת הוא נוד, ולמען האמת ניתן לעשות את כל הפילוחים בשאילתאות SQL שמבוצעות ע"י השרת ברגע האמת של הבקשה ומחזיר אותם לממשק הלקוח (זה מבוסס API), רק שהריענון מבוצע כל שניה, וייתכנו כמה חלונות פתוחים בו זמנית שזה יצטבר להמון בקשות.
          מצד שני ניתן לבצע את הפילוחים בנוד (יותר מסובך) ואז אין כזה בזבוז משאבים, וזה אומר שמלבד שמירת כל רישום בד"ב אני שומר אותו גם באובייקט בשרת, אבל אז אתמודד במה קורה בעת שאני יבצע שינוי בשרת ואאתחל אותו, האם ומה לשאוב מהד"ב לצורך שימוש בנתונים בשרת.
          ייתכן והשאלה לא כ"כ ברורה למען האמת, כי גם אני קצת מבולבל עדיין בנושא, בכל מקרה אם מישהו הבין חלקי דברים ויש לו מה להוסיף, אשמח.

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

            אני חושב שכל עוד שמשנתך לא סדורה תעבוד מול הmysql.
            כמובן תוודא שהכל יעיל שמה מבחינת האינדקסים וכדומה.

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

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

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

              @dovid אמר בריענון נתונים מתוך הד"ב לאחר משך זמן כלשהו:

              אני חושב שכל עוד שמשנתך לא סדורה תעבוד מול הmysql.
              כמובן תוודא שהכל יעיל שמה מבחינת האינדקסים וכדומה.

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

              SELECT COUNT(`id`), `status`, `kod_mosad`, `maslul`, `date`, `goral` FROM `users_limud` WHERE `date` > 20191022
              GROUP BY `status`, `kod_mosad`, `maslul`, `date`, `goral`
              

              (עשיתי סינון תאריך כי יש בטבלה מעל 4.5M ולא רציתי סתם להעמיס).
              זה נתן לי
              7d57861c-9153-4079-8677-718a87268cbf-image.png
              האם זה מוגזם?

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

                לא הבנתי, 300 הבקשות הם עם קריטריון אחר מאשר התאריך, לא ככה?

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

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

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

                  @dovid אמר בריענון נתונים מתוך הד"ב לאחר משך זמן כלשהו:

                  לא הבנתי, 300 הבקשות הם עם קריטריון אחר מאשר התאריך, לא ככה?

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

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

                    @חוקר אמר בריענון נתונים מתוך הד"ב לאחר משך זמן כלשהו:

                    300 הבקשות הם כל הזמן אותו דבר, פילוח מלא של כל המידע נכון לשניה זו, רק שהיות וזה פתוח מכמה מקומות כתבתי כ 300 בקשות, 60 בקשות בדקה, כל שניה בקשה אחת מ5 מקורות.

                    אז עושים רק שאילתה אחת ומחזירים את התשובה לכולם כל עוד לא עברה שניה מאז.

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

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

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

                      @dovid אמר בריענון נתונים מתוך הד"ב לאחר משך זמן כלשהו:

                      @חוקר אמר בריענון נתונים מתוך הד"ב לאחר משך זמן כלשהו:

                      300 הבקשות הם כל הזמן אותו דבר, פילוח מלא של כל המידע נכון לשניה זו, רק שהיות וזה פתוח מכמה מקומות כתבתי כ 300 בקשות, 60 בקשות בדקה, כל שניה בקשה אחת מ5 מקורות.

                      אז עושים רק שאילתה אחת ומחזירים את התשובה לכולם כל עוד לא עברה שניה מאז.

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

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

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

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

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