Not even contrib IMO. Server code wasn't even published,
there's just a Windows 32-bit server executable uploaded
to the repo with a 2 users limit.
only temporary, is not decided yet.
The rest is copy paste from letodb code, existing RDDs
and file handling routines with modifications.
is not a copy of letodb, letodb is an rdd, and File Remote server
only changes API hb_file* by hb_filenet* for existing rdds.
AFAICS low level file handling routines were replaced
with one which work through the network directly, essentially
creating a replacement for networked file system protocols,
like SMB. As such, it will have all the problems of file
server based db access. F.e. whole index handling seems to
be done through the network (not on the server side), so it
won't make indexes any more bullet proof, or substantially
reduce network traffic.
OrdCreate has been changed to decide where is the index local or
remote (obiously local for temporary indexes)
Remote file system, removes concurrence problems and in this case
works more efficient than local ones.
this are the tests:
LOCAL LOCAL LOCAL REMOTE REMOTE REMOTE
v.2 DBFCDX BMDBFCDX REDBFCDX DBFCDX BMDBFCDX REDBFCDX
single user 7.34 4.16 40.97 859.80 519.56 214.69 simulated
concurrent forced by system (W-2000)
single user 38.90 18.61 11.45 158.00 non
concurrent (W-XP)
multi user 751.00 399.50 166.30 real
concurrent
the server will be run under linux too, but not tested yet.
3 times faster than other RDDS when 2 or more client open the same remote table
at the same time.
the test is:
ANNOUNCE RDDSYS
REQUEST DBFCDX,REDBFCDX,BMDBFCDX
FUNCTION MAIN( cRdd, cIP )
LOCAL n,t,m,p,J, pConn
IF Empty( cRdd )
cRdd := "REDBFCDX"
ENDIF
IF Empty( cIP )
cIP := "127.0.0.1"
ELSE
cIP := AllTrim( cIP )
ENDIF
SET DATE FORMAT "DD/MM/YYYY"
RDDSETDEFAULT( cRdd )
SET DELETED ON
SET AUTOPEN ON
IF cRdd == 'REDBFCDX'
? "CONECTED TO IP: " + cIP + ":2813"
pConn := NET_OPENCONNECTION( cIP, 2813 )
IF Empty( pConn )
? "SERVER DON'T WORK"
RETURN
END
ENDIF
IF ! HB_DBExists( "TMPTEST" )
? "CREATE TABLE"
DBCREATE( "TMPTEST", { { "A1", "C", 10, 0 } }, cRdd )
ENDIF
USE TMPTEST SHARED NEW ALIAS "ONE" VIA ( cRdd )
IF LastRec() < 50000
? "Adding 50000 Rregisters"
p := seconds()
FOR n := 1 TO 50000
APPEND BLANK
REPLACE FIELD->A1 WITH "0123456789"
NEXT
?? " -> " + AllTrim( Str( seconds() - p ) ) + " seconds"
ENDIF
SET OPTIMIZE ON
IF HB_DBExists( "TMPTEST.CDX" )
OrdSetFocus( "TG1" )
ELSE
INDEX ON FIELD->A1 TAG tg1 TO ("TMPTEST.CDX")
ENDIF
? "Index active : " + ORDKEY()
? "Filtering by : " + "RecNo() > 100 .AND. RecNo() < 200"
p := seconds()
DbSetFilter( {|| RecNo() > 100 .AND. RecNo() < 200 }, "RecNo() > 100 .AND. RecNo()
< 200" )
?? " -> " + AllTrim( Str( seconds() - p ) ) + " seconds"
WAIT
p := t := seconds()
FOR M := 1 TO 10
? "PASO " + AllTrim( str( M ) )
DBGOTOP()
FOR n := 1 TO 50000
J := ORDKEYNO()
J := ORDKEYCOUNT()
DBSKIP()
NEXT
?? " en " + AllTrim( Str( seconds() - p ) ) + " seconds"
p := seconds()
NEXT
DBCLOSEALL()
NET_CLOSECONNECTION( pConn )
? " TOTAL " + AllTrim( Str( seconds() - t ) ) + " seconds"
WAIT
RETURN NIL
Best regards,
Miguel Angel Marchuet
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de
virus 4268 (20090722) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour