JP2001527244A - オブジェクト・リレーショナル・マッピングにおけるクエリー実行をクライアントとサーバーとで効率的に分割する方法及び装置 - Google Patents

オブジェクト・リレーショナル・マッピングにおけるクエリー実行をクライアントとサーバーとで効率的に分割する方法及び装置

Info

Publication number
JP2001527244A
JP2001527244A JP2000525839A JP2000525839A JP2001527244A JP 2001527244 A JP2001527244 A JP 2001527244A JP 2000525839 A JP2000525839 A JP 2000525839A JP 2000525839 A JP2000525839 A JP 2000525839A JP 2001527244 A JP2001527244 A JP 2001527244A
Authority
JP
Japan
Prior art keywords
management system
database management
server unit
query
based query
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
JP2000525839A
Other languages
English (en)
Inventor
リンダ ジー デミシェル
ロデリック ジー ジー カテル
Original Assignee
リンダ ジー デミシェル
ロデリック ジー ジー カテル
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 リンダ ジー デミシェル, ロデリック ジー ジー カテル filed Critical リンダ ジー デミシェル
Publication of JP2001527244A publication Critical patent/JP2001527244A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/289Object oriented databases
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/955Object-oriented
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • Y10S707/967Peer-to-peer
    • Y10S707/968Partitioning
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Abstract

(57)【要約】 【課題】非オブジェクト・ベースのデータベース管理システムを有する分散型システムにおいて、ユーザがオブジェクト・ベース・クエリーを実行することを可能にする。 【解決手段】プロセスは、オブジェクト・ベース・クエリーを受け取って、前記クエリーを実行するのに必要な処理を表すノードを含む論理ツリーを作成する。RDBMSによって実行可能な処理はSQLクエリーとしてRDBMSに送信される。前記RDBMSは前記SQLクエリーを実行して、データを前記プロセスに返す。該プロセスは、これを1以上のオブジェクトの適切なフィールドに置き、その結果のオブジェクトをオブジェクトキャッシュなどのメモリに格納する。前記プロセスは、残りのノード処理(RDBMSでは実行できない処理)をオブジェクトキャッシュに格納されたオブジェクトに関連させて処理し、この結果をユーザプログラムに送る。

Description

【発明の詳細な説明】 【0001】 (関連出願) 以下に示す米国特許出願は、本出願が依拠し且つ参照により本出願に援用する
ものである。 1997年12月22日出願の米国特許仮出願番号60/068,415、発
明の名称「オブジェクトとデータベースのマッピングシステム及びその方法」。 同日出願の米国特許出願番号 、発明の名称「ビューを処
理するためのオブジェクト・リレーショナル・マッピングツール」(代理人整理
番号06502.0136−00000)。 同日出願の米国特許出願番号 、発明の名称「ソースコー
ドマージングによるオブジェクト・リレーショナル・マッピングの展開」(代理
人整理番号06502.0137−00000)。 同日出願の米国特許出願番号 、発明の名称「オブジェク
ト・リレーショナル・マッピング・ツールを用いた、ソースコードに対する変更
とデータベースに対する変更のソースコードへの統合」(代理人整理番号065
02.0138−00000)。 同日出願の米国特許出願番号 、発明の名称「オブジェク
ト・リレーショナル・マッピング・ストラテジーへの規則的なアプローチ」(代
理人整理番号06502.0139−00000)。 同日出願の米国特許出願番号 、発明の名称「ロックグル
ープの特定用ユーザインタフェース」(代理人整理番号06502.0142−
00000)。 同日出願の米国特許出願番号 、「ロックグループを用い
た悲観的並行制御用のファイン・グレインド・コンシステンシーメカニズム」(
代理人整理番号06502.0143−00000)。 同日出願の米国特許出願番号 、発明の名称「複数クラス
にまたがるインデックスグループの特定用ユーザインタフェース」(代理人整理
番号06502.0144−00000)。 同日出願の米国特許出願番号 、発明の名称「オブジェク
ト指向アプリケーションに含まれるクラスに対応するリレーショナルデータベー
スにインデックスを生成するための方法及び装置」(代理人整理番号06502
.0145−00000)。 同日出願の米国特許出願番号 、発明の名称「オブジェク
ト指向データ依存性に対応するデータベースに格納された手続をロードするため
の方法及び装置」(代理人整理番号06502.0146−00000)。 同日出願の米国特許出願番号 、発明の名称「オブジェク
トとデータベースのマッピング用の統合グラフィックユーザインタフェースの方
法及び装置」(代理人整理番号06502.0147−00000)。 (発明の技術分野) 本発明は、概して、コンピュータデータベースに関し、更に詳しくは、非オブ
ジェクト・ベースのデータベースにおいてオブジェクト・ベース・クエリーを実
行する方法及び装置に関する。 【0002】 (発明の背景技術) 周知である、非オブジェクト・ベースのデータベース管理システム(CDBM
S)はデータの格納に幅広く用いられている。最もよく用いられているCDBM
Sの1つは、相互に関連する表の形式でデータを格納するリレーショナル・デー
タベース管理システム(RDBMS)である。しかしながら、RDBMSは、関
係データ(表データ)に限られており、例えば、オブジェクト指向プログラミン
グ言語に関連付けられたオブジェクトのように複雑なアイテムの処理に要求され
る精巧さには欠けている。目下、幾つかの企業が、オブジェクトをデータに変換
し、変換したデータをCDBMSに格納するためのシステムであるオブジェクト
とデータベースをマッピングするシステム(ODMシステム)を提供している。
これらのシステムを用いることにより、ソフトウェア開発者は、オブジェクト指
向プログラムとCDBMSをある程度統合することができる。 【0003】 しかしながら、CDBMSとODMシステムとの両方を用いる場合、データの
呼び出しには、SQL等の標準的なクエリー言語を使わなければならない。この
為、今日までソフトウェア開発者は、CDBMSに格納されたデータへのクエリ
ーを実行するのにオブジェクト指向言語を利用できない状況にあった。代わりに
、ソフトウェア開発者は、SQL等の標準クエリー言語を使ってクエリーを作成
することを余儀なくされてきた。このやり方では、ソフトウェア開発者は、SQ
Lにサポートされた機能しか使うことができず、オブジェクト指向プログラミン
グの機能性を充分に活用できないことになる。しかも、SQLクエリーを作成す
るには、ソフトウェア開発者はオブジェクトとDBMSに格納されたデータとを
どのようにマッピングするかを身につけなければならなかった。 【0004】 このように、ソフトウェア開発者が、周知である、非オブジェクト・ベースD
BMSに格納されたデータについてオブジェクト・ベース・クエリーを作成及び
実行を行うことを可能にするシステムが必要とされている。 【0005】 (発明の概略) 本発明に係る方法及び装置によれば、ここに具体化し概要を説明するように、
非オブジェクト・ベースのデータベース管理システムを有する分散型システムに
おいてユーザがオブジェクト・ベース・クエリーを実行することが可能になる。 【0006】 本発明による、非オブジェクト・ベースのデータベース管理システムにおいて
オブジェクト・ベース・クエリーを実行する方法は、オブジェクト・ベース・ク
エリーをユーザプログラムから受け取る工程を含む。斯かるオブジェクト・ベー
ス・クエリーはサーバ部とクライアント部とに分割され、サーバ部は前記データ
ベース管理システムに送信される。 【0007】 (発明の詳細な説明) 本明細書に援用され、本明細書の一部を成す添付図面は、本発明の実施を図示
し、本発明の詳細な説明と共に本発明の利点と原理を説明するものである。 【0008】 以下、添付図面に示す本発明の一実施の形態について詳細に説明する。尚、図
面及び下記の説明において、同一或いは類似の部分については同一の符号を用い
て参照した。 【0009】 (A.概観) 本発明に係る方法及び装置によれば、RDBMS等の、周知の非オブジェクト
・ベースDBMSを有する分散型システムにおいて、ユーザがオブジェクト・ベ
ース・クエリーを実行することが可能になる。ユーザプログラム側から要求され
るトランザクション(UPIトランザクション)開始後、ユーザは、オブジェク
トクエリー言語(OQL)を使って記述できるオブジェクト・ベース・クエリー
を起動する。クエリーとは、オブジェクトや値の集合をその相互関係などの特性
で判定する述語であって、集合を取得する手順を明確に特定するものではない。
クエリーはメソッドの呼び出しを含み、サブクエリーを含む他の述語により定義
されることもある。標準的なOQLについては、例えば、R.G.G. Cat
tell他著「オブジェクトデータベース標準:ODMG2.0」(Morga
n Kaufmann Publishers Inc.、1997年発行)に
説明されている。 【0010】 ODM/OQLプロセスは、このクエリーを受け取って、このクエリーを実行
するのに必要な処理を表すノードを含んだ論理ツリーを作成する。RDBMSに
より実行可能な処理は、好ましくはSQLクエリーとして、RDBMSに送信さ
れる。RDBMSは、このSQLを実行してデータをODM/OQLプロセスに
返す。 【0011】 ODM/OQLプロセスはRDBMSからデータを受け取ると、これを1以上
のオブジェクトの適切なフィールドに置き、この結果として生じるオブジェクト
をオブジェクトキャッシュなどのメモリに格納する。ODM/OQLプロセスは
、残りのノードが表す処理(RDBMSでは実行不可能な処理)をオブジェクト
キャッシュに格納されたオブジェクトに関連させて実行する。その後、ODM/
OQLプロセスは得られた結果をユーザプログラムに送る。ユーザプログラムは
、UPIトランザクションを完了したら、データをRDBMSにコミットする。 【0012】 また、本発明に係る方法及び装置は、異なるタイプの並行制御を提供する。1
つは、悲観的並行制御モデルを用いるアプローチである。このモデルでは、RD
BMSが必要なデータ項目を全てロックし、要求された全てのクエリーを含むU
PIトランザクションが完了して初めてロックを解除する。更に他のアプローチ
は、反復読み取り可能楽観的並行制御モデルを用いるものである。このモデルで
は、ODM/OQLプロセスは、RDBMSから受け取ったデータが先にオブジ
ェクトキャッシュに格納されたデータと一致するかどうかの確認を行う。更に他
のアプローチは、読み取りコミット楽観的並行制御モデルを用いるものである。
このアプローチでは、オブジェクトキャッシュがユーザプログラムによって更新
された場合、ODM/OQLプロセスは、一連のUPIトランザクションとして
引き続き実行される残りのクエリーが、オブジェクトキャッシュに格納されてい
るのと同じ更新後のデータを受け取るようにさせる。 【0013】 (B.アーキテクチャ) 図1は、本発明を実装可能なシステムを示すブロック図である。システム10
0は、サーバ170にネットワーク165を介して接続されたクライアント11
0を有する。ネットワーク165は、例えば、ローカルエリアネットワーク、広
域ネットワーク、或いは、インターネット等のインターネットワークなどである
。 【0014】 サーバ170は、入出力(I/O)インターフェース172、ネットワークイ
ンターフェース174、プロセッサ176、RDBMS188を含み、そのそれ
ぞれがバス186に接続されている。RDBMS188は、複数のデータテーブ
ルを有している。RDBMS188は、また、SQLクエリーを受け取り、テー
ブルに格納されたデータに基づきこのクエリーを実行し、結果として得たデータ
を返す。 【0015】 クライアント110は、ディスプレイ装置115、プロセッサ120、入出力
(I/O)インターフェース125、ネットワークインターフェース130、メ
モリ140を含み、そのそれぞれがバス135に接続されている。メモリ140
は、オブジェクトキャッシュ150、ユーザプログラム145、ODM/OQL
プロセス155、仮想マシン(VM)160を格納している。オブジェクトキャ
ッシュ150は、ユーザプログラム145のオブジェクト或いはODM/OQL
プロセス155のオブジェクトを格納するのに用いられる。 【0016】 ユーザプログラム145は、UPIトランザクションを開始し、1つ以上のO
QLクエリーを発行し、そしてUPIトランザクションを完了する。一例として
、ユーザプログラム145をJavaTMプログラミング言語を使って作成して
も良い。JavaTMプログラミング言語については、Mary Campio
ne、及び、Kathy Walrath著「The JavaTMTutor
ial」(アジソン−ウェスレイ、1996年発行)に説明されている。(尚、
Sun、Sun Microsystems、Sun Microsystem
s Computer Corporation、JavaSoft、Sunの
ロゴ、及びJavaTMは、米国及びその他の国におけるSun Micros
ystems,Inc.に帰属する商標又は登録商標である。) 【0017】 ODM/OQLプロセス155は、ユーザプログラム145が発行するオブジ
ェクト・ベースOQLクエリーとRDBMS188に含まれるテーブルに格納さ
れたデータとの間にインターフェースを提供する。一例として、ODM/OQL
プロセス155をJavaTMプログラミング言語を使って作成しても良い。本
出願では、ODMとOQLとは1つのプロセスに組み込まれているが、この2つ
を別々に実装しても良いことは当業者には当然認識されるものである。 【0018】 VM160は、プラットフォーム非依存型の処理(例えば、Javaプログラ
ミング言語で作成したユーザプログラムなど)と特定のプラットフォームとの間
にインターフェースを提供する仮想マシンである。一例として、VM160を、
JavaTM仮想マシン(JVM)及びJavaTMクラスライブラリを有する
JavaTMRuntime Environmentとしても良い。JVMに
ついては、Tim Lindholm、及び、Frank Yellin著「J
ava仮想マシン仕様」(アジソン−ウェスレイ、1996年発行)に説明され
ている。 【0019】 (C.アーキテクチャ処理) 図2は、本発明に係るオブジェクト・ベース・クエリー実行のフローチャート
を示す。ユーザプログラム145は、UPIトランザクションを開始後OQLク
エリーを発行する。このOQLクエリーは、ODM/OQLプロセス155に受
け取られる(ステップ205)。図3を参照して詳細を後述するが、ODM/O
QLプロセス155は、OQLクエリーを1以上のサーバ部と1以上のクライア
ント部とに分割する(ステップ210)。その後、ODM/OQLプロセス15
5は、サーバ部を1以上のCDBMS、例えば、RDBMS188、に送信する
(ステップ215)。RDBMS188は、サーバ部を実行してその結果得られ
るデータセットをODM/OQLプロセス155に提供する。 【0020】 ODM/OQLプロセス155は、結果として得られたデータセットを受け取
ると、これを1以上のオブジェクトに変換し、変換したオブジェクトをオブジェ
クトキャッシュ150に格納する(ステップ220)。ODM/OQLプロセス
155は、OQLクエリーのクライアント部を、オブジェクトキャッシュ150
に格納されたオブジェクトに関連させて実行し(ステップ225)、この結果か
ら1以上のオブジェクトを作成してOQLクエリーを完了する。最後に、ODM
/OQLプロセス155は、OQLクエリーの結果をユーザプログラム145に
転送する(ステップ230)。このためには、例えば、ユーザプログラム145
に結果を表すオブジェクトへの参照を提供するか、或いは、ユーザプログラム1
45に結果を表す実際のオブジェクトのコピーを提供するかすればよい。 【0021】 図3は、本発明に係る論理クエリーツリーを示す図であり、論理クエリーツリ
ーはOQLクエリーをサーバ部とクライアント部に分割するのに用いることがで
きる。クエリーから論理ツリーを作成する処理は当業者の周知とするところであ
り、例えば、David Maier著「リレーショナル・データベース論」(
Computer Science Press、1983年発行)に説明され
ている。よって、図3に関する説明では、OQLクエリーは既に論理ツリーに変
換済みであるものと見なす。 【0022】 図3に示す例では、OQLクエリーツリーはノード1〜15を有し、このノー
ドはそれぞれ実行すべき処理を表す。更に、OQLクエリーツリーのノードは「
サブツリー」を形成する。例えば、ノード2(及びそのサブノード4〜5、8〜
9、12〜13)とノード3(及び、そのサブノード6〜7、10〜11、14
〜15)はそれぞれ、ノード1が表すOQLツリーの「サブツリー」を表してい
る。同様に、ノード5(及び、そのサブツリー8〜9、12〜13)は、ノード
2が表すツリーのサブツリーを表している。OQLクエリーを完了するには、各
ノードに関連付けられた処理が実行されなければならない。 【0023】 一例として、RDBMS188により実行される処理は可能な限り多いことが
望ましい。言い換えれば、つまり、サーバ部は、SQLがサポートする全ての処
理を含むことが望ましい。このためには、SQLがサポートする処理のみを要求
するサブツリーを全てサーバ部に含めればよい。 【0024】 図3に示す例では、ノード6は、OQLがサポートし且ついかなるSQL部分
にも解剖できない処理を要求する。同様に、ノード9は、SQLがサポートしな
い処理(メソッドの呼び出し)を要求する。これ以外のノード(ノード2〜5、
7〜8、10〜15)は、SQLがサポートする処理を要求する。従って、ノー
ド4、7、8が表すサブツリーは、SQLがサポートする処理のみを要求するサ
ブツリーであるから、サーバ部に含めることができる。言い換えれば、これらの
サブツリーには、非SQL言語にサポートされる処理を表すノードは含まれない
。 【0025】 対照的に、ノード6及び9が表す処理はSQLにサポートされていないため、
クライアント部に含めなければならない。ノード3が表す処理は、ノード6が表
す処理に依存しているので、これもクライアント部に含めなければならない。同
様に、ノード5が表す処理は、ノード9が表す処理に依存しているので、これも
ライアント部に含めなければならない。ノード2が表す処理は、ノード5が表す
処理に依存しており(そしてこの処理は、ノード9が表すSQLがサポートしな
い処理に依存する)、従って、これもクライアント部に含めなければならない。 【0026】 図3を参照した説明は、あくまでも例示のためのものである。OQLクエリー
が要求する処理は、本発明から逸脱することなく、ここに示した以外の分割の仕
方が可能であることは、当業者には当然認識されるものである。例えば、SQL
がサポートする処理の一部を、サーバ170ではなくクライアント110で実行
しても良い。 【0027】 RDBMSは、各ユーザがデータに同時アクセスできる複数ユーザ環境でしば
しば用いられる。その上、要求されたUPIトランザクションは総じて、トラン
ザクションの完了及び変更のRDBMSへのコミットが行われる前に、複数のク
エリーを要求する可能性がある。この様な環境においては、1つのUPIトラン
ザクションの複数のクエリー実行中に、他のユーザがRDBMSデータを変更す
ることが起こり得る。並行制御は、ユーザプログラムが、1つのUPIトランザ
クションの流れの中で一貫性のあるデータをRDBMSから取得できるようにす
るため用いられるものである。用いる並行制御のタイプによっては、複数ユーザ
環境であっても、ユーザー一人一人から見れば単一ユーザ環境と同様に見せかけ
ることが可能である。 【0028】 図4は、本発明に係る悲観的並行制御モデルを示すフローチャートである。説
明の便宜上、図4を、ユーザプログラム145、ODM/OQLプロセス155
、オブジェクトキャッシュ150、RDBMS188を示す図5において示す論
理フローに関連づけて説明する。悲観的並行制御モデルにおいては、UPIトラ
ンザクションの実行中、RDBMS188が必要なデータ項目を全てロックする
ので、ユーザプログラム145はデータに対する変更を(ユーザプログラム14
5が行う変更以外は)一切受け入れない。 【0029】 詳しく述べると、ユーザプログラム145がUPIトランザクションを開始し
、ODM/OQLプロセス155がこれを受け取る(ステップ405)。これに
応答して、ODM/OQLプロセス155はRDBMS188を使ってデータベ
ーストランザクションを開始する(ステップ410)その後、ODM/OQLプ
ロセス155はユーザプログラム145からクエリーを受け取ってこれを処理す
る(ステップ420)。 【0030】 更に具体的に言えば、ユーザプログラム145はクエリー1を開始し、ODM
/OQLプロセス155がこれを受け取る。図3を参照して上述したように、ク
エリー1はサーバ部とクライアント部に分割され、サーバ部はRDBMS188
へ送られる。RDBMS188は、サーバ部を実行し、必要なデータ項目を全て
ロックし、データをODM/OQLプロセス155へ返す。ODM/OQLプロ
セス155は、このデータを1以上のオブジェクトに変換し、これをオブジェク
トキャッシュ150に格納する。クエリー1のクライアント部をオブジェクトキ
ャッシュ150と関連させて実行したら、ODM/OQLプロセス155は、そ
の結果得られたオブジェクトをオブジェクトキャッシュ150に格納する。その
後、図2を参照して上述したように、ODM/OQLプロセス155は、結果1
をユーザプログラム145に返す。 【0031】 UPIトランザクションのこの後の一時点で、ユーザプログラム145はクエ
リー2を発行する。上述のクエリー1で説明したように、クエリー2のサーバ部
はRDBMS188に渡され、ODM/OQLプロセス155がRDBMS18
8からデータを受け取り、結果2がユーザプログラム145に送られる。 【0032】 UPIトランザクションのこの後の時点で、ユーザプログラム145はデータ
更新のコマンドを発行する。ODM/OQLプロセス155はこのコマンドを受
け取ると、この更新コマンドをRDBMS188に渡し、データの更新を行う(
ステップ425)。この後、クエリー3は、上述したクエリー1及び2と同様に
実行される。図5に示す例ではこの後、ユーザプログラム145がUPIトラン
ザクションをコミットする。更新コマンドを受け取る際(ステップ430)、O
DM/OQLプロセス155は、RDBMS188への変更をコミットするが、
これにより先に行ったデータセットのロックが解除される(ステップ435)。 【0033】 図6は、本発明に係る反復読み取り可能楽観的並行制御モデルを示すフローチ
ャートである。説明の便宜上、図6を、図7に示す論理フローの情報に関連づけ
て説明する。 【0034】 UPIトランザクションが開始されると(ステップ605)、ODM/OQL
プロセス155は、ユーザプログラム145からクエリー1を受け取る(ステッ
プ610)。クエリー1のサーバ部はRDBMS188に渡され、ODM/OQ
Lプロセス155はRDBMS188からデータセットを受け取り、結果1がユ
ーザプログラム145に送られる(ステップ615)。クエリー1に関連するサ
ーバ部などの所与のサーバ部の実行中、RDBMS188はクエリーに関連する
データセットをロックできる。しかし、並行制御の悲観的モデルとは異なり、こ
のロックは、UPIトランザクションのこの後の処理を行う間ずっど保持される
わけではない。 【0035】 この後の一時点で、ユーザプログラム145は、クエリー2をODM/OQL
プロセス155に発行し(ステップ620)、これによりクエリー2をサーバ部
とクライアント部とに分割する(ステップ625)。この後、ODM/OQLプ
ロセス155はサーバ部をRDBMS188に送信し、これによりサーバ部を実
行し、データをODM/OQLプロセス155に返す(ステップ630)。OD
M/OQLプロセス155はこのデータを受け取り、受け取ったデータを1以上
のオブジェクトに変換する(ステップ635)。説明の便宜上、これらのオブジ
ェクトを「クエリー2RDBMSオブジェクト」と呼ぶ。 【0036】 次に、ODM/OQLプロセス155は、クエリー2RDBMSオブジェクト
に含まれるデータを、先にオブジェクトキャッシュ150に格納したデータ(例
えば、クエリー1の結果など)とを整合させる(ステップ640)。具体的には
、ODM/OQLプロセス155は、クエリー2RDBMSオブジェクトに含ま
れるデータが一部でも、先にオブジェクトキャッシュ150に格納されているか
どうかを判定する。データのこの様な部分を、「オーバーラッピングデータ」と
呼ぶ。オーバーラッピングデータがある場合、ODM/OQLプロセス155は
、クエリー2RDBMSオブジェクトに含まれるオーバーラッピングデータでは
なく、オブジェクトキャッシュ150に含まれるオーバーラッピングデータを使
う。 【0037】 一例として、RDBMS188は、従業員の氏名リストと給与や性別等の各従
業員に関するデータとを含むテーブルを有するとする。クエリー1は、全男性従
業員一人一人の情報を要求するとする。このクエリー1の結果は、オブジェクト
キャッシュ150に格納された複数の「従業員オブジェクト」となることが可能
で、各オブジェクトには、1人の男性従業員に対応する氏名、給与及び性別がそ
れぞれ含まれる。 【0038】 クエリー2は、給与が100、000ドルを超える従業員を要求するとする。
このクエリー2の結果は、複数の「従業員オブジェクト」となることが可能で、
各オブジェクトには、給与が100、000ドルを超える従業員の氏名、給与、
性別がそれぞれ含まれる。 【0039】 しかし仮に、クエリー1とクエリー2との間に、他のユーザが、ジョンという
名前の従業員の給与を150,000ドルから125,000ドルに変更したと
する。ODM/OQLプロセス155は、クエリー2RDBMS従業員オブジェ
クトと先にオブジェクトキャッシュ150に格納された従業員オブジェクトとを
比較する。これにより、ODM/OQLプロセス155は、クエリー2RDBM
S従業員オブジェクトが表すジョンの給与と、オブジェクトキャッシュ150に
既に格納されている、対応する従業員オブジェクトが表すジョンの給与とが異な
ると判定する。ユーザプログラム145から見た場合のデータを変更しないよう
にするため、ODM/OQLプロセス155は、ジョンに対応するクエリー2R
DBMS従業員オブジェクトをオブジェクトキャッシュ150に挿入しない。 【0040】 クエリー2RDBMSオブジェクトに含まれるデータを、先にオブジェクトキ
ャッシュ150に格納したデータと整合させたら、ODM/OQLプロセス15
5は、クライアント部のOQLクエリーをオブジェクトキャッシュ150に関連
させて実行する。その後、ODM/OQLプロセス155は、図2を参照して上
述したように、結果2をユーザプログラム145に送る(ステップ645)。 【0041】 UPIトランザクションの後の一時点で、ユーザプログラム145は、データ
を更新させるコマンドを発行する。このコマンドにに応答して、ODM/OQL
プロセス155はオブジェクトキャッシュ150を更新するが、RDBMS18
8へは更新コマンドを発行しない。この結果、ユーザプログラム145からの更
新コマンドはRDBMS188に影響を与えないことになる。この後、クエリー
3を上述したクエリー2と同様に処理する。その後、ユーザプログラム145は
、一連のUPIトランザクションをコミットする(ステップ650)。UPIト
ランザクションがコミットされると、これに応答して、ODM/OQLプロセス
155は、オブジェクトキャッシュ150からのデータに基づいてRDBMS1
88を更新し、この変更をコミットする(ステップ655)。RDBMS188
を更新する前に、ODM/OQLプロセス155は、RDBMS188に含まれ
るデータがUPIトランザクションの先の段階でRDBMS188から読み取っ
たデータと一致しているかを判定する。データが一致していなければ、斯かるU
PIトランザクションをアボートする。 【0042】 図8は、本発明に係る読み取りコミット楽観的並行制御モデルを示すフローチ
ャートである。説明の便宜上、図8を、図9に示す論理フローの情報と関連付け
て説明する。 【0043】 UPIトランザクションが開始されたら(ステップ805)、ODM/OQL
プロセス155は、ユーザプログラム145からクエリー1を受け取る(ステッ
プ810)。クエリー1のサーバ部はRDBMS188に渡され、ODM/OQ
Lプロセス155はRDBMS188からデータを受け取り、結果1がユーザプ
ログラム145に送られる(ステップ815)。図6を参照して上述したように
、RDBMS188は、クエリーに関連するデータ項目をロックする。 【0044】 ユーザプログラム145から更新コマンドを受け取るまで(ステップ815)
、図8に示すクエリー1の処理と同様に、他の全てのクエリーを引き続き処理す
る。結果として、更新コマンド前のクエリーは、RDBMS188に先にコミッ
トされたデータを受け取る。ユーザプログラム145から更新コマンドを受け取
ると、ODM/OQLプロセス155はオブジェクトキャッシュ150を更新す
るが、RDBMS188は更新しない。 【0045】 更新コマンドより後にクエリーを受け取った場合は、更新コマンド前のクエリ
ーとは処理が異なることがある。これは、更新コマンドはRDBMS188に渡
されないため、オブジェクトキャッシュ150に含まれるデータがRDBMS1
88から受け取ったデータと異なる可能性があるからである。この点を考慮して
、ODM/OQLプロセス155は、更新コマンド後のクエリー(例えば、図9
に示すクエリー2)を受け取ると、RDBMS188を使ってデータベーストラ
ンザクションを開始し(ステップ825)、オブジェクトキャッシュ150をフ
ラッシュして(オブジェクトキャッシュ150に含まれるデータを全て出力して
)RDBMS188を更新する(ステップ830)。その後、ODM/OQLプ
ロセス155は、クエリー2のサーバ部をRDBMS188に送信し、その結果
得られるデータを受け取る(ステップ835)。結果データを受け取ったら、O
DM/OQLプロセス155はデータベーストランザクションをアボートする(
ステップ840)。これにより、RDBMS188をロールバックして、オブジ
ェクトキャッシュ150をフラッシュすることにより更新したRDBMS188
を更新前の状態に戻すことができる。 【0046】 ODM/OQLプロセス155は、RDBMS188から受け取ったデータを
1以上のオブジェクトに変換し、これをオブジェクトキャッシュ150に格納す
る(ステップ845)。その後、ODM/OQLプロセス155は、クエリー2
のクライアント部をオブジェクトキャッシュ150に関連させて実行し、結果2
をユーザプログラム145へ送る(ステップ850)。その後の一時点において
、ODM/OQLプロセス155はユーザプログラム145からコミットコマン
ドを受け取る(ステップ855)。これに応答して、ODM/OQLプロセッサ
155は、RDBMS188を用いてデータベーストランザクションを開始し、
オブジェクトキャッシュ150に格納されたデータをフラッシュしてRDBMS
188を更新し、変更をデータベースにコミットする(ステップ860)。 【0047】 図8は、説明のために呈示したものであり、本発明から逸脱することなく変容
が可能なことは当業者には当然認識されるものである。更新実行後のクエリーを
処理するための他の方法及び装置を用いることも可能である。例えば、RDBM
S188からクエリー2のサーバ部のデータを受け取った後データトランザクシ
ョンをアボードする代わりに、ODM/OQLプロセス155は、ユーザプログ
ラム145からコミットコマンドを受け取るまで、データベーストランザクショ
ンを開放したままにしておいても良い。或いは、キャッシュをフラッシュせずに
データベースの更新をするアプローチも可能である。 【0048】 (D.結論) 以上、詳細に説明したように、本発明に係る方法及び装置によれば、RDBM
Sを有する分散型システムにおいて、ユーザがオブジェクト・ベース・クエリー
を実行することが可能になる。本発明の実施に関する上記の記述は、説明及び例
示のために呈示したものであり、上記の技術に照らして或いは発明の実施を通じ
て、修正及び変容可能である。 【0049】 例えば、本発明の詳細な説明では、ユーザープログラムと同一の装置上で実行
されるODMについて説明したが、必ずしもこれに限るものではない。更に、上
記の説明では、JavaTMプログラミング環境、OQL、SQL及びRDBM
Sを前提として説明したが、本発明は、他のプログラミング環境、オブジェクト
・ベース・クエリー言語、標準クエリー言語及び非オブジェクト・ベースRDB
MSをそれぞれ用いても実施できることは、当業者には当然認識されるものであ
る。更に、上記の説明では、SQL処理を含むサーバ部を前提に説明したが、サ
ーバ部はOQL処理も含んでも良い。更に、上記の説明はソフトフェアを用いた
実装に関するものであるが、本発明は、ハードウェアとソフトウェアの組み合わ
せにおいて、或いは、ハードウェアのみにおいて実装することも可能である。加
えて、本発明の実施態様例はメモリに格納されるとして説明したが、これらの実
施態様例は、ハードディスク、フロッピーディスク、CD−ROM等の二次記憶
装置、インターネットからの搬送波、又は、他の形態のRAMやROMなど、メ
モリ以外のコンピュータ可読媒体に格納できることは、当業者には当然認識され
るものである。従って、本発明の範囲は、特許請求の範囲及びその均等物によっ
て定義されるものである。 【図面の簡単な説明】 【図1】 本発明に係るシステムを実装するデータ処理システムを示すブロック図である
。 【図2】 本発明に係るオブジェクト・ベース・クエリーを実行するためのフローチャー
トを示す図である。 【図3】 オブジェクト・クエリー言語をサーバ部とクライアント部とに分割するのに用
いる、本発明に係る論理クエリーツリーを示すブロック図である。 【図4】 本発明に係る悲観的並行制御モデルを示すフローチャートである。 【図5】 本発明に係る悲観的並行制御モデルにおけるデータの論理フローを示すブロッ
ク図である。 【図6】 本発明に係る反復読み取り可能楽観的並行制御モデルを示すフローチャートで
ある。 【図7】 本発明に係る反復読み取り可能楽観的並行制御モデルにおけるデータの論理フ
ローを示す図である。 【図8】 本発明に係る読み取りコミット楽観的並行制御モデルを示すフローチャートで
ある。 【図9】 発明に係る読み取りコミット楽観的並行制御モデルにおけるデータの論理フロ
ーを示す図である。 【符号の説明】 100 システム 110 クライアント 115 ディスプレイ装置 120 プロセッサ 125 入出力(I/O)インターフェース 130 ネットワークインターフェース 135 バス 140 メモリ 145 ユーザプログラム 150 オブジェクトキャッシュ 155 ODM/OQLプロセス 160 仮想マシン 165 ネットワーク 170 サーバ 172 入出力(I/O)インターフェース 174 ネットワークインターフェース 176 プロセッサ 186 バス 188 リレーショナル・データベース・管理システム(RDBMS)
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CU,CZ,DE,D K,EE,ES,FI,GB,GD,GE,GH,GM ,HR,HU,ID,IL,IN,IS,JP,KE, KG,KP,KR,KZ,LC,LK,LR,LS,L T,LU,LV,MD,MG,MK,MN,MW,MX ,NO,NZ,PL,PT,RO,RU,SD,SE, SG,SI,SK,SL,TJ,TM,TR,TT,U A,UG,UZ,VN,YU,ZW (72)発明者 デミシェル リンダ ジー アメリカ合衆国、94303 カリフォルニア 州、パロ アルト、エムエス ユーシーユ ーピーオー2−201、サン アントニオ ロード 901 (72)発明者 カテル ロデリック ジー ジー アメリカ合衆国、94303 カリフォルニア 州、パロ アルト、エムエス ユーシーユ ーピーオー2−201、サン アントニオ ロード 901 Fターム(参考) 5B075 KK02 ND40 PP25 PP30 QT03 UU06 5B082 GA08 GC04

Claims (1)

  1. 【特許請求の範囲】 【請求項1】 非オブジェクトベースのデータベース管理システムを備える
    システムでオブジェクトベース・クエリーを実行するための方法であって、 ユーザ・プログラムからオブジェクトベース・クエリーを受取るステップと、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の論理
    ツリーを生成するために、前記オブジェクトベース・クエリーを解析するステッ
    プと、 前記データベース管理システムによって実行されることが可能な処理だけを含
    むサブツリーを決定するステップと、 前記決定されたサブツリーに関連付けられた処理を、サーバ部に入れるステッ
    プと、 前記サーバ部に入れられなかった処理を、クライアント部に入れるステップと
    、 前記サーバ部をデータベース管理システムへ転送するステップと を有する。 【請求項2】 請求項1の方法であって、更に、 データベース管理システムから前記サーバ部に対応するデータセットを得るス
    テップと、 前記データセットから少なくとも1つのオブジェクトを作成するステップと、 メモリに前記オブジェクトを格納するステップと、 を有する。 【請求項3】 請求項2の方法であって、更に、少なくとも1つの結果オブ
    ジェクトを生成するために前記メモリと関連して前記クライアント部を実行する
    ステップを有する。 【請求項4】 請求項3の方法であって、更に、メモリに前記結果オブジェ
    クトを格納するステップを有する。 【請求項5】 請求項3の方法であって、更に、前記結果オブジェクトへの
    参照を提供するステップを有する。 【請求項6】 請求項4の方法であって、更に、前記少なくとも1つの結果
    オブジェクトをユーザ・プログラムへ転送するステップを有する。 【請求項7】 請求項1の方法であって、更に、ユーザ・トランザクション
    の継続中には、前記データベース管理システム内のデータセットをロックするス
    テップを有する。 【請求項8】 請求項7の方法であって、更に、前記サーバ部に対応するデ
    ータセットを前記データベース管理システムから得るステップを有する。 【請求項9】 請求項7の方法であって、更に、 ユーザ・プログラムから第2のオブジェクトベース・クエリーを受取るステッ
    プと、 前記第2のオブジェクトベース・クエリーを、第2のサーバ部と第2のクライ
    アント部とに分割するステップと、 前記第2のサーバ部を前記データベース管理システムへ転送するステップと、 前記データベース管理システムから第2のサーバ部に対応する第2のデータセ
    ットを得るステップと、 を有する。 【請求項10】 請求項9の方法であって、更に、前記データベース管理シ
    ステム内のデータセットをロック解除するステップを有する。 【請求項11】 請求項2の方法であって、更に、 前記作成されたオブジェクトの前記データセットと他のクエリーに関連する第
    2のデータセットとの間で重複するデータが存在するか否かを判定するステップ
    と、 重複するデータがある場合には、前記作成されたオブジェクトの前記重複する
    部分を用いるステップと、 を有する。 【請求項12】 請求項2の方法であって、更に、 前記ユーザ・プログラムから第2のオブジェクトベース・クエリーを受取るス
    テップと、 前記第2のオブジェクトベース・クエリーを、第2のサーバ部と第2のクライ
    アント部とに分割するステップと、 前記第2のサーバ部をデータベース管理システムへ転送するステップと、 前記データベース管理システムから前記第2のサーバ部に対応する第2のデー
    タセットを得るステップと、 前記第2のデータセットと前記メモリに格納されたデータとの間で重複するデ
    ータが存在するか否かを判定するステップと、 重複するデータが存在する場合には、前記メモリの前記重複する部分を用いる
    ステップと、 を有する。 【請求項13】 請求項2の方法であって、更に、 前記メモリを更新する命令をユーザプログラムから受取るステップと、 前記命令に応じて、前記メモリを更新するステップと、 前記ユーザプログラムから第2のオブジェクトベース・クエリーを受取るステ
    ップと、 前記第2のオブジェクトベース・クエリーを第2のサーバ部と第2のクライア
    ント部に分割するステップと、 前記メモリの内容に基づいて前記データベース管理システムを更新するステッ
    プと、 前記第2のサーバ部をデータベース管理システムへ転送するステップと、 前記データベース管理システムから前記第2のサーバ部に対応する第2のデー
    タセットを得るステップと、 前記データベース管理システムの更新をアボートするステップと、 を有する。 【請求項14】 請求項1の方法であって、前記受取るステップは、ユーザ
    プログラムからOQLクエリーを受取るステップを有する。 【請求項15】 請求項1の方法であって、前記分割するステップは、前記
    データベース管理システムによってサポートされる処理に基づいて前記サーバ部
    を決定するサブステップを有する。 【請求項16】 請求項1の方法であって、前記分割するステップは、 前記データベース管理システムによってサポートされる処理を前記サーバ部に
    入れるサブステップと、 前記データベース管理システムによってサポートされない処理を前記クライア
    ント部に入れるサブステップと、 を有する。 【請求項17】 請求項1の方法であって、前記分割するステップは、 SQLによってサポートされる処理を前記サーバ部に入れるサブステップと、 SQLによってサポートされない処理を前記クライアント部に入れるサブステ
    ップと、 を有する。 【請求項19】 非オブジェクトベースのデータベース管理システムを備え
    るシステムでオブジェクトベース・クエリーを実行するための方法であって、 ユーザプログラムからオブジェクトベース・クエリーを受取るステップと、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の論理
    ツリーを生成するために、前記オブジェクトベース・クエリーを解析するステッ
    プと、 SQL処理だけを含むサブツリーを決定するステップと、 前記決定されたサブツリーに関連付けられたSQL処理を、サーバ部に入れる
    ステップと、 前記サーバ部に入れられなかった処理を、クライアント部に入れるステップと
    、 前記サーバ部を前記データベース管理システムへ転送するステップと を有する。 【請求項20】 請求項2の方法であって、前記格納するステップは、少な
    くとも1つのオブジェクトを、前記データベース管理システムとは別のオブジェ
    クトキャッシュに格納するステップを有する。 【請求項21】 請求項2の方法であって、前記作成するステップは、 少なくとも1つのオブジェクトを生成するステップと、 前記第1のデータセットを前記少なくとも1つのオブジェクトの少なくとも1
    つのフィールドに挿入するステップと を有する。 【請求項22】 非オブジェクトベースのデータベース管理システムを備え
    るシステムでオブジェクトベース・クエリーを実行するための装置であって、 前記装置は、 プログラム命令を記憶する少なくとも1つのメモリと、 少なくとも1つのプロセッサ とを有し、 前記プロセッサは、前記プログラム命令を使用して、 ユーザ・プログラムからオブジェクトベース・クエリーを受取るステップ
    と、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の
    論理ツリーを生成するために、前記オブジェクトベース・クエリーを解析するス
    テップと、 前記データベース管理システムによって実行されることが可能な処理だけ
    を含むサブツリーを決定するステップと、 前記決定されたサブツリーに関連付けられた処理を、サーバ部に入れるス
    テップと、 前記サーバ部に入れられなかった処理を、クライアント部に入れるステッ
    プと、 前記サーバ部をデータベース管理システムへ転送するステップと を実行するように構成される。 【請求項23】 請求項22の装置であって、前記プロセッサは、更に、 データベース管理システムから前記サーバ部に対応するデータセットを得るス
    テップと、 前記データセットから少なくとも1つのオブジェクトを作成するステップと、 メモリに前記オブジェクトを格納するステップと、 を実行するように構成される。 【請求項24】 請求項23の装置であって、前記プロセッサは、更に、少
    なくとも1つの結果オブジェクトを生成するために前記メモリと関連して前記ク
    ライアント部を実行するステップをを実行するように構成される。 【請求項25】 請求項24の装置であって、前記プロセッサは、更に、メ
    モリに前記結果オブジェクトを格納するステップを実行するように構成される。 【請求項26】 請求項24の装置であって、前記プロセッサは、更に、前
    記結果オブジェクトへの参照を提供するステップを実行するように構成される。 【請求項27】 請求項25の装置であって、前記プロセッサは、更に、前
    記少なくとも1つの結果オブジェクトをユーザ・プログラムへ転送するステップ
    を実行するように構成される。 【請求項28】 請求項22の装置であって、前記プロセッサは、更に、ユ
    ーザ・トランザクションの継続中には、前記データベース管理システム内のデー
    タセットをロックするステップを実行するように構成される。 【請求項29】 請求項28の装置であって、前記プロセッサは、更に、前
    記サーバ部に対応するデータセットを前記データベース管理システムから得るス
    テップを実行するように構成される。 【請求項30】 請求項28の装置であって、前記プロセッサは、更に、 ユーザ・プログラムから第2のオブジェクトベース・クエリーを受取るステッ
    プと、 前記第2のオブジェクトベース・クエリーを、第2のサーバ部と第2のクライ
    アント部とに分割するステップと、 前記第2のサーバ部を前記データベース管理システムへ転送するステップと、 前記データベース管理システムから第2のサーバ部に対応する第2のデータセ
    ットを得るステップと、 を有する。 【請求項31】 請求項30の装置であって、前記プロセッサは、更に、前
    記データベース管理システム内のデータセットをロック解除するステップを実行
    するように構成される。 【請求項32】 請求項23の装置であって、前記プロセッサは、更に、 前記作成されたオブジェクトの前記データセットと他のクエリーに関連する第
    2のデータセットとの間で重複するデータが存在するか否かを判定するステップ
    と、 重複するデータがある場合には、前記作成されたオブジェクトの前記重複する
    部分を用いるステップと、 を実行するように構成される。 【請求項33】 請求項23の装置であって、前記プロセッサは、更に、 前記ユーザ・プログラムから第2のオブジェクトベース・クエリーを受取るス
    テップと、 前記第2のオブジェクトベース・クエリーを、第2のサーバ部と第2のクライ
    アント部とに分割するステップと、 前記第2のサーバ部をデータベース管理システムへ転送するステップと、 前記データベース管理システムから前記第2のサーバ部に対応する第2のデー
    タセットを得るステップと、 前記第2のデータセットと前記メモリに格納されたデータとの間で重複するデ
    ータが存在するか否かを判定するステップと、 重複するデータが存在する場合には、前記メモリの前記重複する部分を用いる
    ステップと、 を実行するように構成される。 【請求項34】 請求項23の装置であって、前記プロセッサは、更に、 前記メモリを更新する命令をユーザプログラムから受取るステップと、 前記命令に応じて、前記メモリを更新するステップと、 前記ユーザプログラムから第2のオブジェクトベース・クエリーを受取るステ
    ップと、 前記第2のオブジェクトベース・クエリーを第2のサーバ部と第2のクライア
    ント部に分割するステップと、 前記メモリの内容に基づいて前記データベース管理システムを更新するステッ
    プと、 前記第2のサーバ部をデータベース管理システムへ転送するステップと、 前記データベース管理システムから前記第2のサーバ部に対応する第2のデー
    タセットを得るステップと、 前記データベース管理システムの更新をアボートするステップと、 を実行するように構成される。 【請求項35】 請求項22の装置であって、前記受取るステップは、ユー
    ザプログラムからOQLクエリーを受取るステップを有する。 【請求項36】 請求項22の装置であって、前記分割するステップは、前
    記データベース管理システムによってサポートされる処理に基づいて前記サーバ
    部を決定するステップを有する。 【請求項37】 請求項22の装置であって、前記分割するステップは、 前記データベース管理システムによってサポートされる処理を前記サーバ部に
    入れるサブステップと、 前記データベース管理システムによってサポートされない処理を前記クライア
    ント部に入れるサブステップと、 を有する。 【請求項38】 請求項22の装置であって、前記分割するステップは、 SQLによってサポートされる処理を前記サーバ部に入れるサブステップと、 SQLによってサポートされない処理を前記クライアント部に入れるサブステ
    ップと、 を有する。 【請求項40】 非オブジェクトベースのデータベース管理システムを備え
    るシステムでオブジェクトベース・クエリーを実行するための装置であって、 前記装置は、 プログラム命令を記憶する少なくとも1つのメモリと、 少なくとも1つのプロセッサ とを有し、 前記プロセッサは、前記プログラム命令を使用して、 ユーザ・プログラムからオブジェクトベース・クエリーを受取るステップ
    と、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の
    論理ツリーを生成するために、前記オブジェクトベース・クエリーを解析するス
    テップと、 SQL処理だけを含むサブツリーを決定するステップと、 前記決定されたサブツリーに関連付けられたSQL処理を、サーバ部に入
    れるステップと、 前記サーバ部に入れられなかった処理を、クライアント部に入れるステッ
    プと、 前記サーバ部を前記データベース管理システムへ転送するステップと を実行するように構成される。 【請求項41】 請求項23の装置であって、前記格納するステップは、少
    なくとも1つのオブジェクトを、前記データベース管理システムとは別のオブジ
    ェクトキャッシュに格納するステップを有する。 【請求項42】 請求項23の装置であって、前記作成するステップは、 少なくとも1つのオブジェクトを生成するステップと、 前記第1のデータセットを前記少なくとも1つのオブジェクトの少なくとも1
    つのフィールドに挿入するステップと を有する。 【請求項43】 非オブジェクトベースのデータベース管理システムを備え
    るシステムでオブジェクトベース・クエリーを実行するための命令を含有するコ
    ンピュータ可読媒体であって、 ユーザ・プログラムからオブジェクトベース・クエリーを受取るステップと、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の論理
    ツリーを生成するために、前記オブジェクトベース・クエリーを解析するステッ
    プと、 前記データベース管理システムによって実行されることが可能な処理だけを含
    むサブツリーを決定するステップと、 前記決定されたサブツリーに関連付けられた処理を、サーバ部に入れるステッ
    プと、 前記サーバ部に入れられなかった処理を、クライアント部に入れるステップと
    、 前記サーバ部をデータベース管理システムへ転送するステップと を有する。 【請求項44】 請求項43のコンピュータ可読媒体であって、更に、 データベース管理システムから前記サーバ部に対応するデータセットを得るス
    テップと、 前記データセットから少なくとも1つのオブジェクトを作成するステップと、 メモリに前記オブジェクトを格納するステップと、 を有する。 【請求項45】 請求項44のコンピュータ可読媒体であって、更に、少な
    くとも1つの結果オブジェクトを生成するために前記メモリと関連して前記クラ
    イアント部を実行するステップを有する。 【請求項46】 請求項45のコンピュータ可読媒体であって、更に、メモ
    リに前記結果オブジェクトを格納するステップを有する。 【請求項47】 請求項45のコンピュータ可読媒体であって、更に、前記
    結果オブジェクトへの参照を提供するステップを有する。 【請求項48】 請求項46のコンピュータ可読媒体であって、更に、前記
    少なくとも1つの結果オブジェクトをユーザ・プログラムへ転送するステップを
    有する。 【請求項49】 請求項43のコンピュータ可読媒体であって、更に、ユー
    ザ・トランザクションの継続中には、前記データベース管理システム内のデータ
    セットをロックするステップを有する。 【請求項50】 請求項49のコンピュータ可読媒体であって、更に、前記
    サーバ部に対応するデータセットを前記データベース管理システムから得るステ
    ップを有する。 【請求項51】 請求項49のコンピュータ可読媒体であって、更に、 ユーザ・プログラムから第2のオブジェクトベース・クエリーを受取るステッ
    プと、 前記第2のオブジェクトベース・クエリーを、第2のサーバ部と第2のクライ
    アント部とに分割するステップと、 前記第2のサーバ部を前記データベース管理システムへ転送するステップと、 前記データベース管理システムから第2のサーバ部に対応する第2のデータセ
    ットを得るステップと、 を有する。 【請求項52】 請求項51のコンピュータ可読媒体であって、更に、前記
    データベース管理システム内のデータセットをロック解除するステップを有する
    。 【請求項53】 請求項44のコンピュータ可読媒体であって、更に、 前記作成されたオブジェクトの前記データセットと他のクエリーに関連する第
    2のデータセットとの間で重複するデータが存在するか否かを判定するステップ
    と、 重複するデータがある場合には、前記作成されたオブジェクトの前記重複する
    部分を用いるステップと、 を有する。 【請求項54】 請求項44のコンピュータ可読媒体であって、更に、 前記ユーザ・プログラムから第2のオブジェクトベース・クエリーを受取るス
    テップと、 前記第2のオブジェクトベース・クエリーを、第2のサーバ部と第2のクライ
    アント部とに分割するステップと、 前記第2のサーバ部をデータベース管理システムへ転送するステップと、 前記データベース管理システムから前記第2のサーバ部に対応する第2のデー
    タセットを得るステップと、 前記第2のデータセットと前記メモリに格納されたデータとの間で重複するデ
    ータが存在するか否かを判定するステップと、 重複するデータが存在する場合には、前記メモリの前記重複する部分を用いる
    ステップと、 を有する。 【請求項55】 請求項44のコンピュータ可読媒体であって、更に、 前記メモリを更新する命令をユーザプログラムから受取るステップと、 前記命令に応じて、前記メモリを更新するステップと、 前記ユーザプログラムから第2のオブジェクトベース・クエリーを受取るステ
    ップと、 前記第2のオブジェクトベース・クエリーを第2のサーバ部と第2のクライア
    ント部に分割するステップと、 前記メモリの内容に基づいて前記データベース管理システムを更新するステッ
    プと、 前記第2のサーバ部をデータベース管理システムへ転送するステップと、 前記データベース管理システムから前記第2のサーバ部に対応する第2のデー
    タセットを得るステップと、 前記データベース管理システムの更新をアボートするステップと、 を有する。 【請求項56】 請求項43のコンピュータ可読媒体であって、前記受取る
    ステップは、ユーザプログラムからOQLクエリーを受取るステップを有する。 【請求項57】 請求項43のコンピュータ可読媒体であって、前記分割す
    るステップは、前記データベース管理システムによってサポートされる処理に基
    づいて前記サーバ部を決定するサブステップを有する。 【請求項58】 請求項43のコンピュータ可読媒体であって、前記分割す
    るステップは、 前記データベース管理システムによってサポートされる処理を前記サーバ部に
    入れるサブステップと、 前記データベース管理システムによってサポートされない処理を前記クライア
    ント部に入れるサブステップと、 を有する。 【請求項59】 請求項43のコンピュータ可読媒体であって、前記分割す
    るステップは、 SQLによってサポートされる処理を前記サーバ部に入れるサブステップと、 SQLによってサポートされない処理を前記クライアント部に入れるサブステ
    ップと、 を有する。 【請求項61】 非オブジェクトベースのデータベース管理システムを備え
    るシステムでオブジェクトベース・クエリーを実行するための命令を含有するコ
    ンピュータ可読媒体であって、 ユーザプログラムからオブジェクトベース・クエリーを受取るステップと、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の論理
    ツリーを生成するために、前記オブジェクトベース・クエリーを解析するステッ
    プと、 SQL処理だけを含むサブツリーを決定するステップと、 前記決定されたサブツリーに関連付けられたSQL処理を、サーバ部に入れる
    ステップと、 前記サーバ部に入れられなかった処理を、クライアント部に入れるステップと
    、 前記サーバ部を前記データベース管理システムへ転送するステップと を有する。 【請求項62】 請求項44のコンピュータ可読媒体であって、前記格納す
    るステップは、少なくとも1つのオブジェクトを、前記データベース管理システ
    ムとは別のオブジェクトキャッシュに格納するステップを有する。 【請求項63】 請求項44のコンピュータ可読媒体であって、前記作成す
    るステップは、 少なくとも1つのオブジェクトを生成するステップと、 前記第1のデータセットを前記少なくとも1つのオブジェクトの少なくとも1
    つのフィールドに挿入するステップと を有する。 【請求項64】 非オブジェクトベースのデータベース管理システムを備え
    るシステムでオブジェクトベース・クエリーを実行するための装置であって、 ユーザ・プログラムからオブジェクトベース・クエリーを受取る手段と、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の論理
    ツリーを生成するために、前記オブジェクトベース・クエリーを解析する手段と
    、 前記データベース管理システムによって実行されることが可能な処理だけを含
    むサブツリーを決定する手段と、 前記決定されたサブツリーに関連付けられた処理を、サーバ部に入れる手段と
    、 前記サーバ部に入れられなかった処理を、クライアント部に入れる手段と、 前記サーバ部をデータベース管理システムへ転送する手段と を有する。 【請求項65】 請求項1の方法であって、前記受取るステップは、ユーザ
    プログラムからOQLクエリーを受取るステップを含む。 【請求項66】 請求項22の装置であって、前記受取るステップは、ユー
    ザプログラムからOQLクエリーを受取るステップを含む。 【請求項67】 請求項43のコンピュータ可読媒体であって、前記受取る
    ステップは、ユーザプログラムからOQLクエリーを受取るステップを含む。 【請求項68】 少なくとも1つの非オブジェクトベース・データベース管
    理システムを備えるシステムでオブジェクトベース・クエリーを実行するための
    方法であって、 ユーザ・プログラムからオブジェクトベース・クエリーを受取るステップと、 前記オブジェクトベース・クエリーを遂行するために必要とされる処理の論理
    ツリーを生成するために、前記オブジェクトベース・クエリーを解析するステッ
    プと、 前記データベース管理システムによって実行されることが可能な処理だけを含
    むサブツリーを決定するステップと、 前記決定されたサブツリーに関連付けられた処理の第1のセットを、第1のサ
    ーバ部に入れるステップと、 前記決定されたサブツリーに関連付けられた処理の第2のセットを、第2のサ
    ーバ部に入れるステップと、 前記第1のサーバ部又は前記第2のサーバ部のどちらにも入れられなかった処
    理を、クライアント部に入れるステップと、 前記第1のサーバ部を第1のデータベース管理システムに転送するステップと
    、 前記第2のサーバ部を第2のデータベース管理システムへ転送するステップと
    を有する。
JP2000525839A 1997-12-22 1998-12-21 オブジェクト・リレーショナル・マッピングにおけるクエリー実行をクライアントとサーバーとで効率的に分割する方法及び装置 Pending JP2001527244A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US6841597P 1997-12-22 1997-12-22
US60/068,415 1997-12-22
US10595598A 1998-06-29 1998-06-29
US09/105,955 1998-06-29
PCT/US1998/027244 WO1999033003A1 (en) 1997-12-22 1998-12-21 Methods and apparatus for efficiently splitting query execution across client and server in an object-relational mapping

Publications (1)

Publication Number Publication Date
JP2001527244A true JP2001527244A (ja) 2001-12-25

Family

ID=26748949

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000525839A Pending JP2001527244A (ja) 1997-12-22 1998-12-21 オブジェクト・リレーショナル・マッピングにおけるクエリー実行をクライアントとサーバーとで効率的に分割する方法及び装置

Country Status (5)

Country Link
US (1) US6243710B1 (ja)
EP (1) EP1040434A1 (ja)
JP (1) JP2001527244A (ja)
AU (1) AU1939099A (ja)
WO (1) WO1999033003A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6285997B1 (en) * 1998-11-16 2001-09-04 International Business Machines Corporation Query optimization with deferred update and autonomous sources
US6640238B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US7039860B1 (en) 1999-10-01 2006-05-02 Netspinner Solutions As Creating web pages category list prior to the list being served to a browser
US6678672B1 (en) * 2000-05-31 2004-01-13 Ncr Corporation Efficient exception handling during access plan execution in an on-line analytic processing system
US6735594B1 (en) * 2000-06-23 2004-05-11 International Business Machines Corporation Transparent parameter marker support for a relational database over a network
US7085773B2 (en) 2001-01-05 2006-08-01 Symyx Technologies, Inc. Laboratory database system and methods for combinatorial materials research
US6658429B2 (en) 2001-01-05 2003-12-02 Symyx Technologies, Inc. Laboratory database system and methods for combinatorial materials research
US7213034B2 (en) 2003-01-24 2007-05-01 Symyx Technologies, Inc. User-configurable generic experiment class for combinatorial materials research
US6919409B2 (en) 2003-06-26 2005-07-19 Symyx Technologies, Inc. Removal of the thiocarbonylthio or thiophosphorylthio end group of polymers and further functionalization thereof
US7383246B2 (en) * 2003-10-31 2008-06-03 International Business Machines Corporation System, method, and computer program product for progressive query processing
WO2005091702A2 (es) * 2004-03-23 2005-10-06 Angel Palacios Sistema, procedimiento y programa para la gestión de expresiones de cálculo mediante estructuras gráficas arbóreas
US7660818B2 (en) * 2004-11-30 2010-02-09 International Business Machines Corporation Method and apparatus for querying program design models
US20070027905A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Intelligent SQL generation for persistent object retrieval
US7689576B2 (en) * 2006-03-10 2010-03-30 International Business Machines Corporation Dilation of sub-flow operators in a data flow
US9727604B2 (en) * 2006-03-10 2017-08-08 International Business Machines Corporation Generating code for an integrated data system
US7689582B2 (en) * 2006-03-10 2010-03-30 International Business Machines Corporation Data flow system and method for heterogeneous data integration environments
US9361137B2 (en) 2006-03-10 2016-06-07 International Business Machines Corporation Managing application parameters based on parameter types
US20080104529A1 (en) * 2006-10-31 2008-05-01 International Business Machines Corporation Draggable legends for sql driven graphs
US8160999B2 (en) * 2006-12-13 2012-04-17 International Business Machines Corporation Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation
US8219518B2 (en) 2007-01-09 2012-07-10 International Business Machines Corporation Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (ETL) process
US7702695B2 (en) * 2007-06-27 2010-04-20 Microsoft Corporation Object relational map verification system
US20100241893A1 (en) * 2009-03-18 2010-09-23 Eric Friedman Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment
US9390131B1 (en) * 2012-02-05 2016-07-12 Google Inc. Executing queries subject to different consistency requirements
US9275103B2 (en) 2013-02-28 2016-03-01 International Business Machines Corporation Optimization of JOIN queries for related data
US9208200B1 (en) * 2014-11-01 2015-12-08 Veeva Systems Inc. System and method for reporting multiple objects in enterprise content management
US10601784B2 (en) 2017-11-15 2020-03-24 International Business Machines Corporation Obscuring internet searches from external web service providers
US10657317B2 (en) * 2018-02-27 2020-05-19 Elasticsearch B.V. Data visualization using client-server independent expressions
US11586695B2 (en) 2018-02-27 2023-02-21 Elasticsearch B.V. Iterating between a graphical user interface and plain-text code for data visualization
US10997196B2 (en) 2018-10-30 2021-05-04 Elasticsearch B.V. Systems and methods for reducing data storage overhead
US11853359B1 (en) * 2019-01-31 2023-12-26 Veeva Systems Inc. System and method for reporting multiple objects in enterprise content management
JP7157716B2 (ja) * 2019-08-09 2022-10-20 株式会社日立製作所 データベースサーバ装置、サーバシステム及びリクエスト処理方法
US11301473B1 (en) * 2021-06-18 2022-04-12 Sas Institute Inc. Dataset overlap query system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452468A (en) * 1991-07-31 1995-09-19 Peterson; Richard E. Computer system with parallel processing for information organization
WO1995004960A2 (en) * 1993-08-02 1995-02-16 Persistence Software, Inc. Method and apparatus for managing relational data in an object cache
US5495604A (en) * 1993-08-25 1996-02-27 Asymetrix Corporation Method and apparatus for the modeling and query of database structures using natural language-like constructs
CA2172514C (en) * 1993-09-27 2000-02-22 Gary Hallmark Method and apparatus for parallel processing in a database system
US5495606A (en) * 1993-11-04 1996-02-27 International Business Machines Corporation System for parallel processing of complex read-only database queries using master and slave central processor complexes
US5873076A (en) * 1995-09-15 1999-02-16 Infonautics Corporation Architecture for processing search queries, retrieving documents identified thereby, and method for using same
US5864842A (en) * 1995-10-23 1999-01-26 Ncr Corporation Optimization of SQL queries using hash star join operations
US5870735A (en) * 1996-05-01 1999-02-09 International Business Machines Corporation Method and system for generating a decision-tree classifier in parallel in a multi-processor system
US5799311A (en) * 1996-05-08 1998-08-25 International Business Machines Corporation Method and system for generating a decision-tree classifier independent of system memory size
US5857197A (en) 1997-03-20 1999-01-05 Thought Inc. System and method for accessing data stores as objects
US5905982A (en) * 1997-04-04 1999-05-18 International Business Machines Corporation Handling null values in SQL queries over object-oriented data

Also Published As

Publication number Publication date
WO1999033003B1 (en) 1999-09-16
EP1040434A1 (en) 2000-10-04
US6243710B1 (en) 2001-06-05
WO1999033003A1 (en) 1999-07-01
AU1939099A (en) 1999-07-12

Similar Documents

Publication Publication Date Title
JP2001527244A (ja) オブジェクト・リレーショナル・マッピングにおけるクエリー実行をクライアントとサーバーとで効率的に分割する方法及び装置
US6240413B1 (en) Fine-grained consistency mechanism for optimistic concurrency control using lock groups
EP1042721B1 (en) Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US4881166A (en) Method for consistent multidatabase transaction processing
Williams et al. R*: An overview of the architecture
US6681225B1 (en) Method, system and program products for concurrent write access to a global data repository
US5542078A (en) Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities
US5615362A (en) Method and apparatus for managing relational data in an object cache
US6598058B2 (en) Method and apparatus for cross-node sharing of cached dynamic SQL in a multiple relational database management system environment
JP3848085B2 (ja) トランザクションデータの高速記憶常駐処理方法および処理システム
US7464073B2 (en) Application of queries against incomplete schemas
EP0833259A2 (en) Method and apparatus for coupling object state and behavior in a database management system
Agrawal et al. Distributed optimistic concurrency control with reduced rollback
JP2001527243A (ja) オブジェクト指向アプリケーション内のクラスに対応するリレーショナル・データベース内のインデックスを生成するための方法及び装置
JP2001051879A (ja) 非関係データベースへの改良されたアクセスのための方法およびシステム
JPH0644128A (ja) オブジェクト指向プログラミングを支援するデータベース管理システム及び方法
JPH09244896A (ja) 永続性オブジェクトのオブジェクトベース構築方法、コンピュータ読み取り可能媒体、および情報操作システム
US7827135B2 (en) Method and apparatus for relaxed transactional isolation in a client-server caching architecture
JP2001527241A (ja) オブジェクト指向データ依存性に対応するデータベース内の記憶済み手続をロードするための方法及び装置
US20240126729A1 (en) Natively supporting json duality view in a database management system
CA2282999C (en) Method and apparatus for cross-node sharing of instructions in a multiple node relational database management system environment
Litwin et al. An overview of a scalable distributed database system SD-SQL server
Vassilakis et al. Transaction support in a temporal DBMS
Cobbs Persistence programming
Ozhan et al. Making Oracle7, Sybase and Adabas D Interoperable through CORBA: MIND Project