In a distributed system, many higher-level services depend on the
maintenance and discovery of information about dynamic resources such as services
and user communities. Existing systems typically use a central database, a
hierarchical directory, multicast announcement, or an application-specific ad-hoc
Peer-to-Peer network. Such technologies typically do not work well for large-scale
decentralized systems that attempt to support a wide range of application queries,
over autonomous and heterogeneous data sources [producing static to highly dynamic
data].
Our proposal is a new model for resource discovery in decentralized
Grid systems. This model is derived from our work in developing Grid Database
Frameworks for use by scientists to support large-scale Grid projects.
The multi-purpose P2P resource discovery infrastructure model supports a wide
range of use cases with a small set of extensible building blocks. The proposal
is query language independent and XML data model independent. It supports pull
and push based data delivery, and can accommodate static as well as dynamic data
sources, while being agnostic wrt. transport, network, and topology.
In particular, the model supports powerful XQueries for complex XML data
selection, integration, aggregation and transformation for resource discovery in
dynamic large-scale decentralized systems.
In the working prototype, applications get to focus on domain specific plugins.
For example, the data source can be anything that produces arbitrary XML data.
An example data source is an XML file. Another example data source is a program
that takes some input and produces SensorML XML output on-the-fly. Yet another
example data source is a relational database (e.g. MySQL) that takes a SQL query
and wraps the query output into XML. Another transforming query such as a
complex XQuery can then be executed against the wrapped XML output. XQuery is
the most powerful query language, supported as one of several example plugins.
Examples for simple query languages are"return <hello> world
</hello>"
or "return currentTime()"
.