Dúvida Pack Harbour x Pack Clipper

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida Pack Harbour x Pack Clipper

Mensagem por JoséQuintas »

Estou enxugando meus fontes.
Uma coisa que ainda tenho é uma rotina alternativa ao PACK, porque no Clipper isso causava problemas, até duplicava registros.
É seguro no Harbour usar o PACK?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida Pack Harbour x Pack Clipper

Mensagem por Itamar M. Lins Jr. »

Eu uso aqui com muita frequência em pequenos arquivos. Mas eu uso apenas 32 bits.
Outra coisa, acredito que a melhor forma é renomear o dbf e copiar para outro com !deleted() ligado.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Dúvida Pack Harbour x Pack Clipper

Mensagem por fladimir »

Acredito q dê problema sim, pq tem os sintomas q o Quintas comentou eventualmente percebemos, por isso abri um Tópico em Bate Papo intitulado, "Deletar ou Não Deletar eis a Questão", pq atualmente deleto, e 1 x ao mês indexo e na indexação são apagados os CDX e é feito um PACK, mas devido N problemas relatados de origem q não conseguimos precisar, estamos pensando em deletar somente casos extremos, tipo começou um cadastro e não terminou deleta o registro, ou até mesmo só faz um append qdo finalizar, fazer isto para Clientes, Produtos, Grupos etc, se deletar um desses itens não vamos nem mais jogar pra tabelas de itens excluídos, pq hj tempos por exemplo produtos e prodexc (produtos excluídos) q funciona tipo uma lixeira, remove da tabela produtos e joga nesta.

Estamos querendo criar uma FLAG Deletado ou algo do tipo e se deletar marcar esta flag e filtrar sem considerar estes itens, isso pra movimentação (vendas, entradas, etc) e tabelas (produtos, clientes, fornecedores etc).

ai não usaremos Pack praticamente e tb não iremos deletar registros constantemente e em partes importantes. Alguma opinião sobre o Pack e o contexto acima?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida Pack Harbour x Pack Clipper

Mensagem por Itamar M. Lins Jr. »

Ola!
Em programação, ao afirmar isso:
porque no Clipper isso causava problemas, até duplicava registros.
é preciso demonstrar.
Como podemos corrigir, esse problema ? para quê inventar o PACK então ? Isto é, com o Harbour que estou me referindo, no clipper isso não pode ser mais corrigido, se existir. Pode ser um erro causado pelo trafego da rede, na maioria dos casos o problema com DBF é isso, corromper índices, mas usando Linux, eu nunca tive esse problema nem usando o Letodb no windows. Com mapeamento isso ocorria o tempo todo.
O problema existe. Mas e preciso saber porquê ele ocorre e na minha opinião não tem nada a ver com o comando PACK.
Tem uma rotina do Rick Spences, que faz uma cópia do DBF usando !deleted(), não usa PACK para mim é a maneira mais segura. Até porque na rede mapeada essa cópia pode falhar sem perder a matriz dos dados. E isso ocorrendo com PACK detona o DBF e índices, perdendo a matriz dos dados.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Dúvida Pack Harbour x Pack Clipper

Mensagem por ANDRIL »

Para tentar evitar algum problema com o pack, executo o comando apenas no servidor na maquina principal (local). Executo geralmente um PACK de 3 em 3 dias.
Itamar M. Lins Jr. escreveu:Tem uma rotina do Rick Spences, que faz uma cópia do DBF usando !deleted(), não usa PACK para mim é a maneira mais seguraAté porque na rede mapeada essa cópia pode falhar sem perder a matriz dos dados. E isso ocorrendo com PACK detona o DBF e índices, perdendo a matriz dos dados
Creio que o problema pode estar como o sistema trabalha. Nesta rotina acima, pode ser até mais seguro, mais requer mais atenção e tarefas, ao criar um novo arquivo deve-se atentar-se em recriar seus índices que requer modo exclusivo, o que torna inviável em um ambiente de rede.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida Pack Harbour x Pack Clipper

Mensagem por Itamar M. Lins Jr. »

Ola!
que requer modo exclusivo, o que torna inviável em um ambiente de rede.
Ué! com o PACK também. É a mesma coisa. Basta apenas indexar depois.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Dúvida Pack Harbour x Pack Clipper

Mensagem por fladimir »

o sistema roda via TS, ou seja, localmente no servidor, removi o Pack na indexação, ou seja, apaga os CDX mas não executa o PACK, fiz isto ontem vamos ver como vai se comportar, fora isto não vou mexer mais pq não vejo no q mexer, vou fazer como alguns colegas ir migrando as tabelas pra MySQL/MariaDB nativo mesmo no console (já uso em Xailer em projetos menores), até chegar num ponto q esteja tudo migrado.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida Pack Harbour x Pack Clipper

Mensagem por Itamar M. Lins Jr. »

Ola!
apaga os CDX mas não executa
Porque tem esses erros nos índices ?
Eu não reindexo nada desde muitos anos, quando comecei a usar o Letodb não tive mais esses problemas. Só quando falta energia ou novos índices são criados, uso CDX.
Quando migrar para o MariaDb, com certeza vai achar algumas incoerências.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Dúvida Pack Harbour x Pack Clipper

Mensagem por ANDRIL »

Itamar M. Lins Jr. escreveu:Ué! com o PACK também. É a mesma coisa. Basta apenas indexar depois.
Sim tanto o PACK como a criação dos ÍNDICES requer modo exclusivo. O alerta foi para que além de copiar para um novo DBF haveria necessidade de recriar os índices em seguida ou não e mais criar mais volume de arquivos no HD (imagina esta operação em um arquivo enorme, mesmo que hoje haja HDs com espaço de sobra, há questão de aumento no tempo de backup por exemplo).
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Dúvida Pack Harbour x Pack Clipper

Mensagem por marcosgambeta »

Da época do CA-Clipper, dois artigos de Greg Holmes relacionados com o comando PACK:

http://www.ghservices.com/gregh/clipper/trix0006.htm

http://www.ghservices.com/gregh/clipper/trix0007.htm
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida Pack Harbour x Pack Clipper

Mensagem por Itamar M. Lins Jr. »

Ola!
(imagina esta operação em um arquivo enorme, mesmo que hoje haja HDs com espaço de sobra, há questão de aumento no tempo de backup por exemplo).
Não por isso. Vc pode apagar ou não a cópia.
O problema do PACK, é faltar energia ou detonar a base matriz. Usando o o método do Rick Spencer(fazer uma cópia) isso é minimizado porque vc está trabalhando "rotina de gravação" em outro arquivo. Depois vc pode, se desejar apagar ou não a cópia com os registros deletados ou mover para outra pasta que não sofra a ação do backup. É mais lento, mas fica bem minimizado o problema. É simples de entender, vc estará trabalhando sempre com o BACKUP, nunca com as matrizes de dados.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida Pack Harbour x Pack Clipper

Mensagem por JoséQuintas »

A última vez que tive problema desses foi por volta de 1990, época em que o 386 DX com 4MB de memória era novidade.
Quando comentava sobre isso por aqui o pessoal até estranhava, porque parece que ninguém nunca tinha visto esse problema.
Depois de tantos anos, isso volta a ser assunto.... rs

Existe a possibilidade de reaproveitar registros deletados.
Dá pra criar um índice pra isso, sem flag adicional.

Código: Selecionar todos

SET DELETED OFF
INDEX ON .... TAG DELETED ... FOR Deleted()
E pra aproveitar registros deletados, algo parecido com isto:

Código: Selecionar todos

SET DELETED OFF
OrdSetFocus( "DELETED" )
GOTO TOP
IF RecLock()
   SKIP 0 // Segurança, atualizar informação depois do bloqueio
   IF Deleted() // segurança, se ninguém ainda reaproveitou
Não uso isso, mas se fosse usar, seria parecido com isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder