Explore o armazenamento de arquivos

Concluído

A capacidade de armazenar dados em arquivos é um elemento central de qualquer sistema de computação. Os arquivos podem ser armazenados em sistemas de arquivos locais no disco rígido do seu computador pessoal e em mídias removíveis, como unidades USB; Mas, na maioria das organizações, arquivos de dados importantes são armazenados centralmente em algum tipo de sistema de armazenamento de arquivos compartilhado. Cada vez mais, esse local de armazenamento central é hospedado na nuvem, permitindo um armazenamento econômico, seguro e confiável para grandes volumes de dados.

O formato de arquivo específico usado para armazenar dados depende de vários fatores, incluindo:

  • O tipo de dados que estão sendo armazenados (estruturados, semiestruturados ou não estruturados).
  • Os aplicativos e serviços que precisarão ler, gravar e processar os dados.
  • A necessidade de os arquivos de dados serem legíveis por seres humanos, ou otimizados para armazenamento e processamento eficientes.

Alguns formatos de arquivo comuns são discutidos abaixo.

Arquivos de texto delimitados

Os dados geralmente são armazenados em formato de texto sem formatação com delimitadores de campo específicos e terminadores de linha. O formato mais comum para dados delimitados é valores separados por vírgulas (CSV), no qual os campos são separados por vírgulas e as linhas são terminadas por um retorno de carro / nova linha. Opcionalmente, a primeira linha pode incluir os nomes dos campos. Outros formatos comuns incluem valores separados por tabulações (TSV) e delimitados por espaço (nos quais guias ou espaços são usados para separar campos) e dados de largura fixa nos quais cada campo recebe um número fixo de caracteres. O texto delimitado é uma boa opção para dados estruturados que precisam ser acessados por uma ampla gama de aplicativos e serviços em um formato legível por humanos.

O exemplo a seguir mostra os dados do cliente em formato delimitado por vírgula:

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

JavaScript Object Notation (JSON)

JSON é um formato ubíquo no qual um esquema de documento hierárquico é usado para definir entidades de dados (objetos) que têm vários atributos. Cada atributo pode ser um objeto (ou uma coleção de objetos); tornando o JSON um formato flexível que é bom para dados estruturados e semiestruturados.

O exemplo a seguir mostra um documento JSON contendo uma coleção de clientes. Cada cliente tem três atributos (firstName, lastName e contact), e o atributo contact contém uma coleção de objetos que representam um ou mais métodos de contato (email ou telefone). Observe que os objetos são colocados entre chaves ({..}) e as coleções estão entre colchetes ([..]). Os atributos são representados por pares nome:valor e separados por vírgulas (,).

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

Linguagem de marcação extensível (XML)

XML é um formato de dados legível por humanos que foi popular nas décadas de 1990 e 2000. Ele foi amplamente substituído pelo formato JSON menos detalhado, mas ainda existem alguns sistemas que usam XML para representar dados. O XML usa tags entre colchetes angulares (<.. />) para definir elementos e atributos, como mostrado neste exemplo:

<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, objeto binário grande)

Em última análise, todos os arquivos são armazenados como dados binários (1 e 0), mas nos formatos legíveis por humanos discutidos acima, os bytes de dados binários são mapeados para caracteres imprimíveis (normalmente através de um esquema de codificação de caracteres, como ASCII ou Unicode). No entanto, alguns formatos de arquivo, particularmente para dados não estruturados, armazenam os dados como binários brutos que devem ser interpretados por aplicativos e renderizados. Os tipos comuns de dados armazenados como binários incluem imagens, vídeo, áudio e documentos específicos do aplicativo.

Ao trabalhar com dados como este, os profissionais de dados geralmente se referem aos arquivos de dados como BLOBs (Binary Large Objects).

Formatos de arquivo otimizados

Embora formatos legíveis por humanos para dados estruturados e semiestruturados possam ser úteis, eles normalmente não são otimizados para espaço de armazenamento ou processamento. Com o tempo, alguns formatos de arquivo especializados que permitem compactação, indexação e armazenamento e processamento eficientes foram desenvolvidos.

Alguns formatos de arquivo otimizados comuns que você pode ver incluem Avro, ORC e Parquet:

  • O Avro é um formato baseado em linhas. Foi criado pelo Apache. Cada registo contém um cabeçalho que descreve a estrutura dos respetivos dados. Esse cabeçalho é armazenado no formato JSON. Os dados são armazenados como informações binárias. Uma aplicação utiliza as informações no cabeçalho para analisar os dados binários e extrair os respetivos campos. O Avro é um bom formato para compactar dados e minimizar os requisitos de armazenamento e largura de banda de rede.

  • O formato ORC (formato de colunas de linhas otimizadas) organiza os dados em colunas e não em linhas. Foi desenvolvido pela HortonWorks para otimizar as operações de leitura e escrita no Apache Hive (o Hive é um sistema de armazém de dados que suporta rápida sumarização de dados e consultas em grandes conjuntos de dados). Um ficheiro ORC contém faixas de dados. Cada faixa inclui os dados de uma coluna ou conjunto de colunas. Uma faixa contém um índice sobre as respetivas linhas, os dados de cada linha e um rodapé com informações estatísticas (número, soma, máximo, mínimo, entre outras) de cada coluna.

  • O Parquet é outro tipo de formato de dados de colunas. Foi criado pela Cloudera e pelo Twitter. Um ficheiro Parquet contém grupos de linhas. Os dados de cada coluna são armazenados no mesmo grupo de linhas. Cada grupo de linhas contém um ou vários segmentos de dados. Um ficheiro Parquet inclui metadados que descrevem o conjunto de linhas em cada segmento. Uma aplicação pode utilizar estes metadados para localizar rapidamente o segmento correto para um determinado conjunto de linhas e obter os dados relativos a essas linhas nas colunas especificadas. O Parquet é especialmente indicado para armazenar e processar tipos de dados aninhados de forma eficiente. Além disso, suporta esquemas de compressão e codificação muito eficientes.