A set of geologically distributed databases can be connected through the internet and served as a single database to the user.
To connect them, we need a global manager that can interface the user and convey user’s requests to the local databases, and
an agent for each database that can translate the global manager’s requests to the local database commands. The per-database
agent not only processes the user’s database requests, but also performs integrity checking on the requested database operations.
Since integrity constraints are expressed as rules and maintained by the global manager too, an efficient way of integrity
checking in the local agent is needed. Conventional technique is either introducing another agent in the local database that
monitors the behavior of the request-processing agent and handles integrity checking when there is a need, or hard-coding
the rules into the local agent. The former suffers a delay in request processing due to the communication overhead between
the agent and the global manager, while the latter lacks flexibility on adapting to changing rules and programmability because
it is typically very hard for a regular application programmer to understand and code properly the complex integrity rules.
This paper proposes a compiler-based solution that does not cause a heavy communication overhead, and is flexible enough to
accommodate changing rules, and shifts the burden of rule coding from individual programmers to the compiler. We explain the
technique and show its effectiveness using examples from spatial distributed databases.