HEC-DSS is a database system designed to efficiently store and retrieve scientific data that is typically sequential. Such data types include, but are not limited to, time series data, paired (curve) data, spatial-oriented gridded data, and textual data (such as this manual). The system was designed to make it easy for users and application programs to retrieve and store data.

Background


HEC-DSS was the result of a need that emerged in the late 1970s. Before HEC-DSS, most hydrologic studies were performed in a step-wise fashion by passing data from one analysis program to another in a manual mode.
While this was functional, it was not very productive. Programs that used the same type of data, or that were sequentially related, did not use a common data format. Also, each program had to have its own set of graphics routines or other such functions to aid in the program's use.


The Kissimmee River study was performed by HEC for the Jacksonville District beginning in 1978 and required an orderly approach to properly manage the study data and analysis results. A large number of alternative plans and conditions were to be processed in this project. This study gave birth to the first version of HEC-DSS. The basic design provided for the storage of data in a standard form that was independent of any particular program. The data would be provided to the programs when it was needed and results would be stored in the same independent form for use by utilities and other applications programs. The early design of HEC-DSS was conceived to support files containing up to a few thousand data sets. As the use of HEC-DSS expanded into real-time data storage applications, data files were written to manage hundreds of thousands of data sets.


The current HEC-DSS version is designed for rapid storage and retrieval of datasets from files containing as few as forty to fifty datasets to files containing more than several million data sets. 

HEC-DSS Contrasted with Other Database Systems


HEC-DSS is designed to be optimal for storing and retrieving large sets, or series, of data. HEC-DSS incorporates a modified hashing algorithm and hierarchical design for database accesses. This algorithm provides quick access to data sets and an efficient means of adding new data sets to the database. Additionally, HEC-DSS provides a flexible set of utility programs and is easy to add to a user's application program. These are the features that distinguish HEC-DSS from most commercial database programs and make it optimal for scientific applications.


HEC-DSS is designed specifically for the storage and retrieval of large sets, or series, of data. These include daily flow values, hourly precipitation measurements, rating tables, and pages of text information. HEC-DSS is not optimized for dealing with small data sets or single data values, nor is it effective at conditional data searches common to relational database systems. In contrast, most commercial databases are designed for small sets of elemental data. Such elemental data includes employee records, accounting data, and inventory of stock.


Commercial databases usually employ a relational model in which data is stored in a related manner. A relational database can be viewed essentially as a collection of tables. This type of system requires the
construction of a data definition or data dictionary file. Although a relational database requires some initial setup, it can effectively store short data sets comprised of both characters and numbers. Relational database systems use the ANSI ratified Structured Query Language (SQL) to access data.


While relational databases are ideal for elemental data sets, they are not as practical for longer series of data. HEC-DSS, however, is designed for such sets of data. HEC-DSS database files are not defined by a data definition file like the relational model requires so there is no set up required by the user. (HEC-DSS data is defined by the pathname and conventions used.) The type of data generally stored in HEC-DSS does not lend itself well to a query language such as SQL although the selective catalog feature has some similar capabilities.


HEC-DSS was designed to be easily added to a user's application program. In traditional "C" and FORTRAN programs, only two or three function calls are needed to access data. Those calls identify the database, the pathname, and a time window (if desired). Besides these languages, an set of libraries are available in  .net (C# and Vb.net) , C and Java languages, which are the languages used to develop most HEC programs.