Structure of a MIM Database

Understanding the structure of a MIM databases begins with the relation. Relation is a special name for a symbol or item in the database. Examples of relations are: DELL, HOUSTON.TX, or CHICAGO.IL. The term relation comes from the mathematical concept of a function mapping from one set of items to another.

Relations can have multiple fields or slots. The fields in a MIM database are called columns. Examples of columns are: Open, Close, HighTemp, MidPoint, etc. Columns can be shared by many relations.

To store data as a time-series in the database, a relation and column are chosen to name the times-series data. For example, to store the prices for DELL, we can choose the relation-column “Close of DELL”. Any relation can be associated with any column when relation-columns are created. A column can only be associated with a relation one time. There cannot be two close columns of a single relation.

The relation, column and relation columns allow the database to relate information about the data to the users of the data. In addition to a name, the relations and columns also have a description and other meta data items. For example, the relation DELL can have the description “Dell Incorporated, NASDAQ”. The column High can have the description “High Price”.

The MIM server does not utilize the relation and column names for operations. These names are only used in the description of data to the server. Relation and column names are very efficiently managed by the server.

The fundamental unit of storage in the database is the time series. Time series are collections of the following items:

Relation, Column, Date, Time, and a numeric value.

An example of a time series:

AUSTIN.TX, HighTemp, 7/1/2002, 97.0
AUSTIN.TX, HighTemp, 7/2/2002, 96.0
AUSTIN.TX, HighTemp, 7/3/2002, 94.0

The time component of a time series is optional. If the time is used, then the time series is called intraday. If the time component is not used, then the time series is called daily. The MIM keeps separate time series for daily and intraday data, so a relation can have either daily data or intraday data, or both daily and intraday data. The database also can store data at resolutions smaller than 1 second, in that case the data is stored in a third form: tick-by-tick data.

All of the time series in the database are independent. The MIM database understands that when two time series are requested in a single operation, then the date and time indexes are properly aligned.

Most databases have many relations. In order to present the data in an organized way, there are relations without data called “category” relations. The categories in the database are similar to folders on a disk drive. Categories can contain categories or “normal” relations. By combining categories we create a hierarchy of data. The start of the hierarchy is always the special category “TopRelation”. Normally, the hierarchy is depicted as a tree structure.

For example:

TopRelation
    Weather
        UnitedStates
            Illinois
               CHICAGO.IL
            Texas
                AUSTIN.TX
                HOUSTON.TX

All relations have a complete pathname in the database. For example, HOUSTON.TX can have the path name TopRelation:Weather:UnitedStates:Texas:HOUSTON.TX. Sometimes it is necessary to use pathnames to completely specify data items in order to move them in the hierarchy.

Normally pathnames are not used and the relation name used is a short name. In order for the short names to work they need to be unique with a MIM database. It is possible for a relation to have more than one name. This is achieved by using “alias” relations. It is not necessary for category relations to have unique names. For example, the category, “UnitedStates”, could appear in a database many times.

The relation hierarchy serves two purposes in a database. One purpose is to provide the server information about specific types of data such as futures contracts. The other purpose is to lend structure to the data for end users.

There is also a hierarchy for columns in the database. The column hierarchy always begins with “TopColumn”. The column hierarchy also provides information structure to the server. For example, composite columns are created using the parent child relationships of columns in the column hierarchy. Using column categories it is possible to refer to many columns at the same time.