OVERLAYS?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

OVERLAYS?

Mensagem por Eolo »

Pablo,

Não sou especialista em computação, mas soa estranho ouvir que "OVERLAY está ultrapassado...". Alguém me corrija se eu estiver errado, mas o SWAP FILE do windows não é um "overlay" (entre aspas)? Ainda, porque o Blinker 7 por exemplo fala em overlays dinâmicos?...

Bem, a seguir, um exemplo simples de como compilo e linko meus programas, com overlays "forçados" (Clipper52, NTX, Blinker51).

Eolo

Código: Selecionar todos

* arquivo cli.bat
for %%p in (@util1.clp ub uh ui uk us ut) do clipper5\bin\clipper %%p
for %%p in (cn cp mc mr ms mv mx) do \clipper5\bin\clipper %%p
for %%p in (r01 r02 r03 r05 r06 r10) do \clipper5\bin\clipper %%p
\clipper5\bin\clipper errorsys /m /n /w
\blinker\bin\blinker @util1.lnk Lib OSLib,CPMI,NANFOR,LFN,LL,ps52

Código: Selecionar todos

* arquivo util1.clp
* o módulo principal util1 e as funções gerais
util1.prg
x_are.prg
x_arq.prg
x_arr.prg
x_aux.prg
x_edi.prg
x_pfs.prg
x_val.prg
x_rap.prg
x_rel.prg
h_aclie.prg
h_acliei.prg
h_bprod.prg

Código: Selecionar todos

* arquivo util1.lnk
blinker incremental off
file util1
beginarea
  file cn // overlay 1
  file cp // overlay 2
  file mc // etc.
  file mr
  file ms
  file mv
  file mx
  file r01
  file r02
  file r03
  file r05
  file r06
  file r10
  file ub
  file uh
  file ui
  file uk
  file us
  file ut
endarea
blinker exe ext // modo protegido
search \blinker\lib\blxclp52
blinker exe compress 1 // comprimir o exe
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

obrigado colega. Quando eu disse ultrapassado, não quis dar a entender que fazer overlays éultrapassado. Acho que quando não há como rodar com sob memória convencional acho que não resta muita opção que suplementar com o aceeso a disco. Com essa minha expressão talvez sub-estimei o recurso pensando que por quê haveria de recorrer a isso hoje em dia com tanta memória a disposição e que não é aproveitada da melhor forma. Mas isso, também é um pouco de desinformação da minha parte por não utilizar o BLINKER e seus recursos de gerenciamento de memória.

EOLO, o exemplo seu, serviria da mesma forma com RTLINK ?. Eu acho que já com RTLINK, deve ser outros arquivo a serem considerados, não ?.

Vou intentar fazer algo amanhã com isto, agradeço colega a sua atenção. E serve seu post como referência para os demais colegas.

Um clip-abraço :)Pos
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Pablo,

a) vc disse "...hoje em dia com tanta memória a disposição e que não é aproveitada da melhor forma...". Bem, talvez algum colega possa esclarecer isso melhor, mas pelo que eu vi até agora quem manda na coisa são os 640k, tudo fica pendurado neles. Você pode ter 2Gb de RAM, mas se esgotar os 640k, ferrou... Com a palavra, os especialistas!

b) quanto ao Rtlink, a resposta é sim. A diferença é o Blinker linka em modo protegido e o Rtlink não (acho que só em modo real). Tente migrar para o Blinker, que é mais atual.

Eolo
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Primeiramente quero me desculpar pela extensão da resposta, mas não dá pra ser sucinto demais nesse tipo de assunto.
Eolo escreveu:a) vc disse "...hoje em dia com tanta memória a disposição e que não é aproveitada da melhor forma...". Bem, talvez algum colega possa esclarecer isso melhor, mas pelo que eu vi até agora quem manda na coisa são os 640k, tudo fica pendurado neles. Você pode ter 2Gb de RAM, mas se esgotar os 640k, ferrou...
Não necessariamente. Isso só acontece se você utilizar o modo real. No modo protegido, todo o código é executado na memória extendida, acima do primeiro MegaByte. Então, o limite de uso de memória do sistema passa a ser muito maior. Os 640KB são solenemente desprezados, e nem fazem falta, haja vista que hoje em dia não fazem muita diferença. Talvez você se pergunte porque desprezar 640KB de memória. A resposta está no gerenciador de memória. No modo protegido toda a RAM é protegida (óbvio). Isso significa que qualquer acesso à memória deve, primeiro, passar pelo processo de requisição de um seletor de memória. E quem autoriza ou não é o sistema operacional. Para obter o controle da memória, ela precisa ser mapeada dentro do gerenciador do SO. E esse mapeamento exclui o primeiro megabyte. Assim, só a memória extendida poderá ser utilizada. Aliás, esse controle de requisição de seletor é o que explica o porquê de algumas bibliotecas dispararem GPFs quando o programa executa. Elas tentam acessar a memória diretamente, sem pedir "licença" pro SO. Aí é GPF sem dó nem piedade. Isso acontece principalmente naquelas bibliotecas que têm funções com acesso direto à RAM de vídeo.

Esse assunto de memória é muito extenso, mas pra quem programa em Clipper sob Windows NT (estou excluindo os Win9x de propósito), ele começa justamente na máquina virtual NT, como é a tradução de NTVM. O Windows, quando monta uma máquina virtual com orientação a texto, vulgarmente conhecido como DOS emulado (termo errado - veja o meu PS abaixo), ele reserva parte da memória física para essa máquina. Na configuração do atalho você pode observar que existe um listBox pra selecionar o montante de memória que será dedicada à essa máquina DOS. Se você selecionar, por exemplo, 4MB, a máquina terá disponíveis apenas esses 4MB de memória física. Nenhum outro programa Windows terá acesso à essa área reservada. Mas é sempre bom lembrar que uma máquina virtual é um programa Windows como outro qualquer e está sujeito ao swap pelo gerenciador de memória do Windows, no caso dele precisar de mais memória física. A estratégia de apropriação de memória do Windows passa por muita coisa. O Task Manager do XP mostra bem qual o estado dos totais de memória física e virtual, embora ele não mostre a memória consumida pela aplicação individualmente. Mas se, na eventualidade de acontecer da memória da máquina virtual se mostrar insuficiente, o BLinker (não o Windows) entra em ação. Por meio de uma tabela interna ele descobre quais páginas de memória tem mais teia de aranha, ou seja, as mais antigas. Ele as envia pro disco e libera essa memória física para o procedimento que a requisitou. Se alguma página residente em disco for necessária novamente, esse procedimento é repetido, havendo portanto, uma troca (ou swap). Estou falando apenas do modo protegido.

No modo real, a memória convencional também é utilizada e, se tiver sido definida uma área de overlay, o programa, se muito extenso, pode trabalhar de maneira mais folgada. Essas seções de overlay podem, inclusive, ser jogadas para a memória extendida; aquela acima de 1MB, e a troca pode ser feita em RAM mesmo, o que incrementa a performance do programa, já que não será mais necessário acessar a disco.

Quando ao comentário do Pablo, que disse que overlay é um recurso ultrapassado, sou obrigado a concordar. Pense bem: uma vez que o modo protegido oferece mais flexibilidade pra trabalhar com memória, não faz muito sentido usar overlay, mesmo com seções internas em RAM ou externas em disco. Aliás, com seu programa rodando em modo protegido ele pode ser do tamanho que for que dificilmente haverá problema de falta de memória, desde que você dê a máquina virtual o montante de memória que ela necessita. É claro que alguns procedimentos adicionais devem ser adotados, como a desfragmentação pontual (após o descarte de matrizes e fechamento de bancos de dados). Na minha opinião, a fragmentação é a maior vilã dos programas Clipper, uma vez que o desfragmentador nativo é muito problemático. Eu próprio já tive problemas com isso, mesmo com o programa rodando em modo protegido.
Eolo escreveu:b) quanto ao Rtlink, a resposta é sim. A diferença é o Blinker linka em modo protegido e o Rtlink não (acho que só em modo real). Tente migrar para o Blinker, que é mais atual.
Sim, o BLinker é atualmente a melhor opção de linker, pelo menos na opinião da maioria. E com relação ao modo protegido em conjunto com overlay, que é a forma com que você trabalha, atente para esta frase, extraída do help do BLinker 7:

If BLINKER EXECUTABLE EXTENDED is specified then ALL link script commands to do with overlaying are ignored, and a non-overlaid program is always created.

Acho que a frase dispensa comentários.

[]'s
Maligno
http://www.buzinello.com/prg



PS: O termo DOS emulado é errado e é usado há muito tempo não só por ignorância dos que desconhecem os esquemas de emulação e virtualização, como por vício de linguagem, que é bem o meu caso. Peço desculpas por isso. Sempre prezo o uso correto dos termos e acabei viciado no termo emulação.
Há uma diferença brutal entre emulação e virtualização, embora ambos os processos tenham finalidades semelhantes: tornar possível executar sistemas e/ou hardwares em máquinas que podem não ser as nativas.
Emular, em informática, significa transformar ou traduzir o código original de forma que ele se torne compreensível e executável em um hardware diferente. Exemplos em que a emulação é necessária: Basic do Z80 rodando no PC, calculadora HP48X rodando no Mac, MSX rodando num IBM3090, etc.
No processo de emulação, a máquina local invariavelmente possui um hardware diferente do da máquina emulada. Por conta disso, todo o processamento dessa máquina tem de passar antes por um processo de tradução do código da máquina original para o hardware da máquina local. Se estivermos rodando um DOS num SparcStation Sun com processador DEC Alpha, a emulação é o único caminho pra ter o DOS rodando código X86. Issó é lógico: um DEC Alpha é RISC, enquanto que um X86 é CISC. São processadores totalmente diferentes.
Por outro lado, a virtualização só é possível quando os hardwares envolvidos são compatíveis. Voltando ao DOS: no PC com Windows NT o processador local é o mesmo do processador da máquina virtual: o X86 compatível. Mesmo que estejamos falando de processadores multinucleares de 64 bits, a retrocompatibilidade, que é compromisso da Intel (e de outras fábricas), garante a existência das instruções X86 antigas. Inclusive os registradores do processador são criados de forma a serem divisíveis em partes pequenas. E a menor parte é idêntica ao registrador do já saudoso 8088. Incluindo aí, claro, sua nomenclatura. Portanto, nenhuma tradução será necessária, apesar de certas pessoas ignorantes e turronas teimarem em dizer o contrário, mesmo depois de eu ter provado que o processo ocorre dessa forma.
Aliás, é exatamente o processo de virtualização que deixou muitos usuários Mac contentes com a Apple, que trocou seus PowerPC pelos chips Intel. Hoje pode-se rodar um XP dentro do MacOS praticamente na mesma velocidade do sistema operacional. É óbvio que existe uma pequena perda de performance. Antigamente, ainda com os PowerPC, o XP rodava normalmente, mas só através de emulação, já que o PowerPC é RISC, incompatível com os X86. Isso, logicamente, matava a velocidade da máquina emulada.

Pra encerrar o assunto, que já se extendeu mais do que deveria: uma dica para os colegas que querem testar seus programas em diferentes versões do Windows. Eu uso o VMware, que é um excelente programa para virtualizar máquinas. Tudo roda absolutamente igual, como se meu PC tivesse sido carregado com essa versão do Windows. E é muito rápido. A perda de performance é quase imperceptível, dependendo do hardware (eu uso um Dual Core 2.8GHz com 1GB de RAM). Justamente porque o Windows virtualizado não necessita da tradução que ocorre no processo de emulação.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Maligno,

Valeu pela aula e mais ainda pela dica do "non-overlaid program". Como ressalvei, não sou especialista (fiz Economia) e, quando troquei o Rtlink pelo Blinker51, me baseei em informações que pelo visto não foram tão acertadas quanto as suas... De qq forma, acho que posso manter a estrutura que eu uso, certo?, já que ela se torna transparente pelo uso do BLINKER EXE EXT e me ajuda na criação e manutenção de meus programas.


Aliás, aproveitando a sua intervenção, dê por favor a sua opinião sobre o que se segue: eu já vi muitos colegas se batendo com estouros de memória e/ou lentidão de processamento, mesmo com PCs potentes, problemas que eu só enfrentei quando usava o Summer/Pklink86 com muitos Dbedit simultâneos em PCs antigos...

Nos casos que pude conhecer de perto, vi duas coisas:

a) programas muito extensos.
Num exemplo simples, um só PRG contendo os cadastros de nomes, produtos e serviços, com todas as opções de inclusão, exclusão e alteração, tudo junto. No meu caso, eu segmento cada operação de cada cadastro em um PRG: a inclusão no cadastro de nomes, por exemplo, fica sozinha em CNI.prg; a exclusão, em CND.prg; e assim por diante.

b) base de dados com info desnecessária ou passível de ser segmentada.
Vi colegas "sofrendo" com DBFs de 1Gb, tentando achar um jeito de fazer as pesquisas ou a criação de relatórios ficarem mais ágeis, quando na realidade o DBF continha por exemplo vendas de 1980 pra trás, que poderiam (ou deveriam) estar em algum arquivo-morto, ou ainda continha info que poderia (deveria) ser segmentada em vários DBFs.

Um exemplo, recente: uma empresa de factoring, com um DBF absurdamente grande indexado pelo CPF dos clientes, com o colega tentando achar uma solução do lado do software para tornar o processamento mais rápido, sem estouros. Acabei sugerindo algo que matou o problema: o arquivo CPF0.dbf contendo só os CPFs iniciando com "0", o arquivo CPF1.dbf para os "1", e assim por diante.

No caso de informações "antigas", uma outra sugestão: resumir em um DBF extra as informações usualmente consultadas (totais físicos e financeiros, mensais e anuais, por ex) e mandar o DBF fonte para arquivo morto, o qual seria usado só em casos excepcionais.


Então:
- um só PRG é mesmo "pior" que vários PRGs?
- não seria o caso de abrir um tópico no Forum sobre "modelagem da base de dados" ou coisa parecida?

Abraço!

Eolo
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Colega

No caso do Clipper 5 ou superior não faz diferença usar apenas um PRG ou vários, pois como já foi dito os overlays são dinâmicos, no caso do Clipper Summer 87 ou inferior seria interessante usar o menor número de overlays pois isso diminuiria o acesso ao disco.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Desculpe a minha intromissão, ora porque você citou ao colega MALIGNO.
Mas o que eu tenho para comentar é sobre seu comentário:
Eolo escreveu:b) base de dados com info desnecessária ou passível de ser segmentada....

Acabei sugerindo algo que matou o problema: o arquivo CPF0.dbf contendo só os CPFs iniciando com "0", o arquivo CPF1.dbf para os "1", e assim por diante.
Quanto a essa susgestão (para não deixar de dizer que foi GENIAL), refere-se a ESTRUTURAÇÃO do seu DB. Isto, é uma das coisas que TODOS devemos prestar muita atenção e que eu tenho a terrivel impressão que por "geral" acontece com quase TODAS as "lindas" aplicações GUI e que fazem de seu ÚNICO BD em verdadeiras CARROÇAS de armazenamento. Isso que você sitou, é importantíssimo. Não somente adiantaria fazer um gerenciamento bom do seu sistema quando a sua base de dados é uma CARROÇA andando. Se torna lento e não é feito um projeção de armazenamento e que leva ao COLAPSO na espera de processamento avolumenado. Em geral penso que nós em Clipper sofremos um bocado com estética e elaboração do sistema em si, mas em compensação conhecemos muito dos conceitos básicos de programação. É dizer, não adianta fazer telas bonitas e ter o seu BD como se fosse apenas um acessório.

Muito bom a sua colocação, EOLO. E obrigado ao outros colegas pela esclarecimento sobre o BLINKER e OVERLAYS. Eu peco muito nisto, por causa que uso muito o RTLINK.

Um clip-abraço :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Eolo escreveu:Aliás, aproveitando a sua intervenção, dê por favor a sua opinião sobre o que se segue: eu já vi muitos colegas se batendo com estouros de memória e/ou lentidão de processamento, mesmo com PCs potentes, problemas que eu só enfrentei quando usava o Summer/Pklink86 com muitos Dbedit simultâneos em PCs antigos...
PLink86? Sua certidão de nascimento deve ser amarelada como a minha. :)
a) programas muito extensos.
Num exemplo simples, um só PRG contendo os cadastros de nomes, produtos e serviços, com todas as opções de inclusão, exclusão e alteração, tudo junto. No meu caso, eu segmento cada operação de cada cadastro em um PRG: a inclusão no cadastro de nomes, por exemplo, fica sozinha em CNI.prg; a exclusão, em CND.prg; e assim por diante.
Isso depende muito de como é feita a codificação. Eu tenho PRG com +/-3.000 linhas e 140KB, e não me dá problema nenhum. Aliás, nele tive problema com a quantidade de headers. Deu estouro e tive que adaptar. Mas o resto continua do mesmo tamanho. Por outro lado, algumas pessoas tem problema com PRGs bem menores. Depende muito. O que fiz nesse fonte especificamente não é o que canonicamente se faz. O mais aceito é que seu fonte não ultrapasse uns 32KB. Mas isso é uma questão de metodologia, que eu sempre tento seguir, já que ela me faz facilitar minha manutenção futura. Mas não é uma regra tão fixa. Se a necessidade impor algo diferente, não há porque se preocupar com isso.
b) base de dados com info desnecessária ou passível de ser segmentada.
Vi colegas "sofrendo" com DBFs de 1Gb, tentando achar um jeito de fazer as pesquisas ou a criação de relatórios ficarem mais ágeis, quando na realidade o DBF continha por exemplo vendas de 1980 pra trás, que poderiam (ou deveriam) estar em algum arquivo-morto, ou ainda continha info que poderia (deveria) ser segmentada em vários DBFs.
Pois é. Arquivos de dados de movimento poderiam perfeitamente ser separados por exercício, por exemplo. Se a história contida nesses dados for necessária, pode-se fazer um resumo dos dados e armazená-los num arquivo à parte, para posterior pesquisa. É o que eu faço, apesar de nunca ter passado de 1GB. Faço mais por organização.
Um exemplo, recente: uma empresa de factoring, com um DBF absurdamente grande indexado pelo CPF dos clientes, com o colega tentando achar uma solução do lado do software para tornar o processamento mais rápido, sem estouros. Acabei sugerindo algo que matou o problema: o arquivo CPF0.dbf contendo só os CPFs iniciando com "0", o arquivo CPF1.dbf para os "1", e assim por diante.
Arquivo de clientes normalmente é coisa pequena. Se o tamanho chegou ao ponto de incomodar, pode ser sinal de que o cadastro foi mal estruturado. Se for, por exemplo, um daqueles cadastros hiper-completos, o ideal seria segmentar e guardar as informações mais volumosas num arquivo de complemento, enquanto que o arquivo principal conteria apenas o básico da pesquisa do dia-a-dia; unindo os dois por uma "Primary Key". Isso tornaria bem mais rápido o acesso ao dados principais. Além do que, mesmo sendo uma factoring, um cadastro de clientes não poderia ter um acesso tão lento, a ponto de incomodar.
No caso de informações "antigas", uma outra sugestão: resumir em um DBF extra as informações usualmente consultadas (totais físicos e financeiros, mensais e anuais, por ex) e mandar o DBF fonte para arquivo morto, o qual seria usado só em casos excepcionais.
Sim, a exemplo do que comentei acima.
- um só PRG é mesmo "pior" que vários PRGs?
Academicamente falando, sim. Muito pior. Quando tudo está num lugar só, você aumenta a dificuldade na hora de fazer manutenção. Segmentar é a regra canônica e é ponto pacífico entre os melhores programadores e conselho comum nos livros dos melhores autores.
Do lado Clipper, há ainda o agravante disso acabar gerando um estouro na tabela de símbolos do objeto. Há um limite, além do qual o Clipper se recusa a montar o objeto. Daí, só segmentando.
- não seria o caso de abrir um tópico no Forum sobre "modelagem da base de dados" ou coisa parecida?
É um assunto bem extenso e importante. Já tive a impressão de que a maioria dos colegas, em especial os auto-didatas (como eu), não tem lá muito interesse em seguir metodologias, nem mesmo em conhecê-las (já não é o meu caso). Repare bem: a maioria busca o "Funcionou? Então deixa quieto e solta o rojão!". E muitas vezes os programas poderiam ficar muito melhores, o que facilitaria não só a manutenção mas também o trabalho em equipe.
Mas se achar que vale a pena o novo tópico, abra-o. Aliás, esse aqui é sobre overlays. Ou era, pelo menos. :)

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Acabei sugerindo algo que matou o problema: o arquivo CPF0.dbf contendo só os CPFs iniciando com "0", o arquivo CPF1.dbf para os "1", e assim por diante.
A solução foi criativa, sem dúvida. Mas em se tratando de cadastro de clientes, não acho que tenha sido uma boa idéia em nível operacional. Ou seja, a coisa não deveria ter sido resolvida desta forma, na minha opinião. Mas se resolveu, é porque pode ter havido um erro de modelagem, o que torna a coisa pior. Foi tapado um buraco à custa de outro.
eu tenho a terrivel impressão que por "geral" acontece com quase TODAS as "lindas" aplicações GUI e que fazem de seu ÚNICO BD em verdadeiras CARROÇAS de armazenamento.
Há muita teconologia extraordinariamente bem implementada em muitos bancos de dados (não estou falando de Clipper, claro - me refiro aos gerenciadores de bancos de dados). O Firebird, por exemplo, agrupa num único arquivo toda a base de dados, mesmo que ela seja composta por centenas de tabelas e índices. E tudo pode ser fantasticamente rápido. Agora, isso não é regra. O MySQL já não é tão bom. Só serve mesmo pra web, que não tem a velocidade. Se os comentários que li forem verídicos, ele vai melhorar. Mas ainda não é o ideal pra desktop.

E outra: a aplicação GUI é apenas um cliente para acesso aos dados. O banco de dados, se passar por uma modelagem "meia-boca" vai te incomodar de alguma forma no futuro. Em suma: a orquestra é de primeira (Firebird, Oracle, etc - tira o MySQL), mas se o regente não souber o que faz,...

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Maligno,

Cara, minha certidão de nascimento é com "ph"... Sou de 1950, em agosto próximo emplaco 57... (mas com corpinho de 77! eh eh eh).

Bom, já pensei na idéia de criar um tópico sobre "Administração da Base de Dados", mas isso não se restringe ao Clipper... Então, tinha que ser um tópico "geral", no mesmo nível do "Clipper", o que acho que depende dos administradores do Forum. E eu sou novo por aqui, não conheço nenhum deles.

Quem sabe vc agitava isso?

Abraço!

Eolo
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Cara, minha certidão de nascimento é com "ph"... Sou de 1950, em agosto próximo emplaco 57... (mas com corpinho de 77! eh eh eh).
Então você ganhou. Sua certidão é mais amarelada. Sou de 64. Vou fazer 43. Mas minha ex diz que tenho cara/corpo de 30. Tô bem na fita, hein? :))))
Bom, já pensei na idéia de criar um tópico sobre "Administração da Base de Dados", mas isso não se restringe ao Clipper... Então, tinha que ser um tópico "geral", no mesmo nível do "Clipper", o que acho que depende dos administradores do Forum. E eu sou novo por aqui, não conheço nenhum deles.
Uma vez que o assunto é muito pertinente para os programadores Clipper, não vejo nada de errado em colocá-lo aqui mesmo. Mas o assunto não era sobre "Modelagem"? Administração de banco de dados em Clipper, pra mim, é só back-up. :)

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Há muita teconologia extraordinariamente bem implementada em muitos bancos de dados (não estou falando de Clipper, claro - me refiro aos gerenciadores de bancos de dados). O Firebird, por exemplo, agrupa num único arquivo toda a base de dados, mesmo que ela seja composta...
Faz sentido, pelo lado da potência dos novos gerenciadores, mas e o backup, por exemplo? Pra que cuidar de 100Gb se o que interessa são só os últimos 100Kb, o que mudou? O resto, 99%, poderia estar lá enterrado em algum lugar...

Eolo
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Claro. esquecí de mencionar os BD relacionais. Não sou perito, mas não me referia a nenhum deles, ora porque não conheço. Falo principalmente os MDBs da vida...

É triste ver um colega se dar mal porque estava mais preocupado com a BONITEZA do seu aplicativo do que a agilidade/produção.

É bem lógico que nos BD relacionais, tenham que ser num só arquivo para atender os jobs ainda mais pela WEB. Embora soe um pouco redundante a estrutura em si. Mas acredito também, que isso viria a mudar no futuro também. O tamanho geralmente nunca acompanha com a agilidade e sim com a pontenciabilidade. Há muita coisa pra acontecer e abrir nossos olhos, eu acho. Que bom, que nunca acaba...

Um clip-abraço :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Faz sentido, pelo lado da potência dos novos gerenciadores, mas e o backup, por exemplo? Pra que cuidar de 100Gb se o que interessa são só os últimos 100Kb, o que mudou? O resto, 99%, poderia estar lá enterrado em algum lugar...
Sim, entendo seu ponto de vista. Mas em um sistema gerenciador de banco de dados de qualidade, se a modelagem for bem feita, essa preocupação pode muito bem ficar em segundo plano sem qualquer prejuízo para a performance. Além do que, na eventualidade de uma "descarga" de dados mais antigos em tabela à parte, esta normalmente fará parte do mesmo único arquivo, no caso do Firebird. Pode realmente incomodar no back-up. A solução é a que você comentou: descarregar em outra tabela, mas em arquivo à parte. Isso atrapalharia um pouco numa eventual pesquisa dos dados antigos.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Maligno,

Eu descobri a fórmula pra dar certo, mas só na versão 4. A primeira ex (versão 1) era 4 anos mais velha que eu. Funcionou, mas não muito; a versão 2 era 3 anos mais nova, ja melhorou um pouco; a versão 3 era 10 anos mais nova, melhorou mais ainda, mas ainda não resolveu. Já a última versão, a atual, é 28 anos mais nova. Agora ficou bão. Windows Vista x 486 DLX.

Eolo
Responder