OAIB is designed to make it easy to set up an Open Archives server to provide metadata based on the contents of a relational database such as Access, Oracle, or MySQL. This will enable data providers who have data in relational databases to make their data accessible to the growing world of OAI-compliant tools such as harvesters, union catalogs, and metadata processors.
OAIB is easy to use because it provides a convenient configuration wizard enabling most OAIB features to be controlled without requiring programming. The configuration wizard generates an XML-based configuration file used by the OAIB server (example). The configuration specifies how to access the database and how to translate OAI "verbs" into SQL queries, and also how to transform responses to SQL queries into metadata records to be delivered to the OAI client. The process of configuring OAIB is much simpler than writing code to manage client interactions and translate queries and responses into the appropriate formats.
Installation
OAIB also provides an installation tool. See the OAIB installation page for more details.OAIB is written in Java, and has been tested on Linux, Windows, and Mac OS X.
Assumptions
OAIB makes several critical assumptions about the structure of the target database:- The database is accessible using JDBC.
- All the relevant data for a record can be retrieved with a single query.
- There is a single column containing a unique ID for each record. This is analogous to a primary key in SQL.
- There is a single column (of an SQL type that can be internally converted to the SQL TIMESTAMP type) containing the date a record was most recently modified. OAI requires that such information be available about each record.
- If you wish to support sets with your OAI server, there must be a single column containing the set a record belongs to.
- If you wish to support deleted records with your OAI server, there must be a single column containing the deleted status of the record.
| Assumption | Steps |
|---|---|
| The database is accessible using JDBC. | Both commercial and non-commercial JDBC drivers are available for a variety of databases; you may have to purchase one. For information about finding a driver for your database, see the JDBC driver database at java.sun.com. |
| All the relevant data for a record can be retrieved with a single query. | Construct the appropriate SQL view, or create a single table and populate it with the data necessary to construct response records. |
| There is a single column containing a unique ID for each record. | Insert a column into your database, generate unique ID's, and insert those ID's into the column |
| There is a single column containing the date a record was most recently modified. | If there is a column but it cannot be read as a TIMESTAMP, create a column of type TIMESTAMP (or DATE) and copy the existing modification dates into that column in the appropriate form. If there is no such column, create one and fill it with today's date. |