Chapter 1: はじめに


1.1 概要

Empressは、C/C++プログラミング言語を用いた、データベース構造へのアクセス用に、mxルーチン及びmrルーチンという 2セットのデータベース操作プロシージャを提供します。ここでのインタフェースは、 パーサーが個々の呼出しに対して起動 されないため、どのクエリーインターフェースよりも実行時間が短くなります。また、検索データの実行をより強力に制御し 、複合算術演算の実行、独自に定義できる出力フォーマットの作成など、高レベルのユーザインターフェースでの開発を可能 にします。ただし、データベース操作プロシージャの使用は、シェルインタフェースや標準Cインタフェースを使用する場合に 比べ、多くのプログラミング労力を必要とします。

mxルーチンは、mrルーチンに比べ簡素であり、大部分のアプリケーションプログラムに適しています。mrルーチンは、 アプリケーションが特に複雑であったり、処理速度が重要視される場合に使用するのに適しています。



1.2 仮想データベースマシンとしてのmrレイヤー

ユーザの観点から見た場合、Empress RDBSはデータベースに対して、構造的にアクセスするインタフェース(SQL、4GLなど) の集まりに見られます。これらのインターフェースはすべて、データベースユーザが直面する最も一般的な問題に対し、 様々なレベルにおいて、専門のプログラミング言語を提供します。 実装方法の視点から見て、システム(SQLプロセッサーempsql、4GLプロセッサーemp4glなど)のほとんどのコンポーネントは、 mrレイヤー(Empressの機能を十分な範囲で実装する、1セットのC機能)でプログラムされています。 したがって、mrレイヤーは、Empressデータベースに無制限のアクセスを提供する、ただ一つのソフトウェア層です。 言い換えれば、mrはEmpress RDBMSの、他のすべてのレイヤーを支援する根本的な仮想データベースマシンです。

最下層のライブラリに対するアクセスを、ユーザに対して提供していることは、Empressのユニークな特徴です。 mrルーチンは、Empressデータベースにアクセスする最も速い手段を提供しています。一方、それら関数の使用はとても複雑です。 どのような人がmrレイヤーを使用するかと聞かれた場合、最もシンプルな答えは、処理時間を重要視する、アプリケーションを 作成したことのある、C/C++プログラマーです。 しかし、mrレベルでのプログラムは複雑です。私たちは、それらのアプリケーションのより高いレベルの、プロトタイプを最初に 書くように、ほとんどのユーザに助言します。この最初のレスポンス時間により、ユーザはmxかmrか、どちらでプログラムする か判断してください。

mrは、データベースにアクセスするためのC関数を提供する、ただ一つのEmpressライブラリではありません。 mxレイヤーは、より高い層(empsqlまたはプリコンパイラより下の層で)にmr機能の一部を提供します。 mxレイヤーは、mrレイヤーで実装されていることは明らかですが、それはあまり効率的ではありません。 複数のテーブルを結合して処理するような、mxルーチンでプログラムすることができない、いくつかのオペレーションが あります。 データベースへアクセスするアプリケーションは、ほとんどmxで十分に効率的です。しかし複雑なアプリケーションや 、処理速度を重視するようなアプリケーションでは、mrルーチンの使用が適応です。



1.3 mrとmxインタフェースの比較

mxとmrインタフェースは、SQLやプリコンパイラーインタフェースよりも、Empressデータベースにアクセスする、より 高度な機能を提供します。mxとmrインタフェースの間には、その実装方法の中に違いがあります。mrのほうが より多くの関数を提供しています。以下に、プログラムする上でmrおよびmxの間の、主要な機能差を要約します。

  1. mrは同時に複数テーブルにアクセスできますが、mxは同時に1つのテーブルしかアクセスできません。

  2. mrは、アプリケーション中で、検索したレコードに対してロック/アンロックができます。またテーブルをロック したり、解放する関数があります。

  3. mrでは、集計関数を使用できます。(mrgfunc()関数を使用)

  4. mrでは、テーブルへのアクセスを早くするために、データベースのオープン/クローズ関数があります。

  5. mrでは、ディレクトリーがEmpressデータベースか、テストする関数があります。

  6. mrでは、複雑な表現を構築する事が可能です。それは、その後条件ディスクリプタを構築するのに、使用 することができます。よってEmpressの組込み関数や、ユーザ定義関数、数学関数を使用することが できます。

  7. mrでは、サブクエリー使用したような、複雑な条件を構築するための、沢山の関数が用意されています。

  8. mrでは、各種ディスクリプタ(テーブル、レコード、フィールドなど)を使用した、プログラミングを提供します。 mxでは、そのような構造体に直接アクセスする、手段は与えられていません。

  9. mrでは、内部フォーマットで処理するのではなく、外部フォーマット(文字列)で処理する方法を、mxより多く 提供しています。

  10. 一般的に、mrルーチンはmxルーチンに比べて高速です。

  11. mrには、以前に検索したレコードへのポインタを格納したり、後でそのレコードを再検索することができる 関数を持っています。


1.4 サポートされるC言語バージョン

mrルーチンは、UNIXシステムで実行される、Cプログラミング言語のほとんどのバージョンをサポートします。 また、それらはC++プログラムから呼出しが可能です。

Windowsシステムでは、mrルーチンはMicrosoft VC++をサポートします。



1.5 例題で使用されるデータベース

mrルーチンを解説するために、使用されるプログラム例は、repairsという名前のデータベースにアクセスします。 このデータベースには、personnelテーブルとloansテーブルがあります。personnelテーブルには、従業員に関するデータ、 番号(number)、名前(name)、電話番号(phone)、クレジット限度額(credit_limit)のフィールドがあります。 loasnテーブルには、従業員のローン情報、名前(name)、ローン日付(date)、ローン金額(amount)があります。この2つの テーブルを作成するコマンドを以下に示します。

   CREATE personnel (number INTEGER, name CHAR (25, 1),
        phone CHAR (15, 1), credit_limit dollar (6, 1));
   CREATE loans (name CHAR (25, 1),
        date DATE (1), amount DOLLAR (6, 1));

   *** Table: personnel ***
   
   number     name          phone        credit_limit
   
   10         Kilroy        426-9681     $500.00
   3          Jones         667-2951     $500.00
   5          Mosca         544-2243     $750.00
   17         Wladislaw     723-6073     $600.00
   8          Peterson      978-6060     $250.00
   4          Scarlatti     961-7363     $100.00

テーブルは、それぞれ以下のレコードを格納しています。


   *** Table: loans ***
   
   name          date                 amount
   
   Mosca         2 February 1992      $150.00
   Jones         7 February 1992       $33.95
   Kilroy        16 February 1992     $250.00
   Wladislaw     27 February 1992      $55.00
   Jones         3 April 1992          $25.00
   Mosca         4 May 1992           $200.00
   Wladislaw     12 May 1992           $25.00
   Peterson      6 June 1992           $50.00
   Wladislaw     25 June 1992          $75.00
   Jones         12 August 1992       $300.00
   Jones         25 December 1992     $100.00

上記2つのテーブルを持つデータベースを作成し、このマニュアルで提供される、サンプルプログラムの実行でアクセス されます。

データベースディレクトリ配下での、アプリケーションの実行、またはテストをしないでください。データベースファイルを 破壊する危険があります。



1.6 リファレンス

このマニュアルは、読者がCプログラミング言語、およびデータベースに熟知している事を想定しています。もし、そうでない 場合には、以下にリストされているリファレンスを参照してください。


Database

Date, C. J. (1995). An Introduction to Database Systems Addison-Wesley, Reading, Mass., 6th. ed.

ISO/IEC 9075-4: 1996(E) Database Language SQL - Part 4: Persistent Stored Modules (SQL/PSM).

Tsichritzis, D. T., & Lochovsky, F. H. (1977). Database Management Systems. Academic Press.


UNIX

Kernighan, B. W., & Ritchie, D. M. (1978). The C Programming Language. Prentice-Hall, Inc., Englewood Cliffs, New Jersey 07632.

Kernighan, B. W. & Ritchie, D. M. (1978). "UNIX Programming Second Edition." The UNIX Programmer's Manual, Vol.2, B. W. Kernighan & M. D. McIlroy (editors), Bell Telephone Laboratories, Inc., Murray Hill, New Jersey.


Windows NT

VC++ 5.0 On-Line Help from Microsoft Corporation.