Porque DBF é lento em rede

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

Moderador: Moderadores

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

Porque DBF é lento em rede

Mensagem por JoséQuintas »

Tava lendo uma comparação, não falava sobre isso, mas serve pra isso.
Chamou a atenção esta parte:

buffer 65534: 10000 * 4 b == 32 kb/s | 8244 blocks/s
buffer 65534: 10000 * 8 b == 64 kb/s | 8298 blocks/s
buffer 65534: 10000 * 16 b == 126 kb/s | 8097 blocks/s
buffer 65534: 10000 * 32 b == 256 kb/s | 8203 blocks/s

Nessa rede, praticamente a velocidade EM BLOCOS é constante, mesmo o bloco chegando a 256kb/s ou 256.000 bytes.
Acontece que o DBF é lido POR REGISTRO, então o bloco vai usar um registro.

Ao usar DBF, vai precisar vários blocos pra emitir o relatório.
Ao usar cliente/servidor, de repente um único bloco já trás o relatório inteiro.

Então, uma coisa é o programa precisar ler um registro por vez para escolher o que vai usar.
Nisso o DBF já perde.

Outra coisa é que a comunicação cliente/servidor é um registro por vez, quando a capacidade de transferência é muito maior.

Confude, mas são duas coisas distintas. Talvez dê pra explicar melhor usando balde e água como exemplo.

A parte de lentidão 1:
O relatório vai trazer todos os baldes de água pra ver qual balde interessa. Vai trafegar baldes inúteis.

A parte de lentidão 2:
Os baldes conterão apenas um copo de água, mesmo tendo capacidade pra muita água.

Na hora de programar usando cliente/servidor, tem que pensar nessas duas coisas.
Por exemplo, um SET FILTER, vai ser mais rápido, porque vai usar "menos baldes".
Mas se fizer o SELECT trazendo tudo que interessa de uma vez, vai usar a capacidade máxima dos baldes, portanto menos baldes e mais rápido.

A rede de 1GB tem baldes maiores.
Por isso, pode até deixar o sistema um pouco mais rápido, mas não tanto, porque o conteúdo dos baldes continuará sendo um único registro.

Finalizando:
É por isso que um COPY é sempre mais rápido do que qualquer coisa.
E é por isso que DBF ficou meio que ultrapassado.
O Access até seria mais rápido, mas também deixou de ser opção, por ser frágil em rede igual DBF.

Nota: fiquei na dúvida, porque isso se refere a banco de dados. Por outro lado, muitos devem querer entender como acelerar o Harbour em banco de dados, e DBF é a base padrão do Harbour, e a mais usada.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Porque DBF é lento em rede

Mensagem por Maurício Elias »

Olá, bom dia Quintas.
Mas o que usar com o harbour então?
Eu acabei de migrar prá ele, modo console. A velocidade em geral já melhorou consideravelmente em relação ao Clipper+Blinker.
IDX ou CDX ajudaria ?
Abraços.
_______
Maurício
Avatar do usuário
jjr_rs
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 18 Mai 2009 18:56
Localização: Porto Alegre
Contato:

Porque DBF é lento em rede

Mensagem por jjr_rs »

Olá Maurício Elias,

Vou me meter no assunto... Eu utilizo já há algum tempo a HMG 3.0.46, gerando sistemas em modo gráfico.

Mesmo quando meus sistemas eram em modo console, sempre notava a perda de velocidade na questão de acesso a .dbf's em rede. Mesmo tendo trocado os arquivos de índice de .NTX para os .CDX (que já dava uma pequena diferença no acesso).

Há pouco tempo mudei dos antigos .DBF para o MySql e vou te dizer... Foi uma diferença considerável ! Do tipo, para gerar um relatório em um cliente que tinha uma base grande de dados, um determinado relatório demorava em torno de 45 segundos (Servidor) e de 2 a 3 minutos em qualquer outro micro que estivesse na rede...

Claro, podemos considerar que, havendo uma rede montada de forma correta utilizando switch, o tempo de resposta pode até melhorar... (apenas para constar...)

Mas digo, ao mudar para o MySql, tanto o tempo de resposta no Servidor melhorou (5 a 10 segundos) e também em qualquer outra máquina da rede, teve seu tempo "igualado" ao tempo de resposta do próprio Servidor.

Então o que tenho a dizer... a mudança para o MySql foi a melhor coisa que pude ter feito para meus sistemas.

Quando houver oportunidade, pense com carinho nessa possibilidade !

Abraços !
Bahsis Sistemas de Gestão
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 237
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Porque DBF é lento em rede

Mensagem por pauloa1 »

Eu mudei de dbf para Postgresql via sqlrdd e os meus problemas de lentidão sumiram.
A diferença é muito grande, e não é só nisso, poder usar comandos sql , eliminar boa parte dos índices, não precisar reorganizar e por aí vai.
Agora se não está cogitando sair dos dbf , tem o Letodb que segundo os que usaram, melhorou bastante, principalmente velocidade em rede.

Paulo
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Porque DBF é lento em rede

Mensagem por Maurício Elias »

Olá Quintas, bom dia.
É bom saber disso, sempre aprendendo.
Dá prá usar HB32 modo console com FireBird tb ?
Abraços.
_______
Maurício
Lucio
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 24 Fev 2011 18:02
Localização: jaciara/MT

Porque DBF é lento em rede

Mensagem por Lucio »

Mas se fizer o SELECT trazendo tudo que interessa de uma vez, vai usar a capacidade máxima dos baldes, portanto menos baldes e mais rápido.
José Quintas (ou outro usuario clipper). Você me daria umas dicas de como usar a técnica "SELECT" que vc sugeriu acima?
Meus programas são em Clipper 5.01 e ficam mto lentos mesmo na rede.

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

Porque DBF é lento em rede

Mensagem por vagucs »

Imagina se o banco SQL tivesse acesso como o DBF tem, via mapeamento de rede, seria o rei da lerdeza.

Banco relacional é rapido pelo conceito, o LetoDB faz basicamente o mesmo que um sql mas usando o DBF.

Lembro em uma ocasião, que atendia um atacadista da minha cidade, usava maquinas antigas e o sistema de clipper que era bem grande funciona bem, algumas operações demoravam 1 minuto em media para processamento, o que era normal pelo volume de dados.

Quando comecei a viajar, não tinha como atender esse cliente mais, e durante um ano verificamos algumas opções de sistema para ele utilizar, então ele trocou o sistema, ai comprou um servidor parrudo da Dell e colocou o oracle rodando, outro conceito, trocou todas as maquinas da rede, a estrutura, comprou equipamentos de primeiro, e um dia veio rindo pro meu lado dizendo que o sistema era mais lento, e eu falei para ele que, se nao epoca que usava o sistema, se tivesse investido em equipamento como fez para rodar o oracle, ele teria mais agilidade.

O banco relacional é excelente, mas tem toda uma estrutura envolvida, e levando em consideração a idade do DBF, ele é rapido, o problema é rodar mapeando unidade, se quiser um ganho excelente, é colocar o sistema em emulação de terminal Linux ou Windows, acaba com 99% dos gargalos.

Vale os amigos olharem com carinho o Postgresql, ele é muito bom, considero melhor que o oracle.

Hoje na empresa que trabalho, mantemos o Postgresql e o Oracle, todos os dados são sincronizados de mais de 400 lojas nos dois bancos, o Postgres tem uma maquina mediana, o oracle tem toda uma estrutura, maquina super mega power, pagam mantenedores para o banco e licença para a oracle, assim como hospedagem dos dados, eu te falo que tudo rodamos no PG, pela versatilidade do SQL dele, o Padrão SQL do oracle é muito injessado, coisas simples de se fazer no Postgres pode ser um parto no Oracle, o Oracle é levemente mais rapido, mas dado a imensa capacidade do servidor que o hospeda, deveria ser ultra-mega-power rapido e não é.

O oracle já saiu do ar e parou muitas vezes ao longo dos ultimos 4 anos, o Postgres segue inteiro e sem nos decepcionar.

É muito facil migrar o DBF e o sistema para uso com Postgres.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Porque DBF é lento em rede

Mensagem por Duda 'Sgluber' »

vagucs escreveu:...
Banco relacional é rapido pelo conceito, o LetoDB faz basicamente o mesmo que um sql mas usando o DBF.
...
Uma das coisas que quero fazer futuramente é migrar para um banco relacional. Mas, no momento, principalmente pela impossibilidade de me dedicar ao assunto, continuarei usando o velho e bom DBF.

Tempos atrás eu estava lendo sobre os bancos pra entender sobre vantagens e desvantagens entre eles, pra ter uma ideia de qual eu escolheria. Por outro lado, também li alguma coisa sobre o Leto db e chamou minha atenção, mas não cheguei a testar.

Wagner, pelo que você escreveu deduzo que para casos como o meu - o de permanecer usando DBFs-, o Leto db ajudaria muito, está correto? Você o utiliza ou já o utilizou? Qual é a sua avaliação?
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Porque DBF é lento em rede

Mensagem por vagucs »

Então, nunca utilizei o Leto, mas acredito que sim, vai te ajudar bastante, talvez resolverá seus problemas por um bom tempo.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Porque DBF é lento em rede

Mensagem por asimoes »

Duda,

Eu utilizo o Leto e o NetIO e não tenho o que reclamar.
Nunca tive corrupção de dados e indices.
A migração/utilização é tranquila.
Tem vários exemplos aqui no fórum.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Porque DBF é lento em rede

Mensagem por Duda 'Sgluber' »

Obrigado Wagner e asimoes! Imagem

Ainda um pouco fora do assunto deste tópico, mas apenas pra completar, rapidamente: recentemente um cliente que possui uma matriz e 4 pequenas filiais demonstrou interesse em unificar as bases de dados e começar a usar a internet para acessar o sistema, de qualquer um dos 5 locais. O Leto db também pode ser utilizado para esse fim?

Lembrando: ao menos por enquanto, vou continuar usando DBFs.
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Porque DBF é lento em rede

Mensagem por vagucs »

Sim, pode!
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
Duda 'Sgluber'
Usuário Nível 3
Usuário Nível 3
Mensagens: 148
Registrado em: 11 Mar 2013 21:57
Localização: Interior de São Paulo

Porque DBF é lento em rede

Mensagem por Duda 'Sgluber' »

Valeu! Imagem
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
clrod
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 17 Nov 2009 13:42
Localização: São Paulo - SP

Porque DBF é lento em rede

Mensagem por clrod »

Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Porque DBF é lento em rede

Mensagem por NiltonGM »

Amigos, sou clippeiro desde a década de 90, (sim, sou vovô), Clipper 5.3b com cdx e as vezes com ntx, faz duas semanas que conheci o Harbour e a HMG 3.3. Cara! Estou muito feliz e conseguindo migrar meu sistema clipper com dbf para Harbour aplicativo de 32 bits usando como base de dados o MySQL.
Depois que você conhece o MySQL você nunca mais vai querer saber de DBF. Vale a pena dedicar bastante para conhecer o MySQL.
Minha aplicação em Harbour em meus testes preliminares pela rede local acessa direto um servidor na locaweb pela internet como se o BD MySQL estivesse no servidor local, não deu pra sentir diferença local/internet.

Um clipper abraço a todos.
Nilton Medeiros
nilton@sistrom.com.br
Responder