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 18:18:19 -0700 (PDT)

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


reply via email to

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