Evolução dos formatos de arquivos na Era dos Dados

Do simples TXT até a era do Big Data

Sarah David Müzel
6 min readOct 2, 2023

--

Como tudo na vida, o tempo trouxe mudanças. E no universo da tecnologia, essas mudanças vieram na forma de novos formatos de arquivos. Por quê? Para atender a uma variedade de necessidades, como armazenar mais dados, trabalhar mais rápido e otimizar análises.

Ao lidar com dados, esbarramos em muitos tipos de arquivos. Alguns são bem organizados, chamados dados estruturados e muito usados pelas empresas; os semi estruturados, que ainda é possível do ser humano ler; e os não estruturados, que estão se tornando mais populares devido a redes sociais e e-commerce.

Você já deve ter ouvido falar de arquivos TXT, CSV e JSON, mas também existem outros que têm ganhado destaque: AVRO, ORC e PARQUET. Mas o que os torna especiais?

Tipos de arquivos

Durante a nossa vida, seja ela pessoal ou profissional, nos deparamos com uma enorme variedade de arquivos como textos, imagens e tabelas. Para cada tipo de arquivo existem diversos formatos que podemos utilizar. Por exemplo, para uma imagem, podemos salvar o arquivo como jpeg, png, tiff, etc…

O mesmo ocorre na área de dados, onde poderemos receber arquivos de nossos clientes nos mais variados formatos e caberá a nós, juntamente com todo o time de dados, escolhermos qual é o melhor formato para se trabalhar com cada tipo de dado com base em:

  • Facilidade de uso
  • Quantidade de dados que será armazenada
  • Velocidade de escrita
  • Velocidade de leitura
  • Eficiência das consultas
  • Grau de compressão

Esses parâmetros são definidos com base na arquitetura de dados do projeto. Para isso, é necessário compreender as vantagens e desvantagens de cada formato de arquivo para determinar qual é a melhor extensão de arquivo a ser utilizada.

Formato do arquivos

Dentre tantos formatos, além dos clássicos TXT e BIN os que mais se destacam são:

  • CSV
  • JSON
  • AVRO
  • ORC
  • PARQUET

Os arquivos eletrônicos normalmente são classificados como arquivos binários ou arquivos de texto. Pode-se argumentar que os arquivos de texto também são um tipo de arquivo binário porque, pois como qualquer outro arquivo eletrônico são formados por sequências de bytes. Porém, em geral, são considerados tipos diferentes.

Podemos definir um arquivo binário como um arquivo que contém uma série de bytes sequenciais, onde cada um tem oito bits de comprimento. Esse formato não pode ser lido por um humano, é necessário um programa para interpretar os dados. Os arquivos binários incluem uma ampla variedade de tipos de arquivos, incluindo executáveis , bibliotecas, gráficos, bancos de dados, arquivos e muitos outros. Já os arquivos de texto estão em um formato legível e normalmente seguem conjuntos de caracteres específicos, como Unicode .

Os arquivos CSV e JSON apesar de terem sido criados a mais de 20 anos ainda são os formatos mais vistos no mercado. Devido a familiaridade com ele, facilidade de interpretação e rapidez de escrita. E no caso do JSON ainda existe o grande uso em API e mensagens.

Com o passar do tempo, as tecnologias foram evoluindo e entramos na era do Big Data, com aprimoramentos nas estruturas/formatos, os quais podem suportar estrutura de dados mais complexa, como a propriedade colunar e melhor compactação. E então, entre 2009 e 2013 foram criados os formatos AVRO, ORC e PARQUET, desenvolvidos pensando no processamento de grandes quantidades de dados.

  • AVRO: O Avro é um formato de arquivo de dados serializado, desenvolvido para o ecossistema do Apache Hadoop, que oferece eficiência na compactação e velocidade de acesso. Projetado para lidar com dados estruturados complexos, é particularmente útil para armazenar dados grandes distribuídos. Além disso, sua flexibilidade permite que esquemas de dados sejam alterados sem quebrar sistemas antigos.
  • ORC: O ORC (Optimized Row Columnar) é um formato de arquivo auto-descritivo, altamente otimizado para leitura eficiente de grandes conjuntos de dados. Desenvolvido para o ecossistema Hadoop, ele combina a representação de dados em linha e em coluna (estrutura hibrida, para permitir análises rápidas e compactação superior. Além disso, suporta estruturas de dados complexas, como listas e mapas.
  • PARQUET: O Parquet é um formato de arquivo colunar de código aberto, projetado para armazenamento eficiente e performático de dados estruturados em larga escala. Favorecido no ecossistema Hadoop e suportado por muitas outras plataformas de processamento de dados, ele oferece uma compactação de dados eficiente e a capacidade de realizar leituras rápidas, especialmente para consultas analíticas.

Mas como devo escolher um desses arquivos? Quais as considerações devo fazer para definir qual formato utilizar? Bom nesse caso deve-se analisar as necessidades do seu projeto e sabendo quais são as características de cada formato definir a que mais se adequa ao projeto. Para isso verifique sobre:

- Compressão de arquivos

A compressão é realizada por meio de diversos algoritmos de compressão, o quais irão reduzir a quantidade de bytes que representam um dado. A compressão dos dados também ajuda na remoção da redundância, onde por exemplo, “BBBBBB” que ocupa 6 bytes pode ser representada por ‘6B’, e passar a ocupar somente 2 bytes. Com isso há uma redução do tamanho do arquivo e consequentemente no armazenamento.

- Estrutura de armazenamento

Com relação ao tipo de armazenamento, a principal divisão é entre linha e coluna, sendo que mais recentemente tem-se falado do método híbrido, que é uma mistura de armazenamento em linha e coluna, mais conhecido como híbrido colunar ou até mesmo classificado somente como colunar. Se dividirmos os formatos de arquivo citados, podemos dizer que:

  • Formato baseado em linha: CSV, JSON e AVRO
  • Formato baseado em coluna: ORC e PARQUET.

- Velocidade de escrita e leitura

Devido a diferença na estrutura de armazenamento, há mais vantagens na gravação ou leitura do arquivo e com isso deve-se pensar no objetivo do trabalho: “passarei mais tempo gravando ou lendo os arquivos”. Os arquivos com formato baseado em linha são muito rápidos na gravação, porém muito lentos na leitura. Já os colunares são o oposto, sua gravação é mais demorada, porém a sua leitura é muito rápida.

- Leitura Humana

Uma das características que pode determinar o formato a ser utilizado na gravação de um arquivo é se ele pode ou não ser lido por um humano. Dizem que por ser dados tabulares por exemplo já dá para um ser humano ler, porém deve-se considerar que existe uma diferença entre poder abrir um arquivo CSV diretamente e ter que criar uma dataframe ou a utilização de programas/sites preparados para a leitura de um arquivo parquet.

- Paralelismo

Devido a grande quantidade de dados que têm sido gerados atualmente é importante compreender se é possível dividir os dados entre múltiplos arquivos (“Data Chunk”). A facilidade de se realizar essa divisão será determinada pelo formato que o arquivo possui. Apesar de arquivos como CSV e JSON permitirem o paralelismo, a dificuldade de se executar é enorme.

Quando se trabalha em sistemas de arquivos distribuídos como o Hadoop, é primordial que os arquivos possam ser divididos em várias partes, pois assim o sistema poderá distribuir e operar seus arquivos utilizando técnicas de paralelismo. Caso o arquivo não possa ser dividido é necessário criar rotinas que façam esse processo, o que seria mais custoso ao time de engenharia.

- Evolução de Shema

A evolução do schema é um recurso que permite aos usuários realizar automaticamente uma operação de acréscimo ou substituição de dados em um arquivo. Por exemplo, quando queremos adicionar uma nova coluna no nosso arquivo, isso irá fazer com que o schema do arquivo mude, para que ele possa comportar essa nova coluna.

A evolução do esquema é um recurso que permite aos usuários alterar facilmente o esquema atual de uma tabela para acomodar os dados que mudam com o tempo — Databricks.

Conclusão

Existem muitos tipos e formatos de dados que podemos utilizar na área de Dados, sendo que a escolha do formato ideal deve ser com base nas necessidades do projeto.

A tabela abaixo apresenta o resumo das características como a capacidade de cada arquivo.

--

--

Sarah David Müzel

Data Science | Data Analytics | Data Consultant | Board game enthusiastic