![]() |
עבודה עם מסדים גדולים,כיצד?
אהלן.
אני באמצע בניה של אתר סירטונים מיוטוב ויש לי הרבה מידע לאחסן במסד.אזור ה 200 אלף שורות.כל שורה מכילה לינק לסירטון+כותרת לסירטון+טקסט... בנוסף עוד 100 אלף בדיחות האתר יציג לכל גולש סירטון ראנדומאלי כל פעם. אולי יהיה אופציית חיפוש,לא בטוח ובדיחה והמשתמש יכול ללחוץ קדימה ואחרונה ולעבור לסירטון אחר אני חושב איך לעבוד עם זה. חשבתי על דרך שהכל יהיה במסד 1 אך בכל טבלה יהיו נגיד 10 אלף רשומות או 3 אלף רשומות ואז יהיה לי 30-40 טבלאות...,יהיה טוב? השאלה כשאני מציג כמה שורות מטבלה,הוא טוען את כולה? או אולי אחלק כל איקס רשומות למסד שונה.. אבל אז זה התחברות להרבה מסדים אשמח לעצות חברים |
דטא בייס אחד, טבלה אחת לכל הסרטונים שים להם אינדקס תשלוף אותם עם לימיט והכל בסדר.
|
ציטוט:
ברור שיש אינדקסט ואני תמיד שולף עם לימיט אבל עדיין אם ארצה לעדכן הרי השאילתה תחפש עידכון מתוך 200 אלף רשומות ואז תעדכן שורה 1 או שארצה לשלוף את שורה 19654 היא תחפש הרי אותה בין כל הרשומות כנ"ל לגבי הצגה של שורה ראנדומלית , הרי המערכת תבדוק את הID הקיימים ותגריל אוטומטי בטוח שזה כדאי? יש כאן מ עבר בכל שאילתה על 200 אלף רשומות |
לא יהיה מעבר על 200 אלף רשומות, בדיוק בשביל זה אתה שם אינדקסים.
אם אתה רוצה לעשות את זה בעצמך קרא קצת מה הם אינדקסים ואיך משתמשים בהם, קרא על סוגי שדות ומתי לבחור מה, כתוב שאילתות פשוטות ויעילות והכל יהיה בסדר. 200 אלף רשומות כמו שאתה מתאר זאת לא כמות רצינית מדי. |
ציטוט:
אינדקס זה שאני עושה auto_increment ומסמן אותו כראשי ואז כל פעם המספר שלו עולה ב 1...,כן? אם כך אז איך זה עובד? כשאני רוצה לשלוף רשומה ראנדומלית, זה לא עובר על הכל ואז שולף? |
אני יכול לענות על זה "כן", אבל אתה לא באמת מבין מה זה עושה ואיך זה עובד.
קח לך שעה - שעה וחצי: חפש בגוגל, קרא בדוקומנטציה, קרא שאלות ותשובות דומות ואני מניח שתדע מספיק כדי לעשות את זה בצורה סבירה. ובשליפה רק אל תשלוף ראנדומאלית עם order by rand(), קרא על דרכים יעילות יותר. בהצלחה. |
ציטוט:
רק בגדול אני רוצה להבין 1.אם אני רוצה לשלוף שורה 1 מהמסד.סתם שורה.לשלוף ראנדומלי לא טוב.כי זה עובר על הכל ואז מגריל.מה לעשות אם אני יעדכן שורה לפי האינדקס שלה.זה כן יעיל גם אם יש 200 אלף?למה |
אינדקס זה לא ה-auto_increment.
בד"כ שמים את זה לשדה ה-ID, שמשמש אותנו כמפתח ייחודי לכל רשומה. אינדקס יכול לכלול אחד או יותר שדות שונים שלפיהם מסד הנתונים שלנו יודע לחפש מהר רשומות. אם לדוגמה נגדיר שהאינדקס שלנו מכיל את שדה כמות הצפיות ותאריך הוספה, נוכל בצורה יחסית מהירה לחפש את עשרת הסרטונים שנצפו הכי הרבה פעמים ושהתווספו בשבוע האחרון. נ.ב: יש הרבה מקום לעשות אופטימיזציה בשאילתות. לדוגמה, לרוב יהיה יותר להשיג מיון של תוצאות לפי תאריך הוספה באמצעות מיון התוצאות לפי ה-ID ולא לפי תאריך ההוספה שכן לרוב סדר התאריכים חופף לסדר ה-ID. כלומר, רשומה שהתווספה היום תקבל ID נמוך יותר מרשומה שתתווסף מחר ועל זה נשחק. לסיכום, אין מה לדאוג מכמות גדולה של רשומות. אם בונים אינדקסים חכמים עליהן ומפצלים חלק מהמידע בין מספר רשומות אפשר להשיג תוצאות מעולות (לדוגמה, אפשר לשקול להכין טבלה שמכילה מידע בסיסי על כל סרטון, וטבלה נוספת שמכילה מידע מורחב שאנחנו צריכים אותו רק לפעמים). לפני מספר שנים הובלתי את הצד הטכני ברשת חברתית ישראלית מאוד גדולה והיו לנו טבלאות עם עשרות מיליוני רשומות בהן, על בסיס mysql. |
Master אחד עם כמה Slaves.
ה-Slaves לקריאה בלבד, ה-Master לכתיבת תוכן. |
אני גם לא מכיר מקורות טובים בעברית - תקרא באנגלית, מניסיון, יש את כל מה שאתה מבקש כאן. אם אתה לא יכול (בתור מפתח אסור לך להרשות מצב כזה) אז אולי תתרגם בגוגל טרנסלייט או משהו.
על השאלות עדיין אי אפשר לענות כי אתה פשוט לא יודע איך זה באמת עובד אז זה לא יעזור לך, מעבר למה שכבר נאמר אין לי ממש מה להוסיף. אולי תקרא גם על EXPLAIN, זה גם יכול לעזור לך להבין את התהליך. אחרי זה תוכל לחזור עם שאלות יותר נקודתיות וענייניות, ככה תוכל גם לקבל תשובות מועילות בהרבה. כרגע זה פשוט כללי מדי ולא תבין מה שנענה לך או למה אפשרות אחת עדיפה על אחרת, אתה סתם תתייחס לזה כ- "ככה אמרו לי". |
כל הזמנים הם GMT +2. הזמן כעת הוא 17:27. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ