הבלוג של גרי רשף

01/02/2010

SQL Azure תמונת מצב – ינואר 2010

Filed under: Uncategorized — תגיות: , , , — גרי רשף @ 22:24

AZURE

מבוא והתחברות

SQL Azure שהוא גרסת SQL Server in the Cloud יצאה בגרסת CTP להתנסות חופשית במהלך 2009, והופכת במהלך 2010 לשירות בתשלום.
לא הכל ידוע עליה כרגע, ולכן מה שנכתב כאן הוא בערבון מוגבל- מציג את הידוע לי, ואת התרשמותי הסובייקטיבית.
יתכנו טעויות או אי דיוקים, וממילא דברים ישתנו בקרוב; ולכן כל מה שנכתב כאן נכון לתאריך הכתיבה.

Cloud Computing מתייחס ליישומים ממוחשבים שנמכרים כשירות ללקוח, כך שהשרתים אינם ברשותו והוא משלם תמורת השירות בו הוא משתמש.
מקור המונח Cloud הוא בתרשימים ארגוניים בהם רכיבים שהם מחוץ לתחום (Scope) מוצגים כצורה גיאומטרית לא מוגדרת שנראית כענן;
ומיקרוסופט נתנה לשירותי ה-Cloud שהיא מספקת את השם Azure – מילה באנגלית ספרותית שמקורה פרסי, ואשר מציינת כחול-שמיים..

SQL Azure הוא סוג של שירות Hosting המציין לא רק את השירות שמיקרוסופט מוכרת, אלא גם גרסה מיוחדת של SQL Server המבוססת על גרסת 2008;
כשכרגע יש שתי חוות שרתים בארה"ב, ובעתיד יתווספו עוד כמה באירופה ובמזרח אסיה.

ההגדרות הראשוניות נעשות באתר http://SQL.Azure.com (יש להתחבר בעזרת קוד שמקבלים ממיקרוסופט ו-Windows Live ID),
שם מגדירים בקלות שרת, דטבייסים (את זה לא חייבים לבצע משם), והרשאות IP: קיימת שכבת הגנה ברמת ה-IP, בהנחה שהכתובות ידועות וקבועות.
כרגע הדטבייסים מוגבלים בגודלם ל-10GB – כנראה כדי להבטיח דטבייסים קטנים + עומסים קטנים + בעיות קטנות בשלב זה.
כמובן שזה מעורר תהיות לגבי ההבטחות ל-Scalabillity ולכך שהלקוח יוכל לצרוך משאבים על פי הצורך מבלי לערוך תחזיות ולהיערך מראש..
להקלת הגלולה המרה כדאי לציין שבהיעדר Log ו-tempdb – אין מגבלות על השימוש במשאבים אלו.

ניתן להתחבר לדטבייס מה-SSMS בתנאי שהתקנו גרסת 2008 R2, ואם לא- ניתן להיעזר בתחליף SSMS כמו זה: http://MicroGuru.com/Gem.
ההתחברות מה-SSMS די דומה להתחברות SQL Server Authentication עם שם משתמש וסיסמה, אך בנוסף יש לציין את שם הדטבייס ב-Options (וכמובן- לתת הרשאה ל-IP שלנו).
אפשרות אחרת היא להתחבר בעזרת SQLCmd כך (יש להיכנס למסך Cmd להרצת CommandLine ולשנות את מה שמופיע בכחול לערכים האמיתיים):

SQLCMD -U MyUserName@MyServer -P MyPwd -S tcp:MyServer.database.windows.net -d MyDB

לאחר מכן נקבל שורות ממוספרות במקום את הקידומת הרגילה, שם נכתוב פקודות SQL, וכדי להריץ אותן- נכתוב Go; ולסיום העבודה עם SQLCmd – נכתוב Exit.
כדאי לציין שללא התקנת Client של SQL Server – לא ניתן להשתמש ב-SSMS או ב-SQLCmd, ומכאן שכרגע השירות שימושי רק למי שכבר יש לו SQL Server "רגיל" (On Premise)..

בכל מקרה- כעת העבודה איטית בכל מה שקשור להעברת נתונים מהשרת למשתמש ולהיפך,
וה-Connection מתנתק מאוד מהר, מחייב התחברות מחודשת בכל פעם, ולא מאפשר להריץ פקודות שזמן עיבודם רב (בנוסף- ל-SQL Azure אין כרגע Agent ולכן לא ניתן להריץ פקודות אסינכרוניות כך שיתבצעו בשרת ללא קשר למשתמש הקצה).

מה פועל וכיצד ומה לא

על ידי הרצת הפקודה Select @@Version נוכל לראות שמדובר בגרסת SQL Server מיוחדת,
ומהעובדה שפונקציות שקיימות רק מגרסת 2008 פועלות בה ניתן ללמוד שהיא מבוססת על SQL 2008.
מדובר בפונקציות כמו פונקציות השעה והתאריך החדשות,
היכולת להכניס מספר רשומות בבת אחת על ידי (..), (..) Insert Into .. Values ,
ו-Compound Assignment (למשל Set @I+=5 להוספת 5 למשתנה).

לטבלאות הנוצרות במערכת חייב להיות Clustered Index (הסיבה לכך היא שברקע פועלת מערכת רפליקציות שנועדה לגבות את הנתונים והיא מחייבת קיום Clustered Index על הטבלאות).

שעת המערכת המתקבלת על ידי ()GetDate היא GMT, כלומר שעון גריניץ' (שעתיים אחרי ישראל בחורף ושלוש שעות בקיץ).

מה פועל (בדיקה אקראית של אופציות שונות):

  • Create Database פועל אך ללא אופציה מלבד שם הדטבייס. למשל- לא ניתן לשנות את ה-Collation, והגדרת ה-Recovery Model אינה רלוונטית. בנוסף אין פקודת Alter Database.
  • BCP פועל, אך לא ניתן לייבא בעזרתו נתונים מכיוון שאת שם הדטבייס יש לציין יחד עם שם הטבלה (MyDB.dbo.MyTbl) ואופציה זו אינה נתמכת על ידי SQL Azure. בנוסף לא ניתן כנראה לשנות את ה-Default_Database של ה-Login..
  • SQLCmd פועל, כפי שהודגם.
  • Merge הפקודה המשלבת Insert + Update פועלת.
  • Pivot הפקודה היוצרת טבלאות דו-מימדיות פועלת.
  • UDF ניתן ליצור פונקציות משתמש.
  • User Defined Datatype
  • טריגרים: גם DML על נתונים בטבלה וגם DDL על אובייקטים בדטבייס, אך זה האחרון ללא פונקציית Eventdata שמאפשרת ללכוד את הפקודה, סוג השינוי, שם האובייקט וכו'; ובלעדיה טריגר DDL מאבד חלק גדול מאוד מכוחו.
  • Set StatisticsIO, Set Statistics Time (פונקציות שימושיות למדידת ביצועים).
  • Execution Plan.
  • DBCC Sgow_Statistics (כל שאר פונקציות DBCC אינן פועלות).
  • טבלאות זמניות, אך רק #מקומיות (לא ##גלובליות).
  • SSIS ,Excel, SSRS כשהם מופעלים מ-SQL Server רגיל (SQL Azure אינו תומך בכלי BI).
  • Collation – נתמך אך רק ברמת השדה. לא ניתן לשנות את זה של הדטבייס.

מה אינו פועל:

  • File System – אין אפשרות לגשת לדיסקים, לטפל ב-FileGroup ובקבצים וכו'.
  • Partitions – די מתבקש לאור העובדה ש"הפואנטה" בכלי זה היא היכולת לפצל טבלה לקבצים שונים.
  • FileStream, xp_CmdShell, BulkCopy – כלים ופונקציות הפונים ל-File System.
  • Agent + Jobs: לא ניתן לתזמן פעולות או לבצע הרצות א-סינכרוניות.
  • BI: ניתן לפנות ל-SQL Azure מסביבת BI חיצונית לו, אך לא עצמו אין BI.
  • SSAS (חיצוני): לא הצלחתי ליצור Data Source Views מכיוון שלא ניתן היה לקרוא את שמות הטבלאות שב-SQL Azure.
  • PowerPivot (תוסף חדש ל-Excel המאפשר טיפול במיליוני רשומות ויצירת BI אישי): לכאורה יש לו תמיכה מובנית ב-SQL Azure, אך קריאת הנתונים מטבלה בת כחצי מיליון רשומות איטית מאוד, ונפלה באמצע.
  • Mails: לא ניתן לקנפג למשלוח מיילים.
  • Compression – מגבלת ה-10GB אינה ניתנת לעקיפה באמצעות כלי זה..
  • Encryption
  • Linked Server, OpenRowSet וכו': לא ניתן להגדיר ב-SQL Azure וגם לא ניתן לפנות אליו בעזרתם.
  • DMV, Profiler, Traces, Activity Monitor, PerfMon וכו': יש ליצור לבד תשתית לכך אם רוצים.
  • רפליקציות. יש ב-SSMS "הכנה ל-" אך האופציה אינה פעילה.
  • גיבויים ושיחזורים. כשיהיו- כדאי שתהיה אופציה של גיבוי בשרת ה-Cloud מכיוון שהעברה של עשרות GB מה-Cloud ללקוח תימשך זמן רב מאוד.
  • Sp_Monitor, Sp_HelpDB, Sp_Who, Sp_HelpServer, Sp_Lock, Sp_SpaceUsed – פונקציות עזר ל-DBA לקבלת מידע על המערכת.
  • תוכנות צד שלישי (כמו Idera שניסיתי את הגרסה החופשית שלה).
  • פונקציות מבוססות Dot.Net כמו HierarchieId או GeoSpatial, וכן פונקציות Clr שנכתבות על ידי המשתמש.
  • Truncate Table.

שימושיות וחזון לעתיד

לאור מגבלותיו של הכלי כיום- לא הייתי מנסה להשתמש בו לצרכים מסחריים, והייתי ממתין שהטכנולוגיה תבשיל ושיתווספו אופציות נוספות.

המחיר כיום – כ-10$ ל-1GB לחודש או 100$ ל-10GB לחודש הוא זול יחסית לרמת המחירים של שירותי ה-Hosting, ובוודאי ביחס לעלות של אחזקת שרת ו-DBA-ים,
ולכן – כשהכלי יהיה שימושי – זו בהחלט אופציה אטרקטיבית.

שימושים אפשריים יכולים להיות:

  • הקמת מערכות מידע שתוחלת חייהן קצרה, למשל- מערכת תמיכה ליום בחירות או לכנס מקצועי או לאירוע חריג.
  • בסיסי נתונים לאתרי אינטרנט שכיום מוחזקים לא פעם בידי ספק השירות.
  • כל שימוש שמצדיק כיום פניה לשירותי Hosting.

ההערכה הרווחת שהשימוש ב-Cloud ילך ויגדל ככל שהשירות ישתפר, אם כי ברור שמערכות רבות ימשיכו לשבת על שרתים "רגילים" מטעמי בטיחות.

נושא אבטחת המידע שנוי במחלוקת- מצד אחד המידע ישמר בידי מיקרוסופט, עלול לדלוף בדרך זו או אחרת, להיות מטרה להתקפות של האקרים ואלי אף ליפול לידיהם של גורמים מתוך מיקרוסופט.
מצד שני- גם המידע המצוי כיום בידי רוב האירגונים – לא תמיד מוגן כהלכה, ויתכן שב-Cloud הוא יהיה הרבה יותר מוגן ממה שהוא כיום.

יכולת השרידות של SQL azure אמורה להיות טובה מאוד, בעיקר לאור העובדה שחוות השרתים יפוזרו ברחבי העולם ושכל המערכת מוקמת באופן מאובטח, ולמעשה זה היתרון היחסי הגדול של השירות הזה.

לא יהיה צורך בתחזוקה כמו במערכות מקומיות, לא בטכנאים או אנשי סיסטם או DBA-ים; וארגונים לא יצטרכו להחזיק מערכת תמיכה מקצועית שאינה בתחום ההתמחות שלהם.

עד כה לא היו שידרוגים, ואינני יודע מה יקרה בעתיד- האם תובטח תאימות לאחור, או האם השירות יכלול גרסאות שונות וכל אחד יוכל לבחור עם איזו לעבוד.

התנסות מעשית

מעבר למה שמיקרוסופט מאפשרת- ניתן בינתיים להתנסות עם דטבייס שהקמתי בשרת שלי (אינני יודע עד מתי הוא יהיה פעיל):

Server: h6okwyeo51.database.windows.net

User: ISUG (ISUG@h6okwyeo51)

Password: SqlAzure2010

Database: ISUG

למשל, ניתן להתחבר בעזרת SQLCmd כך:

SQLCMD -U ISUG@h6okwyeo51 -P SqlAzure2010 -S tcp:h6okwyeo51.database.windows.net -d ISUG

עדכונים:
1. ב-17/02/2009 בוצע עדכון (Service Update 1) שמאפשר מספר פונקציות DMV.
2. ב-28/06/2010 ניתן יהיה להגדיל את הדטבייסים עד 50GB במקום 10GB עד כה.

מודעות פרסומת

להגיב »

עדיין אין תגובות.

RSS feed for comments on this post. TrackBack URI

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

בלוג בוורדפרס.קום.

%d בלוגרים אהבו את זה: