On Tuesday 07 October 2003 13:48, Andrew Piskorski wrote:
> On Mon, Oct 06, 2003 at 08:50:21PM -0400, John Sequeira wrote:
> > Would xotcl's xoStore help you out? It's more ORM than OODBMS, but
>
> I'd never heard of it, thanks, I'll take a look.
xoStore is a persistence layer for xotcl objects which can be used with different
storage backends. It supports two persistency strategies called eager and lazy,
where the first one writes each modification of an instance variable
into persistent storage (via variable traces), and the second one
writes changes back to the database, when the object is destroyed
(or the system exists).
you can see a small example on:
http://media.wu-wien.ac.at/doc/library/store/persistenceExample.xotcl
more documentation is on
http://media.wu-wien.ac.at/doc/index.html
under library/store.
xoStore has no support for concurrency built in, so it won't fit your
application needs.
However, we use xotcl as storage for sharing
information between threads. In general, you can start a
"database thread", to which connection threads can easily talk to
(via Zorans wonderful tcl-thread api), where the "database thread"
enforces serialization of the requests. This database thread
can contain persistent and volatile data, the persistent data
can be stored in arbitrary ways.
Many applications need data sharing between threads
more than the persistent storage; we use for example a
thread for shared information like
- the users currently acitve,
- usage statistics (e.g. how many requests over the last
seconds, minutes, hours), or
- for blocking to eager users
etc. This is achieved through a few xotcl objects that are maintained
in a thread that starts during bootup and which is "alive" the
livetime of the server. Connection threads can efficiently obtain
information from this thread. This approach is more structured than nsvs
and easier to extend: one can define a conveniant api to this
thead, use it as a component and extend it quite independently.
A limitation of threads is that only string data (no tcl_objs) can be
exchanged (same as nsvs, ns_cache, etc). if the interface
requires highly strucuted data to be passed from and to these threads,
the data has to be linearized, or has to be represented as tcl-lists, etc.
XOTcl has support for serializing objects, therefore objects
from the "database thread" can be transfered (copied) into the
connection threads without programming effort.
hope, this can give you some ideas
greetings
-gustaf neumann
PS: Let me know if you are interested in some thread based
xotcl code for the purposes described above...
--
Univ.Prof. Dr.Gustaf Neumann
Abteilung für Wirtschaftsinformatik
WU-Wien, Augasse 2-6, 1090 Wien
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of
your email blank.