Página 6 de 7

Tutorial de ADO

Enviado: 02 Jun 2018 22:01
por JoséQuintas
Apenas palpite:
Provavelmente o MySQL precisa fazer o select completo, desde o primeiro até a quantidade que atenda o limit.
18001,19000 vai pegar os primeiros 19000 e usar somente os últimos 1000.

Tutorial de ADO

Enviado: 24 Jan 2021 20:31
por jelias
José Quintas, parabéns pelo lindo trabalho.

Não me recordo agora, mais li em algum lugar aqui que a conexão via ADO cai em alguns momentos sem nenhum motivo aparente.

Isso procede?

Saudações,

Júlio.

Tutorial de ADO

Enviado: 24 Jan 2021 22:10
por asimoes
Estou usando MariaDb a 1 ano e não tenho essa ocorrência, como migrei de dbf para o MariaDb a minha preocupação é somente com demandas do usuário

Tem usuário mal intencionado, desliga o servidor, tem todo tipo de sacanagem, enfim não tenho essa preocupação, já tive no passado quando tinha sistema na Domino´s Pizza
Até cabo de rede cortavam

Tutorial de ADO

Enviado: 25 Jan 2021 11:13
por jelias
Amigo Alexandre,

Agradeço por compartilhar sua experiência com o ADO. Eu achei a conversa entre o Itamar e o Quintas que me gerou esta dúvida.

https://pctoledo.org/forum/viewto ... do#p142672

Pude notar que o comentário é específico ao conector 3.51, algo que o Quintas atribui como normal cair.

Saudações,

Júlio

Tutorial de ADO

Enviado: 25 Jan 2021 11:31
por Itamar M. Lins Jr.
Olá!
Eu lembro. O problema que já vi "n" vezes isso acontecendo. Seria bom alguém com mais experiência para falar disso, com 10, 15 maquinas em um balcão, com muito movimento, se cair 3 vezes já é um terror.

Saudações,
Itamar M. Lins Jr.

Tutorial de ADO

Enviado: 25 Jan 2021 12:09
por asimoes
jelias escreveu:Pude notar que o comentário é específico ao conector 3.51, algo que o Quintas atribui como normal cair.
Uso o conector mariadb-connector-c-3.1.9-win32, realmente a rede é pequena 5 computadores, posso não ser referência pra problemas

Tutorial de ADO

Enviado: 25 Jan 2021 12:24
por JoséQuintas
De forma simples:

É que ensinam a usar a conexão 3.51 de 20 anos atrás, aí não tem conexão que fique no ar.
Além disso, ensinam a usar igual Linux, e isso não vai.
odbc.png
Ele é de quase 20 anos atrás.
Muita coisa mudou de lá pra cá.

Tutorial de ADO

Enviado: 25 Jan 2021 13:09
por jelias
Entendido amigos,

Estou fazendo testes com o MySQL Conector 8.0 ANSI Driver. Até agora fiz a conexão e deu tudo certo. Em breve darei continuidade gravando e extraindo dados.

Saudações,

Júlio.

Tutorial de ADO

Enviado: 25 Jan 2021 23:31
por microvolution
asimoes escreveu:migrei de dbf para o MariaDb
amigos boa noite!
me perdoem a(s) pergunta(s) que podem ser "idiotas" pra quem é profundo conhecedor, mas, pra mim... são novidades!
Veja tanto em falar em LETODB, MARIADB, etc...
O que são essas base de dados?
Qual diferença entre DBF e elas?
O que tem a ver com as MYSQL, SQL, etc?

desculpem-me por favor!
Mas, quando alguém diz que migrou de DBF para esse "MariaDB" ou qualquer outro que tenha nome semelhante, o que temos que mudar no sistema (linhas de código) e o que de melhoria temos?

desculpem, desculpem as perguntas, por favor!!!

Tutorial de ADO

Enviado: 26 Jan 2021 16:49
por jelias
Amigo Microvolution,

Irei assumir que está amplamente familiarizado com o DBF, visto que o amigo é parte deste rol de amantes do xBase há muito tempo. Em uma breve abordagem, acredito que muitos tiveram seu primeiro contato com o xBase pelo Clipper, então nesta fase, poderia usar o SGBD DBF com os seguintes RDD´s. (os principais):
a) DBF/NTX
b) DBF/CDX
c) DBF/NSX (Six 3.0)

Banco de Dados DBF - está parado no tempo há muitos anos e sabemos que vivemos a maior demanda de armazenamento de dados da história, e isso, claro, exige avanços no tratamento destas informações. O projeto denominado LETODB, que hoje tem um fork LETODB(f), melhorou muito a forma de comunicação com o bando de dados, trazendo uma "semelhança" na forma como os dados trafegam em rede, em relação aos banco de dados relacionais. Basicamente funciona assim, você instala o arquivos DBF´s em uma pasta no servidor, instala o LETODB(f) e configura conforme os parâmetros, e não precisa mapear a pasta do servidor nas estações. Isso sem dúvidas melhora muito, continua usando DBF/CDX e o LETODB só faz o tráfego na rede do registro que está sendo acessado, não do arquivo todo. Reduz o tráfego de rede, aumenta a velocidade, segurança, etc.
Para melhor compreensão do assunto, sugiro estudar estes links.
https://pctoledo.org/forum/viewto ... =42&t=8167
https://pctoledo.org/forum/viewto ... 42&t=15108
https://pctoledo.org/forum/viewto ... 42&t=18083

Conteúdo riquíssimo nos links acima. Impossível passar aqui os ganhos com o LETODB(f), mais eu faço uso e posso lhe afirmar que deu uma sobrevida aos meus projetos. Não muda muita coisa, basicamente todos os comandos que você já usava vai ser aproveitado.

Bancos de dados SQL (Linguagem de Consulta Estruturada) - de forma simples, são banco de dados mais evoluídos, que suportam grandes demandas e possuem recursos que facilitam a comunicação, entre a solicitação e entrega dos dados ao operador.

Existem muitos bancos de dados SQL, alguns pagos como (Oracle, SQL Server), outras distribuições não pagas, exemplos PostgreSQL, MariaDB, MySql, FireBird), etc. A lista é muito grande.
https://db-engines.com/en/ranking

Importante saber, todos os comandos de comunicação com o bando de dados irá mudar, visto que você assumira os "famosos" comandos SQL, mais fique tranquilo, vai aprender rapidamente.
https://becode.com.br/comandos-sql-nao-pode-viver-sem/

São conceitos diferentes aos que estamos acostumados, porém o importante é saber que você envia uma solicitação ao banco de dados que está no servidor, toda solicitação será tratada no servidor e assim que estiver pronta, enviada ao destino. Sendo assim, todo o processamento é feito no servidor. Em termos de segurança a evolução é gigantesca. Vale a pena o upgrade.

https://pctoledo.org/forum/viewto ... 42&t=24040

Espero ter ajudado com um começo!

Saudações,

Júlio.

Tutorial de ADO

Enviado: 26 Jan 2021 21:20
por JoséQuintas
Complementando:

Compare DBF com usar planilhas Excel em disco, tem que mexer lá na planilha.
Compare SQL com usar whatsapp, é trocar mensagens com o servidor.

Muda muito?
Com certeza, porque uma coisa não tem nada a ver com a outra.

É vantagem trocar?
Já sabe que vai ter que alterar TUDO.
Pode levar 6 meses ou mais pra alterar o aplicativo.

SQL é muito melhor, o que tem que se perguntar é quais aplicativos está disposto a alterar.

Tutorial de ADO

Enviado: 26 Jan 2021 21:49
por Itamar M. Lins Jr.
Olá!
está parado no tempo há muitos anos e sabemos que vivemos a maior demanda de armazenamento de dados da história,
Não é o caso do RDD DBF/CDX/NTX do Harbour, pois tem muita coisa que não tem em outros DBF's (RDD) mais antigos.
O DBF do Harbour é atualizado para 64Bit e a capacidade em terabytes! Entre outras coisas. Até o campo MEMO é diferente.
Tem BLOB, Auto Incremento, etc...

Código: Selecionar todos

Harbour File Size Limits

    Max record size: 2^16-1 = 65535 byts ( 64 MB )
    Max number of recors : 2^32-1 = 4,294,967,295 ( 4 Bilion )
    Max .dbf file size : 2^48 = 256 TB
    Max DBT memo file size : 2 TB
    Max FPT memo file size : 256 GB
    Max SMT memo file size : 128 GB
    Max NTX file size (standard) : 4GB
    Max NTX file size (incresead ) : 4TB
    Max CDX file size : 4GB
...
*
 Harbour extended Field Types 

 Type Short
 Code Name Width (Bytes) Description
 ---- ------- ----------------- -------------------------------------------------------------------
 D Date 3, 4 or 8 Date
 M Memo 4 or 8 Memo
 + AutoInc 4 Auto increment
 = ModTime 8 Last modified date & time of this record
 ^ RowVers 8 Row version number; modification count of this record
 @ DayTime 8 Date & Time
 I Integer 1, 2, 3, 4 or 8 Signed Integer ( Width : )" },;
 T Time 4 or 8 Only time (if width is 4 ) or Date & Time (if width is 8 ) (?)
 V Variant 3, 4, 6 or more Variable type Field
 Y Currency 8 64 bit integer with implied 4 decimal
 B Double 8 Floating point / 64 bit binary
Tem muita coisa "nova" no DBF do Harbour e muitos usuários dele não sabem.

Saudações,
Itamar M. Lins Jr.

Tutorial de ADO

Enviado: 27 Jan 2021 09:51
por jelias
Itamar,

Grato por compartilhar sobre as melhorias do DBF no Harbour.

Saudações,

Júlio

Tutorial de ADO

Enviado: 27 Jan 2021 15:26
por JoséQuintas
Também dá pra usar ADS LOCAL, e usar DBF através de comandos SQL.
Fica muito melhor do que usar direto.

Usar DBF por ADS + ADO é extremamente mais rápido do que usar o DBF só pelo Harbour.

Tutorial de ADO

Enviado: 03 Mai 2022 12:49
por sasquast
Pessoal,

Primeiramente gostaria de agradecer imensamente a todos aqui, principalmente ao Sr José Quintas. Graças a vocês consegui fazer todos os passos de um programa básico, conexão, inclusão, consulta, alteração e exclusão no MySQL pelo ADO.

Agora que está tudo funcionando começam os questionamentos de performance.

Fiz um programa que basicamente lê um DBF e copia os registros para o banco no MySQL, funcionando perfeitamente, no entanto, em média, para copiar 30 mil registros demora 4 minutos.

O mesmo processo, só que copiando de um DBF para outro DBF, demora 5 segundos.

Há alguma forma de otimizar isso ? Já tentei dezenas de alternativas, todas alterando configurações do MySQL, criando indices, alterando my.ini, mas nenhuma deu resultado significativo. Acredito que a melhora, se houver, depende do fonte agora.

No momento, essa parte do código com o Insert está assim:

Código: Selecionar todos

do while &WMACRO

      @ 06,16 say str(WQTD)
      @ 07,19 say CARRO

      WCARRO      = alltrim(CARRO)
      WMCT        = alltrim(MCT)
      WLATITUDE   = alltrim(LATITUDE)
      WLONGITUDE  = alltrim(LONGITUDE)
      WDATA       = dtos(DATA)
      WHORA       = alltrim(HORA)
      WVELOC      = alltrim(str(VELOC))
      WLOCAL      = alltrim(LOCAL)

      oConexao:Execute( "INSERT INTO QTRACS (CARRO, MCT, LATITUDE, LONGITUDE, DATA, HORA, VELOC, LOCAL) VALUES ('"+WCARRO+"', '"+WMCT+"', '"+WLATITUDE+"', '"+WLONGITUDE+"', "+WDATA+", '"+WHORA+"', "+WVELOC+", '"+WLOCAL+"')")

      WQTD = WQTD + 1
      skip +1
enddo

Obrigado.