2011-08-30

גירסאות ב SQL Azure

יש לזכור כי הגירסה של ה SQL Azure יכולה להשתנות ללא יכול שליטה שלנו המשתמשים לכן אין בשום פנים ואופן להשתמש במספר הגירסה שלו בצורה אפליקטיבית, (לא שאני מכיר משיהו שעושה את זה אבל כדאי להיזהר).
בכדי לדעת את מספר הגירסא יש להריץ Select @@version
כרגע הגירסה היא :

Microsoft SQL Azure (RTM) - 11.0.1467.26   Aug 30 2011 23:41:16   Copyright (c) Microsoft Corporation 

2011-08-21

על עלויות ב SQL Azure

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

חיוב ברמת ה SQL Azure מתחלק ל2 רמות של חיוב:
1.      עלות בסיסי נתונים שנרכשים.
2.      עלות תעבורה אל בסיס הנתונים וממנו (כאשר ממנו אל ה windows azure לא מחושב).

1.      עלות בסיסי נתונים שנרכשים.
ישנן 2 סוגי שרתים שאפשר לרכוש Web addition and Business addition כאשר השוני בניהם זה גודל הדיסק שאתה רוכש  (ניתן בכל רגע נתון לשדרג את הגודל של בסיס הנתונים – אם יגיע לקצה גבול הגודל ולא תדאגו להגדיל הוא פשוט יתקעלהלן טבלת העלויות:
  • Web Edition
    • $9.99 per database up to 1GB per month
    • $49.95 per database up to 5GB per month
  • Business Edition
    • $99.99 per database up to 10GB per month
    • $199.98 per database up to 20GB per month
    • $299.97 per database up to 30GB per month
    • $399.96 per database up to 40GB per month
    • $499.95 per database up to 50GB per month
רואים ברשימה שמה שקובע זה גודל בסיס הנתונים כך שאם כמשל לקחת גירסה של 1GB הרי ברמה יומית מדובר על 0.33$ וכך זה יחושב, לפי הימים שהיו לך בחודש. אם יש לך 2 בסיס נתונים זה יחושב לפי 0.66$.
כמה בסיסי נתונים יש לך כל יום?
select time,sku,quantity   from sys.database_usage 

דוגמא לתוצאת ריצה:
2.      לחישוב זה של עלות שרת מצטרפת עלות תעבורה אל בסיס הנתונים וממנו:
נתחיל מהשאילתא הבסיסית:
SELECT *
  FROM sys.bandwidth_usage
  WHERE time >= '20110501' 
המחזירה תוצאות מדהימות אלו:
Time – עמודה זו יש שעה למשל רשום 8:00:00:000 זה מסכם מידע מ 8 עד 9 לפי שעון שרת – תלוי באיזה מרכז נמצא השרת (על מיקום ואופי חוות השרתים – זה כבר נשאיר למאיר לדבר....)
Database_name – קשה לנחש... שם בסיס הנתונים עליו התבצע איסוף הנתונים
Direction – גם כאן קשה לנחש... הערכים האפשריים Egress/Ingress – המייצגים  Output\Input כלומר data הנכנס או יוצא מבסיס הנתונים ואליו.
Class – הערכים האפשריים Internal\External . כאשר זהו מידע פנימי (Internal) הוא לא נושא בעלויות... (יללה כולם למסור מידע פנימי). מידע פנימי פירושו מידע היוצא או הנכנס מה windows azure ל SQL Azure  ולא אל שאר העולם.
Time_period – הערכים האפשריים OffPeak\Peak – ופירושו הוא מתי אירע האירוע האם בשעות העומס או לא למשל אם זה שרת שיושב בצפון ארה"ב שעות העומס הן בין 10 בבוקר ל 6 בערב
Quantity – סכום של כמות מידע שעברה ב KB

עכשיו לשוס – איך מחשבים – יום לימודים ארוך – אבל לכן אני כותב כדי להקל....
מידע Internal לא מחוייב.

מידע הזורם פנימה Ingress בזמן OffPeak גם לא מחושב – וזה נכון עד סוף יוני 2011
עלויות תלויות היכן המרכז מחשבים שאתה מתחבר אליו :

בצפון אמריקה או אירופה למשל  -  $0.10 per GB in / $0.15 per GB out
אסיה -  $0.10 per GB in / $0.20 per GB out

נריץ את זה:

select direction,
    time_period,   
    sum(
        case when sys.bandwidth_usage.direction = 'Egress'
                then (0.15 * quantity/ (1024*1024) )    
            when sys.bandwidth_usage.direction = 'Ingress'
                then (0.10 * quantity/ (1024*1024))
        end ) as "cost"
        from sys.bandwidth_usage
        where datepart(yy,time) = datepart(yy, getutcdate()) and    
        datepart(mm,time) = datepart(mm, getutcdate()) and
        class = 'external'
        group by direction, time_period
נקבל את זה:

direction  time_period  cost
---------- ------------ ---------
Egress     OffPeak      0.000006
Ingress    OffPeak      0.000000
Egress     Peak         0.000575
Ingress    Peak         0.010554

מעולה – כל המידע לפנינו
ניסכום ונוריד מה שלא משלמים   (מה לא משלים - משתנה אחת לכמה זמן למשל היה שינוי בראשון ליולי) אפשר כמובן להוסיף פילטר לפי חודש...

select sum(
    case when sys.bandwidth_usage.direction = 'Egress'
            then (0.15 * quantity/ (1024*1024) ) 
        when sys.bandwidth_usage.direction = 'Ingress'
            then (0.10 * quantity/ (1024*1024)) 
    end
    ) as "cost"
 from sys.bandwidth_usage
 where
 class = 'external' and
(direction!='Ingress' and time_period!='offpeak')

והנה עלות התעבורה....

צרפו את עלות התעבורה לעלות השרת ויש לנו עלות ה SQL Azure, יש לזכור שהתנאים והעלויות יכולים להשתנות אולם זה מה שיש כרגע.


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


2011-08-15

שינויים ב SSMS בין SQL Azure מול גרסאות אחרות של SQL Server.


כאשר עובדים ב SSMS ישנם מספר דברים שונים בין עבודה על שרת רגיל לבין עבודה על SQL Azure להלן מספר דוגמאות:
  • מקש ימין על פרוצדורה לדוגמא אין Alter או אין EXecute:



  •  מקש ימין על טבלה לדוגמא אין select or edit ואין Design:




2011-08-14

מהו Azure Table Storage ומתי להשתמש בו ולא ב SQL Azure

כאן נדון על היתרונות ועל החסרונות של Azure Table Storageמול SQLAzure:

SQL Azure VS Azure Table Storage(ATS)

טוב אז מה יש לנו כאן עולם בסיס הנתונים היחסי בעל הקשרים – Relational או מה שאנו מכירים בשם ה SQL (Structured Query Language) מול עולם שמירת המידע כפי שהוא או בשמו החדשני והחתרני noSQL, היום נדון בקצרה מתוך עולמו של הענן מה עדיף? מתי להשתמש בזה ומתי להשתמש בזה מהן היתרונות והחסרונות של כל עולם, ואיפה אנו כ DBA נחייה בעולמו של ה noSQL?
לפני שארחיב אני רוצה להצהיר כי לא אפרט יותר מידי מעולם ה .net עצמו שקשור קשר הדוק לנושא של גישה ופניה לבסיס הנתונים או לזיכרון. אני רק רוצה לדבר על מה יש ומה אין בענן.
נדבר פה היום על :

השוואת עלויות:

זה הנושא הכי קל בענן כי הוא הכי נגיש והכי ניתן לכימות – הרי זה הענן... ובכן
SQL Azure – כמות של  50GB עולים כ 500$ לחודש.
ATS –כמות של  50GB עולים כ 7.5$ לחודש.
טוב טוב לא צריך להמשיך הא? הרי ברור מה ניקח.... טוב חכו עד סוף ההרצאה ותחליטו.

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

ATS מכיל tables, blobs, queues:

Blob:

1.      יכול להכיל כמות עצומה של מידע כרגע לא ברורה ההגבלה.
2.      נגיש מהווב – כלומר יש לו כתובת במידה ונוצר כ public. לדוגמא https://accontstoragename.blob.core.windows.net/containername/08032011723.jpg

Queues

מהם ה Q האלו שנמצאים בסטורג'?
זהו מנגנון ליצירת פעולות א-סינכרוניות
מכניסים אליו מסג'ים קצרים עד 8KB והם מבוצעים לפי לוגיקה מסויימת.

Tables:

3.      סטורג' מובנה ומסודר.
4.      גישה למביני .NET כתיבה ב LINQ וכדומה (יתרון וחסרון).
5.      הוא לא בסיס נתונים רציונלי – אין קשרים בין טבלאות כלל, אין oder by, אין group by, אין join.
6.      אם כך מהי טבלה? פשוט קבוצה של רשומות עם פרטים על הרשומות – שאלו העמודות.
7.      לכל רשומה יש 2 מפתחות PartitionKay and RowKey  וזה משפיע על ביצועים כך ששאילתא על PartitionKay היא יחסית מהירה ואילו שאילתא על סתם עמודה לוקחת זמן רב.
8.      כמובן אין פרוצדורות.
9.      מכיון שזה מעולם ה NoSql – ייתכנו רשומות באותו טבלה ולא באותו סוג למשל עמודה שלישית יכולה להכיל גם שם וגם תאריך כל עוד 2 עמודות ראשונות – המפתחות מכילות מידע שונה.


SQL Azure מכיל Tables

1.      בסיס נתונים אחד כיום עד 50GB  - חסרון קטן.
2.      אין כל הפונקציות שיש ל SQL Server – כרגע – חסרון קטן.
3.      מתבצעות עליו רפליקציות מגוונות – יתרון גדול.
4.      אפשר לבצע שאילתות  ודוחות – יתרון גדול.
5.      התשובות לשאילות לרוב מהירות – יתרון גדול
טוב – אז פה רואים שברמת הטבלאות יש שימוש שונה לחלוטין לגבי מטרות – אם אתה צריך המון חומר שיישמר כגון לוגים  - ומצד שני חשוב פחות זמן תגובה מהיר הרי הפתרון הטוב עבורך הוא ATS. לעומת זאת אם אתה צריך שאילתות מורכבות ושמירת נתונים מובנים ומרכבים הרי הדרך לפניך היא SQL Azure למרות עלותו הגבוהה יותר. גם DRP קיים פה ולא קיים בזיכרון.
אנו משתמשים בו 
  • לשמירת לוגים.
  • לשמור eventlog שנשמר כל X זמן ( זאת כיוון שה web role או ה worker role יכול לבצע REImage וכל הנשמר בו יימחק).
  • לשים קבצי web.
  • יש כלים שעושים אוטמטית גיבוי של בסיס הנתונים ל Blob 
  • ועוד שימושים רבים.

איך יוצרים בענן Storage account:

כמובן גם פה הכול עובר דרך הפורטל, יוצרים חשבון ואז בכלים חינמיים או בעלות אפשר לראות את התוכן. את הכתיבה אליהם אפשר ב .NET כפי דוגמאות רבות שיש  (אולי אתן בעתיד).


נושאים להמשך דיון: השוואת ביצועים, איך מבררים גודל ואם הגיע למלוא הגודל ועוד





2011-08-04

כיצד מתחברים ל SQLAzure

ישנן 2 דרכים להתחבר לבסיס הנתונים בענן:
1. דרך SSMS וזאת במידה ויש לך גרסת SQL Server Management studio 2008 R2, אז ניתן כמו לכל שרת רגיל להתחבר דרך Connect



והנה אנו מחוברים לענן ויכולים לערוך שאילתות.
2. ישנו DataBase Manager שניתן לגשת דרכו אל בסיס נתונים - כל פעם לבסיס נתונים אחד בלבד. פרוייקט זה נקרא פרוייקט יוסטון ומיועד לאלו שאין להם SSMS או לאלו שרוצים לעבוד רק דרך browser:

דרך פורטל זה  ניתן לבצע כמעט כל דבר על בסיס הנתונים.
יש לו חסרון מרכזי שהוא די איטי אולם ניתן לעבוד דרכו.
הלינק אליו הוא:
https://manage-sgp.cloudapp.net/

לינקים כלליים לצורך עבודה וניהול ב Azure

להלן לינקים כלליים לצורך ניהול ועבודה ב Azure הלינקים מחולקים ל 3 קטגוריות:
  1. Manage:
    1. Main Portal: http://msdn.microsoft.com/he-il/windowsazure/default.aspx
    2. Access DB: https://manage-sgp.cloudapp.net/
    3. DashBoard Service: http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx
    4. SQL Azure Labs: https://www.sqlazurelabs.com/