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

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

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

תכנון DB

מתוזמן נעוץ נעול הועבר תכנות
14 פוסטים 6 כותבים 306 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • WWWW מנותק
    WWWW מנותק
    WWW
    כתב ב נערך לאחרונה על ידי
    #1

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

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

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

    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

    yossizY ח 2 תגובות תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לWWW ב נערך לאחרונה על ידי
      #2

      @WWW המושכל הראשון שלי מסכים למושכל הראשון שלך...
      אשמח לשמוע דעות חולקות

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

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

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

          לפי הספר טבלה אחת גדולה, כך אני חושב.

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

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

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

            @חוקר תודה רבה!

            אני ב PHP כך שמה שכתבת בהמשך לא רלוונטי, לגבי השורות זה לא אמור לעבור את ה K200 - 300K.

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

            @dovid מה אתה אומר? עדיין כדאי טבלה אחת?

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

            WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

            OdedDvirO yossizY 2 תגובות תגובה אחרונה
            0
            • OdedDvirO מחובר
              OdedDvirO מחובר
              OdedDvir
              השיב לWWW ב נערך לאחרונה על ידי OdedDvir
              #6

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

              1. שם ייחודי לכל טבלה Table1, Table2, ....Table987
                מסתמא תצטרך עוד טבלת עזר כדי לתחזק ולשייך כל טבלה
              2. הוספה \ הסרה של שדות מ-1000 טבלאות! (גם אם כרגע נראה לך שלא שייך מפאת השפה)
              3. שאילתת איחוד של 1000 טבלאות!
              SELECT * FROM Table1
              UNION
              SELECT * FROM Table2
              UNION
              SELECT * FROM Table3
              UNION
              SELECT * FROM Table4
              UNION ...........
              
              1. יש עוד כמה תרחישים מסמרי שיער, כמו גיבויים ושחזורים...

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

              WWWW תגובה 1 תגובה אחרונה
              5
              • WWWW מנותק
                WWWW מנותק
                WWW
                השיב לOdedDvir ב נערך לאחרונה על ידי WWW
                #7

                @OdedDvir תודה רבה!!!
                יש לך כושר הסברה נפלא!

                @yossiz אתה מסכים?

                WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                yossizY תגובה 1 תגובה אחרונה
                2
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  השיב לWWW ב נערך לאחרונה על ידי yossiz
                  #8

                  @WWW מי אני... אני שומע את הטענות, וזה נשמע הגיוני. בפרט אם יש עצה של "שליפת הנתונים הרלוונטיים למערכת לטבלת עזר" כמו ש@OdedDvir כתב.

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

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

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

                      @WWW אמר בתכנון DB:

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

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

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

                        @yossiz אמר בתכנון DB:

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

                        לא הבנתי 😞
                        אשמח שתסביר לי בדיוק מה לעשות.

                        WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

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

                          @WWW נגיד שיש לך טבלה כזאת:

                          CREATE TABLE something (
                              "id" uuid NOT NULL,
                              "info1" varchar,
                              "info2" varchar,
                              "info3" varchar,
                              "system_id" integer NOT NULL,
                               PRIMARY KEY ("id")
                          );
                          

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

                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

                            @yossiz אמר בתכנון DB:

                            (ואז נראה לי שאין צורך להשתמש באינדקס ייחודי לעמודת system_id)

                            אני לא יכול, כי כאמור יש לי ערכים כפולים. דהיינו ייתכנו שתי ID על אותו system_id.
                            מה שעשיתי כרגע:
                            PRIMARY KEY על ID ו system_id ביחד.
                            זה הסינון שאני אצטרך לרוב.
                            זה טוב?

                            העניין שלפעמים ארצה לקבל COUNT לפי סינון של system_id בלבד, זה יפריע?

                            WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                            yossizY תגובה 1 תגובה אחרונה
                            0
                            • yossizY מנותק
                              yossizY מנותק
                              yossiz
                              השיב לWWW ב נערך לאחרונה על ידי
                              #14

                              @WWW אמר בתכנון DB:

                              PRIMARY KEY על ID ו system_id ביחד.
                              זה הסינון שאני אצטרך לרוב.
                              זה טוב?

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

                              @WWW אמר בתכנון DB:

                              העניין שלפעמים ארצה לקבל CONT של לפי סינון של system_id בלבד, זה יפריע?

                              צ"ל COUNT.
                              זה לא אמור להפריע. תמיד אפשר לסנן לפי איזה מן העמודות השמאליות ביותר של האינדקס שתרצה.

                              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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

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

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

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