Hi,

I have been interested in Oz for years, but have only now come to the
point where I would like to use it.  I have a basic understanding of the
language (or used to have), but would appreciate any comments/guidance.

I want to develop a process that constructs/maintains information in a
(SQL) database.  This information has complex inter-dependencies which are
specified by a DAG (which should also be persisted in the database). 
Unfortunately (since it complicates matters enormously) items in the
database can become invalidated and the graph can change.  Also, the
re-construction of dependent information (after a graph or data change
renders a value obsolete) needs to be performed at two levels of priority
- some information may be required as soon as possible; the rest should be
regenerated only as time permits.

So I need a process that manages all this.  External communication is
minimal (messages for the addition/removal of data/graph structure and an
indication of what targets are high priority).  The database itself is
read-only to external users.

It seems that I need three levels of components/agents:
- DAG manager
- Schedulers
- Workers

The DAG manager maintains the DAG and in response to external commands.

There are two kinds of schedulers.  One is the background scheduler,
which, with low priority, continually rebuilds obsolete information.  The
other is a scheduler for a particular urgent target.  This would use the
DAG to identify what data need to be regenerated.

Finally, workers do the regeneration of data.

Note that the interests of schedulers overlap and that workers and
schedulers face the possibility of "the ground being cut out from
underneath" if data they have assumed reliable is invalidated, or if the
relevant graph section changes.  So they must be able to somehow register
their interest in areas of the graph and be able to be "restarted".

I think this an interesting problem for which Oz is particularly well
suited, since the management of threads and state is critical.

Does the above make sense?  Is the sketched architecture reasonable?  Any
red flags?  Previous related work that may be useful?

Thanks,
Andrew


_________________________________________________________________________________
mozart-users mailing list                               
mozart-users@mozart-oz.org
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to