לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 12-05-2011, 15:43
  משתמש זכר nahem nahem אינו מחובר  
 
חבר מתאריך: 03.10.05
הודעות: 98
מספר התחברויות לבסיס נתונים

אני בונה אתר שמציג ומוכר תמונות בסגנון של istockphoto.com.
יש בבסיס נתונים טבלה של photos שבה כל שורה מייצגת תמונה. (אובייקט מסוג תמונה)
באתר יש הצגה של כל התמונות בקטן ובעת לחיצה על תמונה כלשהיא נפתח דף עבורה שמציג את התמונה.

לכל תמונה בבסיס נתונים ישנו שדה של clicks.
אם אני רוצה שבעת כניסה לתמונה כלשהיא (חוץ מהשליפה של המידע עבור התמונה החוצה), שדה clicks מונה ומוסיף אחד, משמע בכל לחיצה התחברות נוספת לבסיס נתונים ועדכון של השדה.

האתר יגיע לסדר גודל של עשרות או אפילו מאות אלפי תמונות. ומספר המשתמשים באתר והמשתמשים בו זמנית ברגע נתון ילך ויגדל.

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

האם עדיף ויעיל יותר לעדכן איזשהו קובץ exel, text שיכיל את המידע במקום להתעסק עם כניסות נוספות לבסיס נתונים?

תודה!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 12-05-2011, 18:08
  משתמש זכר nahem nahem אינו מחובר  
 
חבר מתאריך: 03.10.05
הודעות: 98
בתגובה להודעה מספר 2 שנכתבה על ידי שימי שמתחילה ב "יהיו לך בעיות של נעילות בגלל..."

תודה רבה! יש לי עוד כמה שאלות:
לא הייתי מודע לסוגי הטבלאות בבסיס נתונים עד עכשיו. שמתי לב שכל הטבלאות שלי עד עכשיו היו מסוג
MyISAM.
אני משתמש ב 2.0 wampserver ויש שם אופציה באמת לבחור גם את סוג InnoDB.

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

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

2. כשאמרת נעילה וכניסות "concurrent" האם מדובר בנסיון כתיבה לפני שהסתיים הנסיון הקודם?
3. אין בעיה ליצור באותו בסיס נתונים טבלאות מסוגים שונים כלומר גם MyISAM וגם InnoDB?
4. אני מבין למה כדאי ליצור טבלה נוספת אבל על פי תשובתך יש כמה פתרונות שונים שהעלו לי שאלות -

אופציה א :
ליצור טבלה נוספת מסוג InnoDB שתכיל כמה עמודות בסיסיות עבור כל שורה (שורה=קליק) כמו מספר תמונה ותאריך-שעה. וברגע שאני ירצה להשתמש בנתונים אני אקרא מהטבלה הזו וימנה את כל הקליקים של תמונה מסויימת בין תאריך לתאריך מסויים.
שאלות לאופציה א:
האם זה לא בעייתי שהבסיס נתונים הולך וגדל ויכול להגיע למספר שורות אסטרונומי ולא מוגבל? האם הקריאה תיהיה איטית כי מדובר בInnoDB?

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

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

אני מקווה שתוכל לעזור כי יצא קצת ארוך....
תודה !!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 12-05-2011, 18:37
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 3 שנכתבה על ידי nahem שמתחילה ב "תודה רבה! יש לי עוד כמה..."

ציטוט:
במקור נכתב על ידי nahem
ממה שאני מבין הבעיה בתיעוד קליקים בטבלה מסוג MyISAM היא שברגע שבו זמנית יהיה מספר גדול של לחיצות הבסיס נתונים לא יהיה מסוגל להתמודד עם כתיבה כפולה ורק טבלה מסוג InnoDB תדע להתמודד ולא לקרוס.
הבעייה שבכל פעם שאתה מעדכן רשומה בטבלה, אז היא ננעלת לכל דבר אחר (כולל לקריאות אחרות של מידע) - זה לא רק כתיבה כפולה, זה כל קריאה. ב InnoDB רק הרשומות הרלוונטיות לעדכון - ננעלות.
ציטוט:
במקור נכתב על ידי nahem
חשוב לי להוסיף שאת הפעולה של תיעוד הקליק אני עושה אך ורק לדפים של ניהול תמונות, ושל ניהול צלמים ככה שאני צריך לשלוף אותו לא בזמינות גבוהה.
זה נשמע קצת מוזר אפליקטיבית - אבל אולי אני לא מבין כל כך את האפליקציה. מספר הכניסות לתמונה לא אמור לעלות בכל סוג של כניסה, לא רק בניהול? כמובן שזה עניין שלך, פשוט נשמע לי מוזר.
ציטוט:
במקור נכתב על ידי nahem
שאלות:
1. למה אתה מתכוון "שומר את התמונות בבבסיס נתונים"? עשיתי שלכל תמונה בבסיס נתונים יש את הכתובת של הקובץ שמשוייך אליה שנמצא על השרת. התמונות המוצגות הם גרסא קטנה כמובן.
ואחרי הקנייה או התחברות ושימוש בקרדיט (עם שם משתמש וססמא) עבור אותה תמונה בבסיס נתונים יש את הכתובת לגרסא האמיתית אבל זה רק לאחר ההתחברות כיוזר בעל קרדיט....איפה צריך לאחסן את התמונות המקוריות ואת הכתובת אליהם בשרת?
יש בעולם מתכנתים מוזרים (גילוי נאות: רובם משתמשים במוצרי מיקרוסופט, נראה שהרעיון המגוחך הזה מקורו בתרבות התכנות המוזרה של מתכנתים אלה) שמאחסנים את המידע הבינארי של תמונות, בתוך ה DB עצמו (ולא כקובץ במערכת קבצים). אין שום סיבה שפוייה לעשות דבר כזה, זה מסבך ומאט. אבל יש כאלה שעושים את זה. רק רציתי לוודא שאתה לא. טיפ לגבי אחסון הקבצים במערכת הקבצים: אתה צריך לעשות את זה בצורה חכמה שלא תאפשר לאנשים לנחש מה ה path של קובץ אחד בהתבסס על אחד אחר (בהנחה שאין מנגנון authorization מובנה כחלק מהבקשה, למשל באמצעות מכניזם X-Sendfile כלשהוא...)
ציטוט:
במקור נכתב על ידי nahem
2. כשאמרת נעילה וכניסות "concurrent" האם מדובר בנסיון כתיבה לפני שהסתיים הנסיון הקודם?
להגדיר concurrency, בייחוד שיש רק תהליך אחד שפועל תמיד בו זמנית על מעבד, זה קצת קשה. מילא אם יש לך ריבוי ליבות. בכל אופן, הכוונה היא לכל מצב שבו יש לך רצף של פעולות עדכון שנועלות את הטבלה לזמן מתמשך והולך (זה בד"כ עומס שמביא עומס, לא כיף )
ציטוט:
במקור נכתב על ידי nahem
3. אין בעיה ליצור באותו בסיס נתונים טבלאות מסוגים שונים כלומר גם MyISAM וגם InnoDB?
שום בעייה. לפחות לא אחת שאני הבחנתי בה במימושים כאלה שעשיתי בעצמי.
ציטוט:
במקור נכתב על ידי nahem
4. אני מבין למה כדאי ליצור טבלה נוספת אבל על פי תשובתך יש כמה פתרונות שונים שהעלו לי שאלות -

אופציה א :
ליצור טבלה נוספת מסוג InnoDB שתכיל כמה עמודות בסיסיות עבור כל שורה (שורה=קליק) כמו מספר תמונה ותאריך-שעה. וברגע שאני ירצה להשתמש בנתונים אני אקרא מהטבלה הזו וימנה את כל הקליקים של תמונה מסויימת בין תאריך לתאריך מסויים.
שאלות לאופציה א:
האם זה לא בעייתי שהבסיס נתונים הולך וגדל ויכול להגיע למספר שורות אסטרונומי ולא מוגבל? האם הקריאה תיהיה איטית כי מדובר בInnoDB?
אם עבור כל קליק אתה שם שורה (כך אני מבין ממה שכתבת...), אז יש לך רק DB צובר, ללא עדכונים. במקרה זה, אין שום הגיון להשתמש ב InnoDB. מסיבות שונות, InnoDB דורש יותר נפח אחסון עבור אותו מידע. אם אין עדכונים ואתה עושה רק INSERT/SELECT, אזי ידוע ש MyISAM הוא בין המהירים בעולם...

לגבי כמות השורות, אני חושב שזה לא משמעותי, פשוט משום שהכל יהיה ייחוסי ממילא. אתה תיצור אינדקס על ה id, ובעצם בכל שאילתא שכזו תהיה סריקה של האינדקס, ולא של כל הטבלה. סתם קיומו של המון מידע, נראה לי לא בעייתי במיוחד. בייחוד שאין גבולות לגודל טבלה ב MySQL למעט ההגבלה שנובעת מהגודל המקסימלי של קובץ במחיצת הקבצים, שבה הטבלה יושבת...
ציטוט:
במקור נכתב על ידי nahem
אופציה ב:
ליצור טבלה נוספת מסוג InnoDB (כמו אופצייה א) אבל כל אני יוצר מספר שורות קבוע שזהה למספר התמונות ובעת קליק יהיה מציאה+עדכון של השורה המתאימה.
שאלות לאופציה ב:
אמנם אני מפסיד את עניין התיעוד של הזמנים של הקליקים אבל אולי אין ברירה וכך זה עדיף
אתה חוסך מקום, מעמיס UPDATE-ים במקום זה, ומקצר קלות את זמן אחזור המידע (בהנחה שאין לכל תמונה המון קליקים שיקחו ל COUNT זמן עצום, למרות שנראה לי שצריך מספרים גדולים מאוד בשביל שזה יקרה...). שיקול שלך
ציטוט:
במקור נכתב על ידי nahem
אופציה ג:
ליצור טבלה נוספת מסוג IMyISAM שתכיל שורה לכל קליק.
שאלות לאופציה ג:
האם זה לא בעייתי שהבסיס נתונים הולך וגדל ויכול להגיע למספר שורות אסטרונומי ולא מוגבל?
האם הכתיבה תיהיה שוב בעייתית כי מדובר בIMyISAM?
כמו שאמרתי ב-א' - לא נראה לי שמבחינת גודל יש בעייה. ל MyISAM אין בעייה בכתיבה (הוספה), אלא בעדכון...
ציטוט:
במקור נכתב על ידי nahem
אני מקווה שתוכל לעזור כי יצא קצת ארוך....
תודה !!
מקווה שעזרתי. בבקשה
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 18:52

הדף נוצר ב 0.08 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר