ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
aviאורח · ·
 

הודעה פורסם: 29/09/2017 - 09:15
נושא ההודעה: טבלאות מרובות או טבלה גדולה postgresql

שלום
אם מישהו יוכל לעזור לי מנסיונו אני אודה לו מאוד!
הסיטואציה היא שיש לי מסד נתונים די פשוט עם 2 טבלאות אחת של משתמשים, ואחת של נתונים על המשתמשים.
הנתונים יכולים להיות בין אלף לנניח במקרה הגרוע 10 אלף לכל משתמש. הנתונים הם נתונים יבשים כמו נתוני מיקום וכדו' נתונים שלא נדרשים לעדכונים רבים רק כתיבה פעם אחת ואז הרבה קריאות. (אולי מחיקות לא מרובות)
השאלה איך לתכנן את זה, הבנתי שלטבלה גדולה יש מחיר בזיכרון ראם.
ושיש ב postgresql אפשרות של partitions שהביצועים שלה יורדים כאשר מדובר בכמה אלפי מחיצות. אני יכול להגיע לסדר גודל כזה.

מה נראה לכם מומלץ לי לעשות?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 30/09/2017 - 12:29
נושא ההודעה:

ב RDBMS

הכלל הבסיסי זה להשתמש בטבלאות מרובות .
הסיבה : יעילות .

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

הודעה פורסם: 30/09/2017 - 21:51
נושא ההודעה:

Anonymous :
ב RDBMS

הכלל הבסיסי זה להשתמש בטבלאות מרובות .
הסיבה : יעילות .

טבלאות מרובות מקטינות את מספר השורות .
ביחס לטבלה אחת וזה מוריד את הכפילויות של צורות ריבוי .

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

הודעה פורסם: 30/09/2017 - 22:38
נושא ההודעה:

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

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

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

הודעה פורסם: 30/09/2017 - 23:35
נושא ההודעה:

טוב,
אני לא בחרתי את המערכת הזו לבעיה הזו זאת הבעיה. אני מנסה להתמודד בצורה הנכונה עם מה שנתנו לי.
בכל אופן תודה רבה, אני יתכנן את זה בשביל השלב הראשוני לפה מה שהצעתם. ואחר כך נראה
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mksoftלא בפורום כעתSite Admin ת.הצטרפות: 17/03/2002 · הודעות: 10514 · מיקום: כדור הארץ
 

הודעה פורסם: 01/10/2017 - 08:36
נושא ההודעה:

אפשר לספק מידע נוסף שיעזור, כגון:

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

_________________
הבלוג שלי
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 01/10/2017 - 08:50
נושא ההודעה:

mksoft :
אפשר לספק מידע נוסף שיעזור, כגון:

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

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

הודעה פורסם: 01/10/2017 - 09:29
נושא ההודעה:

Anonymous :
mksoft :
אפשר לספק מידע נוסף שיעזור, כגון:

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

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


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

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

יש גם דרך לשלוט בזה, אבל זו ברירת המחדל ב Ph.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [avi]
  2. אורח
  3. אורח
  4. אורח [e]
  5. אורח
  6. mksoft
  7. אורח
  8. אורח