2018-02-27

How to choose your AZURE Data Center

שלום רב והיום מעט על Data Centers בענן של מיקרוסופט.
לפני שאסביר איך מומלץ לבחור את הדאטה סנטר שלך שבתוכו תשים את כל האפליקציות  והנתונים בענן, אסביר מספר מושגים שקשורים לקבלת ההחלטה.
Regoin - למיקרוסופט מספר רב של דאטה סנטרים, הם מאחדים אותם תחת אזורים. בתוך אזורים יש תקשורת טובה יותר ומומלץ לעבוד בכמה דאטה סנטרים תחת אותו אזור. למשל באירופה יש כמה אזורים - UK - יש לה 2 אישורים לונדון וקרדיף. אירופה יש לה צפון ומערב והם זוגות.
Government - אלו דאטה סנטרים בארה"ב שעומדים תחת רגולצית ממשל אמריקאית, יש שם מנגנוני אבטחה מוגברים לפי הצרכים של הממשל האמריקאי.
German - גם פה ישנם צרכים לממשל גרמני, ולכן פתחו מיקרוסוםט דאטה סנטרים בגרמניה.
חשוב להבין שלא כל הדאטה סנטרים של מיקרוסופט הם בניהולם - לעיתים, כמו בגרמניה הם רוכשים שירותים מקומיים. כך גם בסין.
מפת הפריסה של הדאטה סנטרים היא זו נכון להיום:


כשניגשים לבחירת data center צריך לקחת כמה דברים בחשבון:
Latency, Service Availability, Compliance, 

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



פה גם רואים לפי דאטה סנטר :

התוצאות די דומות וכל אחד יבחר לו כלי כפי רצונו.
Service Availability - לא בכל דאטה סנטר יש את כל הסרביסים שהענן מציע וחשוב לפני הבחירה לדעת מה יש ומה אין ופה מיקרוסופט נותנים טבלה:

למשל בטבלה המצולמת אין MySQL PAAS בחלק האיזורים בארה"ב.

Compliance - נקודה מאד חשובה, למשל האם מותר לשמור נתונים באיזור מחוץ לאירופה ללקוחות אירופאים וכדומה, חייבים לקחת זאת מראש.

זהו אילו עיקרי הדברים יקרא כל אחד ויחליט כטוב בעיניו.









2018-02-06

RETENTION on Temporal Tables

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


/*State of entire table AS OF specific date in the past*/ SELECT [DeptID], [DeptName], [SysStartTime],[SysEndTime] FROM [dbo].[Department] FOR SYSTEM_TIME AS OF '2015-09-01 T10:00:00.7230011' ;

אחת הבעיות זה ניהול הטבלה ההיסטורית אי אפשר למחוק ממנה בצורה רגילה - ואצלי ב SQL Azure הדבר נהיה משמעותי עקב מגבלת הגודל.

לכן עלינו על נושא ה RETENTION שזה פיצ'ר מדהים שניתן בכל SQL Server ולהפתעתי גם ב SQL Azure.
יש אפשרות להגדיר כמה זמן יישמר המידע בטבלת היסטוריה.

כאשר יש סרביס מאחורה שרץ ומוחק מה שצריך ללא עומס מיוחד בבסיס הנתונים - לא הצלחתי להבין היכן זה רץ ומה חלונות הזמן שלהם.

הגדרה זו היא בשתי רמות, ברמת בסיס הנתונים שב Azure אתה מריץ את זה ב master.

--on master DB
ALTER DATABASE MyDB SET temporal_history_retention ON  

ואז ברמת הטבלה כולל הגדרה מה הזמן שאתה רוצה שיישמר

--on db
ALTER TABLE [MyDB ].[MyTable] 
SET (SYSTEM_VERSIONING = ON (HISTORY_RETENTION_PERIOD = 1 WEEK));

או שזה מוגדר לשמור לתמיד ככה:
--on db
ALTER TABLE [MyDB ].[MyTable] 
SET (SYSTEM_VERSIONING = ON (HISTORY_RETENTION_PERIOD = INFINITE));

ואז זה עובד כמו שאומרים - פצצות.

כדי לראות מה מוגדר לך לכל טבלה זו השאילתא:

SELECT DB.is_temporal_history_retention_enabled,
SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,
T1.name as TemporalTableName,  SCHEMA_NAME(T2.schema_id) AS HistoryTableSchema,
T2.name as HistoryTableName,T1.history_retention_period,
T1.history_retention_period_unit_desc
FROM sys.tables T1  
OUTER APPLY (select is_temporal_history_retention_enabled from sys.databases
where name = DB_NAME()) AS DB
LEFT JOIN sys.tables T2   
ON T1.history_table_id = T2.object_id WHERE T1.temporal_type = 2