|
||||
|
||||
אני מעביר ל-MySQL בקשה. MySQL, בשל מבני הנתונים שלו (כגון אינקסים תומכים) מסוגל לבצע את החיפוש (כולל ה-parsing של הבקשה עצמה, מחרוזת SQL) מהר בהרבה מכפי שיכולתי אני לעשות זאת ב-PHP. מכמה סיבות - שפת התכנות, מומחיות כותבי הקוד בתחום, וכו'. גם אם יכולתי לעשות זאת ב-PHP ולהגיע לאותם ביצועים (ספק), או לביצועים טובים יותר (פנטזיה), המאמץ הנדרש היה כה רב שקשה להצדיק זאת. |
|
||||
|
||||
לדעתי אתה טועה - האלגוריתמים שמתבצעים במסד נתונים כמו באתר הזה הם פשוטים להפליא וקל מאוד להביא אותם לייעול מקסימלי, דבר ששום מסד נתונים מוכן לא יוכל להגיע אליו. זה גם הרבה יותר... מספק, כזה. (מניסיון: החלק הקשה בתכנון שכזה הוא בדיוק החלק שבו הוא שונה מ-sql, כלומר תכנון המבנה של הקבצים ככה שיותאם במיוחד ליישום הספציפי ויהיה יעיל לחפש בתוכם ולשנות אותם. זאת אומרת שאם אתה לא עושה כלום וקובע הכל שרירותית זה בעצם בדיוק כמו sql, ואפילו יותר טוב כי אתה לא צריך לטעון פונקציות לא הכרחיות ודברים כאלה. ) |
|
||||
|
||||
פשוט לא נכון. "האלגוריתמים שמתבצעים במסד נתונים... הם פשוטים להפליא"? מה מידת ההיכרות שלך עם תחום ניהול מסדי הנתונים, ובפרט את תחום האופטימיזציות? מסדי הנתונים משתמשים באלגוריתים חזקים מאוד, ועובדים עליהם טובי המומחים בתחום (זה אולי מוטל בספק לגבי MySQL, אבל בהחלט נכון לגבי DB2, אורקל וכו'). כשמדובר בפעילות יעילה, כולל נושאים מתקדמים כמו טרנזקציות (ביצוע כמה פעולות ברצף, כך שאם אחת נכשלת, כולן מתבטלות; וזאת, בשעה שתוכניות אחרות פועלות במקביל על אותם הנתונים), לא סביר שאוכל להתחרות בהם. שלא לדבר על זמינות מוגבלת של זמן חופשי: גם אם אשיג ביצועים טובים יותר, ודאי יידרשו עשרות שנים עד שההבדל בביצועי השרת, כפי שהוא נמדד ביחידות זמן, יצטבר לכדי כיסוי על השעות שאשקיע בכתיבת הקוד הנ"ל. בתור מי שהשקיע שעות (רבות מאוד מאוד) באופטימיזציה ידנית של קוד אסמבלר, כולל רבים מהטריקים המלוכלכים המקובלים באמנות הזו, הרשה לי לספר לך שהסיפוק ממצה את עצמו די מהר, לעומת הקושי שבתחזוקת הקוד, איתור ותיקון באגים, וכו'. כיום לפחות אני מוצא את הסיפוקים שלי במקומות אחרים, ודאי לא בהמצאה מחודשת של גלגלים קיימים. כדאי לקחת בחשבון שגם בפרוייקטים גדולים בהרבה, שם לביצועים משמעות גדולה בהרבה, עדיין משתמשים ב-SQL. כדאי לך לשאול את עצמך למה. [ההערה שלך על טעינת פונקציות לא הכרחיות מעידה על חוסר בקיאות מסוים באופן הפעולה של מערכות תוכנה גדולות בימינו. קוד נטען on-demand על-ידי מיפוי של קובץ ה-executable ל-page file של המערכת; אף פונקציה לא נטענת לפני שמשתמשים בה (עד כדי טעות בגודל דף, כלומר אולי הפונקציה נטענה במקרה כי היינו זקוקים לפונצקיה אחרת ששכנה באותם 4KB).] אבל באופן כללי יותר, נדמה לי שהטעות הבסיסית שלך היא ההנחה שאני סובל מעודף זמן... |
|
||||
|
||||
"מה מידת ההיכרות שלך עם תחום ניהול מסדי הנתונים, ובפרט את תחום האופטימיזציות?" אני כרגע בשלבים סופיים של תכנון מסד נתונים די דומה למה שיש פה, ואני באמת לא רואה איך מסד נתונים מוכן יכול לעלות על מה שעשיתי מבחינת יעילות. אין תחליף לדעתי לשליטה המוחלטת שיש לי בקשר לחלוקה לקבצים, המבנה של כל קובץ, האלגוריתמים עצמם כשהם מותאמים לשני אלה וכל מיני שיטות אינדקס וקיצורים שמסד נתונים מוכן לא יכול לדעת שהם אפשריים. מה הסיבוך שאתה רואה בתכנון כזה? האלגוריתמים החשובים היחידים הם חיפוש בתוך קובץ ושינוי של קובץ, עם תוספות של שמירה ב-cache וכו'. "מסדי הנתונים משתמשים באלגוריתים חזקים מאוד, ועובדים עליהם טובי המומחים בתחום (זה אולי מוטל בספק לגבי MySQL, אבל בהחלט נכון לגבי DB2, אורקל וכו'). כשמדובר בפעילות יעילה, כולל נושאים מתקדמים כמו טרנזקציות (ביצוע כמה פעולות ברצף, כך שאם אחת נכשלת, כולן מתבטלות; וזאת, בשעה שתוכניות אחרות פועלות במקביל על אותם הנתונים), לא סביר שאוכל להתחרות בהם. שלא לדבר על זמינות מוגבלת של זמן חופשי: גם אם אשיג ביצועים טובים יותר, ודאי יידרשו עשרות שנים עד שההבדל בביצועי השרת, כפי שהוא נמדד ביחידות זמן, יצטבר לכדי כיסוי על השעות שאשקיע בכתיבת הקוד הנ"ל. " לא הטלתי ספק במומחיותם של כותבי הקוד, פשוט קשה לי לראות איך משהו מוכן יכול לעלות בביצועיו על משהו מותאם אישית. נכון שזאת "עוד השקעה", אבל זה קצת מוגזם לדעתי להגיד שיידרשו עשרות שנים להגיע לזה, ושנדרש איזשהו מאמץ מיוחד בתחזוקה ועדכון של הקוד (בהנחה שאתה מבין מה אתה עושה). "כדאי לקחת בחשבון שגם בפרוייקטים גדולים בהרבה, שם לביצועים משמעות גדולה בהרבה, עדיין משתמשים ב-SQL. כדאי לך לשאול את עצמך למה. " העובדה שמשתמשים במשהו לא הופכת אותו ליעיל יותר. פרוייקטים גדולים מבוצעים בדרך כלל תוך התחשבות בזמן הפיתוח לא פחות מאיכות המוצר הסופי. אי-שימוש ב-sql יהיה בזבזני מאוד מהבחינה הזאת, והתועלת תהיה קטנה מאוד יחסית למחיר הזה. זה לא אומר שהתועלת לא קיימת. "[ההערה שלך על טעינת פונקציות לא הכרחיות מעידה על חוסר בקיאות מסוים באופן הפעולה של מערכות תוכנה גדולות בימינו. קוד נטען on-demand על-ידי מיפוי של קובץ ה-executable ל-page file של המערכת; אף פונקציה לא נטענת לפני שמשתמשים בה (עד כדי טעות בגודל דף, כלומר אולי הפונקציה נטענה במקרה כי היינו זקוקים לפונצקיה אחרת ששכנה באותם 4KB).]" כנראה שלא הסברתי את זה נכון. בוא ניקח דוגמה: איך אתה מבצע שאילתה? אתה מקבל נתונים, בונה לפיהם מחרוזת ומפעיל פונקצייה שתקרא את המחרוזת, תפרוס אותה ותקרא בתורה לפונקצייה שתפעיל את השאילתה הרצויה ותחזיר לפונקצייה הראשונה ערך כלשהו, שאותו היא תחזיר לתוכנית שלך (גם זה באופן בזבזני במיוחד, כמו שציינת בעצמך בתגובה 380931. שים לב, דרך אגב, שכל הרעות שציינת שם היו נפתרות אם היית בונה מסד נתונים בעצמך). אם היית מבצע את השאילתה ישירות היית חוסך את בניית המחרוזת והפריסה שלה ואת העברות הנתונים בין התוכנית שלך לפונקציות של sql. כמו כן, היית חוסך העברה של נתונים שאין לך צורך בהם. לסיכום, אני יכול לחשוב רק על 2 סיבות לשימוש ב-sql: 1. חוסר זמן או רצון. זה נכון גם ובעיקר עבור חברות שפועלות על בסיס רווח כספי, שם הזמן חשוב לפחות כמו האיכות. 2. עיקוף כלשהו של העברה מיותרת של נתונים. למשל, תוכנית אסמבלר שקולטת בקשות http ופולטת מה שצריך תהיה יעילה יותר משרת שקולט בקשות, מעביר אותן לתוכנית אחרת, מקבל את הפלט שלה ומעביר אותו הלאה. יכול להיות ששימוש ב-sql חוסך מהבחינה הזאת, לא בטוח. בכל מקרה, שאלתי מה ששאלתי מתוך סקרנות, כדי שאולי גם אני אשתכנע ואעבור להשתמש ב-sql. זה לא היה מתוך כוונה לשכנע אותך לבנות מחדש את האתר. |
חזרה לעמוד הראשי | המאמר המלא |
מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים | |
RSS מאמרים | כתבו למערכת | אודות האתר | טרם התעדכנת | ארכיון | חיפוש | עזרה | תנאי שימוש | © כל הזכויות שמורות |