Pipeline em .NET para ordenar ficheiros de texto muito grandes armazenados em Azure Blob Storage (external sort em duas fases com merge em camadas) e para calcular o diff entre dois blobs já ordenados (linhas a inserir e a remover).
- .NET 8 SDK
- Conta de armazenamento Azure (ou Azurite para desenvolvimento)
Na raiz da solução:
dotnet run --project BulkSortPipeline.ConsoleConfiguração por appsettings.json, variáveis de ambiente ou User Secrets (recomendado para ConnectionString).
BulkSortHost:Operation |
Descrição |
|---|---|
Sort |
Lê um blob de origem, ordena com spill local (por omissão) e grava o blob ordenado final. |
Diff |
Descarrega dois blobs ordenados, compara em disco local e envia dois blobs de saída (inserts / deletes). |
Chaves obrigatórias por operação estão validadas em PipelineWorker.Validate.
| Caminho | Conteúdo |
|---|---|
BulkSortPipeline/ |
Núcleo: serviços, IBlobContainer, opções, algoritmos internos. |
BulkSortPipeline.Azure/ |
Adaptador Azure Blob para IBlobContainer. |
BulkSortPipeline.Console/ |
Host, worker em background, Program.cs e configuração. |
BulkSortPipeline.Tests/ |
Testes. |
docs/architecture.md |
Documentação técnica as-is (fluxos, config, limites). |
docs/adr/ |
Registos de decisões de arquitetura (ADR). |
- Visão completa do sistema atual: docs/architecture.md
- Índice de ADRs: docs/adr/README.md
- Instruções para agentes de IA / convenções: AGENTS.md
Não commits connection strings nem account keys em ficheiros versionados. Usa User Secrets ou variáveis de ambiente e mantém appsettings.json apenas com placeholders em repositórios partilhados.
dotnet testAlguns testes de integração podem exigir connection string configurada (ver comentários ou traits no projeto de testes).