Empressは、C/C++プログラミング言語を用いた、データベース構造へのアクセス用に、mxルーチン及びmrルーチンという 2セットのデータベース操作プロシージャを提供します。ここでのインタフェースは、 パーサーが個々の呼出しに対して起動 されないため、どのクエリーインターフェースよりも実行時間が短くなります。また、検索データの実行をより強力に制御し 、複合算術演算の実行、独自に定義できる出力フォーマットの作成など、高レベルのユーザインターフェースでの開発を可能 にします。ただし、データベース操作プロシージャの使用は、シェルインタフェースや標準Cインタフェースを使用する場合に 比べ、多くのプログラミング労力を必要とします。
mxルーチンは、mrルーチンに比べ簡素であり、大部分のアプリケーションプログラムに適しています。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ルーチンの使用が適応です。
mxとmrインタフェースは、SQLやプリコンパイラーインタフェースよりも、Empressデータベースにアクセスする、より 高度な機能を提供します。mxとmrインタフェースの間には、その実装方法の中に違いがあります。mrのほうが より多くの関数を提供しています。以下に、プログラムする上でmrおよびmxの間の、主要な機能差を要約します。
mrルーチンは、UNIXシステムで実行される、Cプログラミング言語のほとんどのバージョンをサポートします。 また、それらはC++プログラムから呼出しが可能です。
Windowsシステムでは、mrルーチンはMicrosoft VC++をサポートします。
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つのテーブルを持つデータベースを作成し、このマニュアルで提供される、サンプルプログラムの実行でアクセス されます。
データベースディレクトリ配下での、アプリケーションの実行、またはテストをしないでください。データベースファイルを 破壊する危険があります。
このマニュアルは、読者が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.