O que é um Flat File?
(evidence.dev)- 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.