Relational Database Handler

From OPeNDAP Documentation
⧼opendap2-jumptonavigation⧽

In order to provide support for a Sensor Observation Service (SOS) implementation Hyrax will need a handler that allows it to access data in a Relational Database Management System (RDBMS). (This requirement stems from the observation that many of our stake holders store their in situ measurement data in RDBMSs)

It is anticipated RDBMS handler will have a much broader application than just SOS related data sets.


Use Cases

  1. Adding the RDH to the BES
  2. Configure RDH to use ODBC introspection to build catalog of database holdings
  3. Configure RDH to use a local configuration to build catalog of database holdings

Definitions

row set
A row set is an object which encapsulates a set of rows. Database tables are row sets. A database view is a row set. SQL queries return row sets. SQL JOIN operations take row sets as input and produce row sets.

Background

In the past a Java servlet called the DODS Relational Database Server (DRDS) was used to provide DAP access to RDBMS holdings. However this older implementation has a number of shortcomings that preclude it's direct use in our current server architecture:

  • No longer supported.
  • Uses the Java DAP implementation
  • Not a BES module
  • Significant memory limitations
  • Difficult to configure/localize


Data Model Resolution

The DAP data type Sequence is the natural structural/behavioral synonym to a row set. The collection of tables and views in an RDBMS can thus be represented as a collection of DAP Datasets containing one or more DAP Sequences.

Design

Current design is that we not matter the internal structure of the database the operator will create a view (or use existing tables) and the DRDS-1II will query against that view to produce a row set that will be served as a Sequence.

Data model

The DDX/DDS/DAS documents will be generated by introspection of the database. We may wish to use a configuration mechanism to identify which table and/or views that are meant to be served, or to instruct the server to serve all of the tables and/or views that it can discover using introspection.

Deliverables

Period of use