shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Desempenho e confiabilidade em bd..


From: moysespr
Subject: Re: [shell-script] Desempenho e confiabilidade em bd..
Date: Mon, 20 Oct 2003 20:32:41 -0700 (PDT)

Oi, desculpem todos, mais uma postagem.

Fernando, tive um click repentino, e não pude deixar de tentar
melhorar o seu dia.

Se você precisa apenas fazer um lançamento (novo ou alteração, sem
diferenciar) poderia experimentar as linhas abaixo onde, se existir o
registro, será excluido, e o lançamento será inserido no fim do
arquivo.

grep -v $chave2 file.db>file.dbt
echo "linha a ser lançada aqui">>file.dbt
daí os mv de segurança que estão na anterior (abaixo).

Hihh, lá faltou um "p" depois dos ...999

Imagino desta última forma ser bem mais rápido o proceso. Nada
testado. Considere o dito anteriormente. Será que só é possível
processar um registro por vez??? :(

Agora o melhor:
Fim!


--- moysespr <address@hidden> wrote:
> Oi, eu não sei quase nada, mas vou tentar te passar o que penso.
> Espero que ajude de alguma forma.
> 
> Primeiro, acho que você deve orientar o seu script para linhas
> (registros) como ocorre trivialmente em dbs. Como você não tem um
> índice, e aqui nem justificaria, você usaria o sed para te dar a
> linha, assim:
> 
> reg=`grep -n $chave2 file.db|cut -d: -f1`
> não use o cat, pois um programa adicional (dispensável aqui) só
> deve
> fazer o tempo de resposta subir
> 
> Imagino que haja apenas duas possibilidades reg vazio (não existe)
> e
> reg algum_numero (número da linha onde reside a chave2, suponho-a
> única).
> 
> Com essa info você toma sua decisão. Se você não ordena as suas
> linhas é so 'appendar" uma nova linha para a inclusão.
> 
> Para a alteração você faz algo assim:
> 
> sed --silent 1,$(($reg-1))p file.db>file.dbt
> 
> echo "a linha alterada aqui">>file.dbt
> 
> sed --silent $(($reg+1)),999999 file.db>>file.dbt
> 
> mv file.db file.db`date +%s`; mv -i file.dbt file.db
> 
> 
> Na alteração, o ideal seria não escrever outro arquivo (ou o mesmo
> integralmente). O ótimo seria apenas fazer a alteração desejada no
> ponto, ou pelo menos na linha correspondente. Certa vez até postei
> uma dúvida sobre isso, mas não houve respostas. Talvez não haja
> algo
> assim para "unix", o que seria realmente uma pena. Mas como citei
> no
> início tome minhas palavras com ressalvas.
> 
> Me esforcei nas linhas de comando para não errar, mas esteja de
> mente
> aberta. Acho que deve funcionar. Não experimentei.
> 
> Se der certo, estou curioso sobre a performance. Dê notícias.
> 
> 
> 
> --- Fernando Lemes da Silva <address@hidden> wrote:
> > 
> >    Cara, acabei apelando pro mysql mas não tá muito eficiente..
> são
> > mais ou
> > menos 11.000 registros e o arquivo mysql tem pouco mais de 1
> > mega... o que
> > eu tentei inicialmente foi :
> > 
> >    Inserir : echo $chave1$chave2 >> file.db
> >    Buscar : cat file.db | grep $chave2
> >    Atualizar : cat file.db | sed
> "s/.\{32\}$chave2/$chave1$chave2/"
> > >
> > file.db
> > 
> >    $chave1 é de tamanho fixo com 32 caracteres (chave md5sum)
> >    $chave2 é um nome de arquivo
> > 
> >    Para uma quantidade pequena de arquivos parecia funcionar, mas
> > quando
> > rodei para os 11 mil registros ele começou a perder as chaves e
> eu
> > não
> > entendi bem o porque...
> > 
> >    Se alguem puder me dar uma luz de como fazer isso eu posso
> > tentar para
> > melhorar o desempenho...
> > 
> >    E se eu carregasse o arquivo na memoria ? dá pra fazer um
> vetor,
> > um hash
> > ou qualquer coisa assim no shell ?
> > 
> >    []'s
> >    Fernando Lemes
> > 
> >    P.S. Enderson, assim que eu conseguir fazer isso funcionar de
> > forma
> > satisfatoria eu te mando, ok ?
> > 
> > 
> > 
> > ----- Original Message ----- 
> > From: "Aurelio Marinho Jargas" <address@hidden>
> > To: <address@hidden>
> > Sent: Saturday, October 18, 2003 9:03 AM
> > Subject: Re: [shell-script] Desempenho e confiabilidade em bd..
> > 
> > 
> > > como você mesmo disse "coisa simples".
> > > não há necessidade de amarrar teu script a um banco de dados
> > > completo só pra ter a relação entre 2 colunas.
> > > quanto a eficiência, o banco de dados com arquivo texto só
> > > ficará lento se teu arquivo ficar muito, mas MUITO grande
> > > com vários MEGAS de tamanho. mas como isso é meio raro,
> > > usa texto sim!
> > > basta fazer tipo o /etc/passwd, separando as colunas por :
> > > ou até mesmo por TABs pra depois usar grep|cut pra extrair
> > > os dados.
> > > guarde o canhão para moscas maiores, pois as ferramentas do
> > > UNIX te dão a maior força para não precisar dele :)
> > > falou.
> > > Aurelio Marinho Jargas - Floripa
> > 
> > 
> 
> 
> __________________________________
> Do you Yahoo!?
> The New Yahoo! Shopping - with improved product search
> http://shopping.yahoo.com
> 
> 
>
---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de
> programação, como perl, C etc. Quem insistir em não seguir esta
> regra será moderado sem prévio aviso.
>
---------------------------------------------------------------------
> Sair da lista: address@hidden
>
---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listasdiscussao.cjb.net
>
---------------------------------------------------------------------
>  
> 
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> http://br.yahoo.com/info/utos.html 
> 
> 


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com


reply via email to

[Prev in Thread] Current Thread [Next in Thread]