| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/07/2003 16:03:16
|
om
JavaGuru
![[Avatar]](/images/avatar/dfd7468ac613286cdbb40872c8ef3b06.jpg)
Membro desde: 30/06/2003 16:45:06
Mensagens: 217
Localização: São Paulo/SP
Offline
|
Estou desenvolvendo uma aplicação que vai rodar 1X por dia, tendo que conectar em um BD(ms sql), selecionar +/- 40.000 registros de uma tabela de cadastro de pessoas, ir navegando por estes registros, e de acordo com alguns critérios, ir alimentando um banco de dados em outro servidor(tb ms sql).
A restrição que tenho é que precisa ser uma aplicação console, sem qualquer gui ou interação humana, e nao pode ser web-based, j2ee ou coisa do gênero. Vai ser colocada em crontab.
Preciso que este programa nao consuma todos os recursos da máquina onde irá rodar(ou ao menos, não por muito tempo), pois esta serve outras aplicações.
Alguém tem sugestões/dicas/comentários de abordagem para esta solução? As coisas que devo evitar e as que devo buscar ao desenvolver.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/07/2003 16:51:59
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Pela idéia que vc deu da aplicação, uma stored procedure até que poderia resolver isso bem... mas se as suas regras de negócio tem que ser em Java, então vc basicamente so tem um caminho a seguir:
O que evitar:
- Fazer mais de uma conexao ao BD - se tudo o que vc vai fazer é mover uma cacetada de registros de um banco pro outro, duas Connections sao tudo o que vc precisa
O que pode ajudar:
- Threads - se vc fizer uma Thread gerando informacoes (lendo de um dos BDs) e outra consumindo (INSERTando no outro), da pra distribuir melhor a carga se vc tiver mais de um processador na máquina.
O que seria legal pacas:
- Deixar de fazer as coisas em batch (que tá definitivamente ficando muito "anos 90") e fazer a coisa online, conforme as tabelas vao mudando. Não sei do MSSQL, mas pelo menos no Oracle dá pra fazer um belo dum DBLINK aqui (falei merda? )...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/07/2003 17:06:30
|
caiofilipini
GUJ Master
![[Avatar]](/images/avatar/c8e721e64167e81904d2c.jpg)
Membro desde: 26/06/2003 15:17:59
Mensagens: 1255
Localização: São Paulo
Offline
|
cv wrote:O que evitar:
- Fazer mais de uma conexao ao BD - se tudo o que vc vai fazer é mover uma cacetada de registros de um banco pro outro, duas Connections sao tudo o que vc precisa
cv, evitar mais de uma conexão ao BD, sendo que duas Connections sao tudo o que ele precisa? Confuso isso...
|
Caio N. Filipini
"There is no spoon." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/07/2003 17:31:12
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
não ta confuso não,
evitar mais de uma conexão ao mesmo banco de dados
e são duas Connections pois é uma para cada banco
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/07/2003 21:23:37
|
wbsouza
JavaEvangelist
![[Avatar]](/images/avatar/9f61408e3afb633e50cdf1b20de6f466.jpg)
Membro desde: 11/09/2002 11:19:13
Mensagens: 412
Localização: São Paulo / SP
Offline
|
Como já trabalhei muito com MSSQL (já faz uns 2 anos ...), vou tentar ajudar em alguma coisa.
Como o cv disse, uma stored procedure pode resolver bem o seu problema. No MSSQL tem como um banco "enxergar" outro em outra máquina sim. O que precisa ser feito é um "linked server", e programação em Transact-SQL, que apesar de ser meio limitada em recursos, mas é uma mão na roda; pois evita trazer os dados do DBMS para o client (programa) e enviar para o outro banco (server); ou seja, é server to server. Se precisar colocar o agendamento no crontab (dependencia da execução de outros processos em shell-script/programas) tudo bem, mas se for somente para agendar esta "transferência de dados" o próprio MSSQL já tem um mecanismo de agendamento equivalente ao crontab do UNIX (se vc usa M$ é melhor deixar tudo M$ ).
[]s, Welington B. Souza
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/07/2003 08:24:46
|
caiofilipini
GUJ Master
![[Avatar]](/images/avatar/c8e721e64167e81904d2c.jpg)
Membro desde: 26/06/2003 15:17:59
Mensagens: 1255
Localização: São Paulo
Offline
|
Desculpem a confusão!
Seriam então 2 objetos Connection utilizando a mesma conexão ao BD?
Valeu!
[]'s
|
Caio N. Filipini
"There is no spoon." |
|
|
 |
|
|