סיור באחסון קבצים

הושלם

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

תבנית הקובץ הספציפית המשמשת לאחסון נתונים תלויה במספר גורמים, כולל:

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

כמה פורמטים נפוצים של קבצים נידונים בהמשך.

קבצי טקסט מופרדים

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

הדוגמה הבאה מציגה נתוני לקוחות בתבנית המופרדת באמצעות פסיקים:

FirstName,LastName,Email
Joe,Jones,joe@litware.com
Samir,Nadoy,samir@northwind.com

סמל אובייקט JavaScript (JSON)

JSON הוא פורמט נפוץ שבו סכימת מסמך הירארכית משמשת להגדרת ישויות נתונים (אובייקטים) בעלות תכונות מרובות. כל תכונה יכולה להיות אובייקט (או אוסף של אובייקטים); מה שהופך את JSON לפורמט גמיש שמתאים גם לנתונים מובנים וגם לנתונים מובנים למחצה.

הדוגמה הבאה מציגה מסמך JSON המכיל אוסף של לקוחות. לכל לקוח יש שלוש תכונות (firstName, lastName ו - contact), ותכונת איש הקשר מכילה אוסף של אובייקטים המייצגים שיטת יצירת קשר אחת או יותר (דואר אלקטרוני או טלפון). שים לב שאובייקטים מוקפים בסוגריים מסולסלים ({..}) ואוספים מוקפים בסוגריים מרובעים ([..]). תכונות מיוצגות על ידי זוגות שם:ערך ומופרדות על ידי פסיקים (,).

{
  "customers":
  [
    {
      "firstName": "Joe",
      "lastName": "Jones",
      "contact":
      [
        {
          "type": "home",
          "number": "555 123-1234"
        },
        {
          "type": "email",
          "address": "joe@litware.com"
        }
      ]
    },
    {
      "firstName": "Samir",
      "lastName": "Nadoy",
      "contact":
      [
        {
          "type": "email",
          "address": "samir@northwind.com"
        }
      ]
    }
  ]
}

שפת סימון מורחבת (XML)

XML הוא תבנית נתונים הניתנת לקריאה על-ידי בני אדם שהייתה פופולרית בשנות ה-90 וה-2000. זה הוחלף במידה רבה על ידי פורמט JSON הפחות מילולי, אבל עדיין יש כמה מערכות שמשתמשות ב-XML כדי לייצג נתונים. XML משתמש בתגים המוקפים בסוגריים זוויתיים (<.. />) כדי להגדיר אלמנטיםותכונות, כפי שמוצג בדוגמה זו:

<Customers>
  <Customer name="Joe" lastName="Jones">
    <ContactDetails>
      <Contact type="home" number="555 123-1234"/>
      <Contact type="email" address="joe@litware.com"/>
    </ContactDetails>
  </Customer>
  <Customer name="Samir" lastName="Nadoy">
    <ContactDetails>
      <Contact type="email" address="samir@northwind.com"/>
    </ContactDetails>
  </Customer>
</Customers>

אובייקט בינארי גדול (BLOB)

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

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

תבניות קובץ ממוטבות

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

כמה תבניות קובץ ממוטבות נפוצות שאתה עשוי לראות כוללות את Avro, ORCופרקט:

  • Avro הוא פורמט מבוסס שורה. הוא נוצר על ידי אפאצ'י. כל קובץ מכיל כותרת המתארת את מבנה הנתונים בקובץ. כותרת זו מאוחסנת כ- JSON. הנתונים נשמרים כמידע בינארי בבלוק אחד או יותר של רשומות. יישום משתמש במידע בכותרת העליונה כדי לנתח את הנתונים הבינאריים ולחלץ את השדות שהם מכילים. Avro הוא פורמט טוב לדחיסת נתונים ולמזעור דרישות האחסון ורוחב הפס של הרשת.

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

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