Clipper On Line • Ver Tópico - Um Banco de Dados fácil de usar e de migrar

Um Banco de Dados fácil de usar e de migrar

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Um Banco de Dados fácil de usar e de migrar

Mensagempor lugab » 30 Set 2011 22:44

Ola amigos forenses,

Muitos de nós ainda usamos os velhos DBFs mesmo depois de recompilarmos do clipper para (x)harbour, apenas por não fazermos a mínima idéia de como usar outros bancos de dados + seguros e + modernos.

Vcs , felizardos q já conseguiram migrar suas bases de dados, não sabem quanto desconforto, apreensão, receio e constrangimento passamos, por não podermos também fazer isso.

E antes que pareçamos preguiçosos, atraz de moleza, lembramos que todo o nosso poblema reside no fato de não existir nenhuma bibiolgrafia paga ou grátiis, traduzida para o português , intitulada: Migrando de DBFS para Mysql, Oracle, ou Progress ou sei la qual dos tantos SGBDs aqui falados..

Sequer sabemos qual a filosofia de trabalho desses sgbds, de como armazenamos dados(replace), como os classifcamos (index) e recuperamos pra exibir e manipular, e, naturalmente, tb nada sabemos do que devemos alterar nas linas de comando dos nossos fontes.

Por outro lado, sabemos que vcs que já conseguiram, certamente foram ajudados por outras pessoas, ou de graça ou pagando pela ajuda, na forma de cursos, compras de manuais, orinetações, etc

Finalmento, a questão q trago é a seguinte:


Será que alguns de vcs seriam capazes de eleger dentre os tantos SGBDs aqui falados, o + fácil de usar, gerenciar, manipular e de migrar e tb mostrar-nos como usá-lo ?.

Será também possível que venham a abrir um tópico visando nos mostrar, pelo menos o bê-a-bá da filosofia de funcionamento desse SGBD, dos comandos para criar o BD, seus campos, como manipular externamente, tal qual o velho DBU, como armazenar os dados em seus campos e recuperá-los para variáveis de memória, ficar suas chaves de classificação e exibí-los na tela ?



Num esperançoso aguardo,

Luis Gabriel
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 860
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 37 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor sygecom » 03 Out 2011 13:01

Olá Gabriel,

Não existe uma pirula pronta que você engole e tudo resolve-se, o jeito é você colocar a mão na massa e testar tudo que tiver ao seu alcance, no meu caso testei Mysql, Mssql, Oracle, Firebird e Postgresql e optei pelo Postgresql em conjunto com SQLRDD e não estou arrependido, mas veja bem foi para a minha situação, cada um sabe o que é melhor para sim, então veja o que melhor lhe atende, e mete a cara sem medo, e independente da sua escolha conte com a ajuda do fórum. Boa sorte...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6637
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 75 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor fladimir » 03 Out 2011 14:09

Migrei agora cerca de 15 dias de dbf pra Postgres SQL e não estou arrependido até o presente, inúmeros benfícios, estabilidade, não preciso mais TS, acabou ficar indexando, e etc, etc...

No meu caso tb testei MySQL e o Firebird, mas optei em ir de Postgres devido pesquisas feitas, segue abaixo link falando algo básico sobre o PostGres para vossa análise...

http://www.slideshare.net/adorepump/postgresql-o-melhor-banco-de-dados-universo

Tentei ir de SQLLIB, mas não consegui, esbarrei em alguns questões minhas mesmo de assimilar, nada contra a Ferramenta ou quem usa.

Consegui algo com a Contrib do Harbour, mas ai tinha q reescrever td em comandos SQL...

Então depois de muito peneirar, achei mais rápido, prático e de melhor assimilação ir de SQLRDD (não é free), mas valeu o investimento.

Logicamente q para tirar maior proveito dos recursos do SGBD escolhido, independente de qual for, se faz necessário posteriormente ou antes até, dependendo cada necessidade, entender como funcionam os SGBDs, Triggers, etc etc,

Eu estou nessa segunda fase, como já migrei meu sistema rapidamente e já resolvi um monte de pormenores (um deles q pega é a indexação, usar na net, etc) agora estou tendo tempo para ir estudando melhor o SGBD q escolhi (Postgres), não desmerecendo os outros, como o nosso colega Leo comentou cada um deve avaliar e chegar as suas próprias conclusões.

Qto a material para estudo sobre o q eu escolhi foi via Google mesmo, pesquisando tipo "Dicas PostGres", "Tutorial PostGres", etc etc.

Tenho um acervo razoável q fui fazendo download e passei este domingo filtrando, separando os materiais dando uma passada e lendo os índices e classificando conforme aparentava ser de melhor aprendizado e didática.

Sucesso!!!
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


DESKTOP CONSOLE Harbour | MinGW | DBF | CDX | FastReport | MySQL
DESKTOP VISUAL... Harbour | MinGW | Xailer | MariaDB Nativo | FastReport
MOBILE Android/IOS e WEB - Windev Mobile 22
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2357
Data de registro: 15 Nov 2006 19:21
Curtiu: 25 vezes
Mens.Curtidas: 135 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor alaminojunior » 04 Out 2011 01:41

lugab escreveu:Será que alguns de vcs seriam capazes de eleger dentre os tantos SGBDs aqui falados, o + fácil de usar, gerenciar, manipular e de migrar e tb mostrar-nos como usá-lo ?.
Será também possível que venham a abrir um tópico visando nos mostrar, pelo menos o bê-a-bá da filosofia de funcionamento desse SGBD, dos comandos para criar o BD, seus campos, como manipular externamente, tal qual o velho DBU, como armazenar os dados em seus campos e recuperá-los para variáveis de memória, ficar suas chaves de classificação e exibí-los na tela ?


Pessoalmente, me sinto bem a vontade com o MySQL. Andei fazendo alguns testes com PostgreSQL e achei interessante também, e segundo os colegas mais experientes é a melhor opção. Ainda não coloquei o PostgreSQL em nenhum cliente pela falta de tempo em testar (dominar o básico) algumas coisas como backup e etc ... Coisa que com o MySQL como tive mais tempo na época, foi possível explorar um pouco mais.

Se optar por utilizar uma RDD como SQLRDD, SQLLIB ou Mediator, irá apenas incluir no prg principal as funções de conexão com o banco e depois é só utilizar a sintaxe DBFCDX mesmo. É o modo mais fácil e rápido. Até esse ponto, talvez a única vantagem será a integridade e segurança dos dados, e também não será mais necessário ficar reindexando de tempos em tempos. Indexa a primeira vez e depois somente quando incluir alguma chave nova em algum índice.

Após se sentir com os pés novamente no chão, é hora de passar a usar instruções SQL, que são mais rápidas e mais versáteis.

Sou meio limitado para falar da filosofia destes bancos, mas comparando é o seguinte:
Quando vc abre uma tabela DBF (hospedado num servidor da rede local) a partir de um outro pc na rede, toda a estrutura precisa passear pela rede até o pc requisitante, causando um tráfego na rede proporcional ao tamanho desta tabela. Há quem diga que o DBF não é tão lento, e realmente não é, mas ...
Agora com um banco de dados SQL por exemplo, o tráfego na rede será apenas e tão somente dos registros que o pc requisitante 'requisitou' ! Salientando que isso será possível quando fizermos uso das instruções SQL, dependendo da implementação, não alcançaremos todo o potencial oferecido.

Resumindo mais um pouco ... em DBF quando queremos abrir uma tabela (arquivo DBF) com digamos 50 campos, tudo isso precisa entrar por um lado do cano e sair do outro. Mas será que precisamos realmente dos 50 campos para determinada tarefa ??? Talvez precisemos apenas de 3 campos ... ! É nessa hora que o SQL entra em campo, permitindo que vc faça um select (por exemplo) e traga apenas os campos necessários para a tarefa. Isso é só o começo da história.

Recomendo dar uma olhada na página da SQLRDD http://www.xharbour.com.br/sqlrdd.html. Lá tem informações de como iniciar.
Dê o pontapé inicial e conforme forem surgindo as dúvidas, poste aqui que com certeza não irá faltar apoio.

Boa sorte.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar de usuário

alaminojunior
Colaborador

Colaborador
 
Mensagens: 1660
Data de registro: 16 Dez 2005 20:26
Cidade/Estado: Ubatuba - SP
Curtiu: 16 vezes
Mens.Curtidas: 9 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor lugab » 04 Out 2011 15:42

Muito bom, pessoal, ta esclarecedor..

Conclui que a forma menos difícl é :

1- escolher algum DBFSQL dentre Postgres, MySQL, Firebird, MS SQL Server, IBM DB2, Sybase, Informix, Caché, etc.

Então, a título de aprendizado, qual deles tem versão free e manual em português ?

2- aprender a usar geral esse banco de dados;

3- adquirir a SQLRDD e migrar os DBFs para a nova base;

Ou seja, uma coisa demorada e nada fácil de fazer, se não tiver apoio técnico e bibliogáfico....

Gabriel
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 860
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 37 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor alaminojunior » 04 Out 2011 17:24

lugab escreveu:Então, a título de aprendizado, qual deles tem versão free e manual em português ?

2- aprender a usar geral esse banco de dados;

3- adquirir a SQLRDD e migrar os DBFs para a nova base;

Ou seja, uma coisa demorada e nada fácil de fazer, se não tiver apoio técnico e bibliogáfico....


O MySQL pode ser usado sem limitações, porém lá nas letrinhas miúdas vc não podería comercializar junto com o seu software.
O PostgreSQL é totalmente free.

Precisa dar início, e com isso vai ver que não é tão demorado assim e muito menos, difícil. É relativamente fácil a migração.
Mas é aquela história: Uma grande viagem começa sempre com o primeiro passo.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar de usuário

alaminojunior
Colaborador

Colaborador
 
Mensagens: 1660
Data de registro: 16 Dez 2005 20:26
Cidade/Estado: Ubatuba - SP
Curtiu: 16 vezes
Mens.Curtidas: 9 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor athayde » 04 Out 2011 22:24

deem preferencia para comunicação nativa
podem usar os rdds da vida mas va aos poucos migrando para comandos sql diretos, assim vc ja se prepara para outras liguagens
uso mysql nativo com hbmysql, uma dupla fantastica, e aprendendo a programar o banco de dados com os relacionamentos, indices, triggers e sp's vc vai ver o ganho que vc vai ter
recomento mysql, postgre, oracle (tem versao free), mssql server, firebird só se for local ou em rede cabeada, para wireless ou vpn/internet fica muito ruim pelo protocolo não ser tão legal, prometem melhorar para versao 3

[]s
Fernando
projeto hbNFe NFe para [x]Harbour venha fazer parte do time http://www.pctoledo.com.br/forum/viewforum.php?f=54
Harbour 3.2 + Hwgui (HBIDE)
athayde
Colaborador

Colaborador
 
Mensagens: 167
Data de registro: 14 Fev 2007 15:54
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor lugab » 05 Out 2011 20:55

Então, pessoal, eu, realmente, estou muito grato por tanta ajuda...

E pra fechar com chave de ouro, será q Vcs podem postar os links pra baixar o postgresql e o oracle, que vcs estão usando, versao free, claro.

O objetivo é só estudar os mesmos

To grato mesmo

Gabriel
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 860
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 37 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor fladimir » 05 Out 2011 23:53

Vou postar do PostgreSQL segue:

http://www.enterprisedb.com/products-services-training/pgdownload#windows

Eu uso o 9.0.x

O Oracle não conheço, ficamos no aguardo de algum colega postar o link do mesmo.

Sds.

Sucesso!!!
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


DESKTOP CONSOLE Harbour | MinGW | DBF | CDX | FastReport | MySQL
DESKTOP VISUAL... Harbour | MinGW | Xailer | MariaDB Nativo | FastReport
MOBILE Android/IOS e WEB - Windev Mobile 22
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2357
Data de registro: 15 Nov 2006 19:21
Curtiu: 25 vezes
Mens.Curtidas: 135 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor lugab » 06 Out 2011 01:12

Obrigado, Fladimir.

Aproveito e posto, a seguir, link para introdução ao PostgreSQL, caso algum outro colega deseje aprender: http://pgdocptbr.sourceforge.net/pg80/tutorial.html
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 860
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 37 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor alxsts » 06 Out 2011 15:01

Olá!

Um ótimo banco de dados para estudar e aprender é o MS Access. E quase toda máquina onde tem o MS Office tem Access instalado.

Outras ótimas opções grátis:
MS SQL Server 2008 R2 Express (Versões para Windows 32 e 64 bits).
Oracle Database 11 Express Edition (versões para Windows e Linux, precisa se cadastrar na Oracle)

Você encontrará material para estudo, em português, no site Apostilando.

Reserve um bom tempo para estudar, dedique-se e saia de vez dos DBF's. Boa sorte!
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2189
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 150 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor pauloa1 » 07 Out 2011 09:15

Aproveitando a lista, a tirar uma dúvia.

Em rede. sqlrdd com BD x dbf.

Com dbf se somente abrir a tabela exemplo:
Tabela clientes 100.000 registros

Use clientes
set index tal
seek tal
if found()...

neste caso pela rede com dbf ele levou os 100.000 registros

com sqlrdd
Use clientes via sqlrdd
index tal
seek tal
if found()...

Ele também trouxe os 100.000 registros?
Como com sqlrdd procede ao apenas abrir a tabela, sem ainda usar algum comando, seek, set filter etc...?
Com sqlrdd ele só manda pela rede depois que usar algum comando tipo seek, set filter etc..?

Ou somente vai levar a seleção pela rede usando comandos sql, query etc.. ?

Paulo
pauloa1
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 189
Data de registro: 25 Jun 2008 14:57
Cidade/Estado: Augusto Pestana-RS
Curtiu: 1 vez
Mens.Curtidas: 5 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor asimoes » 07 Out 2011 11:02

Carga no Oracle usando conexão ADO

FUNCTION Carga_ORACLE()
Local Contador := 0
oCon := CreateObject( "AdoDB.Connection" ) // Usando ADO
oCon:ConnectionString := "Provider=OraOLEDB.Oracle;Data Source=ds01;User ID=aluno;Password=aluno;PLSQLRSet=1;"
TRY
   oCon:Open()
   TRY
      TheQuery:="DROP TABLE CARGATESTE"
      Rs:=oCon:Execute( TheQuery )
      Rs:=Nil
   CATCH oErr
   END
   TRY
      TheQuery:="CREATE TABLE CARGATESTE ( CHAVE1 varchar(5), CHAVE2 varchar(5), CHAVE3 varchar(5), CHAVE4 varchar(5) )"
      Rs:=oCon:Execute( TheQuery ) // Cria a tabela se nÆo existe
      Rs:=Nil
   CATCH oErr
      TONE(800,4)
      Alert("NÆo foi possivel criar a tabela, pode ser que j  exista.",{"Ok"})
      CLS
   END
   TheQuery := "DELETE FROM CARGATESTE"
   Rs := oCon:Execute( TheQuery )
   Rs := NIL
   cSql:=""
   nSeconds:=Seconds() //Para mensurar o tempo
   FOR I:=1 TO 99999
      cSql:="INSERT INTO CARGATESTE (CHAVE1,CHAVE2,CHAVE3,CHAVE4) VALUES ("+StrZero(I,5)+","+StrZero(I,5)+","+StrZero(I,5)+","+StrZero(I,5)+")"
      Rs:=oCon:Execute(cSql)
      @10,05 SAY "TEMPO "+TsTring(Seconds()-nSeconds)+" "+StrZero(I,5)
   NEXT
   Alert("Concluido.",{"Ok"})
   oCon:Close()
CATCH oErr
   TONE(800,4)
   TONE(800,4)
   Alert(oErr:Operation + " ERROR",{"Ok"})
END
oCon := NIL
RETURN NIL
►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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4159
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 292 vezes
Mens.Curtidas: 208 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor sygecom » 07 Out 2011 11:05

Olá Paulo,
O SQLRDD não traz não, ele abre apenas com LIMIT 12(no meu aqui faz isso) para trazer apenas pouco de registro, quando da o DBSEEK ele executa um comando SQL usando LIMIT 1, então é no minimo 10x mais rápido que o DBF.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6637
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 75 vezes

Um Banco de Dados fácil de usar e de migrar

Mensagempor asimoes » 07 Out 2011 11:25

Carga no DBF a partir do ORACLE usando conexão ADO
FUNCTION Carga_DBF()
LOCAL oCon, rs, oErr
TRY
    oCon := CreateObject( "AdoDB.Connection" ) // Usando ADO
    oCon:ConnectionString := "Provider=OraOLEDB.Oracle;Data Source=ds01;User ID=aluno;Password=aluno;PLSQLRSet=1;"
    oCon:Open()
    rs := CreateObject( "ADODB.Recordset" )
    rs:Open( "CARGATESTE", oCon, 0, 1, 2 )
    SELECT A
    USE CARGADBF New Alias CargaDBF
    GO TOP
    TheDBF := dbstruct()     
     DO WHILE ! rs:Eof()
        DbAppend()
        FOR X:=0 TO Len(TheDBF) - 1
          TheField := TheDBF[X+1,1]
          DO CASE
          CASE TheDBF[X+1,2] = "N"
             REPLACE &TheField WITH rs:Fields( X ):Value
          CASE TheDBF[X+1,2] = "D"     
             IF ! (rs:Fields( X ):Value = Nil)
                REPLACE &TheField WITH CTOD(Alltrim(str(Day(rs:Fields( X ):Value))) + "." + Alltrim(str(Month(rs:Fields( X ):Value))) + "." + Alltrim(str(Year(rs:Fields( X ):Value))))
             ENDIF
          CASE TheDBF[X+1,2] = "L"
             IF rs:Fields( X ):Value = "0"
                REPLACE &TheField WITH .F.
             ELSE   
                REPLACE &TheField WITH .T.
             ENDIF
          OTHERWISE             
             IF ! (rs:Fields( X ):Value = Nil)
                REPLACE &TheField WITH rs:Fields( X ):Value
             ENDIF
          ENDCASE
       NEXT
       rs:MoveNext()
    ENDDO
    DBCOMMIT()
    DBCLOSEALL()
    rs:Close()
    rs:=Nil
    oCon:Close()
    oCon:=Nil
    TONE(800,4)
    Alert("A tabela foi carregada com sucesso.",{"Ok"})
CATCH oErr
    TONE(800,4)
    TONE(800,4)
    Alert(oErr:Operation + " ERROR",{"Ok"})
END
RETURN NIL
►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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4159
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 292 vezes
Mens.Curtidas: 208 vezes

Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro