Utforska fillagring

Slutförd

Möjligheten att lagra data i filer är en viktig del av alla databehandlingssystem. Filer kan lagras i lokala filsystem på hårddisken på din personliga dator och på flyttbara medier, till exempel USB-enheter. men i de flesta organisationer lagras viktiga datafiler centralt i någon form av delat fillagringssystem. I allt högre grad finns den centrala lagringsplatsen i molnet, vilket möjliggör kostnadseffektiv, säker och tillförlitlig lagring för stora mängder data.

Det specifika filformat som används för att lagra data beror på ett antal faktorer, inklusive:

  • Den typ av data som lagras (strukturerad, halvstrukturerad eller ostrukturerad).
  • De program och tjänster som behöver läsa, skriva och bearbeta data.
  • Behovet av att datafilerna kan läsas av människor eller optimeras för effektiv lagring och bearbetning.

Några vanliga filformat beskrivs nedan.

Avgränsade textfiler

Data lagras ofta i oformaterat textformat med specifika fältavgränsare och radavgränsare. Det vanligaste formatet för avgränsade data är kommaavgränsade värden (CSV) där fält avgränsas med kommatecken och rader avslutas med en vagnretur/ny rad. Om du vill kan den första raden innehålla fältnamnen. Andra vanliga format är tabbavgränsade värden (TSV) och blankstegsavgränsade (där flikar eller blanksteg används för att avgränsa fält) och data med fast bredd där varje fält tilldelas ett fast antal tecken. Avgränsad text är ett bra val för strukturerade data som måste nås av en mängd olika program och tjänster i ett läsbart format för människor.

I följande exempel visas kunddata i kommaavgränsat format:

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

JavaScript Object Notation (JSON)

JSON är ett allestädes närvarande format där ett hierarkiskt dokumentschema används för att definiera dataentiteter (objekt) som har flera attribut. Varje attribut kan vara ett objekt (eller en samling objekt); göra JSON till ett flexibelt format som är bra för både strukturerade och halvstrukturerade data.

I följande exempel visas ett JSON-dokument som innehåller en samling kunder. Varje kund har tre attribut (firstName, lastName och kontakt) och kontaktattributetinnehåller en samling objekt som representerar en eller flera kontaktmetoder (e-post eller telefon). Observera att objekt omges av klammerparenteser ({..}) och att samlingar omges av hakparenteser ([..]). Attribut representeras av namn:värdepar och avgränsas med kommatecken (,).

{
  "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"
        }
      ]
    }
  ]
}

Utökningsbart markeringsspråk (XML)

XML är ett läsbart dataformat som var populärt på 1990- och 2000-talen. Det har till stor del ersatts av det mindre utförliga JSON-formatet, men det finns fortfarande vissa system som använder XML för att representera data. XML använder taggar som omges av vinkelparenteser (<.. />) för att definiera element och attribut, som du ser i det här exemplet:

<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>

Binärt stort objekt (BLOB)

I slutändan lagras alla filer som binära data (1:or och 0:or), men i de format som beskrivs ovan mappas byteen med binära data till utskrivbara tecken (vanligtvis via ett teckenkodningsschema som ASCII eller Unicode). Vissa filformat, särskilt för ostrukturerade data, lagrar dock data som rå binärfil som måste tolkas av program och återges. Vanliga typer av data som lagras som binära är bilder, video, ljud och programspecifika dokument.

När du arbetar med data som dessa refererar dataexperter ofta till datafilerna som BLOB (binära stora objekt).

Optimerade filformat

Även om format som kan läsas av människor för strukturerade och halvstrukturerade data kan vara användbara, är de vanligtvis inte optimerade för lagringsutrymme eller bearbetning. Med tiden har vissa specialiserade filformat som möjliggör komprimering, indexering och effektiv lagring och bearbetning utvecklats.

Några vanliga optimerade filformat som du kan se är Avro, ORC och Parquet:

  • Avro är ett radbaserat format. Det skapades av Apache. Varje post innehåller en rubrik som beskriver strukturen för data i posten. Den här rubriken lagras som JSON. Data lagras som binär information. Ett program använder informationen i rubriken för att parsa binära data och extrahera de fält som de innehåller. Avro är ett bra format för att komprimera data och minimera kraven på lagrings- och nätverksbandbredd.

  • ORC (formatet Optimized Row Columnar) ordnar data i kolumner i stället för rader. Det utvecklades av HortonWorks för att optimera läs- och skrivåtgärder i Apache Hive (Hive är ett informationslagersystem som stöder snabb datasammanfattning och frågor över stora datamängder). En ORC-fil innehåller remsor med data. Varje remsa lagrar data för en kolumn eller uppsättning kolumner. En remsa innehåller ett index för raderna i remsan, data för varje rad samt en sidfot som lagrar statistisk information (antal, summa, max, min och så vidare) för varje kolumn.

  • Parquet är ett annat kolumnbaserat dataformat. Det skapades av Cloudera och Twitter. Parquet-filer innehåller radgrupper. Data för varje kolumn lagras tillsammans i samma radgrupp. Varje radgrupp innehåller ett eller flera datasegment. Parquet-filer innehåller metadata som beskriver den uppsättning rader som finns i varje segment. Ett program kan använda dessa metadata för att snabbt hitta rätt segment för en viss uppsättning rader samt hämta data i de angivna kolumnerna för dessa rader. Parquet specialiserar sig på att lagra och bearbeta kapslade datatyper effektivt. Det stöder mycket effektiva scheman för komprimering och kodning.