תפריט

רעננות נתוני מדינות: מקורות, תאריכי משיכה ואסטרטגיות עדכון

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

פורסם

  • איכות נתונים
  • תחזוקה
  • נתוני מדינות

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

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

מה גורם לנתוני מדינות להתיישן?

ההתיישנות אינה אירוע יחיד, והיא מתרחשת בכמה שכבות בקצבים שונים.

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

השכבות המהירות ביותר הן לרוב אלה שאינן מתועדות כלל, משום שהן מוטמעות בקוד ולא בקובץ נתונים. כל שינוי בהן נראה כמו שינוי התנהגות ולא כמו התיישנות נתונים, ולכן הוא מתגלה מאוחר, בדרך כלל אחרי שמשתמשים כבר דיווחו עליו.

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

לתעד בנפרד את המקור, את תאריך המשיכה ואת ההיקף

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

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

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

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

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

שלוש אסטרטגיות עדכון ומה כל אחת מהן עולה

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

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

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

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

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

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

מה צריך לשמר בתצלום היסטורי?

תצלום היסטורי צריך לשמר את מה שנשאל בזמן שהתצלום נוצר, ולא את מה שהמערכת יודעת כעת.

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

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

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

למפתחים: לשמור את שושלת המקור על הערך ולא על הגרסה

הכלל המעשי שמפשט את כל השאר הוא לשמור את שושלת המקור לצד הערך עצמו ולא לצד הגרסה של הקובץ.

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

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

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

צעדים הבאים

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

המשך קריאה

מדריכים בנושא תבניות נתוני כתובת וזהות עבור 86 מדינות