Working alone, the purpose of the
virt_db
filter is to route search requests to one of a selection of
back-end databases. In this way, a single Z39.50 endpoint
(running Metaproxy) can provide access to several different
underlying services, including those that would otherwise be
inaccessible due to firewalls. In many useful configurations, the
back-end databases are local to the Metaproxy installation, but
the software does not enforce this, and any valid Z39.50 servers
may be used as back-ends.
For example, a virt_db
filter could be set up so that searches in the virtual database
``lc'' are forwarded to the Library of Congress bibliographic
catalogue server, and searches in the virtual database ``marc''
are forwarded to the toy database of MARC records that Index Data
hosts for testing purposes. A virt_db
configuration to make this switch would look like this:
<filter type="virt_db">
<virtual>
<database>lc</database>
<target>z3950.loc.gov:7090/voyager</target>
</virtual>
<virtual>
<database>marc</database>
<target>indexdata.com/marc</target>
</virtual>
</filter>As well as being useful in it own right, this filter also provides the foundation for multi-database searching.