MARIAN DL Search System
Java Re-Engineering Project
(1998 - )


MARIAN Design Narrative


Draft 0.1
Robert France
26 December 1996

MARIAN is a multi-user information system designed primarily as a back-end digital library. It is designed to support large numbers of simultaneous sessions of the sort commonly encountered in library OPACs: short sequences of often unrelated queries punctuated by browsing and quick examination of relatively small documents. MARIAN also supports query editing and refinement based on an explicit query history.

Properly speaking, MARIAN also includes a set of utilities for document and natural language analysis that are used to transform a document collection into the files and databases that underlie its retrieval functions. Both bulk analysis and updates are supported. These tools not included in the current phase of this project.

Environment

A multi-tasked system, MARIAN is built in the form of a set of communicating modules running on one or more computers running MACH UNIX. We rely on MACH to provide us with standardized procedure calls between the modules, and also as a basis for multitasking within each module.

Each MARIAN module is functionally defined by its relation to a certain task or body of data. The object-oriented reader will recognize that MARIAN modules thus exactly suit the abstract definition of objects, and objects they are. They are, however, somewhat peculiar objects. For one thing, they tend to be very large, involving thousands or tens of thousands of lines of code each. For another, each module has one and only one instantiation in a running MARIAN at any time. The metaphor holds, however, in that each module presents a well-defined interface of "methods" to the rest of the system. These methods are implemented as remote procedure calls using the MACH interface Generator MiG. In most cases, module methods are sui generis, but modules in the Search Engine layer have enough similarity that they may fruitfully be described as children of a parent Search Engine type.

Architecture

MARIAN is made up of four layers, as shown in Figure 1: a Session Management layer, a User Interaction layer, a layer of Search Engines, and an underlying Database and File Management layer. The pyramidal shape adopted in Figure 1 is more than conventional: the upper layers are truly smaller than the ones below, both in terms of numbers of functional modules, to some extent in terms of amount of code, and especially in terms of the amount of machine time spent in each layer.

Fig. 1: The overall MARIAN system is made up of four layers.

The Session Management Layer consists of only a single module: the Session Manager (Fig. 2). The Session Manager is responsible for starting and terminating user sessions, including login and explicit logout, as well as terminating sessions which have been inactive for too long. It also keeps track of the progress of each query and can report to the user on their progress. User preferences are stored and modified by the Session Manager and passed from it to those modules that have need of them.

Fig. 2: The Session Management Layer.

Fig. 3: The User Interaction Layer.

Fig. 4: The Search Engine Layer.

Fig. 5: The Database and File Management Layer.


Back to DLRL Home Page