JP4171537B2 - データベース情報をアクセスする方法 - Google Patents
データベース情報をアクセスする方法 Download PDFInfo
- Publication number
- JP4171537B2 JP4171537B2 JP10145398A JP10145398A JP4171537B2 JP 4171537 B2 JP4171537 B2 JP 4171537B2 JP 10145398 A JP10145398 A JP 10145398A JP 10145398 A JP10145398 A JP 10145398A JP 4171537 B2 JP4171537 B2 JP 4171537B2
- Authority
- JP
- Japan
- Prior art keywords
- routine
- memory
- database manipulation
- database
- read
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 123
- 230000008569 process Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000001681 protective effect Effects 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000013433 optimization analysis Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000005204 segregation Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99939—Privileged access
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Description
【産業上の利用分野】
本発明は、データベースにおける情報をアクセスする方法に関する。
【0002】
【従来の技術】
データベースは、データベースにおけるデータを操作するためのソフトウェア方法の集合である、“データベースエンジン”によって一貫した方法で記憶し、探索しかつ検索することができるように論理的に編成された情報の本体である。ソフトウェア方法は、値を戻す機能、または値を戻さない手順のいずれかである、一組の呼び出し可能なルーチンとして一般的に実現される。
データベースは、一般的に3つのクラスに分類される:リレーショナルデータベース、オブジェクト指向型データベース、及びオブジェクト−リレーショナルデータベース。リレーショナルデータベース(RDB)は、実際にはデータベース開発者が選択するあらゆる方法で相互に関連付けられる(または“結合される”)固定型フィールド2次元表の集合である。リレーショナルデータベースの構造は、表間の関係を選択的に再定義することによって変更することができる。データベースエンジンは、SQL(Structured Query Language:構造化照会言語) によってまたは他の機構によって表現される方法のような種々のデータベース照会プロトコルのいずれかを用いることによって素早くかつ容易にリレーショナルデータベース上で複雑な探索を実行しうる。表間の関係は、探索の結果がデータベースの他の表における対応している情報を自動的に相互参照することができるようにする。
【0003】
図1に示すように、例えば、リレーショナルデータベース100は、在庫目録表106に論理リンク105によって次いで結合される注文表104に論理リンク103によって結合される顧客表102を含む。ユーザは、例えば、しきい値よりも大きい全ての注文番号について、データベース100を照会しうる。注文表104が顧客表102及び在庫目録表106に結合されるので、照会に応答して識別された注文番号のリストは、識別された注文番号に対応する各顧客名前及び在庫目録項目と共に検索しかつ表示することができる。
オブジェクト指向型データベース(OODB)は、、“オブジェクト”の集合−−データ及びそのデータを操作するための方法の両方を含むソフトウェア構成要素である。数字または文字型のデータだけを記憶することができるリレーショナルデータベースとは対照的に、OODBは、実際にはあらゆる型のデータ(テキスト、3Dグラフィック画像、ビデオクリップ、等)を記憶することができる。OODBは、OODBが有用な作業を行うのに必要なロジック(論理)のほとんどを含むように方法に関連付けられたクラス(分類)の階層構造にその構成オブジェクトを記憶する。対照的に、リレーショナルデータベースは、データだけを含みかつデータを伴う有用な機能を実行するために外部アプリケーションソフトウェアに依存しなければならない。
【0004】
オブジェクト指向型データベース(ORDB)は、他の二つの型のハイブリッド(混成)である。拡張されたデータ(例えば、映画ファイル)は、行の一部としてまたはバイナリラージオブジェクト(BLOB)−−未区分大量データ(undifferentiated mass of data) 、としてORDBに記憶されかつ検索されうる。また、ORDBは、BLOB内に含まれるデータを操作するための方法(例えば、映画ファイルを観るためのユーティリティ)をアクセスすることができる。これらの方法は、データベースエンジンとは別々に維持されうるかまたは特定のORDBインプリメンテーションによりそれにリンクされうる。
インフォーミックスユニバーサルサーバ(Informix Universal Server (IUS)) のような拡張可能オブジェクト−リレーショナルデータベース管理システム(ORDBMS)では、拡張データを操作するための方法は、拡張データが“ネイティブ(native)”データ型−−即ち、外部アプリケーションに頼ることなくORDBMSそれ自体が扱うことができるデータ型として処理されるようにデータベースエンジンに直接リンクされる。図2では、例えば、拡張可能ORDBMS200は、データベースエンジン202に直接リンクされた、データ型X及びYを操作するための方法をそれぞれ含む、拡張子X及びYを有する。型Xのデータをポイントするデータベース照会に応じて、例えば、データベースエンジン202は、適当なデータ型−特定の方法におけるデータを操作するために拡張子Xにおいて方法を自動的に呼出す。
【0005】
【発明が解決しようとする課題】
非拡張可能ORDBMSは、対照的に、任意のデータ型に対するデータ操作方法をデータベースエンジンにリンクさせないで、多重データ型を管理するために、ミドルウェアの層を介して相互接続された、多重データ型−特定エンジンの使用を必要とする。その結果、非拡張可能ORDBMSは、一般的に低減された性能を示しかつ新しいアプリケーションを配置することにおいて増大した複雑性を開発者に与える。
本発明は、上記従来の技術における問題点を解決することを課題とする。
【0006】
【課題を解決するための手段】
本発明の上記課題は、データベースにおける情報を操作するためにルーチンを実行する、データベースサーバによって実行される、方法であって:データベースマニピュレーションルーチンが特定メモリ範囲から分離されるか否かを決定し;決定に基づいてデータベースマニピュレーションルーチンに対するメモリアクセス許可を選択的に切り替え;かつ選択的に切り替えたメモリアクセス許可を用いてデータベースマニピュレーションルーチンを実行する段階を具備する方法によって達成される。
本発明の方法では、決定段階は、データベースマニピュレーションルーチンに関連付けられたパラメータを検査することを含むように構成してもよい。
【0007】
本発明の方法では、決定段階の前に、データベースマニピュレーションルーチンを実行するためのプロセッサのクラスを特定する値にパラメータを設定する段階を更に具備するように構成してもよい。
本発明の方法では、設定段階は、特定メモリ範囲から分離されるプロセッサのクラスを特定する値をパラメータに割り当てることを含むように構成してもよい。 本発明の方法では、選択的切り替え段階は、局所手順呼出しを行うことを含むように構成してもよい。
本発明の方法では、選択的切り替え段階は、データベースマニピュレーションルーチンが特定メモリ範囲から分離されるルーチンであると決定されたならば該データベースマニピュレーションルーチンに対するメモリアクセス許可を特定メモリ範囲に対する読取り専用に設定することを含むように構成してもよい。
【0008】
本発明の方法では、選択的切り替え段階は、データベースマニピュレーションルーチンが特定メモリ範囲から分離されないルーチンであると決定されたならば該データベースマニピュレーションルーチンに対するメモリアクセス許可を特定メモリ範囲に対する読取り/書込みに設定することを含むように構成してもよい。
本発明の方法では、選択的切り替え段階は、特定メモリ範囲に対する読取り/書込み許可を有するプロセッサから特定メモリ範囲に対する読取り専用許可を有するプロセッサにデータベースマニピュレーションルーチンに対する実行のスレッドを移行することを含むように構成してもよい。
本発明の方法では、移行する段階は、特定メモリ範囲と同じアドレス空間内に実行のスレッドを維持することを含むように構成してもよい。
【0009】
本発明の方法では、選択的切り替え段階は、データベースマニピュレーションに対する実行のスレッドが特定メモリ領域に対する読取り/書込み許可を有するような信用コンテキストから実行のスレッドが特定メモリ領域に対する読取り専用許可を有するような不信用コンテキストに切り替えることを含むように構成してもよい。
本発明の方法では、実行のスレッドが、データベースマニピュレーションルーチンを実行すべく読取り専用アクセスを有する実行のスレッドに対して特定メモリ領域に存在している資源へのアクセスを必要とするということを検出する段階を更に具備するように構成してもよい。
本発明の方法では、特定メモリ領域に存在している資源へのアクセスを必要とするということを検出して、不信用コンテキストから実行のスレッドが特定メモリ領域に対する読取り/書込み許可を有するような別の信用コンテキストへ切り替える段階を更に具備するように構成してもよい。
【0010】
本発明の方法では、データベースマニピュレーションルーチンに対する実行のスレッドが特定メモリ範囲における資源をアクセスすることを完了した後に別の信用コンテキストから不信用コンテキストへ切り替える段階を更に具備するように構成してもよい。
本発明の方法では、データベースマニピュレーションルーチンの実行が完了した後に不信用コンテキストから信用コンテキストへ切り替える段階を更に具備するように構成してもよい。
本発明の方法では、選択的切り替え段階は、信用コンテキストと不信用コンテキストの間で任意の数の切り替えを実行することを含むように構成してもよい。
本発明の方法では、実行する段階は、データベースマニピュレーションルーチンを実行すると同時に特定メモリ領域と同じアドレス空間に残ることを含むように構成してもよい。
【0011】
本発明の方法では、実行する段階は、データベースマニピュレーションルーチンが特定メモリ領域から分離されるルーチンであると決定されたならば特定メモリ領域に対する読取り専用許可を有するプロセッサで該データベースマニピュレーションルーチンを行うことを含むように構成してもよい。
本発明の方法では、実行段階は、データベースマニピュレーションルーチンが特定メモリ領域から分離されていないルーチンであると決定されたならば特定メモリ領域に対する読取り/書込み許可を有するプロセッサで該データベースマニピュレーションルーチンを行うことを含むように構成してもよい。
本発明の方法では、実行段階は、データベースマニピュレーションルーチンが特定メモリ領域から分離されるルーチンであると決定されたならば特定メモリ領域から論理的に区分されるメモリセグメントにおいて該データベースマニピュレーションルーチンを行うことを含むように構成してもよい。
【0012】
本発明の方法では、実行段階は、データベースマニピュレーションルーチンが特定メモリ領域から分離されないルーチンであると決定されたならば特定メモリ領域において該データベースマニピュレーションルーチンを行うことを含むように構成してもよい。
本発明の方法では、実行段階は、特定メモリ領域に存在している資源の変更を選択的に許可することを含むように構成してもよい。
本発明の方法では、選択的変更は、特定メモリ領域における一つ以上の許可される実行エントリポイントに限定されるように構成してもよい。
本発明の方法では、コールバック表において一つ以上の許可される実行エントリポイントを特定する段階を更に具備するように構成してもよい。
【0013】
また、本発明の上記課題は、データベースにおける情報を操作するためにルーチンを実行する、データベースサーバによって実行される、方法であって:メモリアドレス空間をメモリセグメントに分割し;第1のメモリセグメントにおいてデータベースマニピュレーションルーチンを選択的に実行し;かつ実行しているデータベースマニピュレーションルーチンがメモリセグメントの別のものに情報を書込むことを防ぐ段階を具備する方法によって達成される。
本発明の方法では、第1のメモリセグメントにおいて実行されているデータベースマニピュレーションルーチンに別のメモリセグメントから情報を読み取らせる段階を更に具備するように構成してもよい。
本発明の方法では、第1のメモリセグメントにおいて実行されているデータベースマニピュレーションルーチンを、所定のルーチンを実行させるために別のメモリセグメントに移行させる段階を更に具備するように構成してもよい。
【0014】
本発明の方法では、別のセグメントにおいて所定のルーチンに対して特定されたエントリポイントが許可されるエンドポイントかどうかをチェックする段階を更に具備するように構成してもよい。
本発明の方法では、チェックする段階は、所定の一つ以上の許可されるエントリポイントのセットに対して特定エントリポイントを比較することを含むように構成してもよい。
本発明の方法では、別のセグメントにおける特定エントリポイントが許可されないエントリポイントであるならば所定のルーチンの実行を阻止する段階を更に具備するように構成してもよい。
本発明の方法では、所定のルーチンが完了された後に第1のメモリセグメントにデータベースマニピュレーションルーチンを戻す段階を更に具備するように構成してもよい。
【0015】
本発明の方法では、データベースマニピュレーションルーチンは、該データベースマニピュレーションルーチンが別のメモリセグメントにおける情報がそれから保護されるものとして識別されるならば、第1のメモリセグメントにおいて実行されるように構成してもよい。
本発明の方法では、別のメモリセグメントにおける情報がそれから保護されるデータベースマニピュレーションルーチンは、ユーザ定義型ルーチンを含むように構成してもよい。
本発明の方法では、別のメモリセグメントにおける情報がそれから保護されるデータベースマニピュレーションルーチンは、不信用ルーチンを含むように構成してもよい。
【0016】
本発明の方法では、データベースマニピュレーションルーチンが別のメモリセグメントにおける情報がそれから保護されるものとして識別されないならば、全てのメモリセグメントに対する完全な読取り及び書込み特権を伴う該データベースマニピュレーションルーチンを実行する段階を更に具備するように構成してもよい。
本発明の方法では、データベースマニピュレーションルーチンは、信用ルーチンを含むことを備えているように構成してもよい。
本発明の方法では、メモリセグメントは、同じメモリアドレス空間に存在するように構成してもよい。
本発明の方法では、分割する段階は、メモリセグメントを相互に論理的に区分することを含むように構成してもよい。
【0017】
本発明の方法では、選択的実行段階は、第1のメモリセグメント以外のメモリセグメントに対する読取り専用アクセスを有する処理でデータベースマニピュレーションルーチンを行うことを含むように構成してもよい。
本発明の方法では、処理は、多重スレッド型仮想プロセッサを含むように構成してもよい。
本発明の方法では、メモリセグメントの対応するものにおいて複数のデータベースマニピュレーションルーチンを同時に実行する段階を更に具備し、各データベースマニピュレーションルーチンは、それ自身のメモリセグメント以外の全てのメモリセグメントに対する読取り専用アクセスを有しているように構成してもよい。
【0018】
更に、本発明の上記課題は、信用ルーチン及び不信用ルーチンを含んでいる複数のデータベースマニピュレーションルーチン;コアメモリセグメント及び防護メモリセグメントを含んでいる複数のメモリセグメントを有している共有メモリアドレス空間;及び複数のルーチンにリンクされた複数の仮想プロセッサを備え、仮想プロセッサは、コアメモリセグメントにおける信用ルーチンを実行するフルアクセス仮想プロセッサと、防護メモリセグメントにおける不信用ルーチンを実行する防護仮想プロセッサとを含んでいるデータベースサーバによって達成される。
本発明のデータベースサーバでは、フルアクセス仮想プロセッサは、全てのメモリセグメントに対する読取り/書込みアクセスを有するように構成してもよい。
【0019】
本発明のデータベースサーバでは、防護仮想プロセッサは、コアメモリセグメントに対する読取り専用アクセスを有するように構成してもよい。
本発明のデータベースサーバでは、各データベースマニピュレーションルーチンは、ルーチンが信用ルーチンであるか不信用ルーチンであるかを特定する関連パラメータを有するように構成してもよい。
本発明のデータベースサーバでは、データベースマニピュレーションルーチンを実行するためのスレッドを更に備え、スレッドは、実行されるデータベースマニピュレーションルーチンが信用であるか不信用であるかに基づいて一つの仮想プロセッサから別の仮想プロセッサへ移るように構成してもよい。
本発明のデータベースサーバでは、実行されているデータベースマニピュレーションルーチンが不信用ルーチンであるならば、スレッドは、防護仮想プロセッサに移るように構成してもよい。
【0020】
本発明のデータベースサーバでは、実行されているデータベースマニピュレーションルーチンが信用ルーチンであるならば、スレッドは、フルアクセス仮想プロセッサに移るように構成してもよい。
本発明の上記課題は、データベースマニピュレーション方法を実行するためにリンク型ルーチンを有しているデータベースサーバに対して、コンピュータ読取り可能媒体上に存在している、コンピュータソフトウェアであって、コンピュータソフトウェアは、コンピュータに
(a)クライアントからデータベース照会を受け取る;
(b)データベース照会をサービスするためにどのルーチンを実行する必要があるかを決定する;
(c)コアメモリへの読取り/書込みアクセスで信用ルーチンを実行する;及び
(d)コアメモリへの読取り専用アクセスで不信用ルーチンを実行する
動作を実行させるための命令を備えているコンピュータソフトウェアによって達成される。
【0021】
本発明のコンピュータソフトウェアでは、(d)は、実行のスレッドをコアメモリへの読取り/書込みアクセスを有している第1のプロセッサからコアメモリへの読取り専用アクセスを有している別のプロセッサに移行させる命令を備えているように構成してもよい。
本発明のコンピュータソフトウェアでは、(d)は、不信用ルーチンを実行することに関してコアメモリに対するメモリアクセス許可を読取り専用に変更する命令を備えているように構成してもよい。
【0022】
【作用】
本発明の一形態では、データベースにおけるデータを操作するためのルーチンは、データベースマニピュレーションルーチンが特定のメモリの範囲から分離されるか否かを決定することにより、かつ、応答として、検討されているデータベースマニピュレーションルーチンに対して特定のメモリの範囲に対するメモリアクセス許可を選択的に切り替える(例えば、読取り/書込みから読取り専用へ)ことにより、データベースサーバによって実行される。次いで、データベースマニピュレーションルーチンは、選択的に切り替えられたメモリアクセス許可を用いて実行される。分離されるべきデータベースマニピュレーションルーチンは、読取り専用メモリアクセスで実行することができそれにより不適当な変更から特定のメモリの範囲を保護する。
【0023】
データベースマニピュレーションルーチンが特定のメモリの範囲から分離されるか否か(例えば、コアデータ構造が存在するようなコアメモリ)は、データベースマニピュレーションルーチンに関連付けられたパラメータを検査する(調べる)ことによって決定されうる。パラメータは、データベースマニピュレーションルーチンを実行するためにプロセッサのクラス(例えば、多重スレッド型仮想プロセッサ)を特定する値に設定することができる。ある一定の分類値は、対応プロセッサがプロセッサのコアメモリ許可を読み取り専用に限定することによってコアメモリから分離されるべきであるということを示す。他の分類値は、対応プロセッサがコアメモリから分離される必要がなくそれゆえにコアメモリに対する完全なR/W許可を有しうるということを示すことができる。
【0024】
データベースマニピュレーションルーチンが“不信用(untrusted) ”−−即ち、コアメモリから分離されるべきルーチンであると決定されるならば、メモリアクセス許可の選択的切り替えは、コアメモリに対する読み取り専用に対して、データベースマニピュレーションルーチンに対するメモリアクセス許可を設定する局所手順呼出しを介して達成されうる。代替的に、データベースマニピュレーションルーチンが“信用(trusted) ”ルーチン−−即ち、コアメモリから分離される必要がないルーチンであると決定されるならば、データベースマニピュレーションルーチンに対するメモリアクセス許可は、コアメモリに対する読取り/書込みに設定されうる。
不信用ルーチンが実行されるべきである場合、局所手順呼出しは、データベースマニピュレーションルーチンに対する実行のスレッドを、コアメモリにへの読取り/書込み許可を有するプロセッサからコアメモリへの読取り専用アクセスを有するプロセッサへ移行させる。スレッドは、論理的区分形式コアメモリであるがコアメモリと同じメモリアドレス空間にあるメモリ領域へ移行する。スレッドは、それがコアメモリへの読取り/書込み許可を有する場合に“信用コンテキスト”にあり、コアメモリへの読取り専用アクセスを有する場合に“不信用コンテキスト”にある。
【0025】
不信用コンテキストにおいて実行するとき、スレッドは、それにも係わらずデータベースマニピュレーションルーチンを実行するためにコアメモリの資源を使用することを必要としうる。その条件を検出することにより、不信用コンテキストから別の信用コンテキストへの切り替えは、例えば、スレッドにコアメモリを変更させるために行われる。スレッドがコアメモリにおいて資源のその使用を完了した後、切り替えは、信用コンテキストから不信用コンテキストに戻るように行われる。同様に、不信用ルーチンが実行を完了した後、切り替えは、不信用コンテキストから最初の信用コンテキストに戻るように行われる。あらゆる任意の数の切り替えは、信用コンテキストと不信用コンテキストの間で行われうる。
不信用コンテキストから信用コンテキストへのコンテキスト切り替えを行うことにおいて、コアメモリへのエントリは、所定の一つ以上の許可される実行エントリポイントのセット、例えば、所定のコールバック表において識別されたものに限定されうる。特定エントリポイントがコールバック表に現れるならば、コアメモリにおけるそのポイントでのエントリは、許可される。しかしながら、特定エントリポイントがコールバック表に現れないならば、コアメモリにおけるそのポイントでのエントリは、阻止される。
【0026】
本発明の別の形態では、データベースにおけるデータを操作するためのルーチンは、メモリアドレス空間をメモリセグメント(例えば、主セグメント及び一つ以上の防護セグメント)に分割することによってデータベースサーバにより実行される。データベースマニピュレーションルーチン、例えば、ルーチンがメモリセグメントの別のものに情報を書込むことを防ぐ不信用ユーザ定義型ルーチンは、防護メモリセグメントにおいて選択的に実行されうる。防護メモリセグメントにおいて実行するデータベースマニピュレーションルーチンは、所定のルーチンを実行すべく別のメモリセグメントから情報を読み取ることまたは別のメモリセグメントに移行することを可能にできる。他の資源、例えば、信用コアデータベースルーチンは、全てのメモリセグメントへの完全なR/Wアクセスを伴う主セグメントで実行することができる。更に、多重データベースマニピュレーションルーチンは、メモリセグメントのそれぞれにおいて実行されうるし、各データベースマニピュレーションルーチンは、それ自体のメモリセグメント以外の全てのメモリセグメントへの読取り専用アクセスを有している。
【0027】
この発明の利点は、以下の一つ以上を含みうる。ユーザに彼ら自身のルーチンを定義させかつそれらのユーザ定義型ルーチンをデータベースエンジンにリンクさせることによりデータベースサーバが任意のリッチデータ型の集合(例えば、画像、ビデオ、サウンド、マップ、複雑な金融インストルメント、時系列データ)を素早くかつ効率的に管理できるようにする。不良ロジックを含んでいるユーザ定義型ルーチンがデータベースを破損するというリスクは、そのようなユーザ定義型ルーチンがデータベースサーバのコアデータ構造及び機能から分離されるので、最小化される。データベースサーバによって用いられるコアメモリの不適当な変更は、限定的特権を有するプロセッサ(例えば、仮想プロセッサ)でユーザ定義型ルーチンを実行することによって防げる。仮想プロセッサは、特定のインプリメンテーションにより特定メモリ範囲またはそれ自体の補助メモリセグメントのいずれかへの完全な読取り及び書込み(R/W)アクセスが許されるが、コアデータベースサーバメモリへの読取り専用アクセスに限定される。その結果、高度な信頼性及び性能がデータベースサーバに対して維持されると同時に、ユーザには向上した可撓性が与えられる。
【0028】
ルーチンが実行される仮想プロセッサのクラスをルーチンが特定できるようにすることにより、データベース開発者には、不信用ルーチンを分離するための可撓的かつ強力な機構が与えられる。ルーチンは、完全R/W特権を伴う仮想プロセッサクラスまたは、メモリの指定領域への読取り専用特権を有する、“防護”仮想プロセッサを指定すべく、パラメータを単に変更することにより信用または不信用として実行されうる。
メモリがセグメントに論理的に区分される構成では、メモリセグメントは、同じメモリアドレス空間の異なる部分を占有する。結果として、ユーザ定義型ルーチンに対する実行のスレッドは、素早くかつ容易にメモリセグメント間を移動することができる。更に、データベースサーバによって供給される内部ルーチンは、コアメモリセグメントの内容が不適当に変更されることを防ぐと同時に、防護仮想プロセッサにコアメモリセグメントにおいて存在する資源をアクセスさせる。高度な性能及びスケーラビリティがデータベースサーバに対して維持されると同時に、不信用ユーザ定義型ルーチンの分離は、それによって認識される。
【0029】
他の利点及び特徴は、図面を含む以下の説明から明らかになるであろう。
【0030】
【実施例】
持続データを記憶するための拡張可能データベース管理システム(DBMS)の使用は、非拡張可能DBMSがデータリポジトリとして用いられるときに利用することができない複数の利点を供給する。実質的にあらゆる型のデータを操作するルーチンを直接データベースエンジンにリンクする能力は、企業の特定のニーズに合致すべくDBMSを適合させることを開発者に許容する。更に、単一エンジン・ソルーションにおいてコアDBMS機能性と共に特注機能を実現するための能力は、DBMSの性能、トランザクション完全性、従来及び複雑なデータ型の両方に対するスケーラビリティ及び管理能力を向上させる。
そのように大きな度合の可撓性及び拡張可能性を開発者に供給することは、しかしながら、用いるDBMSアーキテクチャにより、潜在的に問題をもたらしうる。例えば、図3Aのアーキテクチャでは、データベースサーバ300は、通信リンク307を介してクライアントI,J及びK(301−305)からデータベース照会を受け取りかつデータベース照会を適切にスレッドQ,RまたはSに運ぶ。各クライアントは、図3Aに示すように、個別のスレッドと通信しうるか、または、単一の多重スレッド型処理は、二つ以上のクライアントから照会を受け取りうる。いずれの場合でも、スレッドは、次いで、データベース上で所望の動作を行う所定のルーチンを呼出すためにライブラリコールをする。図3Aでは、データベースサーバ300に存在している全てのスレッドは、各スレッドが完全R/W特権を有する同じメモリアドレス空間−−具体的には共有メモリ302−−においてそれらの対応ルーチンを実行する。
【0031】
通常、スレッドQ,R及びSに自由に共有メモリ302から読み取ること及びそれに書き込むことをさせることは、スレッドによって呼出される基礎をなしているルーチンのそれぞれが同じソフトウェアべンダーによって書かれかつデータベースサーバ300にリンクされた全ての他のルーチンとの正確な動作及び相互運用性(インタオペラビリティ)に対して全体を通して検査されているので、システム動作で問題をもたらさない。しかしながら、ある場合には、DBMSの比較的高度ではない開発者またはエンドユーザは、不良なデータマニピュレーションルーチンを書込みうるし、かつ適切にデバッグすることを失敗しうる−−即ち、ルーチンの実行は、それに不適当な方法でデータベースサーバ300の共有メモリ302を変更させ、潜在的にDBMSをクラッシュするかまたはデータベースを破損するかまたはその両方である。
【0032】
図3Bは、データベースサーバの共有メモリが不良のユーザ定義型ルーチン(UDR)の実行によって損傷されるのを防ぐための解決策を示す。図3Bのアーキテクチャでは、クライアント301−305から受け取ったデータベースマニピュレーション要求は、それらが対応する基礎をなしているルーチンが“信用(trusted) ”(例えば、それらが共有メモリ302を不適切に変更しないかさもなければ他のルーチンと矛盾することを保証すべく徹底的に検査されたUDRs)または“不信用(untrusted) ”(例えば、徹底的に検査されていないUDRs)として考慮されるか否かにより、異なる方法で扱われる。信用のクラスに属するものとして指定されたUDRsに対して、呼出しスレッドは、図3Aに関して上記したのと同じ方法で完全R/W特権により共有メモリ302にてルーチンを実行する。
【0033】
しかしながら、不信用UDRsの場合には、呼出しスレッド(例えば、スレッドS)は、遠隔手順呼出し(RPC)−− プログラムコンテキストを維持すると同時にスレッドを一つのメモリアドレス空間から別のメモリアドレス空間に移行させるプログラミング機構−−を別のサーバ310に対して行う。一度、スレッドがサーバ310に移行したならば、不信用UDRは、メモリ312で実行されかつ結果は、スレッドをDBサーバ300に回すことによって戻される。サーバ310のメモリ312は、サーバ300の共有メモリ302から分離されかつそれとは異なるメモリアドレス空間を表すので、サーバ310上で実行されるあらゆるルーチンは、共有メモリ302を直接変更することができない。結果として、スレッドSにより行われたRPCは、データベースサーバ300から基礎をなしている実行スレッドを分離して共有メモリ302が不信用ルーチンによって不適当に変更されるのを防ぐ。
【0034】
しかしながら、異なるメモリアドレス空間の間を横断することは、比較的時間のかかるアクティビティである。異なるメモリアドレス空間に対する各RPCは、異なるサーバ間のアーギュメント及び結果を整理しかつ回復することにかなり多くのオーバヘッド時間を一般に招く。更に、RPCを基盤とするアーキテクチャは、それぞれが個別のコンピュータシステムに一般に関連付けられる二つ以上の異なるアドレス空間の間の通信リンクの適切な動作に依存する。そのようなシステム間通信は、システム内通信よりもかなり信頼性がない。RPCを基盤とする分離したアーキテクチャは、結果として比較的低い性能及び信頼性の影響を受ける。
RPCを基盤とする分離アーキテクチャに関連付けられるこれら及び他の問題は、UDRsのようなある一定の不信用方法がコアデータ構造から及びコアデータベースエンジンルーチンのような信用方法から分離することができるようなデータベースサーバアーキテクチャによってアドレス指定される。分離は、少なくとも二つの異なるモデル−−多重処理モデル及び単一処理セグメントモデル−−のいずれかを用いることによって達成することができる。
【0035】
多重処理モデルでは、分離は、同じメモリアドレス空間302内の多重メモリセグメント−−例えば、主メモリセグメント303及び補助メモリセグメント304−−を維持することによって図4に示したようなアーキテクチャにおいて達成することができる。セグメント303は、信用コアデータベースエンジンルーチン及びコアデータ構造が実行されかつ記憶されるようなメモリ領域として役に立つ。メモリセグメント304は、コアDBMS機能に対応するもの以外のルーチン及びデータを実行しかつ記憶するために主に確保される補助メモリ領域として役に立つ。
信用ルーチンを実行するスレッドは、そのまま残り、かつ主メモリセグメント303に対して、完全R/W特権を有する。しかしながら、不信用ルーチンを実行するために、スレッドは、まずコアメモリセグメント303からスレッドを分離すべく補助メモリセグメント304に移行する。補助メモリセグメントにおいて実行されるスレッド(例えば、スレッドS’)は、メモリセグメント304に対する完全R/W特権を有するが、メモリセグメント303への読取り専用アクセスを有する。不信用ルーチンを実行することにおいてスレッドS’が書込むことができるメモリの領域を強要することによって、コアDBMSデータ構造及びルーチンは、不良UDRによって上書きされることから防止される。更に、信用及び不信用ルーチンが同じメモリアドレス空間(異なるメモリセグメントにおいてであるが)で実行されるので、スレッドS’は、不信用ルーチンを実行するためにRPCを実行する必要がなくそれよりも、より信頼性がありかつおおよそRPCよりも小さい程度の大きさであるオーバヘッド時間を必要とする標準局所手順呼出しを用いることができる。結果として、不信用ルーチンの分離は、比較的高いレベルの性能及び信頼性を維持しつつ達成することができる。
【0036】
データベースサーバが単一処理を用いて実行されるとき、分離は、実行されるルーチンの特性に基づいてR/W特権を変更することによってコアメモリセグメント内で達成することができる。信用ルーチンを実行することにおいて、スレッドは、通常の方法においてコアメモリに対する完全R/W特権を有する。しかしながら、不信用ルーチンを実行する前に、コアデータベースルーチンに対応するメモリの範囲へのR/W許可は、不信用ルーチンを実行しているスレッドに対して読取り専用に切り替えられる。メモリセグメントへのR/W特権を切り替えることは、二つの方法:(i)特定メモリ範囲でR/W許可を変更するためにオペレーティングシステム−特定ルーチンを呼出すことによって、または(ii)メモリセグメントからスレッドが存在するような処理を取り外しそしてメモリセグメントに処理を再び取付けすることにより異なるR/Wアクセス許可を特定することによって達成することができる。両方の方法において、データベースの破損は、不信用ルーチンがメモリの指定部分を変更するのを禁止することによって防ぐことができる。
【0037】
信用コアデータ構造及びDBMSルーチンから不信用UDRsを有効的に分離するために図4のアーキテクチャがどのようにインフォーミックスユニバーサルサーバにおいて用いられうるかという詳細な説明は、図5を参照して与えられる。図示したマルチプロセッサ環境では、IUSは、同じメモリアドレス空間を占有するが互いに論理的に区分される複数のメモリセグメント−−例えば、コアメモリ402及び防護メモリ412−−を用いる。データベースサーバ400は、一つ以上の仮想プロセッサ(VPs)−−ハードウェアプロセッサをエミュレートしかつ同時に多重クライアント要求を受け入れかつ処理することができるマルチスレッド型ソフトウェアエンティティから構成されている。各VPは、例えば、UNIXオペレーティング・システムの処理として実行されるバイナリ実行可能ファイルの一つのインスタンスである。バイナリ実行可能ファイルは、ORDBMSを形成するために必要なソフトウェアコンポーネント及び任意のデータ型を取り扱うためのUDRsを含んでいる拡張子とインタフェースする機能を供給するソフトウェアコンポーネントを含む。
【0038】
VPsは、いろいろなクラスがあり、各クラスは、そのクラス内のVPsに対して利用可能な特権、及びそのクラス内のVPsに課せられた制限を制御する一定の特性を定義している。データベースエンジンにリンクされる各ルーチン、コアデータベースルーチンまたはUDRは、ルーチンがそれにより実行されるVPのクラスを指定する関連パラメータVPCLASSを有する。一般に、機能的に関連したルーチンの集合は、同じVPクラスに割り当てられる。VPCLASSパラメータは、データベースサーバの所望の構成により異なるクラスを特定するために始動時に変更されうる。
データベースサーバは、同じかまたは異なるクラスの、複数の異なるVPsにより構成されうる。VPsは、IUSシステムの一部として含まれるコアデータベースルーチンのライブラリにリンクされる。また、VPsは、一つ以上のUDRs、例えば、IUSシステムのユーザによって特定される任意のデータ型を管理するために特注設計された、図5に示すようなUDR1 及びUDR2 にもリンクされうる。コアデータベースルーチン及びUDRsの両方は、インフォーミックス、インコーポレーティッド(Informix, Inc.)によって開発されたDataBlade技術を用いてIUSアーキテクチャで実行される。DataBlade技術及び新しいUDRsを生成するためにそれがどのように用いられるかの詳細な説明は、参照文献として採り入れられる、DataBlade Developers Kit 9.01(インフォーミックス注文番号No.82181)に与えられている。
【0039】
図5に示した構成では、データベースサーバは、それぞれが異なるクラスに属している、3つの異なるVPs403、405及び409を含む。CPU VP405は、最も効率的にルーチンを実行するクラスでありかつコアデータベースルーチンに対するデフォルトVPクラスである、VPクラス“cpu”に属する。CPU VP405は、最初のインスタンスにおける全ての入力データベース照会または他のクライアント要求を受け取りかつ扱う。クライアント要求を処理ことにおいて、CPU VPは、特別の機能を実行するためにVPsの他のクラスを呼出しうる。例えば、CPU VP405は、ブロッキング(阻止)I/O要求をサービスすべくExtension VP403(VPCLASS=“ext”)を呼出し、それにより他のクライアント要求を扱うためにCPU VPを自由にする。
【0040】
全てのVPクラスは、データベースサーバの始動時に決定される静的R/W特権を有する。特定されない限り、デフォルトによる全てのVPクラスは、コアメモリ402に対して完全R/W特権を有する。しかしながら、拡張子VPは、そのVPCLASSを“防護(fenced)”に設定することによって防護FVPとして実行されるべく指定されうる。他のVPクラス(例えば、“cpu”、“aio”、“tli”)は、通常、動作の防護モードを支援しない。
従って、図5では、防護VP409(即ち、そのVPCLASSが“防護”に設定されている拡張子VP)は、防護メモリ412に対する完全R/W特権を有するがコアメモリ402への読取り専用アクセスに限定される。VPCLASSパラメータを適切に設定することによって、ルーチンが取り扱われる(信用対不信用)方法は、制御することができる。信用ルーチンとしてUDRを実行するために、VPCLASSは、CPU VPがコアデータベースエンジンルーチンと同じ方法でルーチンを実行するということを意味する“cpu”に設定される。コアメモリセグメント以外のメモリセグメントにおいてUDRを信用ルーチンとして実行するために、VPCLASSは、“cpu”以外のVPクラス識別子、例えば“ext”に設定される。コアメモリセグメント以外のメモリセグメントにおいて不信用ルーチンとして実行するために、VPCLASSは、ルーチンがコアメモリセグメントから“防護された”(即ち、書込むことが不能である)VPによって実行されるということを意味する“防護”識別子を含む。
【0041】
データベースサーバが信用及び不信用ルーチンの間で切り替わる方法の説明は、図6のフローチャートを参照して与えられる。クライアントは、サーバに接続、または“ログイン”し(ステップ500)かつログインセッションのコースにわたり一つ以上の要求(例えば、SQL照会)を発行することによってデータベースサーバ400をアクセスする。まずデータベースサーバ400に接続することにより、各クライアントにはメモリスタックがコアデータベースルーチンへの呼出し、mt_alloc_stack()を介してCPU VP405によって割り当てられる(ステップ502)。クライアントの割り当てられたスタック領域は、ログインセッション中に発行されたクライアントのデータベース要求をサービスしているそのクライアントに関連付けられた一つ以上の実行スレッドによって用いられる。また、スタック割り当てルーチンは、追加空間が既存のスタックによって必要とされるときにまたはクライアント要求の並列処理に対して新しいワーカースレッドをひき起こすために呼び出される。
【0042】
クライアントがデータベース照会または他の要求をデータベースサーバに送るとき(ステップ504)、CPU VP405は、特定情報を検索しかつ適切なフォーマットにそれを与えるためにどのルーチンを実行する必要があるかを決定することによって照会の処理を起動する(ステップ506)。処理の一部として、CPU VP405は、また、照会最適化分析を実行しかつデータベースマニピュレーション動作の実行を起動するであろう。
結局、CPU VPは、一般にクライアントの要求をサービスするために一つ以上のルーチンを実行する必要がある点に到達する。実行されるべき各ルーチンに対して、CPU VP405は、ルーチンがコアメモリ402に対する完全R/W特権を有するVPによってまたは、コアメモリ402に対する読取り専用特権を有する、防護VP409によって実行されるべきかを決定するためにルーチンのVPCLASSパラメータを試験する(ステップ508)。クライアント要求をサービスすることにおいて実行されるルーチンの大部分は、一般に、CPUVP405それ自体によってまたは“cpu”以外のクラス(例えば、拡張子VP403)の非防護VPによってコアメモリ402で実行される信用コアデータベースルーチンである。しかしながら、クライアント要求をサービスことにおいて実行されるべきルーチンのあるものは、UDRsをコアデータベースメモリから分離すべく防護メモリセグメント412における防護VP409によって実行される不信用UDRsでありうる。
【0043】
VPCLASSパラメータが従って語“防護(fenced)”を含まないならば、ルーチンは、信用として扱われる。そのようにするために、CPU VP405は、ルーチンに対するパラメータをコアメモリ402のクライアントのスタックに押しつけ(ステップ510)、かつルーチンを実行するためにスレッドに対するエントリを主実行キュー404に挿入する(ステップ512)。主実行キュー404がルーチンのスレッドエントリを次にポイントするときに、ルーチンのVPCLASSパラメータによって特定されたクラスからのVPは、スレッドピックアップしかつクライアントのスタックからパラメータをポップオフしかつルーチンによって特定された命令を実行すべくそれらを用いることによってコアメモリ402において要求されたルーチンを実行する(ステップ514)。信用ルーチンを実行することにおいて、ルーチンが実行されているVPは、必要に応じて自由にコアメモリ402に書き込まれかつそれから読み取られる。完了により、ルーチンは、あらゆるリターンパラメータをクライアントのスタックに押しつけかつ適当な位置に制御を戻す(ステップ516)。
【0044】
しかしながら、VPCLASSパラメータが語“防護(fenced)”を含むならば、CPU VP405において実行されているスレッドは、ルーチン(一般的にUDR)が防護メモリセグメント412で実行できるように防護VP409に移行する。CPU VP405は、コアメモリセグメント402にではなく防護メモリセグメント412にメモリスタック(防護スタック416)を割り当てるために次いでmt_alloc _stack() を呼び出す、コアデータベースルーチン、mt_priv_call()、を呼び出すことによってスレッドの移行を起動する(ステップ518)。スタックが割り当てられた後、mt_priv_call()は、UDRに対するパラメータを防護スタック416 に押しつけることによってコンテキスト切り替えを行ない(ステップ520)、かつスレッドエントリを、不信用ルーチンを実行するために別個に維持される、防護実行キュー414に挿入する。防護VPは、キュースレッドが次に実行されるときに次いで防護メモリセグメント412において不信用UDRを実行する(ステップ524)。
【0045】
UDRを実行することにおいて、防護VP409は、防護メモリセグメント412から自由に読み取りかつそれに書き込みうるが、コアメモリセグメント402に書き込むは、防止される。それよりも、防護VP409は、不信用UDRを実行するために必要に応じて防護VP409にセグメント402におけるデータを読み取らせるためにコアメモリセグメント402への読取り専用アクセスを有する。防護VP409は、マルチスレッディング(MT)インタフェース、サーバアプリケーションプログラムインタフェース(SAPI)及びユーザ定義型ルーチン言語マネージャ(UDRLM)によって供給された内部ルーチンを介してコアメモリ402に存在している資源をアクセスすることが可能である。これらの内部ルーチンは、特定ルーチンの性能がメモリセグメント間を移行するためにスレッドを必要とするかどうかを検出する。SAPIインタフェースライブラリは、UDRによって呼び出されうる支援型ルーチンを定義する。SAPIルーチンは、現行コンテキストが不信用であるということをエントリにより検出する。不信用コンテキストにおいて実行されているルーチンがコアメモリを変更することを必要とするならば、それは、mt_priv_call()を介して信用コンテキストに切り替わり、所望の動作を実行しかつ別のmt_priv_call()で不信用コンテキにスイッチバックする。実質的に、信用及び不信用コンテキスト間のいかなる任意の数の切り替えもこの方法で行われうる。必要に応じてコンテキストを選択的に切り替えることによって、実行のスレッドは、クライアント処理及びUDRsに対して透過であるような方法でメモリセグメントとVPsの間を移動することができる。
【0046】
不信用ルーチンの実行中に、スレッドが防護メモリセグメントにおいて実行されている間に防護VPがコアメモリセグメントにおけるメモリを変更することを試みる命令を実行するならば、防護VPは、そのようにすることを防止される。結果として、コアメモリセグメントは、不良UDRによって不適切に変更されることから保護される。更に、不信用UDRsを実行することに含まれる種々の動作が全て同じメモリアドレス空間内で行われるので、メモリセグメント間で切り替えるために局所呼出しだけが必要でありそれによりルーチンが行われうるスピード及び信頼性を向上する。
UDRが防護メモリセグメント412におけるその実行を完了した後、mt_priv_call()ルーチンからのリターンは、実行のスレッドがコアメモリセグメント402におけるCPU VP405に戻るように移行して行われる(ステップ526)。mt_priv_call()は、スレッドのスタック上の単なる別の呼出しなので、それからの戻りは、スレッドをそれがやってきたところからのコンテキストに戻す。結果として、スレッドは、それが防護メモリセグメントにおいて生成したあらゆる資源を割り当て解除しかつCPU VP405において実行を行う。
【0047】
図5のデータベースサーバメモリが二つのセグメント402及び404に分割されるけれども、より多くのメモリセグメントを有しているアーキテクチャを実施することができる。データベースサーバは、3つ以上のセグメントに分割することができる−−例えば、一つのコアセグメントと二つ以上の防護セグメント。信用ルーチンは、コアセグメントで実行することができかつUDRsは、UDRsが割り当てられた異なるクラスに基づき種々の防護セグメントで実行することができる。例えば、適切な動作に対してかなりの検査が行なわれかつ信頼できることを証明したUDRsは、第1のVPクラスに割り当てることができ、ほとんどまたは全く検査が行われていないUDRsは、一つ以上の他のVPクラスに割り当てることができる。第1のVPクラスに属している証明済みの信頼性があるUDRsは、一つのメモリセグメントで実行することができ、他のクラスに属している不信用UDRsは、それらを他のUDRsから分離すべく別個のメモリセグメントで実行することができる。このように不信用UDRsを分離することは、それらがコアデータベースサーバメモリを破損することだけでなく他のUDRsをクラッシュすることも防ぐことができる。
【0048】
更に、多重防護セグメントの使用は、より簡単な不良識別を容易にする。多重UDRsが単一メモリセグメントで実行されるならば、どのUDRが不良であるかという決定は難しい。異なるメモリセグメントに対するUDRsを分離することによって、不良のUDRは、どのメモリセグメントが破損されたかを決定することによって複数のUDRsの中から識別することができる。
各VPは、UNIXを基盤としたプラットフォームで個別の処理として実行されるけれども、全てのアクティブVPsの集合は、多重スレッドを有している単一処理として他のプラットフォームで実行することができる。データベースサーバに存在するVPsの数及び型は、企業(enterprise)の目標に依存しかつシステム管理者に対する設計選択事項である。VPの各インスタンスは、同時に多重クライアント要求を受け入れかつ処理することができる多重スレッド型エンティティである。VPの各クラスに対して、VPの二つ以上のインスタンスが同時にアクティブでありうる。例えば、CPU VPの複数のインスタンスは、同時にアクティブでありうるし、それぞれが一つ以上のクライアント要求を同時にサービスする。
【0049】
同様に、防護VPの複数のインスタンスが存在しうるし、それぞれが一つ以上のUDRsを並列で実行する。防護VPの単一インスタンスは、全てのUDRsを代替的に処理しうるかまたは不信用ルーチンに対する各呼出しは、防護VPの専用インスタンスによってサービスされうる。図5のアーキテクチャにおけるVPsは、静的R/W許可(即ち、完全または防護のいずれか)を用いるけれども、ことあんるアーキテクチャは、VPsに対する許可がVPがコアメモリセグメントから防護されるべきルーチンを実行しているか否かに基づいて動的に切り替えられることころで可能である。更に、起動時に全てのVPインスタンスをひき起こすよりも、VPの一インスタンスは、例えば、不信用UDRを呼出すことに応答して、必要に応じて動的にひき起こすことができる。
【0050】
代替的実施例では、不信用UDRを実行している防護VPは、不信用UDRの分離を維持すると同時に、そこに存在している資源をアクセスするためにコアメモリに対して“コールバック(call backs)”を実行することができる。IUSシステムは、コアメモリに存在している資源を変更する許可可能なルーチン呼出しの表を維持する。防護VPは、所望のルーチンに対する表における対応する通常の位置を示すことによってコールバック表にて特定されたルーチン呼出しのいずれかを呼び出すことができる。図7に示すように、例えば、防護VPは、防護VPがルーチン(y)を呼出すことを欲するときにコールバック表600における位置二(2)を指定しうる。非防護VPが、コアメモリにおいて要求ルーチンを実行するために、防護VP上で先に実行されていたスレッドを次にピックアップしたときに、非防護VPは、要求ルーチンがコールバック表600にリストされたことを確認することによってルーチン呼出しによってポイントされたメモリアドレスがコアメモリにおいて適合かつ安全な実行エントリポイントであったということを確実にする。要求ルーチンがコールバック表600にリストされていなかったならば、要求ルーチンの実行は、阻止される−−即ち、非防護VPは、要求ルーチンを実行しない。このように、コールバック表機構は、防護VPによったなされうるルーチン呼出しを制限しそれによってそれが潜在的にコアメモリにおける不適当な位置にジャンプすることを防ぐ。
【0051】
コールバック表は、少なくとも二つの異なる方法で実施されうる。まず、コールバック表は、許可可能なルーチンのアドレスのリストを含みうる。コアメモリにコールバックすることを求めているUDRは、コールバック表に対するインデックスとして用いるべきエントリポイント識別子を供給する。非防護VPは、UDRによって供給された特定のエントリポイント識別子によってポイントされたルーチンを実行する。代替的に、コールバック表は、コアメモリにおける正当な実行アドレスのリストでありうる。UDRによって特定されたエントリポイントは、エントリポイントの有効性を確認するためにコールバック表にリストされた実行アドレスに対してチェックされうる。
ここで説明した方法及び機構は、特定のハードウェアまたはソフトウェア構成に限定されるものではないが、それらは、データベース動作が実行されうるあらゆるコンピューティング又は処理環境において適用性を見出すであろう。
【0052】
ここで説明した技法は、ハードウェアまたはソフトウェア、またはこれらの組合せで実施されうる。技法は、それぞれがプロセッサ、プロセッサによって読取り可能な記憶媒体(揮発性及び不揮発性メモリ及び/又は記憶素子を含んでいる)、及び適格な入力及び出力装置を含むプログラマブルコンピュータで実行されるコンピュータプログラムで実施されるのが好ましい。プログラムコードは、記述された機能を実行しかつ出力情報を生成するために入力装置を用いて入力されたデータに適用される。出力情報は、一つ以上の出力装置に適用される。
各プログラムは、コンピュータシステムと通信するために高水準手続き型又はオブジェクト指向型プログラミング言語で実施されるのが好ましい。しかしながら、プログラムは、所望ならば、アセンブリまたは機械言語で実施することができる。いずれの場合でも、言語は、コンパイル済みまたは翻訳済み言語でありうる。
【0053】
それぞれのそのようなコンピュータプログラムは、記述された手順を行うために記憶媒体または装置がコンピュータによって読み取られるときにコンピュータを構成しかつ動作するための汎用または特殊用途プログラマブルコンピュータによって読取り可能である記憶媒体又は装置(例えば、CD−ROM、ハードディスク又は磁気ディスケット)に記憶されるのが好ましい。また、システムは、コンピュータを特定及び所定の方法で動作するように記憶媒体が構成された、コンピュータプログラムで構成された、コンピュータ−読取り可能記憶媒体として実施されうる。
他の実施例は、特許請求の範囲の範疇内である。
【0054】
【発明の効果】
本発明の方法は、データベースにおける情報を操作するためにルーチンを実行する、データベースサーバによって実行される、方法であって:データベースマニピュレーションルーチンが特定メモリ範囲から分離されるか否かを決定し;決定に基づいてデータベースマニピュレーションルーチンに対するメモリアクセス許可を選択的に切り替え;かつ選択的に切り替えたメモリアクセス許可を用いてデータベースマニピュレーションルーチンを実行する段階を具備するので、新しいアプリケーションを配置しても優れた性能で情報をアクセスすることができる。
本発明の方法は、データベースにおける情報を操作するためにルーチンを実行する、データベースサーバによって実行される、方法であって:メモリアドレス空間をメモリセグメントに分割し;第1のメモリセグメントにおいてデータベースマニピュレーションルーチンを選択的に実行し;かつ実行しているデータベースマニピュレーションルーチンがメモリセグメントの別のものに情報を書込むことを防ぐ段階を具備するので、新しいアプリケーションを配置しても優れた性能で情報をアクセスすることができる。
【0055】
本発明のデータベースサーバは、信用ルーチン及び不信用ルーチンを含んでいる複数のデータベースマニピュレーションルーチン;コアメモリセグメント及び防護メモリセグメントを含んでいる複数のメモリセグメントを有している共有メモリアドレス空間;及び複数のルーチンにリンクされた複数の仮想プロセッサを備え、仮想プロセッサは、コアメモリセグメントにおける信用ルーチンを実行するフルアクセス仮想プロセッサと、防護メモリセグメントにおける不信用ルーチンを実行する防護仮想プロセッサとを含んでいるので、新しいアプリケーションを配置しても構成が複雑にならずかつ優れた性能で情報をアクセスすることができる。
本発明のコンピュータソフトウェアは、データベースマニピュレーション方法を実行するためにリンク型ルーチンを有しているデータベースサーバに対して、コンピュータ読取り可能媒体上に存在している、コンピュータソフトウェアであって、コンピュータソフトウェアは、コンピュータに
(a)クライアントからデータベース照会を受け取る;
(b)データベース照会をサービスするためにどのルーチンを実行する必要があるかを決定する;
(c)コアメモリへの読取り/書込みアクセスで信用ルーチンを実行する;及び
(d)コアメモリへの読取り専用アクセスで不信用ルーチンを実行する
動作を実行させるための命令を備えているので、新しいアプリケーションを配置しても構成が複雑にならずかつ優れた性能で情報をアクセスすることができる。
【図面の簡単な説明】
【図1】従来のリレーショナルデータベースを示すブロック図である。
【図2】従来の拡張可能オブジェクトリレーショナルデータベース管理システムを示すブロック図である。
【図3A】従来のデータベースサーバアーキテクチャの一例を示す図である。
【図3B】従来のデータベースサーバアーキテクチャの他の一例を示す図である。
【図4】多重メモリセグメントを有しているデータベースサーバアーキテクチャを示すブロック図である。
【図5】インフォーミックスユニバーサルサーバアーキテクチャを示すブロック図である。
【図6】図5のインフォーミックスユニバーサルサーバアーキテクチャにおけるルーチンの実行を説明するためのフローチャートである。
【図7】図5のインフォーミックスユニバーサルサーバアーキテクチャにおいて用いられうるコールバック表を示すデータ図である。
【符号の説明】
400 データベースサーバ
401 クライアント
402 コアメモリ
403、405、409 仮想プロセッサ(VP)
404 主実行キュー
406、408、410 クライアントスタック
412 防護メモリ
414 防護実行キュー
416 防護スタック
Claims (42)
- データベースにおける情報を操作するためにルーチンを実行する、データベースサーバによって実行される、方法であって: データベースマニピュレーションルーチンが特定メモリ範囲から分離されるか否かを決定し; 前記決定に基づいてデータベースマニピュレーションルーチンに対するメモリアクセス許可を、局所手順呼出しを介して、選択的に切り替える段階であって、前記データベースマニピュレーションルーチンが前記特定メモリ範囲から分離されるルーチンであると決定されたならば該データベースマニピュレーションルーチンに対する前記メモリアクセス許可を前記特定メモリ範囲に対する読取り専用に設定するものと;かつ 前記選択的に切り替えたメモリアクセス許可を用いて前記データベースマニピュレーションルーチンを実行する段階を具備することを特徴とする方法。
- 前記決定段階は、前記データベースマニピュレーションルーチンに関連付けられたパラメータを検査することを含むことを特徴とする請求項1に記載の方法。
- 前記決定段階の前に、前記データベースマニピュレーションルーチンを実行するためのプロセッサのクラスを特定する値に前記パラメータを設定する段階を更に具備することを特徴とする請求項2に記載の方法。
- 前記設定段階は、前記特定メモリ範囲から分離されるプロセッサのクラスを特定する値を前記パラメータに割り当てることを含むことを特徴とする請求項3に記載の方法。
- 前記選択的切り替え段階は、前記データベースマニピュレーションルーチンが前記特定メモリ範囲から分離されないルーチンであると決定されたならば該データベースマニピュレーションルーチンに対する前記メモリアクセス許可を前記特定メモリ範囲に対する読取り/書込みに設定することを含むことを特徴とする請求項1に記載の方法。
- 前記選択的切り替え段階は、前記特定メモリ範囲に対する読取り/書込み許可を有するプロセッサから前記特定メモリ範囲に対する読取り専用許可を有するプロセッサに前記データベースマニピュレーションルーチンに対する実行のスレッドを移行することを含むことを特徴とする請求項1乃至5のいずれか一項に記載の方法。
- 前記移行する段階は、前記特定メモリ範囲と同じアドレス空間内に前記実行のスレッドを維持することを含むことを特徴とする請求項6に記載の方法。
- 前記選択的切り替え段階は、前記データベースマニピュレーションに対する実行のスレッドが前記特定メモリ領域に対する読取り/書込み許可を有するような信用コンテキストから前記実行のスレッドが前記特定メモリ領域に対する読取り専用許可を有するような不信用コンテキストに切り替えることを含むことを特徴とする請求項1乃至7のいずれか一項に記載の方法。
- 前記実行のスレッドが、前記データベースマニピュレーションルーチンを実行すべく読取り専用アクセスを有する実行のスレッドに対して前記特定メモリ領域に存在している資源へのアクセスを必要とするということを検出する段階を更に具備することを特徴とする請求項8に記載の方法。
- 前記特定メモリ領域に存在している資源へのアクセスを必要とするということを検出して、前記不信用コンテキストから前記実行のスレッドが前記特定メモリ領域に対する読取り/書込み許可を有するような別の信用コンテキストへ切り替える段階を更に具備することを特徴とする請求項9に記載の方法。
- 前記データベースマニピュレーションルーチンに対する前記実行のスレッドが前記特定メモリ範囲における前記資源をアクセスすることを完了した後に前記別の信用コンテキストから前記不信用コンテキストへ切り替える段階を更に具備することを特徴とする請求項9に記載の方法。
- 前記データベースマニピュレーションルーチンの実行が完了した後に前記不信用コンテキストから前記信用コンテキストへ切り替える段階を更に具備することを特徴とする請求項11に記載の方法。
- 前記選択的切り替え段階は、信用コンテキストと不信用コンテキストの間で任意の数の切り替えを実行することを含むことを特徴とする請求項1乃至12のいずれか一項に記載の方法。
- 前記実行する段階は、前記データベースマニピュレーションルーチンを実行すると同時に前記特定メモリ領域と同じアドレス空間に残ることを含むことを特徴とする請求項1乃至13のいずれか一項に記載の方法。
- 前記実行する段階は、前記データベースマニピュレーションルーチンが前記特定メモリ領域から分離されるルーチンであると決定されたならば前記特定メモリ領域に対する読取り専用許可を有するプロセッサで該データベースマニピュレーションルーチンを行うことを含むことを特徴とする請求項1乃至14のいずれか一項に記載の方法。
- 前記実行段階は、前記データベースマニピュレーションルーチンが前記特定メモリ領域から分離されていないルーチンであると決定されたならば前記特定メモリ領域に対する読取り/書込み許可を有するプロセッサで該データベースマニピュレーションルーチンを行うことを含むことを特徴とする請求項1乃至15のいずれか一項に記載の方法。
- 前記実行段階は、前記データベースマニピュレーションルーチンが前記特定メモリ領域から分離されるルーチンであると決定されたならば前記特定メモリ領域から論理的に区分されるメモリセグメントにおいて該データベースマニピュレーションルーチンを行うことを含むことを特徴とする請求項1乃至16のいずれか一項に記載の方法。
- 前記実行段階は、前記データベースマニピュレーションルーチンが前記特定メモリ領域から分離されないルーチンであると決定されたならば前記特定メモリ領域において該データベースマニピュレーションルーチンを行うことを含むことを特徴とする請求項1乃至17のいずれか一項に記載の方法。
- 前記実行段階は、前記特定メモリ領域に存在している資源の変更を選択的に許可することを含むことを特徴とする請求項1乃至18のいずれか一項に記載の方法。
- 前記選択的変更は、前記特定メモリ領域における一つ以上の許可される実行エントリポイントに限定されることを特徴とする請求項19に記載の方法。
- コールバック表において前記一つ以上の許可される実行エントリポイントを特定する段階を更に具備することを特徴とする請求項20に記載の方法。
- データベースにおける情報を操作するためにルーチンを実行する、データベースサーバによって実行される、方法であって: メモリアドレス空間をメモリセグメントに分割する 段階であって、各メモリセグメントは同じメモリアドレス空間に存在し; 第1のメモリセグメントにおいてデータベースマニピュレーションルーチンを選択的に実行し;かつ 前記実行しているデータベースマニピュレーションルーチンが前記第1のメモリセグメントとは別のメモリセグメントに情報を読みとることのみを許し、書込むことを防ぐ段階を具備することを特徴とする方法。
- 前記第1のメモリセグメントにおいて実行されている前記データベースマニピュレーションルーチンを、所定のルーチンを実行させるために別のメモリセグメントに移行させる段階を更に具備することを特徴とする請求項22に記載の方法。
- 前記別のセグメントにおいて前記所定のルーチンに対して特定されたエントリポイントが許可されるエンドポイントかどうかをチェックする段階を更に具備することを特徴とする請求項23に記載の方法。
- 前記チェックする段階は、所定の一つ以上の許可されるエントリポイントのセットに対して前記特定エントリポイントを比較することを含むことを特徴とする請求項24に記載の方法。
- 前記別のセグメントにおける前記特定エントリポイントが許可されないエントリポイントであるならば前記所定のルーチンの実行を阻止する段階を更に具備することを特徴とする請求項24に記載の方法。
- 前記所定のルーチンが完了された後に前記第1のメモリセグメントに前記データベースマニピュレーションルーチンを戻す段階を更に具備することを特徴とする請求項22乃至26のいずれか一項に記載の方法。
- 前記データベースマニピュレーションルーチンは、該データベースマニピュレーションルーチンが別のメモリセグメントにおける情報がそれから保護されるものとして識別されるならば、前記第1のメモリセグメントにおいて実行されることを特徴とする請求項22乃至27のいずれか一項に記載の方法。
- 別のメモリセグメントにおける情報がそれから保護される前記データベースマニピュレーションルーチンは、ユーザ定義型ルーチンを含むことを特徴とする請求項28に記載の方法。
- 別のメモリセグメントにおける情報がそれから保護される前記データベースマニピュレーションルーチンは、不信用ルーチンを含むことを特徴とする請求項28に記載の方法。
- 前記データベースマニピュレーションルーチンが別のメモリセグメントにおける情報がそれから保護されるものとして識別されないならば、全てのメモリセグメントに対する完全な読取り及び書込み特権を伴う該データベースマニピュレーションルーチンを実行する段階を更に具備することを特徴とする請求項22乃至30のいずれか一項に記載の方法。
- 前記データベースマニピュレーションルーチンは、信用ルーチンを含むことを備えていることを特徴とする請求項31に記載の方法。
- 前記分割する段階は、前記メモリセグメントを相互に論理的に区分することを含むことを特徴とする請求項22乃至32のいずれか一項に記載の方法。
- 前記選択的実行段階は、前記第1のメモリセグメント以外のメモリセグメントに対する読取り専用アクセスを有する処理で前記データベースマニピュレーションルーチンを行うことを含むことを特徴とする請求項22乃至33のいずれか一項に記載の方法。
- 前記処理は、多重スレッド型仮想プロセッサを含むことを特徴とする請求項34に記載の方法。
- 前記メモリセグメントの対応するものにおいて複数のデータベースマニピュレーションルーチンを同時に実行する段階を更に具備し、各データベースマニピュレーションルーチンは、それ自身のメモリセグメント以外の全てのメモリセグメントに対する読取り専用アクセスを有していることを特徴とする請求項22乃至35のいずれか一項に記載の方法。
- 信用ルーチン及び不信用ルーチンを含んでいる複数のデータベースマニピュレーションルーチン; コアメモリセグメント及び防護メモリセグメントを含んでいる複数のメモリセグメントを有している共有メモリアドレス空間;及び 前記複数のルーチンにリンクされた複数の仮想プロセッサを備え、前記仮想プロセッサは、前記コアメモリセグメントにおける信用ルーチンを実行し、かつ全てのメモリセグメントに対する読取り/書込みアクセスを有するフルアクセス仮想プロセッサと、前記防護メモリセグメントにおける不信用ルーチンを実行し、かつ前記コアメモリセグメントに対する読取り専用アクセスを有する防護仮想プロセッサとを含んでいることを特徴とするデータベースサーバ。
- 各データベースマニピュレーションルーチンは、前記ルーチンが信用ルーチンであるか不信用ルーチンであるかを特定する関連パラメータを有することを特徴とす
る請求項37に記載のデータベースサーバ。 - データベースマニピュレーションルーチンを実行するためのスレッドを更に備え、前記スレッドは、実行される前記データベースマニピュレーションルーチンが信用であるか不信用であるかに基づいて一つの仮想プロセッサから別の仮想プロセッサへ移ることを特徴とする請求項37または38に記載のデータベースサーバ。
- 前記実行されているデータベースマニピュレーションルーチンが不信用ルーチンであるならば、前記スレッドは、防護仮想プロセッサに移ることを特徴とする請求項39に記載のデータベースサーバ。
- 前記実行されているデータベースマニピュレーションルーチンが信用ルーチンであるならば、前記スレッドは、フルアクセス仮想プロセッサに移ることを特徴とする請求項39に記載のデータベースサーバ。
- データベースマニピュレーション方法を実行するためにリンク型ルーチンを有しているデータベースサーバに対して、コンピュータ読取り可能媒体上に存在している、コンピュータソフトウェアであって、前記コンピュータソフトウェアは、コンピュータに (a)クライアントからデータベース照会を受け取る; (b)前記データベース照会をサービスするためにどのルーチンを実行する必要があるかを決定する; (c)コアメモリへの読取り/書込みアクセスで信用ルーチンを実行する;及び (d)不信用ルーチンを実行する場合、実行のスレッドをコアメモリへの読取り/書込みアクセスを有している第1のプロセッサからコアメモリへの読取り専用アクセスを有している別のプロセッサに移行させることにより、コアメモリに対するアクセス許可を読み取り専用に変更する
動作を実行させるための命令を備えていることを特徴とするコンピュータソフトウェア。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/835967 | 1997-04-11 | ||
US08/835,967 US5895467A (en) | 1997-04-11 | 1997-04-11 | Selectively switching memory access permission for manipulating data in a database |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10312299A JPH10312299A (ja) | 1998-11-24 |
JP4171537B2 true JP4171537B2 (ja) | 2008-10-22 |
Family
ID=25270905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10145398A Expired - Lifetime JP4171537B2 (ja) | 1997-04-11 | 1998-04-13 | データベース情報をアクセスする方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US5895467A (ja) |
EP (1) | EP0871134B1 (ja) |
JP (1) | JP4171537B2 (ja) |
AU (1) | AU738371B2 (ja) |
BR (1) | BR9801403A (ja) |
CA (1) | CA2233537C (ja) |
DE (1) | DE69818135T2 (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL126587A (en) * | 1998-10-15 | 2004-12-15 | Computer Ass Think Inc | A method and system for preventing unwanted actions of activatable objects |
US6442569B1 (en) * | 1999-04-26 | 2002-08-27 | General Electric Company | Apparatus and method for data transfer between databases |
US6615219B1 (en) * | 1999-12-29 | 2003-09-02 | Unisys Corporation | Database management system and method for databases having large objects |
US7373353B2 (en) * | 2002-05-10 | 2008-05-13 | International Business Machines Corporation | Reducing index size for multi-level grid indexes |
US7383275B2 (en) * | 2002-05-10 | 2008-06-03 | International Business Machines Corporation | Methods to improve indexing of multidimensional databases |
US7143098B2 (en) * | 2002-05-10 | 2006-11-28 | International Business Machines Corporation | Systems, methods, and computer program products to reduce computer processing in grid cell size determination for indexing of multidimensional databases |
US7039650B2 (en) * | 2002-05-31 | 2006-05-02 | Sypherlink, Inc. | System and method for making multiple databases appear as a single database |
US8332373B1 (en) * | 2002-12-18 | 2012-12-11 | Teradata Us, Inc. | Representing user-defined routines with defined data structures |
US20050198008A1 (en) * | 2004-03-02 | 2005-09-08 | Adler David W. | Index exploitation for spatial data |
US7389283B2 (en) * | 2004-12-07 | 2008-06-17 | International Business Machines Corporation | Method for determining an optimal grid index specification for multidimensional data |
US7613711B2 (en) * | 2005-06-14 | 2009-11-03 | Microsoft Corporation | Specification of a hierarchical authorization model for a DBMS—SQL language extensions |
US7802000B1 (en) * | 2005-08-01 | 2010-09-21 | Vmware | Virtual network in server farm |
JP4844102B2 (ja) * | 2005-11-30 | 2011-12-28 | 富士ゼロックス株式会社 | サブプログラム及びそのサブプログラムを実行する情報処理装置 |
US8856782B2 (en) | 2007-03-01 | 2014-10-07 | George Mason Research Foundation, Inc. | On-demand disposable virtual work system |
US8326872B2 (en) * | 2008-02-22 | 2012-12-04 | Microsoft Corporation | Database sandbox |
US9098698B2 (en) | 2008-09-12 | 2015-08-04 | George Mason Research Foundation, Inc. | Methods and apparatus for application isolation |
US8839422B2 (en) | 2009-06-30 | 2014-09-16 | George Mason Research Foundation, Inc. | Virtual browsing environment |
US8904154B2 (en) * | 2010-04-16 | 2014-12-02 | Massachusetts Institute Of Technology | Execution migration |
US8495106B2 (en) * | 2011-11-18 | 2013-07-23 | International Business Machines Corporation | Write instruction datasource for database write procedure |
US9081959B2 (en) | 2011-12-02 | 2015-07-14 | Invincea, Inc. | Methods and apparatus for control and detection of malicious content using a sandbox environment |
US9582373B2 (en) * | 2014-03-31 | 2017-02-28 | Vmware, Inc. | Methods and systems to hot-swap a virtual machine |
US10601593B2 (en) | 2016-09-23 | 2020-03-24 | Microsoft Technology Licensing, Llc | Type-based database confidentiality using trusted computing |
CN111339560B (zh) * | 2020-02-26 | 2023-06-13 | 中国邮政储蓄银行股份有限公司 | 一种数据隔离方法、装置及系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4809160A (en) * | 1985-10-28 | 1989-02-28 | Hewlett-Packard Company | Privilege level checking instruction for implementing a secure hierarchical computer system |
JPH0291747A (ja) * | 1988-09-29 | 1990-03-30 | Hitachi Ltd | 情報処理装置 |
US5627987A (en) * | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
JPH05204656A (ja) * | 1991-11-30 | 1993-08-13 | Toshiba Corp | スレッド固有データ保持方法 |
US5361356A (en) * | 1992-03-06 | 1994-11-01 | International Business Machines Corporation | Storage isolation with subspace-group facility |
US5412717A (en) * | 1992-05-15 | 1995-05-02 | Fischer; Addison M. | Computer system security method and apparatus having program authorization information data structures |
JPH0784851A (ja) * | 1993-09-13 | 1995-03-31 | Toshiba Corp | 共有データ管理方法 |
US5572673A (en) * | 1993-12-01 | 1996-11-05 | Sybase, Inc. | Secure multi-level system for executing stored procedures |
US5566321A (en) * | 1993-12-13 | 1996-10-15 | Cray Research, Inc. | Method of managing distributed memory within a massively parallel processing system |
US5651139A (en) * | 1993-12-23 | 1997-07-22 | International Business Machines Corporation | Protected system partition read/write access on a SCSI controlled DASD |
US5577240A (en) * | 1994-12-07 | 1996-11-19 | Xerox Corporation | Identification of stable writes in weakly consistent replicated databases while providing access to all writes in such a database |
US5692182A (en) * | 1995-10-05 | 1997-11-25 | International Business Machines Corporation | Bufferpool coherency for identifying and retrieving versions of workfile data using a producing DBMS and a consuming DBMS |
-
1997
- 1997-04-11 US US08/835,967 patent/US5895467A/en not_active Expired - Lifetime
-
1998
- 1998-03-20 AU AU59438/98A patent/AU738371B2/en not_active Ceased
- 1998-03-30 CA CA002233537A patent/CA2233537C/en not_active Expired - Fee Related
- 1998-04-08 BR BR9801403A patent/BR9801403A/pt not_active IP Right Cessation
- 1998-04-13 JP JP10145398A patent/JP4171537B2/ja not_active Expired - Lifetime
- 1998-04-14 DE DE69818135T patent/DE69818135T2/de not_active Expired - Lifetime
- 1998-04-14 EP EP98302837A patent/EP0871134B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
MX9802716A (es) | 1998-12-31 |
EP0871134A3 (en) | 2001-01-10 |
CA2233537A1 (en) | 1998-10-11 |
CA2233537C (en) | 2007-06-05 |
AU738371B2 (en) | 2001-09-13 |
DE69818135D1 (de) | 2003-10-23 |
EP0871134A2 (en) | 1998-10-14 |
US5895467A (en) | 1999-04-20 |
EP0871134B1 (en) | 2003-09-17 |
BR9801403A (pt) | 1999-03-02 |
JPH10312299A (ja) | 1998-11-24 |
AU5943898A (en) | 1998-10-15 |
DE69818135T2 (de) | 2004-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4171537B2 (ja) | データベース情報をアクセスする方法 | |
US5197148A (en) | Method for maintaining data availability after component failure included denying access to others while completing by one of the microprocessor systems an atomic transaction changing a portion of the multiple copies of data | |
US5615363A (en) | Object oriented computer architecture using directory objects | |
US5574903A (en) | Method and apparatus for handling request regarding information stored in a file system | |
US6026402A (en) | Process restriction within file system hierarchies | |
US7502872B2 (en) | Method for out of user space block mode I/O directly between an application instance and an I/O adapter | |
US5675725A (en) | Computer backup system operable with open files | |
US5321841A (en) | System for determining the rights of object access for a server process by combining them with the rights of the client process | |
US6714949B1 (en) | Dynamic file system configurations | |
US5414839A (en) | Hybrid lock escalation and de-escalation protocols | |
CN101329636B (zh) | 虚拟化窗口信息的方法和设备 | |
US7849228B2 (en) | Mechanisms for creation/deletion of linear block address table entries for direct I/O | |
US5297283A (en) | Object transferring system and method in an object based computer operating system | |
US5903720A (en) | Object system capable of using different object authorization systems | |
EP1847928A1 (en) | Method and apparatus for isolating execution of software applications | |
US7325017B2 (en) | Method of implementation of data storage quota | |
JP2003186746A (ja) | ハードウェア実施セマフォおよび他の同様のハードウェア実施直列化および順位付け機構を使用する、コンピュータ内でのメモリへのアクセスのハードウェア実施制御の方法 | |
US20070005815A1 (en) | System and method for processing block mode I/O operations using a linear block address translation protection table | |
US20060265525A1 (en) | System and method for processor queue to linear block address translation using protection table control based on a protection domain | |
US20060288125A1 (en) | System and method for user space operations for direct I/O between an application instance and an I/O adapter | |
US7502871B2 (en) | Method for query/modification of linear block address table entries for direct I/O | |
Popek et al. | Issues in kernel design | |
Popek et al. | A verifiable protection system | |
US7844781B2 (en) | Method, apparatus, and computer program product for accessing process local storage of another process | |
US20060253858A1 (en) | Software service application and method of servicing a software application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 19980513 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040227 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070814 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071114 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071114 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080805 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080811 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
EXPY | Cancellation because of completion of term |