Como processar uma grande quantidade de informação?

10 respostas
S

Olá, bom dia,
gostaria de saber que estratégia seria melhor para processar uma grande quantidade de informação,
talvez fazer um método só que faz o processamento ou quem sabe threads

desde já obrigado pela atenção de todos…

10 Respostas

N

slompo:
Olá, bom dia,
gostaria de saber que estratégia seria melhor para processar uma grande quantidade de informação,
talvez fazer um método só que faz o processamento ou quem sabe threads

desde já obrigado pela atenção de todos…

Calma. Dificilmente se aplica a mesma solução a casos distintos, o ideal é que nos informe sua real necessidade, fica mais fácil de opinar. Podemos dizer que podes implementar um cluster, por exemplo. Mas já ouviu dizer que pode estar usando um “canhão” para sair uma bala de um “38” ? Ou até mesmo, uma implementação deficiente, que não é a correta para sua necessidade.

Exponha o ambiente que tens em mãos, banco de dados ? Arquivos ? Tráfego de rede ?

R

slompo:
Olá, bom dia,
gostaria de saber que estratégia seria melhor para processar uma grande quantidade de informação,
talvez fazer um método só que faz o processamento ou quem sabe threads

desde já obrigado pela atenção de todos…

Antes de mais nada, é preciso saber o que exatamente você quer processar e qual é esse tipo de processamento, até mesmo para identificar o gargalo desse processsamento.

S

Bom, imaginem que tenho uma árvore de objetos com informações que precisam ser processadas, fazendo alguns cálculos, sendo que pode haver dependência entre os objetos da árvore para que ocorra o processamento, independente do nível, desde que o dependente esteja abaixo.

Eu pensei em duas formas de processar, um único método ou threads, mas tô bem na dúvida…

N

slompo:
Bom, imaginem que tenho uma árvore de objetos com informações que precisam ser processadas, fazendo alguns cálculos, sendo que pode haver dependência entre os objetos da árvore para que ocorra o processamento, independente do nível, desde que o dependente esteja abaixo.

Eu pensei em duas formas de processar, um único método ou threads, mas tô bem na dúvida…

Pra mim isso não ajudou em nada. Ou tu não está querendo compartilhar alguma informação ou não entendi mesmo.
Não sei se tem conexão JDBC, não sei se tem leitura de arquivo, não sei se tem tráfego de rede, não sei uma estimativa da quantidade de objetos…enfim, fiquei de mão atadas.

J

eu também não consegui identificar tua necessidade, isso tem ligação com banco? É acessado via rede? Ta muito vago :frowning:

R

slompo:
Bom, imaginem que tenho uma árvore de objetos com informações que precisam ser processadas, fazendo alguns cálculos, sendo que pode haver dependência entre os objetos da árvore para que ocorra o processamento, independente do nível, desde que o dependente esteja abaixo.

Eu pensei em duas formas de processar, um único método ou threads, mas tô bem na dúvida…

Nesse caso, você pode paralelizar o processamento desde que você possa aplicar uma abordagem dividir-para-conquistar ao seu algoritmo. Por exemplo, se os seus dados estão representados em uma árvore binária, você pode processar o lado direito em uma thread e o lado direito em outra thread, daí você espera o resultado e retorna o resultado para o pai. Você pode aplicar essa abordagem recursivamente e você tem um grau de paralelismo alto. Mas daí surgem diversas questões:

:arrow: se houver concorrência por recursos por parte dos nós, o risco de deadlock é alto
:arrow: se o processamento de um nó específico precisar de um recurso como I/O por exemplo, o seu ganho vai para o espaço, pois as thread ficarão travadas esperando por esse recurso
:arrow: de quantos processadores você dispõe ? pois se a granularidade dos objetos for fina e você tem poucos processadores, a paralelização pode ser um tiro no pé, pois você vai gastar mais tempo com trocas de contexto do que com processamento propriamente dito

essas são apenas algumas das muitas questões que podem surgir …

S

rmendes08:

Nesse caso, você pode paralelizar o processamento desde que você possa aplicar uma abordagem dividir-para-conquistar ao seu algoritmo. Por exemplo, se os seus dados estão representados em uma árvore binária, você pode processar o lado direito em uma thread e o lado direito em outra thread, daí você espera o resultado e retorna o resultado para o pai. Você pode aplicar essa abordagem recursivamente e você tem um grau de paralelismo alto. Mas daí surgem diversas questões:

:arrow: se houver concorrência por recursos por parte dos nós, o risco de deadlock é alto
:arrow: se o processamento de um nó específico precisar de um recurso como I/O por exemplo, o seu ganho vai para o espaço, pois as thread ficarão travadas esperando por esse recurso
:arrow: de quantos processadores você dispõe ? pois se a granularidade dos objetos for fina e você tem poucos processadores, a paralelização pode ser um tiro no pé, pois você vai gastar mais tempo com trocas de contexto do que com processamento propriamente dito

essas são apenas algumas das muitas questões que podem surgir …

Ei cara, gostei da ideia com relação a paralelizar o processamento, acho que vai ser a saída.

Desculpe pela falta de informação, é que não posso dar mais detalhes mesmo…

Desde já muito obrigado a todos por sua atenção…

Té +

D

[ironic mode: on]
Chame um advogado. Ele encontrará meios mais simples de processar tudo, inclusive você.
[ironic mode: off]
Como o nel falou, com pouca informação é praticamente impossível.
Já pensou o teu cliente pedindo um sistema que faça uma contagem e que gere uma saida de 100 posições? Para que? Como? De onde virão os dados?

N

drsmachado:
[ironic mode: on]
Chame um advogado. Ele encontrará meios mais simples de processar tudo, inclusive você.
[ironic mode: off]
Como o nel falou, com pouca informação é praticamente impossível.
Já pensou o teu cliente pedindo um sistema que faça uma contagem e que gere uma saida de 100 posições? Para que? Como? De onde virão os dados?

Pois é, não faço nem ideia se há leitura de arquivos ou não, por exemplo. Ou se é uma simples consulta em banco. O que ele não entendeu é que ninguém pediu como será o sistema dele, mas sim sua necessidade, o que exatamente estamos lindando. Mas enfim, se já responderam a dúvida dele, ótimo.

S

Bom peço desculpas acho que me expressei mal, nesse ponto que estou citando quis dizer que os objetos contidos na árvore já estão todos montado, acrescentado (vem de uma base de dados sql).

Criado 14 de maio de 2012
Ultima resposta 14 de mai. de 2012
Respostas 10
Participantes 5