JPH02226472A - データベース・システムおよびデータベース・システムにおける関数式評価方法 - Google Patents

データベース・システムおよびデータベース・システムにおける関数式評価方法

Info

Publication number
JPH02226472A
JPH02226472A JP2003308A JP330890A JPH02226472A JP H02226472 A JPH02226472 A JP H02226472A JP 2003308 A JP2003308 A JP 2003308A JP 330890 A JP330890 A JP 330890A JP H02226472 A JPH02226472 A JP H02226472A
Authority
JP
Japan
Prior art keywords
function
expression
module
database
functions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003308A
Other languages
English (en)
Inventor
Peter Lyngbaek
ピーター・リンベック
Kevin Wilkinson
ケビン・ウィルキンソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH02226472A publication Critical patent/JPH02226472A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
〔発明の技術分野〕 本発明は、一般にコンピユータ化データベース・システ
ムに関するものであり、更に詳細には関数式(func
tional expression)によりアクセス
できるデータベース・システムに関する。 〔発明の概要〕 本発明による関数的データベース・システム(func
tional database system)では
、データベース・システムに対する要求はすべて関数式
で表わすことができる。 手短かに且つ一般的に言えば、データベース・システム
に関する関数式を評価する、本発明による方法は、関数
式を拡張関係代数(extendedrelation
al algebra )により関係代数の式にコンパ
イルすること、および関係代数式をベータベースに格納
されているデータを参照して解釈実行しいnterpr
ete) 、関数式の値を得ること、から構成される。 関数はコンパイル中に生成されたりあるいは呼出される
ことがある。このような関数はコンパイラな再帰的に呼
出して評価することができる。同様に、解釈実行中に関
数が生成されたり呼出されることがある。この場合もコ
ンパイラを再帰的に呼出してこの関数を評価することが
できる。インタープリタは、関係代数式が解釈実行中に
発生Uそれ自身も解釈実行されなければならないとき、
再帰的に呼出すことができる。 拡張関係代数には、たとえば、データベース更新演算子
(database update operator
 ) 、外部関数演算子(foreign  func
tion operator )’、および順序演算子
(5equence opera tor )がある(
順序演算子は演算を行うべき順序を指示する)。 インタープリタは外部関数(関係代数で表現されていな
い関数)を呼出すことができる。 本発明によるデータベース・システムは、磁気媒体また
はコンピュータ・メモリ・/ステムのような格納手段、
通信システムおよびコンビー一り端末のようなインター
フェース手段、および−肝のモジュール、を備えている
。モジュールには、インターフェース手段を通してユー
ザから関数式を受取る実行モジュール(executi
ve module)、実行モジュールに応答して関数
式を関係代数式にコンパイルするコンパイラ・モジュー
ル、実行モジー−ルに応答して関係代数式を解釈実行す
るインタープリタ・モジュール、およびインタープリタ
・モジュールに応答し、インタープリタ・モジュールか
ら得られた値に従ってデータベース操作を行うデータベ
ース記憶管理モジュールがある。 システムは好ましくはインタープリタ・モジュルに応答
して外部関数を呼出すオブジェクト管理モジュールおよ
びインタープリタ・モジュールに応答して格納データの
検索および更新を管理するキャッシュ・インターフェー
ス・モジュールを備えている。 本発明の他の局面および利点は例を用いて本発明の原理
を図解している図面と関連して行う以下の詳細な説明か
ら明らかになるであろう。 〔発明の実施例〕 例示目的の図面に示すように、本発明はシステムに対す
るすべての要求を関数式として提示することができるデ
ータベース・システムによシ具現される。 本発明によるデータベース・システムに関する関数式を
評価する方法は、関数式を第1図のブロック1で示すよ
うに拡張関係代数によシ関係代数式にコンパイルするこ
と、および関係代数式をフロック13で示すようにデー
タベースに格納されているデータを参照して解釈実行し
、関数式の値を得ることから構成される。 コンパイル(ここでは「変換」とも言う)では好捷しく
はブロック15で示すようにコンパイラの再帰的呼出が
行なわれる。同様に、解釈実行では、ブロック17に示
すようなインタープリタの再帰的呼出、およびブロック
19に示すようなコンパイラの再帰的呼出が行なわれる
。 拡張関係代数は好ましくはデータベース更新演算子、外
部関数演算子、および順序演算子を備えている。関係代
数式は外部関数を呼出すことにより得られるデータを参
照して解釈実行される。 インタープリタによυ得られる値に従うデータベース操
作は好ましくはブロック21で示すように行われる。 好ましくはユーザ(人間のオペレータまたはアブリケー
ンヨン・プログラム)は、ブロック23で示すように、
データベース操作(検索、更新、データの定義、システ
ム・データへのアクセス、など)に関する要求を実行モ
ジュール(ここでは[評価部(eva I ua to
r )J とも言う)に対して関数式の形で提出する。 実行モジュールは、ブロック23に接続されているブロ
ック25で示すようにコンパイラを呼出す。 コンパイルが行われた後、実行モジュールはフロック2
7で示すようにインタープリタを呼出す。 第2図に示すように、本発明によるデータベース・シス
テムには、情報を格納するディスク・ドライブ31のよ
うな記憶手段、システム・ユーザと接続する端末33の
ようなインターフェース手段、インターフェース手段を
通してユーザから関数式を受取る実行モジュール35、
実行モジュル35に応答して関数式を拡張関係代数を使
って関係代数式にコンパイルするコンパイラ・モジュー
ル37、実行モジュール35に応答して関係代数式を記
憶手段31に格納されているデータを参照して解釈実行
し、関数式の値を得るインタープリタ・モジュール39
、およびインタープリタ・モジュール39に応答してイ
ンタープリタ・モジュール3つにより得られた値に従い
データベース動作を行うデータベース記憶管理モジュー
ル41がある。 好ましくはシステムはインタープリタ・モジュル39に
応答して外部関数を呼出すオブジェク1−管理モジー−
ル43を備えている。外部関数とは関係代数で表現され
ていない関数である。オブジェクト管理モジュール43
それ自身は好ましくは複数の外部関数を含んでいる。そ
の他のこのような関数は記憶手段31に格納することが
できる。 システムは好ましくはインタープリタ・モジュルに応答
して格納データの検索および更新を管理するキャッシュ
・インターフェース・モジュール45をも備えている。 キャッシュ・インターフェース・モジュール45および
オブジェクト管理モジュール43はインタープリタ・モ
ジュール39とばかりでな(、互いに、および記憶管理
モジュール41と、直接通信することができる。 本願発明者は持続性のあるオブジェクト(persis
tent object )に関する一般の関数式を評
価するプロセスを提案する。このプロセスによれば、デ
ータベース・システムに対するすべての要求を関数式の
形で表現することができる。特に、データベースへの質
問、データベースの更新、データの定義(新しいデータ
ベース関数の定義を含む)、およびシステム・データ(
すなわち、メタ・データ(meta−data ) )
へのアクセスは関数で表わすことができる。同様なプロ
セスのこれまでの記述はデータベースからの検索しか扱
っていない(参考文献〔l〕を参照)。本プロセスには
このような制限はな(、データベースへの要求はすべて
この枠組で処理することができる。 データベースの関数式を評価するプロセスには以下の2
つの段階がある。 段階1:関数式を拡張関係代数式にコンパイルする。従
来のデータベース関係代数を、データベース更新演算子
、外部関数演算子(参考文献〔3〕を参照)、および順
序演算子を用いて拡張している。 関数式から拡張関係式への写像は、やはり関数およびオ
ブジェクトでモデル化されているシステム・カタログに
よシ支援される。カタログから値を得るために、コンパ
イラは評価部を再帰的に呼出すことにより適切なシステ
ム関数を呼出す。 関数式を関係代数に変換する一船釣プロセス゛は、検索
動作について他の所で述べられている(参考文献〔4〕
を参照)。本発明のキーは一組の新しい関係演算子であ
る。これらによって、本システムはシステム自身の動作
を使って実現することができる。 段階2:拡張関係式の解釈実行。この段階はデータベー
スにアクセスし、外部関数を呼出して実行することによ
り行われる。この段階は元の関数式によシ指定された要
求を遂行する。このプロセスを第3図のブロック図に示
す。 コンパイラおよびインタープリタは共に評価部を再帰的
に呼出すことができることに注意されたい。この方法に
は下記の利点がある。 システムが自己記述的である。すべてのメタ・データ(
すなわち、システム関数)はユーザ・アクセス可能な関
数を介して検索され、更新される。 エンド・ユーザとシステムは同じ機構を内部的に使用し
てシステム関数にアクセスし、更新する。 拡張関係代数に変換することができない一般式は外部関
数により表現することができる。これによ構成る程度の
融通性および拡張性が得られる。 このプロセスによりいろいろなレベルで性能の最適化が
できる。 頻繁にアクセスされる関数の値を評価部によりキャッシ
ュ(cache)することができる。 頻繁に使用される関数の拡張関係代数表現をキャッシュ
することができる。 インタープリタによりデータベースから頻繁に得られる
データをキャッシュすることができる。 〔A〕  はじめに 以下では本発明に基づいて構成された特定のシステム(
Iris)について説明する。 データベース・システムである。このモデルは高レベル
の構造的抽象概念(structual abstra
cti’on)の他に挙動的抽象概念(behavio
ral abstraction)もサポートする。質
問は関数式で書かれ、関数値はデータベース手続によシ
変更することができる。 ユーザが新しい関数を定義できるようにすることにより
、拡張性が得られる。 長期目標の一つは■口Sンステムをそれ自身の関数およ
び手続により記述し実現することができるようにするこ
とである(参考文献〔8〕を参照)。 これを行うには、より高いレベルの操作を定義するのに
使用することができる、オブジェクト生成および関数更
新のための適当な一組の原始的操作を見つけなげればな
らない。この方法によれば新しいデータ・モデル操作の
プロトタイプを通常のデータベース関数として容易に作
ることができる。 この方法によシ、作りなおしの労力をほとんどかけずに
、各種の意味のたとえば多重継承、バージ3ン変更(v
ersioning)  および複合オブジェクトの実
験を行なうことができる。Ir1sデ一タベス言語およ
びそのシステム構造に及ぼす影響の性格が本論の主題で
ある。 初期のIr1sのインプリメンテーションでは(参考文
献〔10〕を参照)、Ir1sデータ・モデルのすべて
の操作、たとえば、オブジェクトおよび関数の生成に関
する操作は、C言語サブルーチンとして実現され、別個
のIr1sエントリ・ポイントドして与えられた。この
方法では、複雑なデータベス手続が原始的な組込システ
ム操作により書かれるデータベース言語をサポートする
ことは不可能である。 これに加えて、メタ・データのアクセスはhisシステ
ム関数のキャッシュ、すなわち、システム・カタログを
保持しているC言語サブルーチン・ライブラリを介して
内部的に提供されていた。これらサブルーチンは通常の
Ir1s 関数のようにはアクセスすることができず、
その使用および制御フローはどちらかと言えばその場し
のぎのものであった。更に、キャッシュされたシステム
関数は通常の関数とは異なるやシ方で更新された。新し
いシステム関数を追加することは、これらが異なる2つ
のアクセス機構、つまり一方はユーザ用、他方はIr1
s  内部用のもの、でサポートされているため、めん
どうなものであった。 Ir1sの真髄は関数の適用および更新であるから、本
願発明者はIr1s システムを関数を呼出すという単
一操作の周シに構築しなおしている。したがって、この
再構築は2つの任務から構成されている。すなわち我々
がサボー1−することができるIr1s言語の能力を定
義すること、また内部メタ・データのアクセスとシステ
ム操作を■1°1s関数として実現しなおすことである
。 課題は2つの任務に対する効率的な解決法を見出すこと
である。Ir1sデ一タベース言語の特徴を、効率的に
コンパイルし最適化する仕方がわかっているものに限定
しなければならない。また頻繁に呼出されるもののオー
バへノドおよび径路長を限定する、システム関数の効率
的な実行戦略を考案しなげればならない。あらゆる動作
、ユーザ・アクセス可能なものおよびシステム内部のも
の、に対して関数実行機構が一つしかないという簡単な
ものが好ましいと考えるが、その実行は効率的でなけれ
ばならない。 本論の残りは次のように構成しである。B節はIr1s
データ・モデルを簡単に概観する。0節で、Ir1sデ
ータ・システムのインターフェースについて説明し、D
節では新しいシステム構造およびその構成要素について
説明する。 [:Bl:l  Ir1sデータ・モデルの概観Ir1
sデータベース・システムは抽象データ型をサボー1−
する意味論的データ・モデルに基いている。その源は参
考文献〔13〕および〔12〕を参照されたい。また参
考文献〔11〕や〔7〕のような、最近の多数のデータ
・モデルもIr1sデータ・モデルと多くの類似性を持
っている。Ir1sデータモデルには3つの重要な構成
要素、すなわち、オブジェクト、型および関数がある。 これらについて以下に手短かに記す。Ir1sデータ・
モデルおよび■口sDBMSの一層完全な説明は参考文
献〔8〕および〔6〕に記されている。本節を通じて、
我々はIr1sのモデル構成要素を対話型08QLデタ
ベース言語を用いて説明する。 CB−1]オブジエクトと型 Ir1sにおけるオブジェクトはモデル化されているア
プリケーション領域からの実体および概念を表わす。整
数および文字列のような幾つかのオブジェクトはリテラ
ル・オブジェクトとして扱われ、常に利用可能且つプリ
ント可能と見なされる。 代理オブジェクト(surrogate object
 )はシステムが生成したオブジェクト識別子すなわち
oidにより表わされる。代理オブジェクトの例には人
物および部門を表わすオブジェクトがある。 型は一意的な名前を持っており、各型は共通の特性を分
かち持っているオブジェクトの集まりを表わす。たとえ
ば、顧客を表す型Cus tomer  に属するオブ
ジェクトはすべて名前および電話というアトリビュート
を備えている。オブジェクトは関数の引数として働き、
関数の結果として返すことができる。オブジェクトは型
に関して定義された関数に対してオペランドになること
ができる。 代理オブジェクトは複数の型に属することができる。更
に、オブジェクトは型を動的に得たり失ったりすること
ができる。たとえば、ある人物を表わすオブジェクトは
従業員型Employeeのインスタンスとして発生す
ることができる。後にこのオブジェクトは後に型Emp
loyeeを失って退職者型Retireeを得るかも
しれない。この事態が発生すると、型Retireeに
関して定義されているすべての関数がこのオブジェクト
に対して適用可能になり、また型Employeeに関
する関数は適用できなくなる。 型は一般化と特殊化をサポートする型構造に組織されて
いる。ある型は他の型の下位の型であると宣言すること
ができる。このとき、他の型はその上位の型となる。型
の関連図はIr1sにおけるイン−、IJタンスをモデ
ル化するものである。所与の型に関して定義されて(・
る関数はその下位の壓のいずれに関しても定義される。 関数の段階的詳細化をサポートするために、関数名をオ
ーバーロドすることができる。すなわち、異なる型に関
して定義された異なる関数に同じ名前を与えることがで
きる。オーバーロードされた関数名を用いて関数呼出が
発生されると、この呼出しに対して特定の関数が選択さ
れる。Ir1sは実引数の最も特定的な型(つまり、実
引数の型、あるいはこの型に最も近い上位の型)に関し
て定義されている関数を選択する。 (B−2)関数 オブジェクトのアメリビュ、−1−、オブジェクト間の
関係、およびオブジェク1−に関する言+’ 3Q’は
関数で表わされる。関数は型について定義され、多値で
あることができ、副作用を持つことができる。 Ir1sでは、関数の宣言はその実現とは別になってい
る。これによ構成る程度のデータの独立が得られる。 型はそれに関して定義される関数の集まりにより特徴づ
けることができる。従業員型には以下の関数が定義され
ているとしてよい。 J obT目1e:従業員→文字列 B m p D e p t :従業員→部門M、an
ager :従業員→従業員 S nl Hi s t :従業員→整数X日付Cha
ngeJob :従業員X文字列x部門→論理型Sm1
thがJ 0neSが管理するToolki t De
partmentでソフトウェア技術者(Softwa
re Engineer )として働いているとすれば
、 JobTitle(Smith)=”Software
 EngineerEmpDept (Smith )
=Toollci tManager(Smith)=
JonesS a l Hi s t  関数は多値で
ある。これは複数の結果型を持つ関数の例でもある。多
値は一組の給料オブジェクトおよび日付オブジェクトか
ら構成される。日付は給料が変更された時を示す。Sm
1thが月給$3000で3/1./87に雇われ、3
/1/88に$300昇給したとすれば、 S、31Hist(Smith)=(<3000 、3
/ 1 / 87><3300 、3/1/88>] 関数ChangeJob は副作用を持つ。この関数は
所与の従業員を所与の部門に割当て、指定に応じて職務
の名称を変更する。これは引数の型が複数ある関数の一
例である。Sm1thがアプリケーション部門(App
lications Department)のプロジ
ェクト−7ネージヤー (Project Manag
er ) ヘ昇進したことは次の関数呼出によりデータ
ベースに反映させることができる。 ChangeJ ob (Smi th 、 ”Pro
jec t Manager” 、Appl ica 
t 1ons )この呼出において、Sm1thとAp
pl 1cat 1onsはoidを示す。 新しい関数はその名前をその引数および結果型と共に指
定することにより宣言される。 *rcatc function Manager (
Employee)=:5upervisor/Emp
loyee ;関数を使用する前に、その実現形態を指
定しなげればならない。このプロセスについてはB−4
に記す。 (B−3)  データベースの更新および質問オブジェ
クトの特性は関数の値を変えることによシ修正すること
ができる。たとえば、操作Set JobTi tie
(Smi th ) = ” MT S ” ;add
 Sat Hit (Smi th ) =<3800
 、1/1/89>;を行なうことにより、将来、Jo
bTitle関数にパラメータSm1th  を与えて
呼出すと、値MTSを返すようにし、また別の給料と日
付の組合せをSm1thの給料経歴に追加する。関数値
を設定し追加する他に、1つまたは複数の値を多値関数
の数値セットから除くことができる。すべての関数が更
新可能というわけではない。 データベースはオブジェクトに関する述語表現および関
数値を指定することにより質問を受けることができる。 質問は変数および関数適用を使用する結果のリスト、実
際に数量化される変数のリスト、および述語表現を指定
する。述語は変数、定数、ネストされた関数適用、およ
び比較演算子を使用することができる。質問を実行する
と変数のインスタンスができる。質問の結果変数のすべ
てのインスタンス化された値および関数適用の結果が結
果リストに指定される。この結果はストリームとして返
される。下記の質問はSm1th  の給料カ変更され
たすべての日付を検索する。 5elect  d for each Date d、 Integer 
swhere 5alHist (Smi th ) 
=< s 、 d > ;また、以下の質問はSmi 
thのマネージャの名前を返す。 5elect Manager(Smith);[:B
−4]  関数の実現 これまで、質問および更新における関数の宣言およびそ
の使用法について述べてきた。関数の別の重要な特性は
その挙動の指定である。関数値Gまデータベース内に明
示的に格納することができるし、あるいは計算すること
ができる。ここで使用する方法はユーザが指定するもの
であシ、関数の実現(implementat ion
 )と呼ばれる。一般に、関数は実現された仕方に関係
なく質問に使用することができる。Ir1sは関数を実
現するための3つの方法、格納、導出、外部、をサポー
トする。 格納型関数 関数の拡張は表に明示的に格納することができる。すな
わち、対応する引数および結果値(関数の写像)を1つ
の表に保持することができる。性能を改善するため、幾
つかの関数を同じ表に集めることができる。格納型関数
は更新することができる。すなわち、引数値から結果値
への写像を明示的に指定することができる(B−4)。 検索および更新の動作は表についての関係演算により暗
黙に指定される。his関数の関係表(relatio
naltable)への写像の形式的な取扱いは参考文
〔9〕に見ることができる。 導出型関数 関数は格納型、導出型、または外部である他の関数から
計算することができる。導出型関数はhisデータベー
ス言語表現により意図的に定義される(B−3)。導出
型関数はオブジェクトの集合への連想的(associ
ative)アクセスをサポートし、his質問変換部
により最適化することができる。 Exodus法(参考文献〔2〕を参照)と異なり、I
r1sデ一タベース言語を汎用プログラミング言語とす
るつもりはない。その目標はデータ・モデルの大部分の
演算を実現する手続関数の定義をサポートするに充分強
力なデータベース言語を提供することである。外部型関
数は、以下に記すが、汎用プログラミング言語の完全な
一般性を達成する。 格納型関数に関する質問により定義された導出型関数は
格納データの1つのビューとしてしか考えることができ
ない。このような関数の更新の意味は必らずしもよく定
義されていない。たとえば、所与の関数の導出表現が幾
つかの表の結合を必要とする場合、この関数を直接更新
することはできない。 しかし、更新の動作はビュー更新(vie〜v upd
ate )問題を解くことができる場合には、Ir1s
により暗黙裏に定義される。格納型関数の逆関数として
定義される関数は更新可能な導出型関数の例である。他
の場合には、更新の意味を関数の定義の一部として明示
的に指定してもよい。 一連の更新ステートメントにより定義される関数はデー
タベース手続として考えることができる。 このような関数は副作用があり、更新することができな
い。 外部関数 外部関数は成る汎用プログラミング言語で書かれたプロ
グラム言語により定義され、Ir1sの外部でコンパイ
ルされる。オブジェクト・コードはhisデータベース
に格納されている。外部関数が呼出されると、プログラ
ムが動的にロードされて実行される。外部関数は融通性
と拡張可能性を持つ。 データベース言語は計算的に完全ではないから、導出型
関数として表わすことができない成る機能がある。外部
関数はこのような機能システムに組入れる機構を提供す
る。更に、全存在しているプログラムを外部関数の機構
を使ってIr1sに容易に組込むことができる。 外部関数はIr1sシステムにより最適化することはで
きない。しかし、その質問での使用法は最適化できる可
能性がある。 外部関数およびそれらをIr1sでサポートする機構は
参考文献〔3〕に記述されている。 [B−5〕Ir1sシステムのオブジェクトIr1sで
は型および関数もオブジェクトである。 これらはそれぞれシステムの型であるT y p eお
よびFunctionのインスタンスである。Ir1s
システムの型およびその下部型/上位型の関係を第4°
図に示す。通常のユーザ指定の型と同様、システム型に
はそれらに関して定義した関数がある。システム関数は
格納、獲得、または外部、の各関数として実現され、副
作用を持っていることがある。 システム型および関数の集まりは■risメタ・ブタを
モデル化する。この方法によりメタ・データを1ris
データ・モデルでモデル化することができる。 副作用のないシステム関数はメタ・データを検索する。 このような関数には、型または関数の名前を返す関数、
引数および関数の結果の個数を返す関数、型の下位の型
を返す関数、引数および関数の結果の宣言された型を返
す関数、および関数ののコンパイル後の表現を検索する
関数のようなものがある。 副作用を持っているIr1sシステム関数をシステム手
続と呼ぶ。これらはオブジェクトマたは型を作り出すこ
と、関数を実現すること、関数の値を変更すること、お
よびデータベースに質問すること、のよ5なデータ・モ
デルの操作を実施する。 (C) Ir1sカーネル・インターフェース〔C−1
〕機能 Ir1sのカーネルはIr1sデータ・モデルを実現す
るプログラムである。これは関数評価部、または更に一
般的には式トリー評価部(express 1ontr
ee evaluator )、として働く、単一のエ
ンドす°ポイント、1ris eval、を経てアクセ
スされる。 his  式トリー内の各ノードは自己識別的であり、
ヘッダおよび幾つかのデータ・フィールドから構成され
ている。へノダはノード型を規定する。 (ノート型はオブジェクトの型とは異なる概念である。 ノード型は単にインターフェース・データ構造を識別す
るだけである。)可能なノード型は次のとおりである。 オブジェクト識別子、変数、関数呼出、およびリテラル
形式(すなわち、整数、実数、論理型、文字列、2進、
バッグ(bag)、 リスト)の各々に1つづつのノー
ト型。 カーネルの要求は式トリーの形でフォーマ、トされる。 ユーザ関数およびシステム関数は(比較や同等性チエツ
クのような基本関数も含めて)゛すべで関数呼出を経て
呼出される。現在のところ、カーネルに送られる式トリ
ーのルートは関数呼出でなければならない。関数引数を
評価し、関数を呼出すプロセスを矢筒で述べる。 hisカーネルの呼出の結果も式トリーである。ただし
、結果の式トリーは全て定数ノート(すなわち、リテラ
ルまたはoid )から構成されている。 結果l・リーの内容および構造は入力式トリーにより指
定された関数により変わる。たとえば、○bjCrea
te  システム手続(オブジェクトを作り出す)を呼
出すと単一ノード、オブジェクト識別子、がら成る式ト
4リーを返す。しかし、多値関数または2つ以上の結果
型を持つ関数を呼出すと、それぞれ、バッグまたはリス
トを返す。たとえば、システム選択手続(オブジェクト
の集まりを見つける)はオブジェクトのバッグを返す。 個々のhisカーネル要求は結果バッファおよびエラー
・バッファを指定する。エラー・バッファは要求の処理
中に遭遇したエラーを記録するのに使用される。結果バ
ッファには要求の結果が詰込まれる。結果バッファが結
果オブジェクト全体を入れるには小さ過ぎる場合には、
バッファに適合するだけの結果が返される。充分なスペ
ースを確保することは要求元(client )の責任
である。 成る場合には、結果の大きさが予測できないことがある
。その場合には、S can 0penシステム手続を
使用して結果オブジェクトの走査(scan )を生成
することができる。5(alopenに対する引数は単
に元の要求式トリーである。 走査をオープンすることは依頼元にとって頻繁な操作で
あることが予想される。したがって、便宜上、カーネル
は別のエントリ・ポイント 1ris−open、 +
ris−next%1ris−closeを提供する。 これらはそれぞれIr1sシステム手続5canOpe
n、5canNext、 S cancIoseと同じ
機能を示す。 エントリ・ポイントの他に、式トリーを操作する任務を
簡単にするのに、多数の有用な操作が設けられている。 たとえば、ノードの型を返す、ノードをプリントする、
ノードをコピーする、という有用な操作がある。 hisカーネルは独立のサーバ(server )プロ
セスとして動作することができるし、あるいは直接依頼
元のプロセスにリンクすることもできる。 非サーバ化モード(non−server 1zed 
mode )では、カーネルと依頼元は同じアドレス空
間で実行される。したがって、カーネルは、その私有デ
ータを保護するためのハードウェア・サポートがなけれ
ば、バグや依頼元による危害に敏感である。しかしなが
ら、このモードで動作させる性能上の利点ントする。し
かし、引数は型がついているので、フォート関数の必要
はない。特に、引数が式として宣言されていれば、コン
パイラはこれを評価しようとせず、単にこの式トリーを
関数に伝えるだけである。たとえば、システム関数5e
lectに対する述語引数は式として定義される。 [D]  Ir1sカーネルの構成 りisカーネルは、要求を受理し、要求を実行し、応答
を送出する、ことの無限ループのサーバとして動作する
。実行フェーズは、2つのステップ、つまりコンパイル
と解釈実行、から成る。カーネル要求は関数式トリーの
形をしている。インタープリタは関係代数トリー(実際
には、拡張関係代数トリー)に対して動作する。したが
って、コンパイラは関数トリーを関係代数トリーに変換
しなければならない。インタープリタは関係代数トリー
上を渡り歩いて(traverse )結果を発生する
。 カーネルはソフトウェア・モジュールの集まりとして組
織されている。これらは第5図に示すように層を成して
いる。最上レベルのモジー−ル、EX(実行モジュール
)はカーネルのエントリ・ポイントおよび基本サーバ・
ループを実現する。 各要求に対して、質問変換モジュールQTを呼出してこ
の要求に対する関係代数トリーを構築する(参考文献〔
4〕を参照)。次に関係代数トリーを質問インタープリ
タ・モジュールQIに伝えて結果を得る。 M a r sはbis記憶管理モジュールである。こ
のモジュールはデータ共有、トランザクション管理、お
よびストアされている表へのアクセスを行う。 Bトリー・インデクスを表について定義するこ“とがで
きる。M a r sは表中のタプルを挿入、削除、更
新し、述語表現を使用して表からタプルを連想的に検索
するプリミティブを提供する。M a r sは同時制
御を行なうため、異なるプロセス間の共有メモリ・バッ
ファを使用する。 オブジェクト管理モジュールOMはIr1sシステム手
続の幾つかを(後に説明するように)外部関数として実
現する。キャッシュ・インターフェース・モジー−ルC
IはカーネルとMars との間の中間の層である。こ
れはカーネルとMarsとの間のデータ検索およびデー
タ更新のためのブリフエンチおよびキャッシュ管理を行
う。第5図で○■およびOMからMarsへの直接接続
があるのは、幾つかのデータ定義コマンドおよびトラン
ザクション制御コマンドがキャッシュ・インターフェー
スを迂回していることを示す。 本節の残りは質問変換モジュールおよび質問インタープ
リタ・モジュールについて一層詳細に述べる。またメタ
・データ・アクセスおよびオブジェクト管理モジュール
の機構についても説明する。 〔D−11質問変換モジー−ル Ir1sカーネルに対する要求はIr1s関数式トリす
なわちFトリー としてフォーマットしなければならな
い。関数式トリーの)−トには関数呼出し、変数、およ
びリテラル・ノードがある。 質問変換プロセスは3つの主要なステップから構成され
る。第1に、Fトリーを基準形式(cano旧cat 
 form )に変換する。これには以後の変換を簡単
にするために行われる一連の1・り一変換が含まれる。 たとえば、ネストされた関数呼出は補助変数を導入する
ことによりネストから出される。第2のステップは基準
Fトリー(canonicalF−1ree)  をR
l−1)−として知られている拡張関係代数トリーに変
換する。これは関数呼出をその実現形態(これはそれ自
身Rトリーである)で置換える機械的プ町セスである。 たとえば、比較関数(たとえば、等しい、等しくない、
よシ少い、など)呼出は関係代数の選択演算子に変換さ
れる。 論理関数ANDは交差績(cross−product
 )演算子に変換される。 得られるRトリーは、射影(project )、選択
、および交差績という関係代数清算に関するノードから
構成されている。質問インタープリタ・モジュールQI
の機能を増すため、幾つかの追加ノードがある。tem
p−tail e ノードは一時的な表を作り出し、必
要に応じてソートする。更新ノードは現存する表を修正
する。ンーケンス・ノートはその部分トリの各々を順々
に実行する。 Rトリー〇葉(leaf)は他のノードにより処理され
るデータを実際に発生する。葉は表ノードか外部関数ノ
ードのいずれかである。表ノードはMars表の内容を
検索する。射影リスト(project 1onlis
t )および述語を表ノードと関連させて、検索される
タプルの数を減らすことができる。外部関数ノードは単
に外部関数を呼出すだけである。 トリーの意味は子ノードの結果が以後の処理のため親ノ
ートに送られるということである。たとえば、表ノート
よりも上にある射影ノードは射影ノードによって返され
たカラムを濾過して除去する。結合(join)の操作
は、選択ノードを交差績ノードの上に置いて下位の交差
績のカラムを比較することにより指定される。も−ちろ
ん、これらはこのように実行されることはほとんどない
。というのも、フィルタ述語は普通は交差績よりも下位
に押し込まれるからである。 最後のしかも最も複雑なステップは、RトIJ −を最
適化することである。オプチマイザはルール・ベースで
動作する。各規則は試験述誤および交換ルーチンから構
成されている。試験述語は1りトリー・ノードを引数と
して用い、述語が真と評価すれば、交換ルーチンが呼出
される。述語ノード(たとえば、射影ノートよりも上に
ある選択ノード)の相対位置またはノートの状態(たと
えば、交差績ノートに入力が一つあるだけである)を試
験することができる。可能な変換には、ノートを削除す
ること、あるノートを他のノードの上位または下位に移
動すること、またはノートを新しいRトリー断片で置換
えること、がある。参考文献〔5〕  のように、規則
を修正したときはシステムをコンパイルしなおさなけれ
ばならない。 規則は、夫々まとまっである特定の任務を行ういくつか
の規則セットに組織されている。たとえば、ある規則セ
ットは定数式を簡単化することに関する全ての規則(た
とえば定数の伝播や折返しくconstant pro
pagation and folding) )を有
している。最適化は各規則セントに関して、Iりトリー
全体を渡り歩くことにより行われる。この間、どのノー
ドにおいても、規則上ノド内のどの規則でも、その試験
述語が真であれば起動させることができる。 最適化ステップ(すなわち、規則セット)は次のように
概略述べることができる。Rトリーを基準形式に変換す
る初期規則セットが存在する。基準形式は多数の質問ブ
ロックから構成されている。 質問ブロックは、射影ノードと、その下に置かれた選択
ノードと、そのまた下に置かれた交差損ノート(これら
ノードはいずれも必須というわけではない)から構成さ
れている。質問ブロックの葉は表ノート、外部関数/−
ト、または他の質問フロックのいずれでもよい。質問ブ
ロックのルートはtemp−tableノート、更新ノ
ード、またはンーケンス・ノートである。 第2の規則セットは冗長な結合を除去する。この規則セ
ントには交差積内の多数の表を減らすという効果がある
。第3の規則セットは式を簡単にすることに関係してい
る。第・1の規則セットは交差槓ノート内の下層の表の
順序を並べ換えて実行時間を少(する。第5の規則上)
1−は記憶管理モジュール特有の最適化、たとえば記憶
管理モジ−一ルが行うことのできる射影および選択の操
作を見つけること、を取扱う。 最後の(最適化された) RトIJ−は、質問を処理し
て結果をユーザに戻す質問インタープリタ・モジュール
に送られる。しかし、Rl−IJ−は質問を表現するこ
とができないが、代シに、導出型関数の新しく定義され
た本体となることができる。 この場合には、Rトリーは、後に導出型関数を参照する
質問をコンパイルするとき検索するデータベース・シス
テム・カタログ内に単に格納されるだけである。 質問変換モジュールは柔軟で、ノードの述語試験および
トリー変換の形で表現することができるどんな最適化で
も組入れることができる。特に重要なのは外部関数の使
い方を最適化する能力である。簡単な例として、2つの
数について簡単な算術計算を行う外部関数を与えれば、
オペランドが定数であればコンパイル時に結果を評価す
るような規則を書くことができる。 u)−2:)  質問インタープリタ・モジュール質問
インタープリタ・モジュールは、Rl−り一を評価して
、ユーザに返したり、あるいは(たとえば、関数の結果
を更新するために)データベスに戻してストアすること
ができる一組のタプルを作成する。質問インタープリタ
・モジュールはRトリー内の各ノードを走査オブジェク
ト(5canobject )  として扱う。Rトリ
ー内の各ノートは関連する3つの操作open、 ge
t−nextSclose、を備えている。質問インタ
ープリタ・モジュールにRトリーが渡されると、質問イ
ンタープリタは単に、このRトIJ−のルートに対して
オープン(open )操作を呼出し、次にタプルが返
ってこなくなるまでget−nextを呼出す。次にc
lose操作が呼出される。 open 操作は質問インタープリタ・モジュールを再
帰的に呼出して結果を部分トリーから検索することがで
きる。たとえば、射影ノードが与えられると、Rhリー
のこの射影ノードより下の部分がこの射影操作のための
タプルの源を表わす。 従って、射影ノートに対するO l)e 11操作はタ
プルを得るためにこの部分トリー上で走査(5can 
)を再帰的にオープンしなければならない。 get−next操作は走査における次のタプルを返す
。葉ノードはデータ源である。表ノードに対してget
−next操作をすると、前にオープンしてあった走査
における次のタプルを取出す。同様に外部関数ノードに
対してget−next操作をすると、外部関数が呼出
されて次のタプル値を発生する。 質問インタープリタ・モジュールは完全にリエントラン
トである。質問インタープリタ・モジュルは、先に述べ
た簡単な射影−選択一交差積トリーではなく、任意の複
雑さのRトリーを取扱うことができる。特に、ネストさ
れた質問を容易に処理することができる。 (D−3]  Ir1sメタ・データ 関数をコンパイルし実行するために、Ir1sシステム
はメタ・データを記述するシステム・カタログにアクセ
スする必我がある。たとえば、型が与えられると、Ir
1sはそのすべての下位型を見つけることができなけれ
ばならない。関数が与えられると、Ir1sは、その関
数の名前、引数および結果パラメータ(これらは、それ
自身、それ自身の記述を持つシステム・オブジェクトで
ある)、関数実現部、および関数が単一の値であるか否
か、を知らなければならない。任意のオブジェクトに対
して、Ir1sはそのすべての型を判定することができ
なければならない。 Ir1sシステム・カタログはデータ表の集まり(現在
は約15)として保持されている。これらの表はシステ
ム型および関数の拡張を実現する。システム内のシステ
ム・メタ・データをモデル化するというこの概念は、シ
ステム・メタ・データを関係としてモデル化する関係デ
ータベース・マネージャと同様である。 システム関数は共に頻繁にアクセスされる(すなわち、
特定の関数に対する名前および引数を得る)ので、オブ
ジェクトの特定の型についての関数の大部分が一つの表
に一緒に集められている。 あるオブジェクトに対するメタ・データは幾つかの表に
よシ表わされている。たとえば、関数の実現を表わすR
l−IJ−は関数メタ・データの残りものから明確に分
離された別個の表に格納されている。 hisシステム手続の意味(semantics )は
システム表に対する更新として実現することができも本
質的に、これは工ロSオブジェクト管理部の仕事である
。 [D−4]  オブジェクト管理モジュールhisの現
在のバージョンにおいては、システム手続は外部関数と
して書かれている。これは、表を更新する関係代数ノー
トが存在しなかつたため最初のもので行われたことであ
る。代りに、システム手続は記憶管理モジュールを直接
呼出してシステム表を更新している。システム手続の数
および複雑さが増すにつれて、この解決法は幾つかの理
由で勢力が少くなってきている。第1に、記憶管理モジ
ュールがオブジェクト管理モジュール内の多数のロケー
ションから呼出されるので、別の記憶管理モジー−ルを
使用するようにIr1s を修正するのは困難である。 Ir1sを記憶サブシステムと無関係にすることが長期
目標である。実際、記憶管理モジュールを他の外部関数
と見ることができるようにすべきである。 直接MarS呼出しに伴う第2の問題は、操作の意味が
手続の内側に隠されていることである。したがって、手
続を最適化することが不可能である。 その他に、このことはbisが自己記述的でないことを
意味している。 従って、次の段階はhisシステム手続をIr1s自身
を使りて作りなおすことである。この線に清って最初の
ステップが実行された。更新ノードおよびシーケンス・
ノードがRトリー・ノードの集合体(拡張関係代数ノー
ド)に追加された。これらのノードは現在ユーザ関数を
修正するのに使用されている。次のステップは、ノード
を使用してシステム表を更新することである。このこと
は、これができるようになったときにはシステム表を修
正する原始更新操作の集合が存在することを意味してい
る。次に、より高いレベルの手続をこれら原始手続から
得ることができる。原始手続それ自身は外部関数として
実現することもできるし、あるいはシステム表に関する
更新として得ることもできる。 [:D−5]  例:型の生成 本節では、Ir1s  の構成を一層良く理解するよう
に、新しいIr1s型を作9出す際の一連のでき事につ
いて述べる。第1に、依頼元はカーネルに対する要求式
トリーを構築しなければならない。 この場合には、要求トリーは単一の関数呼出ノードであ
る。呼出ノードは呼出すべき関数の識別子(名前Typ
eCreate、またはそのオブジェクト・識別子)、
および型名とその型の下位型が入っている引数リストを
含む。 次いでエロSカーネルかげ1s−eval エントリ・
ポイントを経て呼出される。実行モジュールは直ちに式
トリーをコンパイルのためQTに渡す。QTはまず関数
引数が正しい型であるかチエツクして確認する。特に、
引数は「単純」、すなわち、オブジェクト識別子かりチ
ラルかのいずれか、でなければならない。現在、関数の
ネスティング、−t6よび変数は成るシステム関数につ
いてサポートされているだけである。型チエツクは、実
引数の型が対応する仮引数の型と一致するか、またはそ
の下位型であれば成功である。引数型が正しければ、Q
Tはその関数についてのRトIJ−による実現を取出し
、仮引数に引数を代入する。 この要求は簡単な関数呼出であったから、Rトリーのそ
れ以上の最適化は不要である( R) IJ −ばあら
かじめ最適化された形で格納されているので)。しかし
、選択のような、成るシステム関数は更に完全な最適化
を必要とする。これは複数の関数呼出を含んでいる式ト
リーに対しても言える。 QTは要求に対して最適化されたR I−IJ−を実行
モジュールに返す。実行モジュールはこのRl−リーを
質問インタープリタ・モジュールに渡して結果を抜出す
。Rトリーは多数の質問ブロックから構成することがで
きる。我々の場合、RトIJ −は単一の外部関数ノー
トであり、このノーI・はIr1s TypeCrea
tcシステム手続を実行する外部関数を呼出す。関数が
単一値であることがわかっているから、この結果上に走
査をオープンする必要はない。したがって、質問インタ
ープリタ・モジュールは単に外部関数を呼出し、結果、
すなわち生成された型のオブジェクト識別子、を返すだ
けである。 新しい型を作り出す外部関数は以下の操作を行う。最初
に型名がユニークであることおよびその上位型が存在す
ることをチエツクする、幾つかの健全性チエ、りを行う
。これ&% 1ris−evalを使用してメタ・デー
タ・チエツクに適切なシステム関数を呼出すことにより
行われる。次に直接Mars゛を呼出して型メタ・デー
タを含んでいるシステム表を更新する。最後に、新しい
型に対するタイピング関数を作り出す。タイピング関数
は型の拡張を保持する。典型的には、タイピング関数は
オブジェク(・が特定の型を持っているかどうか確認す
るのに使用される。たとえば、UserFuncLio
n(x)はXにより識別されるオブジェク1〜がユーザ
関数である場合に真を返す。 関数の生成はhisンステム手続(F’unction
Creatc)であることに注意されたい。したがって
、Ir1sはそれ自身を再帰的に呼出さなければならな
い。 TypeCreaie関数は式トリーを構築してFun
ctionCreateを呼出し、タイピング関数を作
り出すために1risevalを呼出す。この関数が首
尾よく作られると、TypeCreate は新しい型
オブジェクトのオブジェクト識別子を返す。この関数が
首尾よく作られなければ、型オブジェクトが削除され、
エラーが依頼元に返される。 〔D−f3]  検討 上述の例は現在のIr1sアーキテクチヤの幾つかの局
面を示している。第1に、TypeCreate 関数
は、幾つかのシステム表を更新し、次いで(クイピング
関数を作るため)外部関数を呼出す、運のステップであ
る。Rトリーで表現された更新ノートおよびシーケンス
・ノードが与えられたならば、TypeCreate関
数を外部関数ではなく his導出型関数として書くこ
とができない理由はないように思われる。この場合、更
新ノートはhis:>ステム表を修正するのに使用され
、外部関数ノードはFunct 1oncreateを
呼出すのに使用されることになる。これらのステップは
シーケンス・ノードにより命令される。 第2に、TypeCreate関数はF unc t 
1onCrea te関数により実現されることに注意
されたい。したがって、関数生成は成る意味では型生成
よりも原始的な手続である。関数生成は、システム表更
新に関係しており、おそらく他のhis関数を呼出す。 我々のゴールは、Ir1s意味論を実現し、現在のシス
テムをこれら基本関数を使って作りなおすのに必要な原
始操作をつきとめることである。これにより現在の多数
のシステム関数が導出型関数として実現されることにな
ろう。 〔発明の効果〕 福 オブジェクト芯内データベース・システムについての新
しいアーキテクチャを提案した。このアーキテクチャは
一般化された関数評価手段を提供するものである。この
アプローチには下記の利点がある。 ・新しいモデルの意味および動作を、所要機能を備えた
手続データベース関数を書くことにより達成することが
できる。これらの関数は現実のフ?P ログラム、たとえば関数評価溝の呼出しを行いまた一層
良好な性能を出すように手作業で最適化することができ
るCプログラム、で置換えることができる。 ・システム・カタログは特別な実現を行なう必要はない
。関数を追加または除去することによシ辞書の構造を容
易に変更することができる。辞書の内容が、丁度通常の
ユーザ・データのように、関数の更新によシ修正される
。 ・−膜化関数評価機構はキャッシュされたシステム辞書
に対する外部ユーザ要求および内部要求の双方に使用さ
れるので、システム・アーキテクチャを簡単にする。 このアプローチはhis システムを実現するのに現在
使用されている。 これまで述べたことから、本発明のデータベースにより
ユーザが関数表現だけでシステムとインターフェースを
とることができることがわかるであろう。 本発明の成る特定の実施例について記述し説明してきた
が、本発明はこのように記述し説明した特定の形態や要
素の構成に限定されるべきではない。各種の修正および
変更を、本発明の範囲および精神から逸脱することなく
、特許請求の範囲の範囲内で行うことができる。それ故
、本発明は特に記述し説明したものとは別のやり方で実
施することができる。 参   考   文   献 [1〕  !3urlemarllp、、  Fran
kel、  R,E、  and  N1khil  
 R。 An Implementation Techniq
ue for Databaseし Query f/Inguages ACM Transaction on Databa
se Systems 、Vol、 7No 2. J
une 1982.pages 164−186゜[2
]  C,M、 Carey 、 D、 J’、 De
Wi tt 、 J、 E、 R1chardson 
 andE、  J、  5hekita、0L)jc
c4  and  File  Management
  in  theEXODUS  Extcnsib
le Datljase System、 L〕Pro
ceedings  of  the  Twelth
  InLcrnationaConference 
on Very Large Data Ba5esK
yoto 、 Japan、 1986゜〔3]  T
、 Connors and P、 Lyngbaek
、 ProvidingUninform Acces
s to Heterogeneous Infor 
−mation Ba5es、 In Klaus D
ittrich、 editorLecture No
tes  in Computer 5cience 
334 。 Aduances in 0bject−Orient
ed Database Systems。 Springer−Verlag 、 Septemb
er 1988゜(4)  N、 Derrett a
nd M、 C,5han、 Ru1e−Based 
QueryOptimization in Ir1s
、 In Proceedings of ACMAn
nual Computer 5cience Con
ference、Louisville。 Kentuchy 、 February 1989 
。 (5)  D、 J、 Dewitt and G、 
Graefe、 The EXODU SOptimi
zer Generator、 In Proceed
ings  ofA CM −8I GMOD  In
ternational Conference on
Management Of Data、 pages
 160−172 + 1987[5] D、 H,F
ishman、 D、 Beech 、 H,P、Ca
te、 E−C,Chow。 T、 Connors 、J、 W、 Davis 、
 N、 Derrett 、 C,0,HochW−K
ent 、P、  Lyngb)C〈、  B、  M
 ahbod  、M、  A、  Neimat 。 T、 A、 Ryan 、 and M、 C,5ha
n、 Ir1s:An O′oject−Orient
ed Database Management Sy
stem。 ACM  Transactions on 0ffi
ce InformationSystems、 5(
1)、 January 1987、(7〕S、 He
1fer ands、 Zdonik、 Views 
、 Data Abst−raction  and 
Inheritance in the FUGUED
ata Model、 In Klaus Dittr
ich 、 editor 。 Lecture  Notes  in  Compu
ter  5cience  334Adxances
 in 0bject−Oriented Datab
aseSystems 、 Springer−Ver
lag、 September 1988゜[8:] 
 P、 Lyngbaek and W’、 Kent
、 AData ModelingMethodolo
gy for  the Design and Im
plemen’tationof Informati
on Systems、  In Proceedin
gs of198’6  International
 Workshop on 0bject−Orien
tedDatabase Systems 、 Pac
ific Grove、l1aalifornia 。 September 1986− (9)  P、 Lyngbaek and V、 V
ianu、 Mappinga SemanticDa
ta Model  to tlle Re1atio
nal Model 、 In Pro−ccedin
gs of ACM−8I()MOD  Intern
ationaConfCrencCon Manage
ment o(Data、5anPrancisco 
、  Ca1ifornia 、May  l 987
(101Peter Lyngbaek、 Nigel
 Derrett 、Dan Fishman 。 William Kent 、 and Thomas
 Ryan、 Design andImpiemen
tation of the Ir1s 0bject
 Manager。 In Proceedings of A Works
hop on Persistent○bject S
ystems: Their Design、Impl
ementationand Use 、 Appin
 、 5cotland +August 1987゜
〔11)  F、 Manola and U、 Da
yal、 PDM: An 0bject−Orien
ted Data Model、 In Procee
dings of 1986Internationa
l Workshop on 0bject−Orie
ntedDatabase Systems 、 Pa
cific Grove 、Cal 1fornia 
。 September 1986゜ (12) J、 Mylopoulos 、 P、 A
、 Bernstein 、 and H,K、 T、
W’ong、 A Language Fac山ty 
for DesigningDatabase−Int
ensive Applications、 ACM 
Transac−tions on Database
 Systems + 5(2) 、 June 19
80・[13]  D、  Shipm an、  T
he  Functional  Data  Mod
eland  the Data Language 
DAPLEX、AC〜fTransactions o
n Datal)ase Systems + 6(1
)+September  l 98 L−
【図面の簡単な説明】
第1図は本発明の一実施例に従った関数式の評価を説明
するためのフローチャート 第2図は本発明の一実施例に従ったデータベース・シス
テムを説明するためのブロック図、第3図は本発明の一
実施例における拡張関係式の解釈実行を説明するための
ブロック図、第4図は本発明の一実施例におけるシステ
ム型およびそれらの間の上位/下位の関係を示す図、第
5図は本発明の一実施例のカーネル・アーキテクチャを
説明するための図である。 31:記憶手段 33:ユーザ・インターフェース 35:実行モジー−ル 37:コンパイラ・モジュール 39:インタープリタ・モジュール 41 : 7’ −タベース記憶管理モジュール43:
オブジェクト管理モジュール i15:キャノシュ・イノクーフェース・モジュール 関数式 Fig。 X T I ] 0M F i g。

Claims (13)

    【特許請求の範囲】
  1. (1)以下のステップ(a)および(b)を設けてなる
    データベース・システムにおける関数式評価方法: (a)前記関数式を拡張関係代数を用いた関係代数式に
    コンパイルする; (b)前記関係代数式を前記データベースにストアされ
    ているデータを参照して解釈実行することにより前記関
    数式についての値を得る。
  2. (2)前記コンパイルは再帰的なコンパイラ呼出しを含
    むことを特徴とする請求項1記載のデータベース・シス
    テムにおける関数式評価方法。
  3. (3)前記拡張関係代数はデータベース更新演算子と外
    部関数演算子と順序演算子を含むことを特徴とする請求
    項1記載のデータベース・システムにおける関数式評価
    方法。
  4. (4)前記解釈実行は再帰的なインタープリタ呼出しを
    含むことを特徴とする請求項1記載のデータベース・シ
    ステムにおける関数式評価方法。
  5. (5)前記解釈実行は再帰的なコンパイラ呼出しを含む
    ことを特徴とする請求項1記載のデータベース・システ
    ムにおける関数式評価方法。
  6. (6)前記関係代数式を外部関数呼出しによって得られ
    るデータを参照して評価することを特徴とする請求項1
    記載のデータベース・システムにおける関数式評価方法
  7. (7)データベース操作をインタープリタによって得ら
    れた値に従って行うことを特徴とする請求項1記載のデ
    ータベース・システムにおける関数式評価方法。
  8. (8)以下の(a)ないし(f)を設けたことを特徴と
    するデータベース・システム: (a)情報を記憶する記憶手段; (b)システム・ユーザとのインターフェースを取るた
    めのインターフェース手段; (c)前記インターフェース手段を介してユーザから関
    数式を受け取るための実行モジュール; (d)前記実行モジュールに応答して前記関数式を拡張
    関係代数を用いた関係代数式にコンパイルするコンパイ
    ラ・モジュール; (e)前記実行モジュールに応答して前記関係代数式を
    前記記憶手段にストアされているデータを参照して解釈
    実行することにより前記関数式についての値を得るイン
    タープリタ・モジュール; (f)前記インタープリタ・モジュールに応答して前記
    インタープリタ・モジュールによって得られた値に従っ
    てデータベース演算を行うデータベース記憶管理モジュ
    ール。
  9. (9)前記拡張関係代数はデータベース更新演算子と外
    部関数演算子と順序演算子を含むことを特徴とする請求
    項8記載のデータベース・システム。
  10. (10)前記インタープリタ・モジュールに応答して外
    部関数を呼び出すオブジェクト管理モジュールを含むこ
    とを特徴とする請求項8記載のデータベース・システム
  11. (11)前記オブジェクト管理モジュールは複数の外部
    関数を設けてなることを特徴とする請求項10記載のデ
    ータベース・システム。
  12. (12)前記インタープリタ・モジュールは外部関数を
    呼び出すことによって得られたデータに従って前記関係
    代数式を解釈実行することを特徴とする請求項10記載
    のデータベース・システム。
  13. (13)前記インタープリタ・モジュールに応答して、
    記憶されているデータの取り出しと更新を管理するキャ
    ッシュ・インターフェース・モジュールを含むことを特
    徴とする請求項8記載のデータベース・システム。
JP2003308A 1989-01-10 1990-01-10 データベース・システムおよびデータベース・システムにおける関数式評価方法 Pending JPH02226472A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US29563189A 1989-01-10 1989-01-10
US295,631 1989-01-10

Publications (1)

Publication Number Publication Date
JPH02226472A true JPH02226472A (ja) 1990-09-10

Family

ID=23138550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003308A Pending JPH02226472A (ja) 1989-01-10 1990-01-10 データベース・システムおよびデータベース・システムにおける関数式評価方法

Country Status (3)

Country Link
EP (1) EP0378367A3 (ja)
JP (1) JPH02226472A (ja)
CA (1) CA2007391A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06208492A (ja) * 1992-11-12 1994-07-26 Internatl Business Mach Corp <Ibm> データベース用照会言語命令処理システムと方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819046B2 (en) 2008-06-24 2014-08-26 Microsoft Corporation Data query translating into mixed language data queries
US8364750B2 (en) 2008-06-24 2013-01-29 Microsoft Corporation Automated translation of service invocations for batch processing
US8713048B2 (en) 2008-06-24 2014-04-29 Microsoft Corporation Query processing with specialized query operators
US8375044B2 (en) 2008-06-24 2013-02-12 Microsoft Corporation Query processing pipelines with single-item and multiple-item query operators
US8364751B2 (en) 2008-06-25 2013-01-29 Microsoft Corporation Automated client/server operation partitioning

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06208492A (ja) * 1992-11-12 1994-07-26 Internatl Business Mach Corp <Ibm> データベース用照会言語命令処理システムと方法

Also Published As

Publication number Publication date
CA2007391A1 (en) 1990-07-10
EP0378367A2 (en) 1990-07-18
EP0378367A3 (en) 1992-07-01

Similar Documents

Publication Publication Date Title
Wilkinson et al. The Iris architecture and implementation
US5295256A (en) Automatic storage of persistent objects in a relational schema
KR101411083B1 (ko) 점진적 뷰 관리를 갖는 매핑 아키텍처
Carey et al. The EXODUS extensible DBMS project: An overview
US5832498A (en) Device for generating object-oriented interfaces for relational data bases and a process implemented by this device
US5995958A (en) System and method for storing and managing functions
US8612468B2 (en) System and method for retrieving data from a relational database management system
Agrawal et al. Object Versioning in Ode.
US20100082646A1 (en) Tracking constraints and dependencies across mapping layers
Ghandeharizadeh et al. Heraclitus: Elevating deltas to be first-class citizens in a database programming language
US20080319957A1 (en) Extensible command trees for entity data model platform
CN115757462B (zh) 一种面向对象的数据库动态接口生成方法及操作方法
US6510551B1 (en) System for expressing complex data relationships using simple language constructs
Poulovassilis et al. Extending the functional data model to computational completeness
Connor et al. Type Equivalence Checking in Persistent Object Systems.
JPH02226472A (ja) データベース・システムおよびデータベース・システムにおける関数式評価方法
Cutts Delivering the benefits of persistence to system construction and execution
Plodzien et al. Static analysis of queries as a tool for static optimization
Schek et al. Evolution of data models
Parreaux et al. Multi-stage programming in the large with staged classes
Sheth et al. Q-data: Using deductive database technology to improve data quality
Hull On bulk data type constructors and manipulation primitives: a framework for analyzing expressive power and complexity
Poulovassilis The implementation of FDL, a functional database language
WO1999032998A1 (en) Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
Lanzelotte et al. OPUS: an extensible Optimizer for Up-to-date database Systems