Open Source · Google Summer of Code 2009–2010

Hyrax SQL Handler: relational data through a scientific interface

Original author, developed with OPeNDAP mentorship

I authored the Hyrax SQL Handler during Google Summer of Code work with OPeNDAP. It brings relational data into the same data-access interface used by scientific clients, through a C++ BES module and ODBC.

Problem: relational tables outside a scientific data interface

Scientific clients often know a data protocol rather than each database’s driver, credentials and query interface. Relational data needs a bridge if it is to appear beside other Hyrax datasets.

The engineering problem is a translation boundary: dataset definitions, tabular query results and database types must become a representation the Data Access Protocol can expose.

Architecture: a BES module with an ODBC connector

The public repository describes a separately buildable C++ BES module using unixODBC and a database-specific driver. Dataset definition files select the connection and tables or columns exposed through Hyrax.

Hyrax provides the web-facing data interface and BES dispatches to the handler. The handler accesses the configured database through ODBC. The diagram is a high-level reconstruction from the repository and official guide; it does not claim every query is pushed down identically.

Protocol and database responsibility boundary

A scientific client requests a configured dataset through Hyrax. The BES SQL module bridges that request to an ODBC driver and database. The database remains behind a server-side definition boundary, while type mapping connects relational results to DAP representation.

Open full-size SVG
Hyrax SQL Handler · bridge two data modelsA scientific client requests a dataset through Hyrax and BES. The SQL Handler maps database results through ODBC to the data access protocol. Database driver configuration and types remain explicit boundaries. Hyrax SQL Handler · bridge two data models Historical C++ BES module · server-side dataset definitions CLIENT INTERFACE Scientific data access Scientific client OPeNDAP request Hyrax web interface Dataset discovery and protocol response request SERVER-SIDE MODULE BES integration responsibility BES dispatch Configured dataset C++ SQL Handler SQL result / DAP type mapping dispatch dispatch DATABASE BOUNDARY Definitions and drivers limit what is exposed ODBC driver Configured database query SQL query A protocol bridge does not erase database type and driver differences. Historical project evidence: the current official Hyrax guide labels the SQL handler unsupported. CLIENT INTERFACE Scientific data access SERVER-SIDE MODULE BES integration responsibility DATABASE BOUNDARY Definitions and drivers limit what is exposed Request / integration Message / asynchronous work Persistence / data access

Decisions: reusable database access, explicit mappings

ODBC offers a common connection surface, but does not remove database-specific driver configuration. The module’s setup and datatype mappings remain important parts of the integration.

A retrospective alternative is to export database results into scientific files before serving them. That moves the integration boundary into an ETL process and can simplify read-only distribution, while introducing copied data and refresh work. The handler instead addresses access through a configured database bridge.

Outcomes: public source and historical documentation

The OPeNDAP repository retains the module, installation guidance and database examples. My original work belongs to the 2009–2010 Google Summer of Code period; current source includes later maintenance.

I also authored “Understanding OPeNDAP Hyrax”, a conference-proceedings paper in ConfSL 2009, Bologna, 12–13 June 2009 (printed pp. 23–38). It documents earlier Hyrax technical writing and is distinct from the 2010 SQL Handler presentation and software account. Historical comparisons do not establish current performance.

The current official Hyrax guide labels the SQL handler unsupported. This case presents its historical engineering and interoperability contribution; the 2009 paper is linked as a conference-proceedings publication.

Learning: interoperability needs precise type and query contracts

A common protocol does not make SQL and scientific data models identical. A useful adapter must be clear about supported types, query constraints, configuration and failure behavior.

For a renewed implementation I would test nulls, numeric precision, large result sets, cancellation and driver failures against each supported backend. That is a present-day validation plan, not a claim about tests performed during the original project.

Questions & discussion

Does an ODBC interface imply identical behavior across databases?

No. It supplies a connector boundary. Drivers, type mappings and query semantics still need verification per database.

Read the relevant section
Is the module currently supported?

The official Hyrax guide labels it unsupported. The public source remains useful historical evidence; source availability does not establish current operational support.

Read the relevant section
What would you validate before reviving the adapter?

Type conversion, null/precision behavior, bounded result processing, cancellation and failure isolation, then database-specific configuration and query behavior.

Read the relevant section

Sources & scope

Related documents

Presentation · 2010

SQLHandler use cases for OPeNDAP Hyrax

Original 13-page demonstration from 18 August 2010: relational data access through the Hyrax back end, dataset discovery, filtering and projection. Contacts and mentor names are omitted.

Carlo Cancellieri. Original slides acknowledge Google Summer of Code 2010 funding and describe the software as LGPL. Mentor names omitted for privacy.

Read the related case study