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

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

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

יעוץ בתכנון שליחת נתונים לצד קליינט כאשר יש לקליינט כמה צורות סינון לנתונים

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 3 כותבים 537 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC מנותק
    chagoldC מנותק
    chagold
    כתב ב נערך לאחרונה על ידי chagold
    #1

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

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

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

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

    תודה מראש.

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

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

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

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

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

      ותודה על ההשקעה בשאלה!

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

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

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

        @chagold אני ממש כעת אוחז במשהו דומה עם האובייקט של https://datatables.net/ (כדאי לך לבדוק אותו. יש שם סינונים, מיונים ושאר ירקות...)
        הם טוענים שעד 10000 רשומות הכי טוב לטעון הכל מראש ולעשות את המשחקים בקליינט.

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

        וכמו שאמר @dovid זו אכן התלבטות שתהיה לך כמעט בכל אפליקצייה שתכתוב....

        אין טסט כמו פרודקשן.

        המייל שלי urivpn@gmail.com

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

          @clickone אמר ביעוץ בתכנון שליחת נתונים לצד קליינט כאשר יש לקליינט כמה צורות סינון לנתונים:

          כי יש עוד כמה שעובדים במקביל

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

          clickoneC תגובה 1 תגובה אחרונה
          2
          • clickoneC מנותק
            clickoneC מנותק
            clickone
            השיב לchagold ב נערך לאחרונה על ידי
            #5

            @chagold זה אפשרי לגמרי.
            רק שגם את זה אתה אמור לתכנן....

            אין טסט כמו פרודקשן.

            המייל שלי urivpn@gmail.com

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

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

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

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