Página 1 de 1

Dúvida Pack Harbour x Pack Clipper

Enviado: 03 Mai 2013 14:39
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?

Dúvida Pack Harbour x Pack Clipper

Enviado: 03 Mai 2013 15:17
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.

Dúvida Pack Harbour x Pack Clipper

Enviado: 25 Abr 2017 00:44
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?

Dúvida Pack Harbour x Pack Clipper

Enviado: 25 Abr 2017 09:08
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.

Dúvida Pack Harbour x Pack Clipper

Enviado: 25 Abr 2017 10:04
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.

Dúvida Pack Harbour x Pack Clipper

Enviado: 25 Abr 2017 10:11
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.

Dúvida Pack Harbour x Pack Clipper

Enviado: 25 Abr 2017 10:18
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.

Dúvida Pack Harbour x Pack Clipper

Enviado: 25 Abr 2017 10:34
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.

Dúvida Pack Harbour x Pack Clipper

Enviado: 26 Abr 2017 07:44
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).

Dúvida Pack Harbour x Pack Clipper

Enviado: 26 Abr 2017 09:01
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

Dúvida Pack Harbour x Pack Clipper

Enviado: 26 Abr 2017 10:12
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.

Dúvida Pack Harbour x Pack Clipper

Enviado: 26 Abr 2017 11:57
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.