Os dados podem ser armazenados em diversos formatos e locais, dependendo do volume, tipo de dado (estruturado ou não) e da finalidade de uso.

🧱 Alguns Tipos de Armazenamento

Tipo Descrição Exemplos Vantagens principais Quando usar
Banco de Dados Relacional Estrutura tabular (linhas e colunas), ideal para dados estruturados MySQL, PostgreSQL,
SQL Server Consistência, integridade referencial,
linguagem SQL Dados transacionais,
ERPs,
CRMs
Arquivos de Texto Dados simples armazenados em arquivos locais CSV, TXT Portabilidade, simplicidade,
leveza Dados de entrada/saída simples,
logs exportados,
integração com Python
NoSQL Armazenamento flexível para dados não estruturados ou semiestruturados MongoDB (documentos), Redis (chaves) Alta escalabilidade, flexível em estrutura Aplicações web,
tempo real,
dados variados sem esquema fixo
Serviços em Nuvem Armazenamento escalável e acessível via internet AWS S3, Google Cloud Storage, Azure Custo-benefício, disponibilidade global, integração com AI/ML Projetos escaláveis,
Big Data,
armazenamento de backup

É essencial entender o propósito de cada tipo de repositório. Embora todos armazenem dados, a forma como fazem isso, o tipo de dado e os casos de uso são diferentes.

Conceito Definição Tipo de Dados Finalidade Principal Ferramentas Comuns
Data Warehouse Armazém centralizado com dados estruturados,
integrados de vários sistemas. Estruturados BI,
relatórios executivos, decisões de negócio Snowflake,
BigQuery,
Redshift,
Azure Synapse
Data Lake Repositório de dados brutos, armazenados em seu formato original, sem necessidade de estrutura prévia. Estruturados, semi e não estruturados Ciência de Dados,
IA,
Big Data,
análises exploratórias Hadoop,
Amazon S3,
Azure Data Lake,
Databricks
Lakehouse Combinação de Data Lake e Data Warehouse, unindo a flexibilidade do Lake com a estrutura do Warehouse. Estruturados, semi e não estruturados BI + Machine Learning em uma arquitetura unificada Databricks Lakehouse,
Delta Lake,
Snowflake
Data Mesh Arquitetura descentralizada com foco em domínios de negócio.
Cada time é dono dos seus próprios dados. Depende do domínio (estrutura varia) Escalabilidade organizacional, autonomia dos times Plataformas compatíveis com mesh:
Kafka,
dbt,
Airflow,
Snowflake + Governança de dados
Data Mart Subconjunto especializado de um Data Warehouse voltado para um setor ou área específica. Estruturados Relatórios setoriais e análises específicas Power BI,
Tableau com SQL Server,
Oracle

💡 Exemplo prático com todos os conceitos:

Imagine uma empresa de logística nacional com grande volume de dados operacionais:

Camada Exemplo na empresa
Data Lake Dados brutos: coordenadas de GPS dos caminhões, logs de sensores IoT, vídeos de monitoramento, PDFs de formulários.
Data Warehouse Dados estruturados: entregas por região, tempo médio de rota, desempenho de motoristas, indicadores de eficiência.
Data Mart Departamento financeiro: análise de margem de lucro por entrega, custos por quilômetro rodado, metas atingidas.
Data Mesh Cada setor (Logística, RH, Vendas) é responsável por seus próprios conjuntos de dados, com times dedicados e APIs de acesso.
Lakehouse A empresa unifica os dados do Data Lake (brutos) e do Warehouse (estruturados) para gerar relatórios em tempo real para decisões estratégicas e científicas.

Escalabilidade é a capacidade de um sistema crescer em desempenho ou volume sem perder eficiência.

Tipo Descrição Vantagens Desvantagens Exemplos Práticos
Vertical (Scale-up) Aumenta os recursos de um único servidor (RAM, CPU, SSD). Simples de implementar; sem alterações no código. Custo alto; há um limite físico de upgrade. Mudar de servidor com 16 GB para 128 GB de RAM para suportar mais transações em um PostgreSQL.
Horizontal (Scale-out) Adiciona múltiplos servidores (nós) que funcionam juntos. Escala quase indefinidamente; melhor para alta disponibilidade. Complexidade maior (ex: particionamento, replicação). MongoDB com shards, Cassandra com múltiplos nós, MySQL Cluster com replicação mestre-escravo.

🔁 Escalabilidade Horizontal e Sharding: Sharding: Técnica usada para dividir uma base de dados em várias partes menores chamadas shards. Cada shard é uma partição que pode estar em um servidor diferente.