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