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

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

Re: Problemas com dados.


From: César A . K . Grossmann
Subject: Re: Problemas com dados.
Date: Thu, 26 Feb 2004 18:30:25 -0000
User-agent: eGroups-EW/0.82

--- Em address@hidden, Fernando Lemes da Silva
<ferlemes@y...> escreveu
> 
> 
> Galera, estou com um problema em um script. Antigamente eu fazia a 
> leitura do arquivo procurando um registro com cat e grep, mas é 
> ineficiente porque ele le o arquivo inteiro. Agora tentei trabalhar com 
> este arquivo na memoria, mas ele se mostrou extremamente lento quando o 
> numero de linhas começa a crescer.
> 
>     dados=""
>     for arquivo in $listaenorme; do
>       info_do_arquivo=`blablabla...`
>       dados=$dados`echo -e "$arquivo\t$info_do_arquivo\n"`
>     done

Quando você tem um banco de dados de um tamanho razoável, o normal é
você criar um índice para facilitar a pesquisa. Por exemplo, vamos
supor que o teu banco de dados consista em um arquivo texto com várias
linhas (cada linha um campo) para cada registro (uma linha em branco
separa cada registro). Primeiro você define como serão feitas as
pesquisas no banco de dados. Supondo que exista um campo nome, e que
as pesquisas são feitas em cima deste campo, você pode escrever um
script que crie um arquivo de índice com dois campos, o primeiro sendo
o campo nome, e o segundo sendo o número da linha no arquivo texto em
que se encontra aquele registro. O passo seguinte é escrever um script
que leia um nome do teclado ou entrada padrão, examine o arquivo de
índice (que deve ser bem menor que o arquivo de dados) para descobrir
onde começa o registro em questão, e então, de posse do número da
linha, faça a extração dos dados do banco de dados.

De qualquer forma, a pesquisa no índice também é lenta, o que nos leva
a outras técnicas, como, por exemplo, colocar o índice em ordem
alfabética e implementar uma pesquisa binária. Ou colocar o índice em
memória.

>     Será que um array seria recomendado ? Aguentaria 20 mil posições ? 
> 50 mil ? Ou devo fazer isto em outra linguagem ?

Com tantos registros, acho que seria apropriado você escrever um
programa em alguma linguagem de banco de dados, ou escrever em C,
usando o SleepyCat, por exemplo.

Ou então você pode criar scripts para fazer a consulta em um banco de
dados, como o PostgreSQL (ele tem uma ferramenta de consulta de linha
de comando). Acho que deve ser muito mais eficiente que fazer "à mão"
tudo isto...

[]s
-- 
César A. K. Grossmann
http://www.LinuxByGrossmann.cjb.net/


reply via email to

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