[OmniBase] Support for distributed computation

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[OmniBase] Support for distributed computation

kuo-2
Ominibase is good but so far, I'm only using it inside an homogeneous
intranet environment ( in the same Domain segment,  queried using
virtual disk name , not ip address) via its supported default.
    I need it be run as a server independently and the database could
be accessed via internet tcp/ip protocol, or support distributed
ORB-like object capacity.
   I tried using some free goodies  for the distributed computation
request but feel quite inconvenient ( there are some problems in
resolving client address, I'm workig on it).
   I felt it would be a great achievement if OA could provide such a
working standard or Omnibase has its own solution.




Best regards.

Tk Kuo


Reply | Threaded
Open this post in threaded view
|

Re: [OmniBase] Support for distributed computation

Bruno Buzzi Brasesco
Hi,

You can use OmniBase + Swazoo Server.

If it possible you can distribute your respository with ODBContainers, but
you must have a configurated LAN.

Regards Bruno

"kuo" <[hidden email]> escribió en el mensaje
news:[hidden email]...

> Ominibase is good but so far, I'm only using it inside an homogeneous
> intranet environment ( in the same Domain segment,  queried using
> virtual disk name , not ip address) via its supported default.
>     I need it be run as a server independently and the database could
> be accessed via internet tcp/ip protocol, or support distributed
> ORB-like object capacity.
>    I tried using some free goodies  for the distributed computation
> request but feel quite inconvenient ( there are some problems in
> resolving client address, I'm workig on it).
>    I felt it would be a great achievement if OA could provide such a
> working standard or Omnibase has its own solution.
>
>
>
>
> Best regards.
>
> Tk Kuo


Reply | Threaded
Open this post in threaded view
|

Re: [OmniBase] Support for distributed computation

kuo-2
On Thu, 29 Jul 2004 11:52:45 -0300, in comp.lang.smalltalk.dolphin you
wrote:

>Hi,
>
>You can use OmniBase + Swazoo Server.
>
>If it possible you can distribute your respository with ODBContainers, but
>you must have a configurated LAN.

Thanks for your  hint.
   I study the related codes through ODBContainers and find that they
all rely on ODBFileStream for file-stream manipulations, which are
tightly bound with Windows OS kernel's file system working, i.e. they
all need conventional dirname/repository pathname stored as instance
variables as default, not "ip address" that I wanted.

   I supposed initially that I can redirect the ODBFileStream to
SZReadWriteSocketStream but it is not such an easy case that I could
handle ( **try looking inside ODBFileStream class, there are OS call
related stuffs everywhere that could not be replaced by
SZReadWriteSocketStream ).
 
   I don't have clear concepts about ODBContainers's function in
OmniBase and its utility, I just use plain OminBase openOn:, maybe you
can give me more help.

  **My point is that could OmniBase be tuned to function at such a
large scale under mature multi-way server-client ( GemBuilder, Object
space, cached pages, choices of DLL, RMI calls, etc)  artitectures as
GemStone/S does** .

Best regards

kuo


Reply | Threaded
Open this post in threaded view
|

Re: [OmniBase] Support for distributed computation

Chris Uppal-3
kuo wrote:

>    I supposed initially that I can redirect the ODBFileStream to
> SZReadWriteSocketStream but it is not such an easy case that I could
> handle ( **try looking inside ODBFileStream class, there are OS call
> related stuffs everywhere that could not be replaced by
> SZReadWriteSocketStream ).

If I'm understanding you (and OmniBase) correctly, then I doubt whether this
approach would work.

The abstraction that OmniBase needs to be given is that a "file" is an abstract
"array" of bytes, where the program can read arbitrary sub-sequences, and lock
and unlock arbitrary subsequences, and where the OS will ensure that the
"array" is written to disk at controllable times.

SZReadWriteSocketStream (or any other Stream that is ultimately a wrapper
around a TCP/IP stream) is nothing like that.  It is not seekable (there isn't
and can't be a working #position: method).  There is no sense that you can go
back to read what you have previously written. And you can't lock subsequences.

If I were trying to do this, then I think I'd try to create an object that
looked like an ODBFileStream but implemented all the operations by sending
requests over the network.  E.g. a request to lock a region would be sent over
the network as a single request.  A request to read 33 bytes would be sent as
single request (and the answer would include the 33 bytes).  You mentioned that
you've tried something that lets you do remote access to existing objects, and
I suspect that it might be worth trying that again, using it to allow remote
access to the ODBFileStreams.  Presumably, the best way would be to find the
20-odd places that refer directly to ODBFileStream, and refactor them to use a
factory pattern.

A lot of work :-(

BTW, don't forget that you'll have to deal with the case where clients crash
without releasing locks.

    -- chris


Reply | Threaded
Open this post in threaded view
|

Re: [OmniBase] Support for distributed computation

Avi Bryant-3
"Chris Uppal" <[hidden email]> wrote:

> If I were trying to do this, then I think I'd try to create an object that
> looked like an ODBFileStream but implemented all the operations by sending
> requests over the network.  E.g. a request to lock a region would be sent over
> the network as a single request.  A request to read 33 bytes would be sent as
> single request (and the answer would include the 33 bytes).  You mentioned that
> you've tried something that lets you do remote access to existing objects, and
> I suspect that it might be worth trying that again, using it to allow remote
> access to the ODBFileStreams.  Presumably, the best way would be to find the
> 20-odd places that refer directly to ODBFileStream, and refactor them to use a
> factory pattern.
>
> A lot of work :-(

A lot of work indeed.
An easier solution might be to use GOODS; I know someone was working
on porting my client library for this to Dolphin, so hopefully that's
available by now.  It's a slightly different feel from using ODB, and
so you'd have to do a little bit of work to port your code to use it,
but if you really need an OODB for Smalltalk that you can easily
distribute over the network, it's the best thing I know of short of
Gemstone.

OTOH, it certainly would be nice to have a network layer for OmniBase,
so maybe I should be quiet and let you implement that... ;)

Avi


Reply | Threaded
Open this post in threaded view
|

Re: [OmniBase] Support for distributed computation

rush
In reply to this post by kuo-2
"kuo" <[hidden email]> wrote in message
news:[hidden email]...

> Ominibase is good but so far, I'm only using it inside an homogeneous
> intranet environment ( in the same Domain segment,  queried using
> virtual disk name , not ip address) via its supported default.
>     I need it be run as a server independently and the database could
> be accessed via internet tcp/ip protocol, or support distributed
> ORB-like object capacity.
>    I tried using some free goodies  for the distributed computation
> request but feel quite inconvenient ( there are some problems in
> resolving client address, I'm workig on it).
>    I felt it would be a great achievement if OA could provide such a
> working standard or Omnibase has its own solution.

My experience is that it is usually very difficult to add distributed
processing or client/server capabilities to the application that has not
been designed for it from the start. I have not looked into OmniBase, so I
may be wrong, but databases built around flat file access can rarely be
scaled to work good in C/S setup, especially over links slower than LAN.

rush
--
http://www.templatetamer.com/


Reply | Threaded
Open this post in threaded view
|

Re: [OmniBase] Support for distributed computation

David Gorisek-5
In reply to this post by Avi Bryant-3
OmniBase code which is currently released is not suitable to work in WAN
environments. It is optimized for file system access.

I wouldn't recommend doing an ODBFileStream wrapper over TCP/IP because this
wouldn't be very efficient (most probably it would be too slow for practical
use). For instance a transaction commit would require a lot of unecessary
network roundtrips, whereas a clean TCP/IP solution would first form a
proper commit request and send it to the server in a single network
roundtrip.

In the past I have done quite some work developing a C/S solution with a
TCP/IP server and a client which uses only sockets to connect to a server. I
already had a version where you could do database reads and was about to
implement transaction commit. But then other more important thing arrived...

If you have a real project with a budget which could partialy cover
development costs of a real C/S solution please contact me via e-mail. A
real C/S object database would also be portable across all Smalltalk
dialects.

Best regards,

David Gorisek




"Avi Bryant" <[hidden email]> wrote in message
news:[hidden email]...
> "Chris Uppal" <[hidden email]> wrote:
>
> > If I were trying to do this, then I think I'd try to create an object
that
> > looked like an ODBFileStream but implemented all the operations by
sending
> > requests over the network.  E.g. a request to lock a region would be
sent over
> > the network as a single request.  A request to read 33 bytes would be
sent as
> > single request (and the answer would include the 33 bytes).  You
mentioned that
> > you've tried something that lets you do remote access to existing
objects, and
> > I suspect that it might be worth trying that again, using it to allow
remote
> > access to the ODBFileStreams.  Presumably, the best way would be to find
the
> > 20-odd places that refer directly to ODBFileStream, and refactor them to
use a

> > factory pattern.
> >
> > A lot of work :-(
>
> A lot of work indeed.
> An easier solution might be to use GOODS; I know someone was working
> on porting my client library for this to Dolphin, so hopefully that's
> available by now.  It's a slightly different feel from using ODB, and
> so you'd have to do a little bit of work to port your code to use it,
> but if you really need an OODB for Smalltalk that you can easily
> distribute over the network, it's the best thing I know of short of
> Gemstone.
>
> OTOH, it certainly would be nice to have a network layer for OmniBase,
> so maybe I should be quiet and let you implement that... ;)
>
> Avi


Reply | Threaded
Open this post in threaded view
|

Re: [OmniBase] Support for distributed computation

kuo-2
On Mon, 2 Aug 2004 10:51:55 +0200, "David Gorisek"
<[hidden email]> wrote:

>If you have a real project with a budget which could partialy cover
>development costs of a real C/S solution please contact me via e-mail. A
>real C/S object database would also be portable across all Smalltalk
>dialects.
 
    How I would expect  this enterprise-strength real C/S object
database be enrolled at one of your company's flagship product as
OmniBase and STS are so that everyone wanting a future for seamless
computing has the one under affordable budge.  
:-)Just  my 2 cents (-:


Best regards

Tsun