Title
|
Query Plan Distribution and Execution
As mentioned before, ObjectGlobe was implemented in Java for two
reasons: portability and security. In this section we will describe
how we utilized Java's features to achieve extensibility and query
operator mobility without compromising security. We will also describe
ObjectGlobe's monitor concept for controlling the progress of distributed
query plans.
Distributing Query Evaluation Plans
Query plans are distributed in a straightforward way using the host annotations of the iterators in the plan. Every cycle
provider loads the code of the external operators with a specialized
ObjectGlobe class loader (OGClassLoader); the URL of the code is given in the
codeBase annotation. If a cycle provider requires that the
code is signed (authenticated), then the OGClassLoader will
check the signature of the code. Furthermore, all communication
paths are established by (built-in) send and receive iterators. If desired
(i.e., specified in the annotations of the plan), an SSL
(Secure Sockets Layer) connection is established. SSL
[FKK96]1 is a de-facto standard for providing privacy and
reliability of network communication by encrypting network traffic and
checking the data integrity using Message Authentication Codes
(MAC). Also, the SSL protocol can carry out the authentication of
both ObjectGlobe communication partners via certificates. Finally,
authorization is carried out by the individual providers when a query
is instantiated. If a provider restricts the use of its resources,
the authentication information of the user will be part of the plan
(again, as part of an annotation). Two possible authentication schemas
are supported. Parts of a plan can be signed and carry the
corresponding certificate. Another way of authenticating clients,
which is still in use by many providers, is password-based. In this
case the corresponding sub-plan is annotated with the encrypted password.
Extensibility
To integrate an external function, a function provider must implement
a simple predefined interface. To implement an iterator, for
example, open, next, close, and
reopen methods must be implemented following the iterator
model described in [Gra93]. The interface of other
external functions (e.g., transformers such as thumbnail) is
simpler; these external functions are wrapped by generic
(built-in) ObjectGlobe iterators.
In the following we briefly describe the open method for
iterators, since it has a special requirement.
The open method returns an object of a class named
TypeSpec. Such an object describes the type of the tuples
which will be produced with every call of the next method.
Type specifications are also recorded in the lookup service; just
like authorization information, however, the type specifications
recorded in the lookup service might be outdated or incomplete.
Based on these (runtime) TypeSpecs polymorphic functions can
be constructed. Furthermore, it is possible to compute the union of two collections that have different attributes; for
example, two hotel data sources on the Internet (e.g.,
www.HotelBook.com and www.HotelGuide.com) might have
slightly different attributes and it is nevertheless possible in
ObjectGlobe to ask a select * query that retrieves all
attributes from both sources.
Footnotes
- ...[FKK96]1
- There is also the standardized TLS
(Transport Layer Security) protocol [DA99] of the Internet
Engineering Task Force (IETF) which is quite similar to the current
SSL 3.0 protocol.
Lehrstuhl für Datenbanksysteme
Letzte Änderung:
25.05.2005 um 14:34:37