יום שבת, 4 ביוני 2011

גם וגם

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

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

מה הקשר ל – SAS? החל מגירסא 6  SAS כוללת יכולת מובנית לכווץ טבלאות. הדרך לעשות זאת היא ע"י הוספת compress=yes למאפייני טבלת הפלט לדוגמא:
data class (compress=yes);
            set sashelp.class;
run;

במידה ואתם משתמשים ב – SAS Enterprise Guide ניתן לבקש מ – SAS לדחוס את הטבלה ע"י הוספת האופציה compress=yes (אין צורך בסוגריים) במסך האפשרויות (Option) בחלונית של בונה השאילתות (Query Builder):




בחינת הלוג תגלה לנו כמה נפח חסכנו בדחיסה:



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

1.       גודל הטבלה (פחות מכמה עשרות אלפי שורות אין טעם בטרחה).
2.       כמות השדות הטקסטואלים. עמודות טקסט נדחסות טוב יותר מעמודות מספריות.
3.       מספר התווים החוזרים על עצמם בשדות הטקסט. לדוגמא, שדה המכיל מק"ט בסגנון של 000000000000123456 או עמודה המכילה ערכי טקסט ריקים במרבית השורות (גם רווח זה תו) ידחסו טוב יותר.

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

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

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

חגי

תגובה 1:

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

    השבמחק