ישנם מספר נושאים חשובים שיש לתת עליהם את הדעת בפיתוח ותכנון בסיס נתונים. כמובן שצריך לשים לב לנירמול נכון של הטבלאות, וכמובן שצריך להגדיר סטנדרט לכתיבה נכונה של הקוד, וכמובן שאי אפשר בלי סטנדרט נכון לשמות האובייקטים וזו רק רשימה חלקית!
בין הנושאים החשובים ביותר לפי דעתי בפיתוח בסיס נתונים הינו שלב התיעוד. תיעוד נכון של האובייקטים יחסוך הרבה מאוד כאב ראש בשלב הפיתוח, אבל הכי חשוב בעבודה ובפיתוח השוטף.
לאורך שנותיי כיועץ לחברות, נתקלתי בהרבה מאוד מקרים בהם פרוייקטי פיתוח התעכבו רק בגלל שהיה חסר תיעוד של בסיס הנתונים – סיטואציה שגרמה לעיכובים והתארכות זמני הפיתוח מהסיבה הפשוטה שהמתכנת היה צריך להשקיע זמן ולהתחיל להיזכר לפני כל שינוי קטן – מה מטרת האובייקט, מה שינוי בו יגרור ולאיזה מודל אפליקטיבי הוא קשור?
לפעמים, המתכנת כבר לא היה בסביבה כדי לבצע את תהליך ההזכרות ואז אני כבר לא מדבר על אי הנוחות בשינוי אובייקט בטעות בסביבת ייצור ויצירת תקלות עקב אי ההבנה מה משמעות האובייקט… 🙁
אם כן, ברור לנו שהתיעוד חשוב מאוד ובא לסייע לנו הן בשלב הפיתוח, הן בעת "העברת המקל", והן בצדדים של שימור הידע בארגון.
מנסיוני, תיעוד נכון של סביבת בסיס נתונים צריכה להיות מורכבת ממספר רבדים:
- תיעוד סביבת השרת – בשלב זה לתעד את תשתית שרת בסיס הנתונים, הגדרות, סוג החומרה, משאבים, פתרון DR, פתרון גיבויים, אבטחת מידע, תרשים הקשרים בין השרתים (שרתי האפליקציה לדוגמה).
- תיעוד סביבת ה- sql server – בשלב זה יש לתעד את ההגדרות ברמת ה-Instance, והאובייקטים "שמחוץ" לבסיס הנתונים (link server, jobs ועוד).
- תיעוד סביבת בסיסי הנתונים – תיעוד אובייקטים, קוד, הוספת הסברים בקוד וכן הלאה.
ישנם מספר כלים בהם ראיתי שצוותים מתעדים בהם את הסביבות, לדוגמא: Visio לטובת תיעוד יחסי הגומלין בין השרתים בסביבה, ותיעוד ה- ERD של טבלאות בסיסי הנתונים (כמובן שלטובת ה- ERD של הטבלאות ניתן להיעזר ב- database diagram שעושה עבודה מצויינת לטעמי, לפרטים אודות היכולת : http://www.mssqltips.com/sqlservertip/1816/getting-started-with-sql-server-database-diagrams/). כמובן שניתן פשוט להיעזר גם ב- power point ו- word אך העבודה תהיה טיפה יותר מסורבלת…
Extended Properties
באותו הקשר – לפני מספר ימים פנה אליי חבר טוב בהתייעצות, מדובר במקרה של שרת בסיסי נתונים של מוצר שמידי תקופה מעלים גרסאות של עדכוני סכמה וקוד (נשמעת לכם מוכרת הסיטואציה הזו? 🙂 )
בשיחה, עלתה הסוגיה – כיצד נדע, לפני העלאת גרסה, איזו גרסה אפליקטיבית מותקנת על בסיס הנתונים? איך נדע אילו אובייקטים שודרגו כבר ואילו עדיין לא?
אם חושבים על זה רגע, כמובן שניתן להקים יהיה טבלאות מערכת שינהלו את העלאת הגרסה – אך במקרה הזה הלקוח רצה פתרון מתוכם יותר. לפי דעתי, אין ספק שתיעוד נכון וחכם הוא הפתרון האידיאלי לסוגיה הזו.
הפעם אני רוצה להמליץ על פיצ'ר שקיים עוד מ- SQL Server 2000 אך לטעמי לא כולם מכירים אותו ומשתמשים בו – Extended Properties. בעזרת ה- Extended Properties ניתן להוסיף מאפיינים והערות לכמעט כל אובייקט ב- SQL Server (כמובן שהיכולת מגיעה עם שליטה ברמות הרשאה שונות).
ה- Extended Properties בנוי כך שניתן להגדיר פרמטרים וערכים לכל אובייקט. לדוגמה: ניתן להוסיף כסטנדרט לכל אובייקט פרמטרים: מספר גרסה, הערות מיוחדות וכו'.
את המאפיינים ניתן לעדכן ולמחוק כמובן דרך ה- SSMS, אבל ניתן לבצע את זה גם דרך הקוד. היתרון בעבודה על ידי שימוש בקוד הוא שניתן מצד אחד לשלב בקוד (או בשלב העלאת גרסת לדוגמא) את עדכון המאפיינים והתיעוד. הדבר החשוב ביותר הוא שאם נרצה, כמובן שיהיה ניתן לשלוף בצורה יעילה ומהירה את כל המאפיינים של והתיעוד של האובייקטים ולפלטר ביניהם.
אז ראשית, להלן האובייקטים והשכבות ב- SQL Server שניתן להוסיף להם Extended Properties :
להלן דוגמא למסך ה- Extended Properties ברמת בסיס הנתונים:
ולהלן דוגמאות לקוד:
הוספה:
USE AdventureWorks2012; GO --Add a caption to the AdventureWorks2012 Database object itself. EXEC sp_addextendedproperty @name = N'Caption', @value = 'AdventureWorks2012 Sample OLTP Database';
עדכון:
EXEC sp_updateextendedproperty @name = N'NAME', @VALUE = N'Holds tables created by user itai.', @level0type = N'SCHEMA', @level0name = 'Jes';
מחיקה:
EXEC sp_dropextendedproperty @name = 'name', @level0type = 'SCHEMA', @level0name = 'Jes', @level1type = 'Table', @level1name = 'Running', @level2type = 'Column', @level2name = 'RunDistance';
וכמובן שליפה:
SELECT EP.class_desc AS PropertyOn, DB_NAME() AS DatabaseName, EP.name AS ExtendedPropertyDescription, EP.VALUE AS ExtendedPropertyValue, * FROM sys.extended_properties AS EP
לפרטים נוספים אודות היכולת :
http://technet.microsoft.com/en-us/library/ms190243(v=sql.105).aspx
אז אל תשכחו לתעד!!!
בהצלחה!
איתי
Latest posts by איתי בנימין (see all)
- SQL Server 2016 Community Technology Preview 3.0 זמינה להורדה - 29/10/2015
- קהילת ה- BI וה- BIG DATA מתכנסת ב- 28-10 ! - 22/10/2015
- הזמנה ל-SQL Saturday #481 – Israel 2016 - 22/10/2015
השאר תגובה: