Eksplorowanie magazynu plików

Ukończone

Możliwość przechowywania danych w plikach jest podstawowym elementem dowolnego systemu obliczeniowego. Pliki mogą być przechowywane w lokalnych systemach plików na dysku twardym komputera osobistego i na nośnikach wymiennych, takich jak dyski USB; ale w większości organizacji ważne pliki danych są przechowywane centralnie w jakimś udostępnionym systemie magazynu plików. Coraz częściej centralna lokalizacja magazynu jest hostowana w chmurze, umożliwiając ekonomiczne, bezpieczne i niezawodne przechowywanie dużych ilości danych.

Określony format pliku używany do przechowywania danych zależy od wielu czynników, w tym:

  • Typ przechowywanych danych (ustrukturyzowany, częściowo ustrukturyzowany lub bez struktury).
  • Aplikacje i usługi, które będą musiały odczytywać, zapisywać i przetwarzać dane.
  • Potrzeba odczytu plików danych przez ludzi lub zoptymalizowana pod kątem wydajnego przechowywania i przetwarzania.

Poniżej omówiono niektóre typowe formaty plików.

Rozdzielane pliki tekstowe

Dane są często przechowywane w formacie zwykłego tekstu z określonymi ogranicznikami pól i terminatorami wierszy. Najbardziej typowym formatem rozdzielanych danych jest wartości rozdzielane przecinkami (CSV), w których pola są rozdzielane przecinkami, a wiersze są przerywane przez znak powrotu karetki /nowego wiersza. Opcjonalnie pierwszy wiersz może zawierać nazwy pól. Inne typowe formaty obejmują wartości rozdzielane tabulatorami (TSV) i rozdzielane spacjami (w których karty lub spacje są używane do oddzielania pól) i dane o stałej szerokości, w których każde pole jest przydzielane stałą liczbę znaków. Tekst rozdzielany jest dobrym wyborem dla danych strukturalnych, które muszą być dostępne przez szeroką gamę aplikacji i usług w formacie czytelnym dla człowieka.

W poniższym przykładzie przedstawiono dane klientów w formacie rozdzielanym przecinkami:

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

JavaScript Object Notation (JSON)

JSON to wszechobecny format, w którym schemat dokumentu hierarchicznego służy do definiowania jednostek danych (obiektów), które mają wiele atrybutów. Każdy atrybut może być obiektem (lub kolekcją obiektów); tworzenie formatu JSON jako elastycznego formatu, który jest odpowiedni zarówno dla danych strukturalnych, jak i częściowo ustrukturyzowanych.

W poniższym przykładzie przedstawiono dokument JSON zawierający kolekcję klientów. Każdy klient ma trzy atrybuty (firstName, lastName i contact), a atrybut kontaktu zawiera kolekcję obiektów reprezentujących co najmniej jedną metodę kontaktu (wiadomość e-mail lub telefon). Należy pamiętać, że obiekty są ujęte w nawiasy klamrowe ({..}), a kolekcje są ujęte w nawiasy kwadratowe ([..]). Atrybuty są reprezentowane przez nazwy : pary wartości i oddzielone przecinkami (,).

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

Extensible Markup Language (XML)

XML to format danych czytelny dla człowieka, który był popularny w 1990 i 2000 roku. Jest on w dużej mierze zastępowany przez mniej pełny format JSON, ale nadal istnieją pewne systemy, które używają kodu XML do reprezentowania danych. Kod XML używa tagów ujętych w nawiasy kątowe (<.). />) do zdefiniowania elementów i atrybutów, jak pokazano w tym przykładzie:

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

Binarny duży obiekt (BLOB)

Ostatecznie wszystkie pliki są przechowywane jako dane binarne (1 i 0), ale w opisanych powyżej formatach czytelnych dla człowieka bajty danych binarnych są mapowane na znaki drukowalne (zazwyczaj za pomocą schematu kodowania znaków, takiego jak ASCII lub Unicode). Jednak niektóre formaty plików, szczególnie w przypadku danych bez struktury, przechowują dane jako nieprzetworzone dane binarne, które muszą być interpretowane przez aplikacje i renderowane. Typowe typy danych przechowywanych jako pliki binarne obejmują obrazy, wideo, dźwięk i dokumenty specyficzne dla aplikacji.

Podczas pracy z takimi danymi specjaliści ds. danych często nazywają pliki danych plikami BLOB (obiekty binarne duże).

Zoptymalizowane formaty plików

Formaty czytelne dla danych strukturalnych i częściowo ustrukturyzowanych mogą być przydatne, ale zwykle nie są zoptymalizowane pod kątem miejsca do magazynowania ani przetwarzania. W czasie opracowano niektóre wyspecjalizowane formaty plików, które umożliwiają kompresję, indeksowanie i wydajne przechowywanie i przetwarzanie.

Niektóre typowe zoptymalizowane formaty plików mogą obejmować Avro, ORC i Parquet:

  • Avro to format oparty na wierszu, który został utworzony przez firmę Apache. Każdy rekord zawiera nagłówek, który opisuje strukturę danych w danym rekordzie. Taki nagłówek jest przechowywany w formacie JSON, a dane są przechowywane w postaci danych binarnych. Aplikacja wykorzystuje informacje zawarte w nagłówku do analizy danych binarnych i wyodrębniania zawartych w nich pól. Avro to dobry format kompresowania danych i minimalizowania wymagań dotyczących magazynowania i przepustowości sieci.

  • ORC (Optimized Row Columnar) to format, który porządkuje dane w kolumnach, zamiast w wierszach. Został opracowany przez Firmę HortonWorks w celu optymalizacji operacji odczytu i zapisu w usłudze Apache Hive (Hive to system magazynu danych, który obsługuje szybkie podsumowywanie i wykonywanie zapytań dotyczących dużych zestawów danych). Plik ORC zawiera pasy danych. Każdy pas zawiera dane dla kolumny lub zestawu kolumn. Pas danych zawiera indeks wierszy, dane dla każdego wiersza i stopkę, która przechowuje informacje statystyczne (licznik, suma, wartość maksymalna, wartość minimalna itd.) dla każdej kolumny.

  • Parquet to kolejny format danych kolumnowych. Został utworzony przez cloudera i X. Plik Parquet zawiera grupy wierszy. Dane z każdej kolumny są przechowywane razem w tej samej grupie wierszy. Każda grupa wierszy zawiera jeden lub więcej fragmentów danych. Parquet zawiera metadane opisujące zestaw wierszy znajdujących się w każdym fragmencie danych. Aplikacja może używać tych metadanych, aby szybko zlokalizować właściwy fragment danych dla danego zestawu wierszy i pobrać dane z określonych kolumn dla tych wierszy. Parquet specjalizuje się w wydajnym przechowywaniu i przetwarzaniu zagnieżdżonych typów danych. Obsługuje bardzo wydajne schematy kompresji i kodowania.