Database Server Architecture

The features highlighted in this section include:

The MIM database server is a high-performance, scalable engine designed to process time series data. Clients can connect through one of several APIs. Multiple clients, both readers and writers, can connect simultaneously to a given server. The server then routes the request to one of a pool of slave servers, thus achieving load balancing, as well as parallelism on distributed or multi-processor environments.

For some time critical applications, such as high-frequency updating from a real-time feed, the master server can connect the client directly to a dedicated slave server. This significantly reduces the overhead for all clients connecting to that server.

The server is responsible for insuring the integrity of the database. It supports various consistency checks and provides an advanced recovery mechanism utilizing 2-phase commits. It provides a facility to manage which users have access to query and/or modify portions of the database. In addition, it supports different levels of logging, ranging from logging connects to the server to detailed accounting of the data used by each request. All these capabilities are available to the database administrator through a set of tools. For example, a BMIM batch mode process controls entitlements to the database, and several applications are available for monitoring access logs.

The server supports simple retrieval of the data stored in the database. It also supports a sophisticated query language which was designed specifically for market historical research.

The MIM database itself resides on the UNIX file system. The data is kept in a proprietary format designed specifically for efficient retrieval of time series data, featuring compression of historical data and fast updating of real-time data. The database can be split across multiple disks and/or file systems.

Very large databases, containing hundreds of thousands of symbols and several gigabytes of data, have been created using the MIM database server.

The MIM server is capable of reading in multiple databases and presenting them to the user as a single database. Multiple databases facilitate segmenting of the data into separate namespaces such that, for instance, the customer is able to keep their own proprietary data separate from data provided by LIM. These databases need not all be native MIM databases. Any user can extend the MIM server so that it understands a different proprietary database format, e.g., using a call-level interface into a relational database. Thus, existing applications can be leveraged by tying in existing legacy databases to XMIM.