CS632 Project Proposal
Database agents
Rimon Barr
Cornell University
barr-AT-cs.cornell.edu

During my work on the DB2 database engine, I came across an interesting design architecture centered around a database agent, which I had not seen before. An agent was, in effect, the manager of a query inside the engine taking care of the query execution and using the various subsystems on behalf of the query. However, I noticed that in a distributed or parallel setting each node had its own agent and coordination among them is limited by a common communication layer.

I would like to consider how to extend the agent architecture. Can we open up the database into component subsystems, and have agents manage these, bring the agent out of the database? What I would like to investigate is the possibility of having agents moving around performing functions with these components on behalf of a traditional query, perhaps spawning helpers, and returning with the result. For this we need to define an agent's capability and structure as well as a clear interface to various database subsystems.

The motivation of this idea is similiar to the Database Virtual Machine. I believe that through componentising the database into agent interfaces I will be able to discover useful primitive operations. And by using this approach, I will be able to both move computation and data around. At the same time, the agent architecture embodies the notion of decoupling the database system, which can be very useful in heterogenous, distributed or mobile environments.

Database systems today are treated like complex boxes, with clearly defined interfaces. These boxes contain components that are hidden from the outside, and are closely coupled to work efficiently. The problem with this approach is that efficiency becomes hard to acheive without additional information in more loosely coupled systems found in distributed and mobile environments. In these environments it may be beneficial to expose the various components, so that specialised agents can use them efficiently. The traditional query interfaces do not provide much information about how to perform a query, so the optimization problem becomes very difficult. Specialised agents may be more suited to the task, because they can be provided with hints that are not expressible via standard query channels.