מוצר חדש שעלה בשקט בשקט ב-CTP, ומיועד למי שנמצא על קו התפר בין MySQL, פרוייקט הקוד הפתוח הפופולארי לבין SQL Server.
מדובר בתוכנה קטנטנה ששוקלת רק 11MB על הכונן הקשיח, ודורשת את ה-MySQL ODBC Client שניתן להורדה חינם מאתר MySQL. אותי מפליא מדוע הם לא בחרו פשוט להשתמש ב-Native Provider של MySQL לסביבת .NET Framework., אבל מילא. שיהיה.
הכלי עצמו, לאחר שהותקן בדקה או שתיים, דורש רשיון (הניתן חינם באתר Microsoft) בדומה לכלים דומים (SSMA של Access) ולאחר שנפתח נראה כמעט זהה לכלי המקביל עבור Access, למעט האשף שעושה את החיים קצת פשוטים יותר. הכלי, אגב, תומך גם בשדרוג ל-SQL Azure שבענן אותו מיקרוסופט דוחפת בכל הכח.
תחילה ניצור פרוייקט חדש:
בשלב הבא נתחבר ל-MySQL המקור ול-SQL Server היעד וניתן לתוכנה לנתח את מבנה הנתונים במקור, וגם מציע הצעות לשינויים במקרים של אי תאימות.
כשמדובר בהמרת ה-Schema של הטבלאות הוא עושה עבודה טובה, וממיר היטב גם את האינדקסים המצורפים לטבלה ומסייע (לא בדקתי)להעביר גם את הטריגרים. כמו שאר הכלים מהסדרה הוא תומך בהמרה און ליין וגם ביצירת קובץ SQL.
בנוסף לכך הוא מציג דו"ח מאוד יפה על DB והבעיות הנובעות מהבדלים בין SQL Server ל-MySQL בתחום הטיפול בתאריכים ואחרים, וכותב בסוגריים הערכת זמן לטיפול בבעיה.
בשלב הבא ניסיתי להמיר דרכו מסד נתונים של 3GB עליו מבוססת אפליקציית Web, הוא טען שהצליח, אולם כשניסיתי להעביר את המידע הוא טען כי ההמרה נכשלה.
בדיקה ב-Management Studio לא הראתה שום זכר לטבלאות שהיו אמורות להיווצר. ייצוא ידני של ה-SQL שהוא הציע ליצור והרצה ידנית ב-Management Studio עבר חלק.
הליך העתקת המידע מורכב מעט ודורש הכרות פנימית עם מבנה הנתונים ועם MySQL ו-SQL Server באופן כללי. עם זאת – מרגע שהכל הוגדר כשורה, למעט חריגים - אין בעיות או הפתעות מיוחדות (חוץ מתאריכי האפס). העתקת המידע מתבצעת בד"כ ב"פרוסות" של כ-10,000 רשומות בפעולה, בתלות בנפח ובגודל הטבלה והזיכרון בשרת המקור והיעד.
חשוב לציין שהתוכנה מתעלמת לחלוטין ממאפיינים ייחודיים ל-MySQL הנעדרים במתחרה המיקרוסופטי, כמו למשל היותן של טבלאות זיכרון ודברים מעין אלו. במקרה של מערכת שנכתבה והותאמה ספציפית ל-MySQL ניתן יהיה לצפות להפתעות רעות מאוד בתחום הביצועים.
המסך הראשי של התוכנה. בצ"מ נמחקו פרטי הטבלאות.
בעז"ה מתישהו – על MySQL בסביבת .NET: רגישויות, ביצועים ועוד ועוד. ואולי גם הדרך ההפוכה – המרה מטבלאות של SQL Server לאלו של MySQL.
Nginx הוא שרת קטן שנכתב ללינוקס (אבל עובד גם על חלונות) ומיועד למטרה אחת ויחידה: Reverse Proxy מתוחכם. הוא יודע לשמור אצלו ב-Cache את הקבצים הסטטיים למינהם ומוריד את העומס ה זה מה-I/O של שרת האפליקציה*, והוא יודע גם לבזר את הבקשות בין השרתים השונים שלכם תוך שימוש ב-Sticky Sessions כדי לוודא שכל גולש משוייך ל-Session בשרת "שלו".
בדרך כלל אתרים שזקוקים לדבר כזה משתמשים כבר ב-CDN או פיתרון דומה, אבל למי שצריך לשפר ביצועים של אתר בגודל בינוני+, שהגולשים שלו מרוכזים במדינה אחת זה יכול להיות פיתרון מצויין (וגם זול).
Nginx
* אמנם גם ל-IIS יש Cache משלו, Kernel Caching, שבהחלט מוריד עומסים בשרת בצורה משמעותית, אבל הוא לא מתמודד עם קבצים שנגישים בתדירות נמוכה יותר, ובחלק מסביבות העבודה עלולים להיות חלק לא קטן מהעומס. בנוסף – הוא גם מתמודד בצורה טובה פחות עם Caching של רכיבים דינאמיים מאשר Cache חיצוני המיועד בין השאר גם לזה.
יש גם ייתרון לא קטן לפעמים בהעברת עלות הדחיסה – gzip של הקבצים משרת האפליקציה לשרת אחר.
מי שצבר קצת נסיון יודע שחיסכון במשקל דפים ורכיבים נלווים הוא הכרחי.
גיליתי באקראי שיש גירסא של דוחס ה-JS וה-CSS של YUI לסביבת .NET בקוד פתוח. אפשר להשתמש בו באמצעים מגוונים או עם MSBuild (מה שנשמע לי מעניין יותר) במהלך בניית גירסת ייצור.
מעניין.