5 pontos por GN⁺ 2025-03-13 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Flat files são um formato muito comum em análise de dados
  • Este guia completo explica o que é um flat file, quais tipos existem, como escolher o mais adequado, além de casos de uso, características dos formatos e comparações com bancos de dados non-flat file e DBMS relacionais

Difícil de definir

  • Flat file é usado principalmente ao extrair dados de um banco de dados para processamento
  • Geralmente tem a forma de um arquivo de texto simples, como CSV, em que cada linha representa um registro e os campos são separados por vírgulas
  • No entanto, a definição de "flat file" não é clara, e há algumas características em comum:
    • Somente texto: armazena apenas texto e números, não dados binários (Blob)
    • Formato tabular: uma tabela por arquivo, com registros baseados em linhas
    • Portável: pode ser exibido, editado e processado facilmente sem software especial
    • Não estruturado: em geral, não há hierarquia nem relações entre os registros
    • Sem compressão: por padrão, não há compressão inteligente (embora DuckDB, Spark etc. aceitem arquivos zip)
    • Sem índice: não há índices embutidos para localizar registros específicos
    • Sem descrição: normalmente não há metadados nem informações de esquema
  • JSON e YAML fogem dessa definição porque podem incluir hierarquia e esquema
  • O fato de poderem ser usados em uma grande variedade de casos também não ajuda muito na definição
    • CSV: formato para armazenamento e troca de dados
    • JSON: troca de dados em larga escala, gerenciamento de configuração e formato de retorno de APIs
    • YAML: gerenciamento de configuração e arquivos de definição de pipelines

Tipos de Flat File

  • Existem vários tipos, dependendo de como os dados são organizados e armazenados
  • Forma de organização de campos e registros
    • Flat file não estruturado: estrutura de tabela única, como CSV
    • Flat file estruturado: JSON, YAML, XML etc. têm estrutura hierárquica
  • Tipo de delimitador de campo
    • Cada linha representa um registro, e os campos são separados por delimitadores
    • Usa vírgula (,), tabulação (\t) ou pipe (|)
  • Formato de largura fixa vs. largura variável
    • O formato de largura fixa tem campos com comprimento constante → processamento mais rápido
    • O formato de largura variável oferece mais flexibilidade no processamento
  • Delimitadores de dados
    • CSV pode armazenar tabulações e quebras de linha (com escape)
    • TSV não pode conter tabulações nem quebras de linha
  • Facilidade de leitura humana
    • Flat files muitas vezes podem ser lidos por pessoas
    • Em algumas plataformas, arquivos do Excel também são classificados como flat files
  • Inclusão de metadados
    • Arquivos como CSV não têm metadados
    • JSON pode incluir seus próprios metadados e esquema

Casos de uso de Flat File

  • Armazenamento e troca
    • Troca de dados: CSV e JSON são úteis para trocar dados entre plataformas diferentes
    • Integração de dados em ETL: flat files são usados com frequência como dados de origem e de destino em ETL
    • Arquivamento e backup: flat files, por serem baseados em texto, são vantajosos para retenção de longo prazo
  • Uso utilitário
    • Gerenciamento de configuração: YAML, JSON, INI etc. são usados para variáveis de ambiente, conexões com banco de dados e afins
    • Definição de pipelines de dados: JSON, YAML etc. são usados para definir a estrutura de pipelines
    • Metadados de datasets: JSON pode definir transformações e validações para CSV

Exemplos de Flat File

CSV (Comma-Separated Values)

  • Extensão: .csv
  • Delimitador: vírgula ,
  • Estrutura: plana (Flat)
  • Fácil para leitura humana
  • Exemplo:
    name, country, age  
    Alice, USA, 22  
    Bob, Canada, 34  
    Charlie, UK, 28  
    
  • Quando escolher:
    • Adequado para dados estruturados em formato de tabela
    • Útil ao exportar de sistemas de BI, Excel/Google Sheets
  • Quando evitar:
    • Inadequado quando é necessária uma estrutura hierárquica complexa
    • Pode causar problemas ao lidar com dados que contêm vírgulas

TSV (Tab-Separated Values)

  • Extensão: .tsv
  • Delimitador: tabulação \t
  • Estrutura: plana (Flat)
  • Fácil para leitura humana
  • Exemplo:
    name	country	age  
    Alice	USA	22  
    Bob	Canada	34  
    Charlie	UK	28  
    
  • Quando escolher:
    • Útil quando é preciso lidar com dados que contêm vírgulas
    • Fácil de processar com ferramentas CLI do Unix
  • Quando evitar:
    • Problemas ao lidar com dados que contêm tabulações

JSON (JavaScript Object Notation)

  • Extensão: .json
  • Estrutura: hierárquica
  • Fácil para leitura humana
  • Exemplo:
    [  
      {"name": "Alice", "country": "USA", "age": 22},  
      {"name": "Bob", "country": "Canada", "age": 34},  
      {"name": "Charlie", "country": "UK", "age": 28}  
    ]  
    
  • Quando escolher:
    • Adequado quando é necessária uma estrutura de dados hierárquica
  • Quando evitar:
    • Inadequado quando a prioridade é velocidade

YAML (YAML Ain’t Markup Language)

  • Extensão: .yaml
  • Estrutura: hierárquica
  • Fácil para leitura humana
  • Exemplo:
    name: Alice  
    country: USA  
    age: 22  
    
  • Quando escolher:
    • Adequado quando é necessário um arquivo de configuração legível por humanos
  • Quando evitar:
    • Inadequado para armazenar grandes volumes de dados

Arquivos ENV

  • Extensão: .env
  • Estrutura: plana (Flat)
  • Fácil para leitura humana
  • Exemplo:
    APP_NAME=MyApp  
    ENVIRONMENT=production  
    
  • Quando escolher:
    • Adequado quando é necessário um arquivo de configuração para deploy e ambiente local
  • Quando evitar:
    • Inadequado para armazenar estruturas de dados complexas

Comparação: Flat File vs Non-Flat File vs DBMS

Flat files são frequentemente comparados com bancos de dados relacionais (RDBMS), e também existem formatos intermediários como Avro, Parquet e ORC. A seguir estão as principais características comparadas entre esses formatos:

  • Forma de organização dos registros

    • CSV: armazenamento de dados baseado em linhas (row)
    • JSON: armazenamento baseado em pares chave-valor
    • Parquet: armazenamento baseado em colunas (column)
    • DBMS relacional: armazenamento baseado em linhas (row)
  • Formato legível por humanos

    • CSV e JSON: baseados em texto → fáceis de ler por humanos
    • Parquet e DBMS: baseados em binário → difíceis de ler por humanos
  • Portabilidade

    • CSV, JSON, Parquet: alta compatibilidade entre plataformas
    • DBMS: utilizável apenas em softwares específicos
  • Suporte a estrutura hierárquica

    • CSV: sem estrutura hierárquica
    • JSON: suporta estrutura hierárquica
    • Parquet: suporta estruturas aninhadas
    • DBMS: suporta múltiplas tabelas e estruturas relacionais
  • Escalabilidade

    • CSV, JSON: baixa escalabilidade
    • Parquet, DBMS: alta escalabilidade
  • Suporte a índices

    • CSV, JSON: sem índices
    • Parquet: permite buscas mais rápidas com metadados em nível de arquivo e coluna
    • DBMS: suporta índices
  • Suporte a esquema

    • CSV: sem esquema
    • JSON: pode incluir esquema
    • Parquet, DBMS: aplicam esquema de forma obrigatória
  • Parquet não usa índices B-Tree nem hash. Em vez disso, acelera a busca de dados por meio de metadados em nível de arquivo, grupo de linhas e coluna

Como escolher o formato de Flat File certo

  • CSV, TSV → para troca e armazenamento simples de dados, como ao arquivar dados ou movê-los entre plataformas
  • JSON → use quando precisar de um formato de arquivo autodescritivo com estrutura hierárquica
  • YAML → adequado para configuração e ajustes de pipelines
  • Parquet → considere quando precisar de arquivos menores, consultas rápidas e suporte a tipos de dados complexos

Ainda não há comentários.

Ainda não há comentários.