Even if the data you want to serve are stored in some idiosyncratic format, or accessed using an API that you or your group have developed, there may already be a server which, with the correct configuration, can work with your data.
The OPeNDAP project has developed two servers which can be customized to read different types of data. One, the FreeForm server can be used to provide table and array data, with some restrictions on the data's storage format. The JGOFS server can only serve table-like data but has a more flexible -- and more complicated -- customization scheme. More introductory information about these two servers can be found in the Server Installation Guide.
The FreeForm server is configured for a specific dataset using a `format specification file.' Detailed information about writing these files for your data may be found in the OPeNDAP Freeform ND Server ManualThe main limitation of the FreeForm server is that it requires that all information be rigidly column-oriented. For example, consider the two ASCII data files shown below:
1 one 13.4 1 one 13.4 2 two 27.8 2 two 27.8 3 three 17.4 3 three 17.4 ASCII data that cannot Data that can be served with FreeForm
The first file cannot be served by the FreeForm server because the third value in each record does not start at the same column position. The same data can be served only if each datum in all the records `lines up.' In addition to ASCII data, the FreeForm server can also serve binary data and DBase files. The FreeForm server cannot serve CSV files.
The JGOFS server can serve data that is logically structured in a table-like fashion. By table-like, we mean that the data are organized in row and column form with the additional twist that the rightmost column can itself be a table; it's not limited to the standard simple data types such as Integer or floating point numbers. This enables the JGOFS server to efficiently serve data that are hierarchical without duplicating values at the outer levels. Compare JGOFS' nested tables with a regular flat table scheme:
station depth temp station depth temp
1 10 10.2 1 10 10.2
20 10.3 1 20 10.3
30 10.0 1 30 10.0
2 10 10.2 2 10 10.2
20 10.35 2 20 10.35
30 10.0 2 30 10.0
Nested Tables A Flat Table Duplicates Values
The JGOFS server can also read data that's organized in many files, making access to the individual files seamless. In practice this is quite powerful. If information about stations, continuing with the example above, is stored in one file and information about each depth/temperature sounding is stored in separate files, JGOFS can easily be configured to serve these data. In fact, the JGOFS server comes with a standard `method' that can serve data stored in just this configuration as long the data are stored as ASCII values.
However, JOGFS is far more flexible than just a scheme to serve ASCII data. The JGOFS server is customized by writing a specialized access method for a new data storage format. For more information about the JGOFS system see the JGOFS Data System Overview. There is also a detailed method writing guide with examples available for JGOFS.