BDS Public

Blacknest BDS Schema Overview

Date 2008-03-27
Version 0.0

Note that this is a "work in progress" document and is being continually updated.

Introduction

This document provides an overview of the Blacknest Data System (BDS) Database Schema.

Database Schema Overview

The BDS Database holds information on all of the Seismic data and associated metadata. The database will be implemented as a MySQL database. Generally the database is not directly accessed. It is normally only accessed by the BDS Data Engine in response to API requests.

General

  • Dates and times: These need to be stored to the nearest ms. We could use a MySQL DateTime + an Integer for the ms. Or we could simply use a String formated using ISO 8601 format: eg "2002-04-03T11:20:53.103". An entry of 000-00-00T00:00:00.000 is used for unknown.

Overall Management

Groups

The list of user groups.
Name Type Description
group String The Group name
description String The Groups description
permissions String Comma separated list of permissions (or separate table)

Users

The list of users.
Name Type Description
id Integer Unique ID for this entry. (Used as the userId)
name String The users full name
loginId String The users login ID
loginPassword String The users login password (Encrypted)
emailAddress String The users email address
telephone String The users telephone number
enabled Bool If this user is enabled

UserGroups

Used to keep the list of groups a user belongs to.
Name Type Description
userId Integer The userId for this group
group String A group this user belongs to

Overall Information MetaData

Networks

The list of networks.
Name Type Description
network String The Network name
description String The Network description

NetworkStations

Used to keep the list of all stations managed by a network.
Name Type Description
network String The Network name
station String The Station/Array name

Stations

Used to keep the list of all station names. If a station is only managed by one network then we could integrate the NetworkStations table with this one.
Name Type Description
station String The Station/Array name
type String The station type (Station, Array)

Channel MetaData

StationLocations

Used to keep the list of all station locations
Name Type Description
startTime String The Start time
endTime String The End time
network String The Network name
station String The Station/Array name
latitude Double The Latitude in degrees using the WGS84 datum.
longitude Double The longitude in degrees using the WGS84 datum.
elevation Double The ground level elevation in meters from the WGS84 ellipsoid (Sea level)
arrayOffsetEast Double For a station in an array, this is the offset from the array's centre
arrayOffsetNorth Double For a station in an array, this is the offset from the array's centre

Channels

Used to keep the list of all channels
Name Type Description
startTime String The Start time for this channel
endTime String The End time for this channel
network String The Network name
station String The Station/Array name
channel String The Channels name

Calibrations

Used to keep the list of all calibration entries for a channel
Name Type Description
startTime String The Start time for this channel
endTime String The End time for this channel
network String The Network name
station String The Station/Array name
channel String The Channels name
calibrationFrequency Double The frequency that the CalibrationFactor value is valid for
calibrationFactor Double The scaling value to apply to the data to normalise to Nanometers. This is a measured value at the calibration frequency and is in Nanometers/Count

Instruments

Used to keep the list of all instruments for a channel
Name Type Description
startTime String The Start time
endTime String The End time
network String The Network name
station String The Station/Array name
channel String The Channels name
instrument String The instruments name
type String The type of instrument
model String The instruments model name. The Vendor make/type of instrument. Only used when there is a unique physical instrument
serialNumber String The instrument's serial number. Only used when there is a unique physical instrument.

Digitisers

Used to keep the list of all digitisers for a channel
Name Type Description
startTime String The Start time
endTime String The End time
network String The Network name
station String The Station/Array name
channel String The Channels name
digitiser String The digitiser's model name
model String The digitiser's model name. Only used when there is a unique physical digitiser
serialNumber String The digitisers's serial number. Only used when there is a unique physical digitiser
samplingFrequency Double The sampling frequency
initialSamplingFrequency Double The initial pre-decimation sampling frequency
gain Double The overall gain of the digitiser at the manufacturers calibration frequency. (For information only)

Sensors

Used to keep the list of all sensors for a given channels digitiser
Name Type Description
startTime String The Start time
endTime String The End time
network String The Network name
station String The Station/Array name
channel String The Channels name
sensor String The sensors name
type String The type of sensor. (Seismometer, Hydrophone etc)
model String The sensor's model name. Only used when there is a unique physical sensor
serialNumber String The sensor's serial number. Only used when there is a unique physical sensor
gain Double The overall gain of the sensor at the manufacturers calibration frequency. (For information only)

SensorLocations

Used to keep the list of sensor locations. The placement angles could be in a separate table.
Name Type Description
startTime String The Start time
endTime String The End time
network String The Network name
station String The Station/Array name
channel String The Channels name
sensor String The sensors name
locationId String The location ID
depth Double The depth below ground level.
verticalAngle Double The Sensors placement vertical angle in degrees degrees with zero = vertically up
horizontalAngle Double The Sensors placement horizontal angle in degrees clockwise from north

Responses

Used to keep the list of all frequency responses for a given channels digitiser and sensors. We may need sensor id/name and digitiser id/name in here.
Name Type Description
startTime String The Start time
endTime String The End time
network String The Network name
station String The Station/Array name
channel String The Channels name
digitiser String The digitiser name
sensor String The sensors name (may be null if this is a digitiser response)
response String The responses name (Sensor,Anti-Aliasing filter, Digitiser, post filter etc)
type String The type of response (PoleZero,AmplitudePhase or FIR Coefficients)
data Blob PoleZero, AmplitudePhase or FIR Coefficient data
gain Double Overall gain at gain frequency.
gainFrequency Double Frequency that gain is valid for. (For information)
decimation Double Decimation performed post filter
symmetry String Symmetry for FIR coefficients (A = asymmetric, B = symmetric[odd], C = symmetric[even])


Seismic Data

Data

Used to keep the list of data files managed by the BDS.
Name Type Description
id Integer Unique integer ID
startTime String The Start time
endTime String The End time
network String The Network organisation the original data is from
station String The Station/Array name
source String Some information on the source of this data (DIRECT, TAPE, PROCESSED ...). This would allow multiple sources of data from the same Array and TimePeriod. It could also support processed data. 
location String The location of the data. This could be a local archive or even a remote archive
format String The data's format
url String File location. This can embody a protocol, host, path and filename.
comment String A general comment string.
channels String A list of channels some how ....

Misc Data

Notes

Used to keep the list of data outages and other notes.
Name Type Description
startTime String The Start time
endTime String The End time
network String The Network organisation the original data is from
station String The Station/Array name
channel String The Channel name
type String The entry type: (Outage, Note, Warning etc)
source String The source of the note
title String A Title for the note
comment String A Comment for the note

We will also need database information store on the following:
  • Data Request queues
  • Data Requests serviced
  • Data additions made ?
  • Changes made ?

Notes