Explorer le stockage de fichiers

Effectué

La possibilité de stocker des données dans des fichiers est un élément fondamental de tout système informatique. Les fichiers peuvent être stockés dans des systèmes de fichiers locaux sur le disque dur de votre ordinateur personnel et sur des supports amovibles tels que des lecteurs USB, mais dans la plupart des organisations, les fichiers de données importants sont stockés de manière centralisée dans un système de stockage de fichiers partagé. Cet emplacement de stockage central est de plus en plus hébergé dans le cloud, ce qui offre un stockage économique, sécurisé et fiable pour de grands volumes de données.

Le format de fichier spécifique utilisé pour stocker les données dépend de plusieurs facteurs, notamment :

  • Le type des données stockées (structurées, semi-structurées ou non structurées).
  • Les applications et services qui devront lire, écrire et traiter les données.
  • Le besoin que les fichiers de données soient lisibles par les humains, ou optimisés pour un stockage et un traitement efficaces.

Certains formats de fichier courants sont présentés ci-dessous.

Fichiers texte délimités

Les données sont souvent stockées au format texte brut avec des délimiteurs de champs et des indicateurs de fin de ligne spécifiques. Le format le plus courant pour les données délimitées est celui des valeurs séparées par des virgules (CSV) dans lequel les champs sont séparés par des virgules, et les lignes sont terminées par un retour chariot / nouvelle ligne. Éventuellement, la première ligne peut inclure les noms de champ. Les autres formats courants comprennent les valeurs séparées par des tabulations (TSV) et délimitées par des espaces (où des tabulations ou des espaces sont utilisés pour séparer les champs), et les données à largeur fixe où chaque champ se voit allouer un nombre fixe de caractères. Le texte délimité est un bon choix pour les données structurées qui doivent être accessibles par un large éventail d’applications et de services dans un format lisible par l’homme.

L’exemple suivant montre les données client au format délimité par des virgules :

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

JSON (JavaScript Object Notation)

JSON est un format omniprésent dans lequel un schéma de document hiérarchique est utilisé pour définir des entités de données (objets) qui ont plusieurs attributs. Chaque attribut peut être un objet (ou une collection d’objets), ce qui fait de JSON un format souple qui convient aux données structurées et semi-structurées.

L’exemple suivant montre un document JSON contenant une collection de clients. Chaque client a trois attributs (prénom, nom de famille et contact) et l’attribut contact contient une collection d’objets qui représentent une ou plusieurs méthodes de contact (e-mail ou téléphone). Notez que les objets sont placés entre accolades ({..}) et que les collections sont placées entre crochets ([..]). Les attributs sont représentés par des paires nom:valeur et séparés par des virgules (,).

{
  "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 (Extensible Markup Language)

XML est un format de données lisible par l’homme qui était populaire dans les années 90 et 2000. Il a été largement remplacé par le format JSON moins verbeux, mais il existe toujours des systèmes qui utilisent XML pour représenter les données. XML utilise des balises placées entre crochets (<../>) pour définir des éléments et des attributs, comme montré dans cet exemple :

<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 (Binary Large Object)

Au bout du compte, tous les fichiers sont stockés sous forme de données binaires (1 et 0), mais dans les formats lisibles par l’homme décrits ci-dessus, les octets de données binaires sont mappés à des caractères imprimables (généralement via un schéma d’encodage de caractères comme ASCII ou Unicode). Toutefois, certains formats de fichier, en particulier pour les données non structurées, stockent les données sous forme de données binaires brutes qui doivent être interprétées par les applications et restituées. Les types de données courants stockés en tant que données binaires comprennent les images, la vidéo, l’audio et les documents spécifiques aux applications.

Lorsque vous utilisez des données de ce type, les professionnels des données font souvent référence aux fichiers de données sous le nom de BLOB (Binary Large Objects).

Formats de fichiers optimisés

Même si les formats lisibles par l’homme pour les données structurées et semi-structurées peuvent être utiles, ils ne sont généralement pas optimisés pour l’espace de stockage ou le traitement. Au fil du temps, certains formats de fichiers spécialisés qui permettent la compression, l’indexation, le stockage efficace et le traitement ont été développés.

Voici quelques formats de fichiers optimisés courants que vous rencontrerez probablement : Avro, ORCet Parquet :

  • Avro est un format basé sur les lignes. Il a été créé par Apache. Chaque enregistrement contient un en-tête qui décrit la structure des données de l’enregistrement. Cet en-tête est stocké au format JSON. Les données sont stockées sous forme d’informations binaires. Une application utilise les informations de l’en-tête pour analyser les données binaires et extraire les champs qu’elles contiennent. Avro est un bon format pour la compression des données, réduisant au minimum les besoins en stockage et en bande passante réseau.

  • ORC (format Optimized Row Columnar) organise les données en colonnes et non pas en lignes. Il a été développé par HortonWorks pour optimiser les opérations de lecture et d’écriture dans Apache Hive (Hive est un système d’entrepôt de données qui prend en charge la synthèse rapide de données et la recherche sur de grands ensembles de données). Un fichier ORC contient des bandes de données. Chaque bande contient les données d’une colonne ou d’un ensemble de colonnes. Une bande contient un index dans les lignes de la bande, les données pour chaque ligne et un pied de page qui contient des informations statistiques (nombre de lignes, somme, max, min, etc.) pour chaque colonne.

  • Parquet est un autre format de données en colonnes. Il a été créé par Cloudera et X. Un fichier Parquet contient des groupes de lignes. Les données pour chaque colonne sont stockées ensemble dans le même groupe de lignes. Chaque groupe de lignes contient un ou plusieurs blocs de données. Un fichier Parquet contient des métadonnées qui décrivent l’ensemble de lignes qui se trouvent dans chaque bloc. Une application peut utiliser ces métadonnées pour localiser rapidement le bloc approprié pour un ensemble donné de lignes et récupérer les données dans les colonnes spécifiées pour ces lignes. Parquet est spécialisé dans le stockage et le traitement efficaces des types de données imbriqués. Il prend en charge des schémas de compression et d’encodage très efficaces.