Serviços Web RESTful da Primavera - Processamento de dados de alto volume
Estou tentando criar um serviço da Web Spring / Spring Boot- RESTful,
O qual aceita um arquivo CSV com 1 milhão de linhas / 40 colunas em cada linha como entrada (de um front end baseado em Angular) e será uma chamada síncrona. O usuário deve ser notificado sobre o status do upload antes de prosseguir para outras telas. Portanto, o tempo de espera não pode ser superior a alguns minutos (digamos 5 minutos).
Cada uma dessas linhas deve ser validada com relação ao que está no DB e, se for considerada válida, o mesmo será inserido no DB. Em resumo, cada linha pode ser uma transação independente separada.
Você pode sugerir qual seria a melhor abordagem para implementar isso?
O sistema legado atual implementa a mesma funcionalidade nos procedimentos armazenados, o que tornou a solução intimamente acoplada ao banco de dados, o que será um problema se o RDBMS precisar ser alterado na linha.
Alguma abordagem sobre o processamento desses 1 milhão de dados em blocos (digamos 20k) em chamadas de serviço da Web assíncronas?
Lote de primavera?
O procedimento armazenado pode ser mais adequado e com melhor desempenho do que as duas opções acima, por acaso (supondo que não!)?
Você pode ajudar com alguma abordagem que seja pelo menos tão boa quanto o procedimento armazenado e como dimensionar horizontalmente com base na solução sugerida.