[Cascavel-pm] Perl e Oracle
Luis Campos de Carvalho
lechamps em terra.com.br
Sexta Setembro 5 10:33:53 CDT 2003
Alceu R. de Freitas Jr. wrote:
> Olá pra todos,
>
> Essa aqui vai para quem usa a dobradinha Perl+Oracle
> (o Le Champs deve ser um deles):
Desculpe desapontá-lo, Alceu, mas aqui o pessoal não usa Oracle...
eles acham que não vale à pena, são representantes de um banco de dados
chamado D3, da www.rainingdata.com, que eles pensam ser melhor... eu
acabo usando MySQL para tudo, ou quase tudo...
Se eu pudesse escolher, usaria PostgreSQL, que é quase tão bom quanto
Oracle, mas melhor: é gratis... mas vamos voltar à vaca-fria:
> (...) para carregar dados
> numa tabela, o que apresenta performance melhor: usar
> store procedures do Oracle ou script em Perl usando o
> módulo DBI? Considerem arquivos texto com campos
> delimitados por tamanho e arquivos xml.
>
# -- perl --
use Verbose;
__END__
Precisamos fazer uma distinção.
Você está falando de carregar dados usando que tipo de fonte de dados?
(1) Se estiver pensando em gerar dados, ou carregar de um backup ou
dump de dados "estrangeiro" (possivelmente de outro banco de dados
não-oracle), a melhor forma é usar o DataLoader da própria Oracle.
Pergunte ao seu DBA.
(2) Se estiver pensando em dados de produção (um conjunto de dados
que você não pode ter todo junto em um dado momento, como um cadastro
que cada usuário preenche ao entrar no sistema), ou alguma outra forma
de geração de dados incremental, a melhor forma de inserir dados é...
Perl, é claro! =-] Por quê? Simples: ao usar Perl, o DBI gera
diretamente um query INSERT para o RDBMS, e não precisa esperar carga e
copilação de rotinas (ou acesso à memória para obter as rotinas), nem
precisa esperar as rotinas rodarem para ter os dados em tabelas.
Agora a escolha é sua: carga de dados estáticos (1) ou armazenamento
de informações obtidas durante o tempo de produção, dinâmicamente(2)?
--------------------------------------------------------------
Sob o ponto de vista da engenharia de software, existem duas
vertentes interessantes sobre este problema: a primeira (a) diz que você
deve concentrar toda a inteligência da sua aplicação no seu sistema (e
não no banco de dados). Isto obviamente fala contra Stored Procedures e
coisas correlatas. A segunda (b) diz que o sistema deve ser dividido e
que cada pedaço deve lidar apenas com informações relacionadas com ele
(e assim, tudo o que estiver ligado com a integridade dos dados mantidos
no RDBMS deveria estar implementado em Stored Procedures).
Na minha opinião, você pode pensar nisso tudo conjugado:
É bom para o seu sistema aceitar esta (a) ou aquela (b) aproximação
para resolver o problema? O que você faz hoje? Se faz (a), não pode
pensar em fazer (b) e vice-versa. Caso contrário, você criará um
"pesadelo de manutenção" (Maintenance Nightmare - TM ) sem sombra de dúvida.
Responder à estas perguntas podem ajudar você a escolher entre carga
de dados estáticos ou armazenamento de informações obtidas durante o
tempo de produção, dinâmicamente, que eu citei mais para cima...
Espero que, além de verborrágico, eu tenha sido útil... =-]
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Campos de Carvalho is Computer Scientist,
PerlMonk [SiteDocClan], Cascavel-pm Moderator,
Unix Sys Admin && Certified Oracle DBA
http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mais detalhes sobre a lista de discussão Cascavel-pm