עבור לתוכן

מחפש ספר\מדריך כלשהו לגישה נכונה ל-DB במצב של ריבוי משתמשים

Featured Replies

פורסם

הי,

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

אני בונה איזושהי אפליקציה אינטרנטית שעובדת דרך Web Service עם שרת PHP Apache שכותב\קורא מ - MySQL DB.

הצלחתי ליצור קשר בין שלושת הצדדים (Client-PHP-DB) אבל האפליקציה שלי צריכה להיות בנויה כך שתוכל להתמודד עם מספר גדול של משתמשים ובשביל זה אני צריך לשפר אותה ולהבין כמה דברים -

1. איך לנהל Connections ל- DB ככה שיוכל להתמודד עם נניח 100-200 משתמשים בו זמנית ולהחזיר להם תשובה במהירות.

2. איך לנהל Sessions.

אני חושב שאני חייב לנהל Sessions כמו שצריך כדי שאני אוכל גם לנהל Connections בצורה נכונה.

בנתיים השרת הוא פחות או יותר רק Web Service שמקל קריאות מה- Client ובד"כ מעביר אותן הלאה ל-DB ומחזיר תשובה.

אין לי מושג אם אני אמור לפתוח Connection לכל יוזר ולשמור אותו ב- Pool של Connections ואם כל Session עובד ב- Thread נפרד וכו וכו... בכלל יש לי די הרבה בלאגן בנושא ואני מחפש משהו שיעשה לי קצת סדר.

מקווה שמישהו כאן יוכל לעזור לי.

תודה!

פורסם

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

בכל מקרה בשביל קצת לכוון אותך:

DB Connection per user- אף אחד לא עובד ככה, יש פול כללי, מגיעה בקשה משתמשת ב-Connection ומחזירה אותו לפול.

Session - אני מניח שאתה מתכוון ל-session של apache, אם מדובר ב-web service נורמאלי אז אין לך שימוש ב-session בכלל ככה שאין פה מה לנהל.

פורסם
  • מחבר

צודק!

אתמול בדיוק איזה DBA עשה לי עם זה קצת סדר בראש עם ניהול Connections ל-DB.

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

תודה!

פורסם

שימוש ב-Session בשרת web יוצא מתוך ההנחה שמי שעובד מול השרת זה תוכנת דפדפן והמימוש של זה הוא כמעט תמיד בעזרת cookies.

לעומת זאת Web Service זה שרות כללי שאמור להתממשק מול הרבה תוכנות קליינט שונות ולכן אי אפשר להניח שיש לכל הקליינטים תהיה תמיכה ב-cookies מה שהופך את השימוש ב-Session לעניין מסובך למדי.

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

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים