Clipper On Line • Ver Tópico - LetoDb servidor de arquivos dbf/cdx

LetoDb servidor de arquivos dbf/cdx

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

Moderador: Moderadores

 

LetoDb servidor de arquivos dbf/cdx

Mensagempor Itamar M. Lins Jr. » 05 Fev 2008 19:03

Ola!

Mais uma ferramenta para nós.

Desenvolvida pelo Russo Alexander Kresin, pai da Hwgui e um dos principais criadores do harbour.

Saudações
Itamar M. Lins Jr.

--------------------8<--------------------------------
Leto DB Server is a multiplatform database server or a database
management system, chiefly intended for client programs, written on Harbour,
be able to work with dbf/cdx files, located on a remote server.


1. Directory structure

bin/ - server executable file
doc/ - documentation
include/ - source header files
lib/ - rdd library
source/
client/ - rdd sources
common/ - some common source files
client/ - server sources
utils/
manage/ - server management utilities


2. Building binaries

2.1. Borland Win32 C compiler

An environment variable HB_PATH, which defines a path to the Harbour
directory, must be set before compiling. This can be done, for example,
by adding a line in a make_b32.bat:

SET HB_PATH = c:\harbour

If you use xHarbour, uncomment a line 'XHARBOUR = yes' in makefile.bc.
Then run the make_b32.bat and you will get server executable file letodb.exe in a bin/
directory and rdd library rddleto.lib in a lib/ directory.

2.2. Linux GNU C compiler

An environment variable HB_ROOT, which defines a path to the Harbour
directory, must be set before compiling. Or just change the value of HRB_DIR
in the Makefile.linux.

Then run the make_linux.sh and you will get server executable file letodb in a bin/
directory and rdd library librddleto.a in a lib/ directory.

3. Running and stopping server

Just run it:

letodb.exe ( under Windows )
./letodb ( under Linux )

To shutdown the server, run the same executable with a 'stop' parameter:

letodb.exe stop ( under Windows )
./letodb stop ( under Linux )

4. Server configuration

You may provide configuration file letodb.ini if you isn't satisfied with
default parameters values. Currently following parameters exists ( default
values are designated ):

Port = 2812 - server port number
DataPath = - path to a data directory on a server
Logfile = "letodb.log" - path and name of a log file

In Windows environment the letodb.ini must be placed in a directory, from
where server is started.
In Linux the program looks for it in the directory from where the server
is started and, if unsuccessfully, in the /etc directory.

5. Connecting to the server from client programs.

To be able to connect to the server you need to link the rddleto.lib (Windows)
or librddleto.a (Linux) to your aplication and add at start of a main source file
two lines:

REQUEST LETO
RDDSETDEFAULT( "LETO" )

To open a dbf file on a server, you need to write in a SET PATH TO
statement or in the USE command directly a path to the server in a standard
form //ip_address:port/data_path/file_name.

If a 'DataPath' parameter of a server configuration file is set to a non
empty value, you need to designate not the full path to a file on the server,
but only a relative ( relatively the 'DataPath' ).
For example, if the you need to open a file test.dbf, which is located on
a server 192.168.5.22 in a directory /data/mydir and the 'DataPath' parameter
value ( of a letodb.ini server configuration file ) is '/data', the syntax
will be the following:

USE "//192.168.5.22:2812/mydir/test"

6. Management utility.

There are two management utilities, GUI and console, the sources are in
utils/manage directory.

GUI utility, manage.prg, is made with the HwGUI library. If you have HwGUI,
just write in the line 'set HWGUI_INSTALL=' in utils/manage/bld.bat a path
to your HwGUI directory and run the bld.bat, it will build manage.exe for you.

For those, who doesn't use HwGUI, there is a console mode utility,
console.prg. Build a console.exe with a make/bat files, which you use to build
Harbour single-file programs, you just need to add rddleto.lib to the libraries
list. Run the console.exe with a server name or ip and port as a parameter:

console.exe server_name:nPort
console.exe ip_address:nPort

The server_name and ip_address in a command line must be without leading
slashes ( '//' ), because Clipper/Harbour interprets them in a special way.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Mensagempor sygecom » 05 Fev 2008 20:50

Já venho acompanhando ela faz 8 dias, e parece que com o xharbour 1.0.0 ainda tem alguns problema , mas com o xharbour da CVS esta legal.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

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

Mensagempor rodrmigu » 06 Fev 2008 10:37

Isso é o caminho, achei bem legal.

Eu começei um projeto como este mas para postgres e oracle feito em xmlrpc, mas ficou muito lento por causa do protocolo http e xml, ou seja, pra pegar 1 byte, eu acabava recebendo cerca de 512 bytes so de cabeçalho e tags xml.

Quem sabe quando tiver mais tempo eu finalize e faça algumas mudanças em questão ao protocolo, criar um próprio, talvez compactar os dados, etc.

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Itamar M. Lins Jr. » 08 Fev 2008 08:47

rodrmigu escreveu:Isso é o caminho, achei bem legal.

[]'s
Rodrigo


Porque não se junta a eles.
Acabei de testar e já esta funcionando.
Fiz um programinha simples

-----------
Requeste leto
function main
rddsetdefault('leto')
use "//192.168.0.1:2812/letodb/bin/estoque.dbf"
browse()
-----------------

Funciona uma beleza mesmo.
E o gerenciador ainda mostra do lado do servidor o(s) dbf(s) abertos.
Igual a rede Netware da Novell :-) é mole?
Só mostra mas não deixa derrubar :-( mais na frente quem sabe?

Saudações
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Mensagempor hrodrigom » 08 Fev 2008 09:03

Bom dia companheiros,

Quem ja testou, ou souber poderia responder?

1- Já está maduro o suficiente para colocar em produção?
2- Como funciona a conexão Cliente/servidor?
3- Qual é a segurança? encriptação? senha, etc?
4- Qual é o trafego gerado em comparação com um compartilhamento de arquivos?
5- Qual é o futuro desta ferramenta?, será que vamos ter sintaxe SQL algum dia?
6- Será que um set filter já é feito do lado server ou cliente?

Gostei da ideia deste rdd, espero em breve poder estar usando com meus dbfs que persistem.

Saludos
Avatar de usuário

hrodrigom
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 63
Data de registro: 10 Nov 2007 07:04
Cidade/Estado: Santa Rita - Paraguay
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Itamar M. Lins Jr. » 08 Fev 2008 09:14

hrodrigom escreveu:Bom dia companheiros,

Quem ja testou, ou souber poderia responder?

1- Já está maduro o suficiente para colocar em produção?
2- Como funciona a conexão Cliente/servidor?
3- Qual é a segurança? encriptação? senha, etc?
4- Qual é o trafego gerado em comparação com um compartilhamento de arquivos?
5- Qual é o futuro desta ferramenta?, será que vamos ter sintaxe SQL algum dia?
6- Será que um set filter já é feito do lado server ou cliente?

Gostei da ideia deste rdd, espero em breve poder estar usando com meus dbfs que persistem.

Saludos


Maduro ?
Tem alguns dias que foi criado.
Sobe encriptação nao sei responder.
O funcionamento está descrito no 1 topico.
O trafego gerado é menor, pois são requisições ao daemon(servidor) que roda do lado servidor. Abri um arquivo de estoque com 2000 itens o rodou satisfatoriamente.
Sobre o futuro só Deus sabe. Qual é o futuro de qualquer ferramenta de programação ?
O set filter é do lado servidor. É só olhar os fontes. Alias qualquer comando tem que ser do lado servidor, (pack,zap,etc), senão não é cliente/servidor.

Saudações
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Mensagempor rodrmigu » 08 Fev 2008 11:55

hrodrigom escreveu:Bom dia companheiros,
1- Já está maduro o suficiente para colocar em produção?
2- Como funciona a conexão Cliente/servidor?
3- Qual é a segurança? encriptação? senha, etc?
4- Qual é o trafego gerado em comparação com um compartilhamento de arquivos?
5- Qual é o futuro desta ferramenta?, será que vamos ter sintaxe SQL algum dia?
6- Será que um set filter já é feito do lado server ou cliente?


1) Pelo que parece, o Kresin já está usando isso há algum tempo em produção e foram adicionados novos recursos, etc.

2) Através de socket e threads

3) Acho que ainda não tem, mas isso é bem fácil de se implementar.

4) Eu acho que seria o mesmo do que numa outra rede mapeada, pois pelo jeito o que o letodb faz é quando um DBSkip() acontece no cliente, ele faz a requisição no server que retorna o registro, ou seja, eu acho que é quase o mesmo. Quem sabe se eles implementarem um esquema de compactar os dados, aí fica bem mais rápido.

5) Eu acho que não, pois implementar um rddsql é muito mais complexo, não ao que se refere ao sql parse, isso acho que é até façil, o mais complicado é fazer que o banco simule a navegação que temos em .dbf

6) Conforme explicado pelo Itamar, é feito no server. Ou seja, basicamente, tudo que é feito no cliente é repassado lá para o server, sendo assim, muito pouco é feito no cliente que fica a cargo mesmo de se comunicar com o server

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor rodrmigu » 08 Fev 2008 12:00

Apenas uma correção

2) Através de sockets e process.

Quando um cliente se conecta no server, o servidor dispara um fork gerando um novo processo, assim a sua conexao fica separada e se comunica apenas com aquele process, por isso é que é possível setar os filters, etc.

Uma desvantagem que eu vejo, se vc tive uma aplicação que abre 20 dbfs, com 10 estações fazendo isso, vc terá no servidor 200 processos. Por um outro lado, fica fácil balancear a carga, basta colocar um outro hardware e direcionar parte das conexoes para este outro servidor.

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Itamar M. Lins Jr. » 08 Fev 2008 12:33

4) Eu acho que seria o mesmo do que numa outra rede mapeada, pois pelo jeito o que o letodb faz é quando um DBSkip() acontece no cliente, ele faz a requisição no server que retorna o registro, ou seja, eu acho que é quase o mesmo. Quem sabe se eles implementarem um esquema de compactar os dados, aí fica bem mais rápido.


Pela lógica tem que ser mais rápido alias muito mais rápido do que rodar com a rede mapeada, porque não há o trafego de dados para lá e para cá.
Quando fazemos o pack ou index numa rede mapeada, TODO o banco de dados vai para estação sofre a ação (pack,index,etc) e depois retorna para o servidor. (É quando o amigo bur...digo usuário desliga a estação... ai babau base de dados)
O mapeamento é o responsável por corromper dados/indices. Coisa muito mais difícil de acontecer usando arquitetura cliente/servidor.
Esse projeto pode vim a deixar de "cabelos em pé" o pessoal do ADS.
Se o Przmek for um dos desenvolvedores podemos esperar coisas fantasticas mesmo.

Saudações
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Mensagempor rodrmigu » 08 Fev 2008 14:34

Itamar,

Então corrigindo, quis dizer que no quesito navegação dos registros deve ser a mesma. Já nestes itens que vc mencionou, com certeza será muito mais rápido e confiável.

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor rochinha » 09 Fev 2008 23:32

Amiguinhos

Este projeto parece em muito com um antigo projeto de colocar .DBFs em modo cliente servidor chamado Fortress(alguem ja ouviu falar?). Se não me engano ele era comercializado pela mesma empresa que comercializava programas para xBase, a GrafXSoft.com.

Só de ver o que vcs postaram aqui já vi que é uma boa opção, mas depende de fatores que envolvem se se usa LetoDB para um cliente que só que cadastrar e controlar seu pequeno estoque ou uma empresa com filiais espalhadas pelo estado ou pais.

Tudo que eu veja em relação ao mundo Harbour vejo com bons olhos, mas no seu devido tempo e dependendo do que possamos passar em resposta ao que esta sendo criado, irá evoluir ou ser mais uma promessa não cumprida.

Mas vou colocar a mão na massa e ver que bicho dá.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Mensagempor alaminojunior » 10 Fev 2008 11:20

E esse trem pode ser compilado com xHarbour 0.99.70 ?
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar de usuário

alaminojunior
Colaborador

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

Mensagempor sygecom » 11 Fev 2008 18:55

alaminojunior, pelo que foi postado no forum da LETODB ele apresenta algumas imcompatibilidade com xharbour 1.0.0 bem provalvel que com a 9970 tmb. de guru, mas com a versão da CVS, vai tudo certo, inclusive teste aqui por acesso remoto, e funcinou legal....
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

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




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


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
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro