Few words about Vserver 2.4 - point 1

Ruslan Zasukhin sunshine at public.kherson.ua
Thu Aug 3 15:59:12 CDT 2006


Hi All,

I want describe a little what happens in background.

* as I have told we have automate process of sources generation.
    
    Now each function that we have in public C++ interface
    is auto-generated in Vclient and Vserver sources.

    On default vclient STUB object send remote call to vserver PROXY object.

    This idea have allow us to get VCLIENT which work absolutely the same
    way as KERNEL do.

    Problem with 2.3 Vclient was that on client side was repeated a lots of
    logic of kernel, and often was mistakes...just because kernel is big,
    logic is complex, clients have data members to keep state,
    this did require synchronize state to server objects...

    I.e. We did have in fact 2 branches of code which did try
    to do similar things.

    Now, again, Vclient, on first level, - just delegate function call to
    Server objects.

    
* But it is obvious that if for SQL way this is quite acceptable way,
for API way this cause big network overhead. So second level of VCLIENT and
VSERVER try optimize and compensate first level.

How we do this.

We again plug into VCLient some logic, but only fundamental logic which
unlikely will be ever changed.

For example, vclient object VTAble on second level know its fields, links,
and database. I.e. Vclient objects know hierarchy of objects.

This fact have allow us avoid send to server requests for such methods as
    Vtable.Field(i)

On the other hand this again bring PROBLEM - how to synchronize client
objects to server objects, for example in case some user A have issue DROP
FIELD, how propagate this change to all other clients that work with the
same table. 

For now we have workaround -- db.get_Table() method always force load from
server full structure description of a table.

Important is that we already see way how to solve this in much better and
transparent for user way. We plan to implement this solution for 2.5
release. I will describe this solution in next letter.


P.S. About issue of slow API method Vtable.AddRecord() that Russ have found.
I have to see that after AddRecord() in server log present set of
Vfield.get_DefaultValue. The more fields in table the more such commands. We
need simply override this method on second level to avoid request to server.
Sorry, we have overlook this moment. We will try fix it in nearest time.


-- 
Best regards,

Ruslan Zasukhin
VP Engineering and New Technology
Paradigma Software, Inc

Valentina - Joining Worlds of Information
http://www.paradigmasoft.com

[I feel the need: the need for speed]




More information about the Valentina mailing list