Dúvida escolha armazenamento de dados  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
gurumen
Thread.start()
[Avatar]

Membro desde: 03/07/2009 11:56:32
Mensagens: 34
Localização: Florianópolis - SC
Offline

Olá pessoal estou com um problema na escolha da melhor forma de armazenamento de dados.

Eu tenho um script que importa dados de um arquivo .xls e envia ao banco de dados, porem antes eu preciso fazer uma consulta ao banco e trazer algumas colunas utilizadas na importação. Após gravar essas colunas em alguma estrutura eu devo pesquisar se a linha do xls atual está presente no banco de dados.

Não sei se me entenderam mas o meu caso atual é que eu tenho um arquivo xls com 8000 registros e nestes registros possui uma árvore de níveis entre os elementos dentro dele

ex: 1, 1.1, 1.1.1, 2, 2.1, 2.2.

eu preciso buscar no banco o código(PK) e o codigo atual (exemplo acima) do registro pai e entao sempre que eu for inserir um registro do xls no banco de dados eu preencho o campo codigo pai no registro atual.

Preciso de uma estrutura de busca rapida onde que ao passar o codigo 1.1 ele me retorne o pai dele que é o índice(PK) dele o indice do registro 1.

OBS: do jeito que ta demora muito pra inserir os dados, pois antes da inserção de um registro no banco eu busco a PK dele e insiro junto. Ou seja se eu tenho 8000 registros no xls ele faz 8000 consultas na tabela. Isso esta demorando muito por isso a duvida na escolha de um armazenamento de dados.


Desde já agradeço..
[Email] [MSN]
luBS
JavaBaby

Membro desde: 10/05/2006 14:00:27
Mensagens: 86
Localização: São Paulo
Offline

Se o arquivo sempre tiver mais ou menos esse tamanho (8000 registros), eu faria tudo em memoria primeiro e depois gravaria no banco, entao ao inves de buscar e gravar no banco para cada linha, eu iria usar alguma estrutura baseada em hash.

Outra coisa eh mais logica, vamos supor que vc tem 200 filhos de 1.1, pq buscar 200x o 1.1 quando vc soh precisa buscar uma vez?! E dependendo de como o xls estiver organizado, vc insere o pai e todos os filhos vaum vir logo a seguir ateh que vc mude de nivel (quando 1.1 passar a ser 1.2, vc nao precisa mais da referencia para 1.1 pois tem certeza que ja processou todos seus filhos)

http://luizroos.blogspot.com/
giulianocosta
JavaEvangelist

Membro desde: 11/08/2003 09:59:28
Mensagens: 442
Offline

Cara, dependendo de como estiver dispostos os teus dados no xls da até pra fazer SQL no xls através de um ODBC.

Se for o cara so, procure no google odbc e xls.

Giuliano Costa
Programador
[Email]
gurumen
Thread.start()
[Avatar]

Membro desde: 03/07/2009 11:56:32
Mensagens: 34
Localização: Florianópolis - SC
Offline

luBS wrote:Se o arquivo sempre tiver mais ou menos esse tamanho (8000 registros), eu faria tudo em memoria primeiro e depois gravaria no banco, entao ao inves de buscar e gravar no banco para cada linha, eu iria usar alguma estrutura baseada em hash.

Outra coisa eh mais logica, vamos supor que vc tem 200 filhos de 1.1, pq buscar 200x o 1.1 quando vc soh precisa buscar uma vez?! E dependendo de como o xls estiver organizado, vc insere o pai e todos os filhos vaum vir logo a seguir ateh que vc mude de nivel (quando 1.1 passar a ser 1.2, vc nao precisa mais da referencia para 1.1 pois tem certeza que ja processou todos seus filhos)


Está exatamente assim o xls, esta organizado em pais com seus respectivos filhos. Você diz armazenas os registros num HashTable por exemplo e depois percorrer este hash e inserir no banco apos isso?

POrque o que eu tive vendo aqui é que nem todos os dados estão consistentes, alguns faltam pais entao eu estou inserindo o pai antes do filho.

This message was edited 1 time. Last update was at 28/07/2009 09:25:06

[Email] [MSN]
luBS
JavaBaby

Membro desde: 10/05/2006 14:00:27
Mensagens: 86
Localização: São Paulo
Offline

Falta de pai vc quer dizer que dada a entrada:

1
1.1
1.2.1
2.1.2

Esta faltando os pais 1.2, 2 e 2.1?


Se sim, eu estava pensando em algo desse tipo, veja se te ajuda (o que esta em list simula algo vindo do seu xls), foda que tah recursivo, ideal que não seja... mas para 8000 objetos nao deve fazer tanta diferença:


http://luizroos.blogspot.com/
gurumen
Thread.start()
[Avatar]

Membro desde: 03/07/2009 11:56:32
Mensagens: 34
Localização: Florianópolis - SC
Offline

luBS wrote:Falta de pai vc quer dizer que dada a entrada:

1
1.1
1.2.1
2.1.2

Esta faltando os pais 1.2, 2 e 2.1?


Se sim, eu estava pensando em algo desse tipo, veja se te ajuda (o que esta em list simula algo vindo do seu xls), foda que tah recursivo, ideal que não seja... mas para 8000 objetos nao deve fazer tanta diferença:



É isso mesmo o que estou fazendo porém estou fazendo no banco de dados, mas entendi a idéia e é essa mesmo, manipular os dados na memoria e depois socar no BD.

Agradeço pelo script testei aqui e é isso mesmo amigo

Valeu.

[Resolvido]
[Email] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team