This chapter outlines the components that define the MIM server and details how the server and execution engine work together to provide the capability to analyze and manipulate raw data and perform such tasks as: event driven analysis, cross-market analysis, P & L studies and more all in a near-English language query format.
The following list details the components that make up the MIM server, including:
C/C++, Java, C#, VB .NET and the BMIM Scripting Language; also XML
Server platforms are Solaris and Linux
Client platforms include Solaris, Linux, and Windows XP/Vista
Built-in knowledge of financial markets
Specialized tools for equities, futures, options, fundamental data
Sophisticated rollover language
Specialized storage for options data
Holiday schedules
Distinction between types of NaNs and different fill options
Real tick, intraday and daily data
Aggregation and frequencies
Dynamic schema (extensional database)
Entitlements
Data management utility
High-frequency data handling
Weekend data
Multi-valued data and Multi-field data
Time-varying trading patterns
Non-contiguous trading patterns
Multiple databases and External databases
Custom search facilities
Multiple access paths to ticker symbols
The following shows the architecture of the MIM server.

The MIM client/server process functions as follows:
The process is made up of four components – (1) Master Server (2) Slave Servers (3) Clients (4) Database
The Master Server is the controlling process and acts like a traffic cop. Requests are made from the clients and the Master Server divides the workload among the slave servers.
The Slave Servers access the database performing the bulk of the work.
Once the client process has been assigned a Slave Server, communication is between the client and Slave Server until the request is complete.
Clients can be UNIX or PC clients. All clients use the rpc protocol to communicate with the server over the network or localhost. Port numbers are automatically assigned by the port mapper and are above 1024.
If a request is made for data, the Master Server will return the simple hostname and Slave Server port number to the client. The client will then establish communications with the Slave Server
It is very important that the client be able to resolve the simple hostname that the Master Server returns.
Each Master Server has a logical port number that is user defined between 0-255. The default port number is 0.
Each Slave Server within a Master Server has a logical port number beginning with 0 and incrementing up by 1 for each additional Slave Server.
There may be multiple Master Servers running on a single machine, each with a unique port number.