Boa tarde galera!
Preciso desenvolver um sistema com várias Threads onde cada Thread vai carregar um arquivo CSV e trabalhar os dados, como ordenar, modificar a posição de colunas, etc. Cada arquivo terá cerca de 2 milhões de linhas e umas 10 colunas.
O grande problema aqui, é que não poderei carregar essas linhas em Collections, pois facilmente iria estourar a heap. Além do mais, preciso de bastante performance nessa manipulação.
Então gostaria de ouvir algumas opiniões sobre como fazer isto. Algumas possibilidades que ouvi e que podem dar certo, porém não sei realmente qual é a melhor e se realmente dão certo:
- Criar tabelas temporárias e adicionar as linhas do arquivo. Assim ficaria fácil pra trabalhar os dados.
- Utilizar Java NIO. Não sei como, mas dizem que é possível manipular as linhas do arquivo somente carregando-o em buffer.
- Criar um código em C++ que faça isso e chamar via JNI.
Eu realmente não sei como fazer isto e gostaria de ouvir opiniões à respeito.
Obs.: Não tenho problemas com relação à Threads, concorrêcia, nada, é mais a questão do arquivo mesmo.
Valeu!