21-09-2011, 06:55
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
באופן כללי זה נכון. אבל אתה לא עושה סתם sharding, זה צריך להיות חכם. כמו כן "גודל האינדקס" הוא לא הבעייה שלך. באופן כללי הבעייה היא כמעט תמיד כמות הכתיבות שצריך לבצע "בו זמנית" לטבלה מסויימת...
כמו כן אתה צריך להבין שרפליקציה היא גם לא נושא פשוט - בד"כ עושים אותה כ master/slave - אחד "ראשי" וכל השאר העתקים שלא ניתן לכתוב אליהם שינויים. כלומר את כל השינויים האפליקציה שלך עדיין תדחוף ל DB בודד, ככה שאם יש לך הרבה כתיבות, אתה עדיין בבעייה. נכון שיש גם multi-master replication, אבל אז דברים מסתבכים - בייחוד בגלל הצורך בסנכרון של auto_increment - כולם צריכים להיות מתואמים אחד עם השני, וזו בעייה, גם בשגרה, ובייחוד כשאחד מהם למטה... בקונפיגורציה כזו, סביר להניח שלא היית משתמש בכלל בטורי auto_increment אלא בצמד חח"ע של, נניח, sec.usec-nodename.
ויש מקומות שמראש לא הגיוני להתחיל לשמור מידע עם רפליקציה של כולו לכל ה node-ים - אלא לתת למימוש לטפל במידע לבד - בשביל זה המציאו את MongoDB וחברים (שלהם יש את החסרונות שלהם...)
כפי שכבר אמרתי הרבה פעמים, את כל הנושאים האלה לא לומדים על רגל אחת - צריך נסיון כדי להבין מה החולשות של המערכות השונות, והיכן סביר שיהיו בעיות. המלצתי לך בעבר לקחת DBA אם אתה בונה מערכת מורכבת שצפוייה לשרת כמות גדולה מאוד של משתמשים. נראה לי שאתה מתכוון להתעלם מההמלצה הזו. אני חושב שזה יפגע בך, מהר יותר ממה שאתה חושב...
בהצלחה
|