Clipper On Line • Ver Tópico - Melhoramento DBF
Página 1 de 2

Melhoramento DBF

MensagemEnviado: 28 Jun 2015 18:49
por jelias
Amigos,

Tenho um sistema com uma grande base de dados DBF e estive pesquisando aqui no fórum o que posso fazer para aprimorar o uso e conseguir extrair o máximo possível em performance e redução de problemas como corrupção de índices.
Vale ressaltar, que neste momento não posso atualizar para um motor SQL, visto que não tenho tempo disponível. Eu faço uso do SQLRDD em uma base de dados MYSQL nas nuvens e tudo funciona certinho, mais fazer a mudança no sistema implicaria em muitos tempo.
Também existem momento em que me pego tentando listar todas as vantagens que um SQL pode me trazer, e não consigo ter confiança na "minha opnião"

Irei dizer algumas opções que já testei no universo DBF:

- Usei o Terminal Service e realmente fica muito rápido, mais como o cliente não quer comprar licenças, dificulta o uso.
- Testei o LETODB e gostei muito, mais na ocasião estava com alguns problemas e não tive como levar adiante.

Confio muito nos colegas e desde que cheguei aqui tenho amadurecido muito e sei que os mestres podem somar.
Uso xHarbour 1.2.1 + DBFCDX

Desde já agradeço!

Saudações,

Júlio.

Melhoramento DBF

MensagemEnviado: 28 Jun 2015 21:01
por sygecom
Jelias,
No meu ponto de vista nesse seu cenário eu não pensaria duas vez e migraria para LETODB + Harbour, terá um bom desempenho e migra rapidamente. pense nisso.

Melhoramento DBF

MensagemEnviado: 29 Jun 2015 11:12
por Itamar M. Lins Jr.
Ola!
Eu faço uso do SQLRDD em uma base de dados MYSQL nas nuvens e tudo funciona certinho, mais fazer a mudança no sistema implicaria em muitos tempo.

Eu não entendi essa parte.
Para usar LetoDB não muda muito apenas colocar a rota do TCP/IP, e vc não disse qual foi o problema na época que teve com LetoDb.
Não ficou claro porque quer sair do SQLRDD.
O LetoDb é mais rápido do que o SQLRDD com MySQL ?, Tem que comprar mais licenças... ? Deixou a desejar o SQLRDD ?
Veja que o LetoDb é uma ferramenta com limitações também! Continua com sintaxe DBF o uso do LetoDb e alguns problemas ainda existem...
Ou é porque o SQLRDD implica em ficar usando apenas xHarbour ?
Com Harbour tem o SQLMIX, LetoDB, NetIO, ADO. Vc pode usar tudo junto se desejar, creio que uma dessas 3 opções deverá servir.

Então pode ser como eu digo: Não adianta nada vc ter uma excelente LIB, tipo SQLRDD(Galho) se o programa principal no caso o xHarbour (Tronco) tem problemas mais urgentes para serem consertados... Eu ainda não entendi porque o pessoal não unificou com o Harbour... Parece orgulho...Ainda usam hbmake em detrimento do hbmk2... e ficam copiando as correções dos galhos do Harbour tipo GTWVW,GTWVG... parecendo que querem ter dois Harbour iguais... não é melhor dar o braço a torce e usar o Harbour unicamente ? todos não iriam ganhar ?
Ontem li algumas palavras do Viktor... Em relação ao uso do BCC, queriam obrigar ele manter retro compatibilidade com essas libs velhas, isso na época alguns anos atrás, mas era também a parte comercial do xHarbour/Harbour interferindo no trabalho dele... Não tinha GIT ainda...Agora ele tem o próprio repositório e todos podem ter o seu... enfim ele não atrapalha ninguém nem os outros interferem nas ideias dele, quando o Przemek, que é quem mantém o Harbour principal quer, ele cópia para o Harbour(core) as melhorias do Viktor e esse em contrapartida cópia para o dele. Ficou mais fácil para todos! O pessoal do xHarbour poderá fazer a mesma coisa.

Saudações,
Itamar M. Lins Jr.

Melhoramento DBF

MensagemEnviado: 29 Jun 2015 15:36
por sygecom
Jelias,
Post as duvidas com Letodb, quem sabe podemos ajudar até mesmo no xharbour, agora se for usar Linux é melhor partir para harbour, pelo menos eu não consegui rodar LINUX e XHARBOUR, apenas com Harbour.

Itamar,
Foque na duvida do colega, não use meias palavras para expor sua opinião pessoal sobre ferramenta XXX ou ZZZ e etc... vamos focar em ajudar o próximo, abraços.

Melhoramento DBF

MensagemEnviado: 29 Jun 2015 19:47
por Itamar M. Lins Jr.
Ola!
não use meias palavras para expor sua opinião pessoal sobre ferramenta XXX ou ZZZ e etc...

Eu penso que fui bem claro.
Eu perguntei:
Pergunta: Está querendo usar o Letodb porque ? Veja, precisamos saber mais detalhes.
O SQLRDD deixa a desejar ? Pelo visto não. Então é o xHarbour que tem problemas ?
Onde está a meia palavra ai eu não sei.

e não consigo ter confiança na "minha opnião"


Porque sair do SQLRDD para LetoDB é bem estranho. Ou vc agora quer que todos acreditem que até o LetoDb é melhor que o SQLRDD ?
Para quem usa sintaxe DBF/XBASE acessando dados na internet não aconselho mudar SQLRDD p/ LetoDb.
E se as pessoas não podem dizer o que pensa, ou que está acontecendo, como fica isso ?

Eu defendo o uso do SQLMIX ao SQLRDD isso eu não escondo nem uso meias palavras, eu defendo essas ferramentas, porque as pessoas que fizeram elas infelizmente não acessam esse forum.

Também, em outros tópicos em relação ao ADO. Enfim tudo tem sua serventia. Se eu uso o SQLMIX como é que vou dizer que não presta ? Se eu uso o Letodb em meus clientes como vou dizer que é ruim ?

Existe a possibilidade de, para o que ele está querendo LETODB não ser indicado.
Porque para trabalhar com DBF em NUVEM, irá depender de como é a estrutura... e velocidade dos links. Quem sabe usando o uHTTPD ou outra forma ?
Vc usa Letodb para gravar tabelas na internet ? Eu tenho muitos relatórios feitos usando o LetoDB, buscando dados de filiais, e vez outra da pau! Só que são relatórios. Eu vejo vantagem em usar o Letodb em LAN(rede local) p/ evitar o mapeamento nisso o LetoDB mostra que é bem seguro. Veja os problemas do Letodb com TRANSACTION..., usar LetoDB na internet eu não aconselho, a não ser, caso a velocidade seja igual a uma LAN, ou perto disso.

Ajudar é não fazer os outros de cobaia também.
Ele pode dizer assim do SQLRDD: É bom, mas é caro! ou É bom mas o suporte é difícil e caro... Sei lá o que pode ser ? mas trocar SQLRDD por LetoDB é estranho... mas ele também não afirmou que quer trocar para Letodb, e nem disse nada do SQLRDD.

Porque eu perguntei ?
Porque na minha opinião o SQLRDD para o que ele está querendo é a melhor opção que tem.

Saudações,
Itamar M. Lins Jr.

Melhoramento DBF

MensagemEnviado: 29 Jun 2015 20:08
por janio
Acho que ele ja falou pq nao quer usar o SQLRDD...

Vale ressaltar, que neste momento não posso atualizar para um motor SQL, visto que não tenho tempo disponível


Se bem que para usar SQLRDD ou LETOdb... as mudanças são praticamente as mesmas: umas poucas chamadas no prg principal e pronto. A não ser que com SQLRDD ele queira mudar todos os comandos xbase para sql. Se for isso... eh outros quinhentos!

Se for isso, aí volta aquela velha história: Se usando SQLRDD for "preciso" mudar todos os comandos xbase para sql... melhor ir logo para o SQLMIX q eh de gratis.

Janio

Melhoramento DBF

MensagemEnviado: 29 Jun 2015 20:58
por sygecom
Itamar, não seja afoito e pare com deduções, vamos esperar o colega se pronunciar.

Melhoramento DBF

MensagemEnviado: 30 Jun 2015 09:57
por Itamar M. Lins Jr.
Eu não estou sendo afoito não.
Não tem como responder a questão dele. Fiz outra pergunta ou mais 2 duas perguntas.

Minha opinião já foi dita.

E também é o mesmo pensamento do Janio.

Saudações,
Itamar M. Lins Jr.

Melhoramento DBF

MensagemEnviado: 30 Jun 2015 11:03
por paiva_dbdc
BOM dia.

pelo que entendi vc tem as mesmas duvidas que eu.

SQLRDD MUITO bom + fica MUITO lento em relação ao dbf (comprei na época que lançou (mysql, postgres e firebird) e re-testei final do ano passado (mysql e firebird) e... é MUITO trabalhoso mexer com DB em clientes pequenos , pc s fracos e sem memoria, sem Nobreck etc. e.. para agilizar tem que usar comandos sql .
Para quem tem poucos Clientes good Para quem tem alguns e PRINCIPALMENTE Pequenos e que NÂO dão valor ao serviço e que NEM sabem ligar/desligar um pc (rs) não vale o trabalho.

o letodb não mexi, gostaria de testar, mais tenho visto alguns reclamando de bugs etc.

quanto a TS uso em todos meus clientes em w2003 2008 e W7 e ate em XP e NÂO precisa ser pirateado

https://www.youtube.com/watch?v=-ZVehwgv5qQ Vieo de como instalar e com opção de download. BEM simples.

então continuo a usar DBF pelo TS + gostaria muito de uma opção simples para poder usar em REDE + que TIVESSE uma forma de parametrizar tipo DBF / letodb / etc .. deu problema no letodb, (seta uma variável pelo sistema mesmo e... já estaria usando em DBF puro.

Como tenho dificuldade de fuçar e a memoria JA não ajuda (62 anos) fico aguardando um MILAGRE.

Paiva

Melhoramento DBF

MensagemEnviado: 30 Jun 2015 12:04
por janio
paiva_dbdc,

Foi justamente o que eu fiz: No meu arquivo de configuração (.ini) eu seto se vou usar o leto ou nao. Não quero usar o leto nesse cliente? simples, seto a chave para "0" e pronto. Vou usar? seto para "1".

Os bug's conhecidos, pelo menos por mim, não mim impedem de usar o leto.

# include "rddleto.ch"

   CriaArquivoIni()
   aIni       := HB_ReadIni('c:\JanioSys\JanioSys.ini')
   aSecaoIni  := aIni['Config']
   Leto       := aSecaoIni['Leto']
   Servidor   := aSecaoIni['Servidor']
   Porta        := aSecaoIni['Porta']
   PathServ   :=  "//" + Servidor + ":" + Porta + "/"
   cDrive     := If( Leto = "1", "LETO", "DBFCDX" )

   *

   If Leto != "1" .and. Leto != "0"
      MSG("HA UM ERRO DE CONFIGURACAO NO ARQUIVO DE INICIALIZACAO - COMPONENTE letoDB")
      Quit
   Endif

   Leto := IIf( Leto = "1", .t., .f. )

   *

   If Leto
   
      leto_Disconnect()
      nConect := leto_Connect( PathServ )

      If nConect == -1
            nRes := leto_Connect_Err()
            If nRes == LETO_ERR_LOGIN
                  alert( "Falha ao Logar" )
            ElseIf nRes == LETO_ERR_RECV
                  alert( "Error ao conectar" )
               ElseIf nRes == LETO_ERR_SEND
                  alert( "Erro de envio" )
            Else
                  alert( "Não connectado ao servidor: " + PathServ )
            Endif
   
            Quit
      Endif

      REQUEST LETO
      RDDSETDEFAULT( "LETO" )
                        
   Else

      REQUEST DBFCDX
      RDDSETDEFAULT("DBFCDX")

   Endif

   *

// saber se tabela/ou arquivo existe   (no servidor)
   If MyFile("CFSCLI.DBF")
      ....
   Endif

// abrir tabela
   AbreDb( [A17EMP],[EMPRESA] )

// criar tabela
If !MyFile("A10GRP.dbf")
   aCampos := {}

   aAdd( aCampos , { "CODIGO" , "N" ,  3 , 0 } )
   aAdd( aCampos , { "DESCRI" , "C" ,  30, 0 } )
   aAdd( aCampos , { "SLDATU" , "N" ,  15, 2 } )
   aAdd( aCampos , { "FLGTIP" , "C" ,  1 , 0 } )

   MydbCreate( "A10GRP.DBF" , aCampos )
           
Endif

// apagar tabela
MyFERASE("A00PTO.DBF")

////
////
////
////

// funcoes
Function MyFErase( cArquivo )
Local lRet := .t.

If Leto
   Leto_fErase( PathServ + cArquivo  )
Else
   fErase( cArquivo )
EndIf

Return lRet

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

Function MyFile( fArquivo )
Local lRet := .t.

If Leto
   If Leto_File( PathServ + fArquivo  )
   Else
      lRet := .f.
   EndIf
Else
   If hb_FileExists( fArquivo )
   Else
      lRet := .f.
   EndIf
EndIf

Return lRet

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

Function MyDbCreate( oArquivo, Campos )

If Leto
   dbCreate(  PathServ + oArquivo, Campos, cDrive )
Else
   dbCreate(  oArquivo, Campos, cDrive )
EndIf

Return .t.

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

Function AbreDB( cArquivo, cAlias, lModo )
Local lRet := .t.
Local xArq := cArquivo
Local aTenta

lModo := IIf( lModo == nil , .t. , .f. )
cArquivo := IIf( At( ".", xArq ) > 0 , cArquivo, cArquivo + ".dbf" )

If Leto

   If Leto_File( PathServ + cArquivo  )
      DbUseArea(.t.,'LETO', PathServ + cArquivo,cAlias,lModo )
   Else
      MSG( 'LetoDB Nao Foi Localizado: ' + PathServ + cArquivo )
      lRet := .f.
   EndIf

Else
   DbUseArea(.t.,'DBFCDX',cArquivo,cAlias,lModo )
EndIf

If Neterr()

   aTela := savescreen(9,5,15,75)

   ALERTA('Tentando acessar arquivo ' + cArquivo + '! Aguarde...', 12)

   aTenta = 5

   Do While aTenta > 0

      If Leto
         DbUseArea(.t.,'LETO', PathServ + cArquivo,cAlias,lModo )
      Else
         DbUseArea(.t.,'DBFCDX',cArquivo,cAlias,lModo )
      EndIf

      If Neterr() = .f.
         restscreen(9,5,15,75,aTela)
         Return .t.
      Endif

      aTenta--

      Inkey(1)

   Enddo

   restscreen(9,5,15,75,aTela)
   MSG( "NAO FOI POSSIVEL ABRIR O ARQUIVO " + cArquivo )
   lRet := .f.

Endif

Return lRet

Melhoramento DBF

MensagemEnviado: 30 Jun 2015 12:29
por Itamar M. Lins Jr.
Eu só não uso o letodb, quando tem uma maquina apenas.
Com duas em diante eu uso o Letodb. Isso em uma LAN(LOCAL AREA NETWORK), para WAN agora NUVEM eu aconselho o SQLMIX.
Simples o uso do SQLMIX, e vc usa todos os comandos que sabe do xBase.
Tenho usado o Letodb com sucesso em algumas lojas inclusive com ligação matriz filial usando apenas para os relatórios.

Usando conexão direta fica inviável via ADSL. Melhor usar o TS
Exemplo de uso ruim com letodb:
Abrir um browse da Hwgui e mover nos registros, com ADSL abaixo de 10Mb nas duas pontas fica péssimo. Porque nas lojas tem os funcionários e todos ligados na bendita Wireless usando Facebook, ZAP-ZAP e CIA Ltda e a inconstância do LINK.

Isso não é difícil de entender nem é problema do LetoDB.
A OI(Telemar) disponibiliza 10Mb de Download e menos de 400Kib de UPLOAD, como precisamos da mesma velocidade no caso de UPLOAD, está ai o problema aqui na região.

Saudações,
Itamar M. Lins Jr.

Melhoramento DBF

MensagemEnviado: 01 Jul 2015 22:02
por jelias
Amigos, estou muito grato pelas respostas!

Itamar M. Lins Jr. escreveu:Pergunta: Está querendo usar o Letodb porque ? Veja, precisamos saber mais detalhes.
O SQLRDD deixa a desejar ? Pelo visto não. Então é o xHarbour que tem problemas ?


Itamar, Não disse que quero usar o LETODB, apenas disse que fiz testes e na ocasião gostei muito. Como uso DBF, e no momento pretendo ficar nele, pois quando for mudar para um motor SQL quero mudar todos os comandos para SQL.
O SQLRDD não deixa a desejar até onde faço uso. Tenho um sistema de vendas que foi feito por um amigo em PHP. Os vendedores da empresa digitam os pedidos neste sistema que está nas nuvens e meu sistemas busca estas informações do banco de SQL e alimenta os arquivos DBF. É neste momento que faço uso do SQLRDD e nunca tive nenhum problema.
Quanto ao xHarbour, nunca tive problemas com o mesmo e reconheço que o Harbour está muito a frente.
Sei que você é um dos mestres do LETODB e fico feliz em tê-lo aqui conosco.

O que eu realmente pretendo neste momento é extrair o máximo que eu posso de um arquivo DBF.

janio escreveu:Se bem que para usar SQLRDD ou LETOdb... as mudanças são praticamente as mesmas: umas poucas chamadas no prg principal e pronto. A não ser que com SQLRDD ele queira mudar todos os comandos xbase para sql. Se for isso... eh outros quinhentos!
Se for isso, aí volta aquela velha história: Se usando SQLRDD for "preciso" mudar todos os comandos xbase para sql... melhor ir logo para o SQLMIX q eh de gratis.


Janio, valeu pela indicação do SQLMIX, irei estudar.
Como disse acima, fica a dúvida de porque não faço toda a mudança para SQLRDD, se já tenho algum processo feito com ele? Tenho certeza que preciso aprender muito ainda para me sentir capaz de resolver um problema no banco de dados SQL, caso venha ocorrer. Se não me sinto confiante, não consigo mudar.

Leonardo, grato pela confirmação do LETODB, seu incentivo é muito importante.

Atenciosamente,

Júlio.

Melhoramento DBF

MensagemEnviado: 02 Jul 2015 11:10
por Itamar M. Lins Jr.
Ola!
Pois é Jelias, mais abaixo eu escrevi isso:
mas ele também não afirmou que quer trocar para Letodb, e nem disse nada do SQLRDD.


E também novamente não disse qual é ou era o problema do Letodb na época que testou.

Então até agora, pelo meu ponto de vista não avançamos muito.

Se usa SQLRDD provavelmente usa xHarbour, e o servidor LetoDB tem que ser compilado no Harbour por causa dos problemas de multithread do xHarbour, já exposto pelo próprio Przemek.
Se precisa acessar base de dados que é manipulado por outros programas, na minha opinião, melhor usar o SQLMIX pois já traz toda consulta em DBF, infelizmente a gravação lá no MYSQL ou felizmente a gravação, ai vai depender do ponto de vista de cada um, é em SQL.
O SQLMIX eu acho melhor quando for manipular a BASE MYSQL, porque não usa dos artifícios do SQLRDD, não trabalha com RECNO, DELETED... isso é um empecilho a menos para o pessoal do PHP.

Saudações,
Itamar M. Lins Jr.

Melhoramento DBF

MensagemEnviado: 02 Jul 2015 14:01
por sygecom
Julio,
Lembrando agora aqui, me veio uma outra opção que agiliza muito o desempenho nos DBF á um RDD chamado RMDBFCDX, na época apenas testei, mas notei que de fato ele da uma sobre vida nos DBF muito bom, funciona bem e poucas alterações. Porém ele se encontra apenas no xharbour.com e é mantido até hoje pelo Przemek, que é atualmente um dos guru do Harbour mas que também tem participação no xharbour.com

As alterações seria basicamente linkar a lib ao projeto e:

No inicio do .prg principal antes do FUNCTION MAIN()
REQUEST RMDBFCDX

e Logo depois do FUNCTION MAIN()
RddSetDefault("RMDBFCDX")
DBSETDRIVER("RMDBFCDX")

Boa sorte.

Melhoramento DBF

MensagemEnviado: 03 Jul 2015 08:37
por ANDRIL
paiva_dbdc escreveu:quanto a TS uso em todos meus clientes em w2003 2008 e W7 e ate em XP e NÂO precisa ser pirateado

Sabe informar se com o esquema citado no vídeo consigo usar usuários simultâneos, ou seja, se o servidor estiver sendo usado, ao logar com outro usuário em outra máquina, não afeta o uso de quem esta no servidor? Até quantos usuários simultâneos pode ser utilizado?
Ate+

Melhoramento DBF

MensagemEnviado: 03 Jul 2015 09:48
por paiva_dbdc
BOM dia

quanto ao REQUEST RMDBFCDX uso a MUITOS anos e se nao me engano na época que que comecei acho que ganhava uns 30% em velocidade.

quanto ao multi-Usuario posso ver a qtd maior de usaurios que tenho, evidente que pelo que falavam na epoca + de 5 usuarios no XP em rede ja era compliado

PAiva

Melhoramento DBF

MensagemEnviado: 03 Jul 2015 09:59
por paiva_dbdc
opa

telo cadastro do TeamViwer tem uns 2 clientes com 8 usuários no W7

em XP não sei posso ver com meu genro que instala e olha que ele é Biologo (rs)

Paiva

Melhoramento DBF

MensagemEnviado: 03 Jul 2015 10:49
por JoséQuintas
Remote Application normalmente só pode ser usada com Windows Server.

O recurso está disponível no Windows 7 versão Ultimate, e acabou sendo liberado para o XP quando criado o XP Mode.

1) No caso do XP, precisa baixar uma atualização da Microsoft

2) Tanto XP quanto W7, existe um programa na internet pra facilitar a configuração do uso

3) De qualquer forma, XP e W7, pra permitir vários usuários será necessário aplicar um patch pra remover a limitação de usuários simultâneos.
Não existe opção de comprar licença pra isso, e oficialmente a Microsoft diz que isso não é possível.
Não sei como essa operação é tratada numa fiscalização de pirataria, trata-se da mudança de alguns bytes em termsrv.dll

Sinceramente.....
É uma solução muito boa. Na maioria dos casos, até mais rápida e mais eficiente do que qualquer outra.
E podemos considerar que nesse uso não existe problema de rede, já que tudo roda local na máquina servidora.
Basta configurar esse aplicativo remoto no servidor, cadastrar os usuários e pronto, nada de compartilhar pasta.
Nos terminais, só usar o arquivo .RDP como um atalho, e fazer login, sem nenhuma configuração extra.

Mas:
Como depende de usuário cadastrado, a mesma senha do aplicativo serve pra entrar remotamente no servidor.
Um usuário mais esperto poderia usar o login pra entrar no servidor e fazer coisas perigosas.

Nota:
Toda configuração é somente no "servidor". O terminal apenas faz uso do "atalho".
Velocidade de acesso local. Por exemplo uma reindexação em rede de 1 hora, levaria 5 minutos por essa configuração.

Atualização obrigatória do servidor XP - e informações relacionadas:
http://stealthpuppy.com/remoteapp-for-windows-xp-and-windows-vista-the-missing-pieces/

Ferramenta pra liberar vários usuários - e informações relacionadas:
http://deepxw.blogspot.com.br/2009/04/universal-termsrvdll-patch.html

Ferramenta pra facilitar configurar (necessita NET Framework) - e informações relacionadas:
http://www.kimknight.net/remoteapptool

Nota Adicional:
Lembre-se que a Microsoft vém reduzindo recursos.
No XP, somente XP Professional
No W7, não serve Professional, tem que ser Ultimate
No W8 e W10... talvez somente a Enterprise, e depende de existir o crack pra vários usuários simultâneos

Melhoramento DBF

MensagemEnviado: 13 Jul 2015 15:41
por JoséQuintas
Atualizando:

No momento estou usando um mix:
- Tem instalação usando DBF/CDX
- Tem instalação usando DBF/CDX + MySQL
- Tem instalação usando HBNETIO + MySQL
- Tem Instalação usando terminal service misturado aos anteriores

Dependendo da tarefa, cada um mostra suas vantagens.

A única coisa certa: se a rede está ruim pra DBF, vai ficar ruim pra qualquer das opções.