Indexar arquivo dbf com 2 milhões de registros

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Fabiano
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 25 Abr 2006 19:17

Indexar arquivo dbf com 2 milhões de registros

Mensagem por Fabiano »

Olá, gostaria de saber se alguém já passou por esta triste experiência: tentar indexar um arquivo .cdx com 4 tags de um dbf com 2 milhões de registros e trombar o famigerado "General Protect Fault".

Caso afirmativo, qual o rumo foi tomado ?

Preciso colocar esse arquivo pra funcionar de qualquer maneira...

Grato pelas eventuais ajudas.....
Fabiano
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Qual linkador vc usa ?
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Fabiano
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 25 Abr 2006 19:17

Mensagem por Fabiano »

Eu uso o Exospace 1.0...
Fabiano
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Mensagem por momente »

Caro Amigo Fabiano,

Você ja testou com o blinker 7.0? :-o
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Fabiano
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 25 Abr 2006 19:17

Mensagem por Fabiano »

Vc acha mesmo que o problema está no compilador ???? O tamanho do arquivo eu já considero grande..... não seria esse o problema ????

O problema do Blinker é a dificuldade de encontrá-lo na rede, vc por acaso o tem aí ????

Abraço !
Fabiano
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Tenho quase certeza que trocando o compilador resolva sim !
Use o Blinker 7 em modo extendido.
Não me lembro onde, mas neste fórum tem um link para baixá-lo, caso preferir, me mande um e-mail que lhe envio.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Fabiano
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 25 Abr 2006 19:17

Mensagem por Fabiano »

Gostaria de saber se existe ainda mais alguma solução para conseguir indexar o arquivo, visto que o arquivo linkeditado com o blinker não funcionou !!!

Abaixo colo o conteúdo do meu programa idxall.lnk para conferência de um eventual erro.....

BLINKER INCREMENTAL OFF
BLINKER CLIPPER PAGE OFF
BLINKER link XMS ON
BLINKER EXECUTABLE EXTENDED 2048
BLINKER HOST MESSAGE ON
BLINKER HOST DPMI ON
BLINKER HOST VCPI ON
BLINKER HOST XMS ON
BLINKER PROCEDURE DEPTH 70
BLINKER EXECUTABLE COMPRESS 1

FILE idxall

LIB BLXCLP52, BLXRATEX, DBFCDX

Grato
Fabiano
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

talvez possa esta corrompido a base de dados, apesar de estar sendo aberta normalmente.
Sem mais
Wagner Nunes
www.vagucs.com.br
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

Boa Noite.
Uma pergunta, vc esta deletando o cdx antes de indexar e "packeando" ?

Tente fazer isso tb...
1. renomeie o dbf...
2. crie um outro banco com a msm estrutura...
3. crie os indices nesse dbf vazio...
4. e execute um append from...do dbf q vc renomeou...
5. depois renomeie o dbf criado já com o indice ok para o nome correto...


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Olá,

Acredito que seja uma boa alternativa esta do Dudu, mas o append from tem q ser dado com os indices ja abertos, senão de qualquer modo o indice ficará desatualizado, e necessitará de um reindex (e com reindex o risco de corromper tbm é grande) ou então na primeira alteração de um campo chave o indice sera criado por inteiro, ja q estaria vazio...

Agora, falando sério mesmo, 2 milhões é muito registro prum pobre DBF... heheh. Talvez esteja na hora de tentar um banco de dados relacional, eu recomendaria.
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Olha, tente compilar com o xHarbour, que os indices e DBF tem menos limitações do que com o clipper.
Sem mais
Wagner Nunes
www.vagucs.com.br
Fabiano
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 25 Abr 2006 19:17

Mensagem por Fabiano »

Meu receio é exatamente esse: arquivo DBF muito grande, mas já ouvi falar de casos com DBF de até 3 milhões e sem nenhum problema de corrupção de índices.

Por isso ainda estou pensando em tentar uma solução para por esse arquivo pra rodar....

Existe um corrente de pensamento que acha que o problema está no linkeditor do programa responsável pela indexação do arquivo e outra que acha q o arquivo está grande mesmo !

O que também pude constatar é que se eu diminuir o tamnho do meu índice, ou seja, o tamanho dos campos do meu DBF, o programa tem uma "sobrevida" e consegue indexar o arquivo....

Por isso ainda peço, qualquer ajuda sempre é válida.... eu não conheço o xHarbour e gostaria saber mais detalhes sobre o mesmo !

Já tentei o Blinker, mas a diferença é que esse linkeditor cria a aplicação, mas simplesmente "trava" o processo de indexação !

Caso haja interesse posso passar o programa que eu criei para indexar o arquivo e assim compartilhar com vcs esse desafio...

Só pra refrescar a memória: meu DBF tem quase 2 milhões de registros e meu indice .CDX possui 4 tags.

Grato mais uma vez !
Fabiano
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

Mensagem por momente »

Caros amigos,

Aproveitando aí o problema do amigo Fabiano, no caso de arquivos de indices .CDX, qual a diferença entre usar tags e/ou nomes para cada indice.

Ainda fico na dúvida sobre isso!

Valeu amigos!
:-o
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar do usuário
Trazom
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 14 Ago 2003 01:01
Localização: Maceió/AL

Mensagem por Trazom »

é assim tags sao sub-indices em um mesmo .cdx no caso,

eu mesmo uso até 40 tags em dbf com 10 milhoes de registros e a solução q sempre encontro quando passo por isso é resolver tudo, no caso hd, fragmentacao , corrupcao, desde os 2 milhoes de registros aprendi a criar um dbf novo e dar um append from arqantigo next 500.000 e faco um loop pra cada meio milhao de registros, assim da tempo e hd gravar o swap file pra depois gravar definitivamente no dbf

da pra ver isso direitinho acontendo quando indexo diretamente no servidor e fico espiando aqueles arquivos tipo ADSAAASA serem criados
Imagem

Harbour 3.2 HMG 1.2a NSX
Evandro
Pelo fato de exercitar bem a própria arte,
cada um pretendia ser sapientíssimo também nas
outras coisas de maior importância,
e esse erro obscurecia o seu saber

Platão, Apologia de Sócrates
Fabiano
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 25 Abr 2006 19:17

Mensagem por Fabiano »

Bom gente, apareci aqui pra agradecer a preocupação de todos na solução deste episódio e também para deixar claro que consegui resolver a situação graças à dica do nosso moderador Dudu, ou seja: arquivo e índices zerados e com o índice aberto, um append from da tabela atual.

A única desvantagem nisso tudo é o tempo de execução da tarefa, mas a compensação é que a tabela está estável e dessa maneira, chega a suportar, com folga, até 7.500.000 de registros ( só não fiz testes com mais registros porque me faltou tempo, mas creio que não encontraria dificuldades em fazê-lo ! )

Mais uma vez, obrigado !

Até a próxima !
Fabiano
Responder