JPH11120067A - データの部分情報を先行して管理するデータベース処理方法 - Google Patents
データの部分情報を先行して管理するデータベース処理方法Info
- Publication number
- JPH11120067A JPH11120067A JP9284906A JP28490697A JPH11120067A JP H11120067 A JPH11120067 A JP H11120067A JP 9284906 A JP9284906 A JP 9284906A JP 28490697 A JP28490697 A JP 28490697A JP H11120067 A JPH11120067 A JP H11120067A
- Authority
- JP
- Japan
- Prior art keywords
- instance
- database
- stored
- information
- proxy
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】データベースに格納された複雑な構造をもつデ
ータやメモリ上に展開することが現実的でない長大デー
タの操作や問い合わせ処理を,データの構造に依存しな
い一貫したインタフェースを保ちながら高速化すること
を課題とする。 【解決手段】インスタンスのもつ情報のうち、ユーザや
データベース処理に必要な部分情報または前述の情報を
制御するための制御情報と、部分情報または制御情報を
管理する情報と、前述のインスタンスを取得するのに必
要な情報とからなる代理インスタンスを実インスタンス
の代わりにハンドルから指すことで、ハンドルを用いた
インスタンス操作の一部分を代理インスタンスで処理
し、実インスタンス全体の転送やメモリへの展開を抑制
する。
ータやメモリ上に展開することが現実的でない長大デー
タの操作や問い合わせ処理を,データの構造に依存しな
い一貫したインタフェースを保ちながら高速化すること
を課題とする。 【解決手段】インスタンスのもつ情報のうち、ユーザや
データベース処理に必要な部分情報または前述の情報を
制御するための制御情報と、部分情報または制御情報を
管理する情報と、前述のインスタンスを取得するのに必
要な情報とからなる代理インスタンスを実インスタンス
の代わりにハンドルから指すことで、ハンドルを用いた
インスタンス操作の一部分を代理インスタンスで処理
し、実インスタンス全体の転送やメモリへの展開を抑制
する。
Description
【0001】
【発明の属する技術分野】本発明は、データベース処理
装置に関する。特にリレーショナルデータベース管理シ
ステムをオブジェクト指向拡張する場合において、複雑
な構造をもつデータや可変長のデータや長大なデータを
管理する方法に関する。
装置に関する。特にリレーショナルデータベース管理シ
ステムをオブジェクト指向拡張する場合において、複雑
な構造をもつデータや可変長のデータや長大なデータを
管理する方法に関する。
【0002】
【従来の技術】オブジェクト指向プログラミングの中心
となる考え方にデータ抽象がある。データ抽象は、デー
タの物理的な構造をデータのユーザから隠蔽し、データ
モデルを論理的なインタフェース仕様であるオブジェク
トの「振る舞い」によって表現する。このデータ抽象の実
装技術の一つに「ハンドル」がある。ハンドルは、固定長
のオブジェクトを指すポインタである。ユーザはハンド
ルを用いることにより、ハンドルが指すオブジェクトの
サイズや物理構造などを意識せずにすむ。例えば、「オ
ブジェクトAがオブジェクトBを含む」というモデルを
実装する場合、オブジェクトBの物理的な構造を知らな
くとも、オブジェクトBを指すハンドルをもつことによ
って、オブジェクトAを構築することができる。
となる考え方にデータ抽象がある。データ抽象は、デー
タの物理的な構造をデータのユーザから隠蔽し、データ
モデルを論理的なインタフェース仕様であるオブジェク
トの「振る舞い」によって表現する。このデータ抽象の実
装技術の一つに「ハンドル」がある。ハンドルは、固定長
のオブジェクトを指すポインタである。ユーザはハンド
ルを用いることにより、ハンドルが指すオブジェクトの
サイズや物理構造などを意識せずにすむ。例えば、「オ
ブジェクトAがオブジェクトBを含む」というモデルを
実装する場合、オブジェクトBの物理的な構造を知らな
くとも、オブジェクトBを指すハンドルをもつことによ
って、オブジェクトAを構築することができる。
【0003】また、ハンドルは無用のコピーを削減す
る。オブジェクトの代入操作では、オブジェクトのコピ
ーを行うのではなく、オブジェクトを指すハンドルをコ
ピーし、複数のハンドルでオブジェクトを共有する。あ
るハンドル経由でオブジェクトを更新するときに初めて
オブジェクトのコピーを行う(コピーオンライト)。こ
のようにハンドルを用いることで、コピーに伴う負荷の
低減やメモリ資源の節約を図ることができる。ハンドル
に対してオブジェクトが大きい場合や可変長の場合に、
この効果は顕著に現れる。
る。オブジェクトの代入操作では、オブジェクトのコピ
ーを行うのではなく、オブジェクトを指すハンドルをコ
ピーし、複数のハンドルでオブジェクトを共有する。あ
るハンドル経由でオブジェクトを更新するときに初めて
オブジェクトのコピーを行う(コピーオンライト)。こ
のようにハンドルを用いることで、コピーに伴う負荷の
低減やメモリ資源の節約を図ることができる。ハンドル
に対してオブジェクトが大きい場合や可変長の場合に、
この効果は顕著に現れる。
【0004】オブジェクト指向プログラミング言語C+
+でのハンドルの例題は、R.B.Murray著(岩谷訳)「現
実的なC++プログラミング」(ソフトバンク 1994)
に記述されている。
+でのハンドルの例題は、R.B.Murray著(岩谷訳)「現
実的なC++プログラミング」(ソフトバンク 1994)
に記述されている。
【0005】オブジェクト指向データベースにおける永
続オブジェクトへのハンドルについては、オブジェクト
データベースの標準のひとつであるオブジェクトデータ
ベース標準:ODMG−93(R.G.G.Cattel,et al.“T
HE OBJECT DATABASE STANDARD:ODMG-93 Release 1.1”,
Morgan Kaufmann Publishers, Inc.,1994)にRefクラス
として記述されている。
続オブジェクトへのハンドルについては、オブジェクト
データベースの標準のひとつであるオブジェクトデータ
ベース標準:ODMG−93(R.G.G.Cattel,et al.“T
HE OBJECT DATABASE STANDARD:ODMG-93 Release 1.1”,
Morgan Kaufmann Publishers, Inc.,1994)にRefクラス
として記述されている。
【0006】リレーショナルデータベースの分野でも、
オブジェクト指向の考え方を導入する動きがある。その
標準として検討されているSQL3(Database Language SQ
L, ISO Working Draft, July 1996)には、抽象データ
型や長大オブジェクト型がサポートされ、ユーザがそれ
ぞれの型のオブジェクトを操作するためのハンドルであ
るロケータの概念が導入されている。ただし、このロケ
ータはオブジェクト指向データベースのRefなどのハン
ドルとは異なり、オブジェクト識別性をもたない「値
(インスタンス)」を指すハンドルである。
オブジェクト指向の考え方を導入する動きがある。その
標準として検討されているSQL3(Database Language SQ
L, ISO Working Draft, July 1996)には、抽象データ
型や長大オブジェクト型がサポートされ、ユーザがそれ
ぞれの型のオブジェクトを操作するためのハンドルであ
るロケータの概念が導入されている。ただし、このロケ
ータはオブジェクト指向データベースのRefなどのハン
ドルとは異なり、オブジェクト識別性をもたない「値
(インスタンス)」を指すハンドルである。
【0007】このような背景において、抽象データ型や
長大オブジェクト型のインスタンスを指すハンドルにイ
ンスタンスを管理するデータベースサーバへのアクセス
情報を付加することによって、これらのインスタンスの
遅延取り出しを行う方法が考案されている(特願平9-54
155)。サーバ間のインスタンスのやり取りをハンドル
で行い、実際にインスタンスが必要になるまで実インス
タンスのサーバ間の転送を遅延させる。ハンドルの転送
に比べて抽象データ型や長大オブジェクト型のインスタ
ンスの転送は負荷がはるかに高いため、データベース処
理の高速化が可能となる。
長大オブジェクト型のインスタンスを指すハンドルにイ
ンスタンスを管理するデータベースサーバへのアクセス
情報を付加することによって、これらのインスタンスの
遅延取り出しを行う方法が考案されている(特願平9-54
155)。サーバ間のインスタンスのやり取りをハンドル
で行い、実際にインスタンスが必要になるまで実インス
タンスのサーバ間の転送を遅延させる。ハンドルの転送
に比べて抽象データ型や長大オブジェクト型のインスタ
ンスの転送は負荷がはるかに高いため、データベース処
理の高速化が可能となる。
【0008】
【発明が解決しようとする課題】データベース管理シス
テムにおいて、オブジェクト指向の考え方を導入する場
合、操作するデータの物理的構造や、データの寿命(一
時・永続)に依存しない一貫したインタフェースをユー
ザに提供できることが望ましい。この実装には、データ
の物理的構造を隠蔽することができるハンドルを用いる
ことが有効である。しかし、上記従来技術のハンドルを
用いた実装では、ハンドルが指すインスタンスに対する
操作が発生した場合、その動作を保証するために、イン
スタンス全体をメモリ上に展開する必要がある。このた
め、抽象データ型や長大オブジェクト型などの長大ある
いは構造が複雑であるデータ型をハンドルを用いてサポ
ートする場合に、次の二つの問題点が発生する。
テムにおいて、オブジェクト指向の考え方を導入する場
合、操作するデータの物理的構造や、データの寿命(一
時・永続)に依存しない一貫したインタフェースをユー
ザに提供できることが望ましい。この実装には、データ
の物理的構造を隠蔽することができるハンドルを用いる
ことが有効である。しかし、上記従来技術のハンドルを
用いた実装では、ハンドルが指すインスタンスに対する
操作が発生した場合、その動作を保証するために、イン
スタンス全体をメモリ上に展開する必要がある。このた
め、抽象データ型や長大オブジェクト型などの長大ある
いは構造が複雑であるデータ型をハンドルを用いてサポ
ートする場合に、次の二つの問題点が発生する。
【0009】(1)ユーザまたは内部処理に必要なデー
タはインスタンスの一部分になのにもかかわらず、イン
スタンス全体が取り出されるため余分な通信や不必要な
メモリ資源の消費がおこり、処理が遅くなり、場合によ
っては資源不足により処理が不可能となる。
タはインスタンスの一部分になのにもかかわらず、イン
スタンス全体が取り出されるため余分な通信や不必要な
メモリ資源の消費がおこり、処理が遅くなり、場合によ
っては資源不足により処理が不可能となる。
【0010】例えば、動的なタイプチェックには、イン
スタンス中のタイプ情報が必要となる。このタイプ情報
を取得するためだけに、インスタンス全体の取り出しが
発生する。
スタンス中のタイプ情報が必要となる。このタイプ情報
を取得するためだけに、インスタンス全体の取り出しが
発生する。
【0011】また、ある条件を満たす文書を検索し、該
当する文書の題目と著者をリストアップし、その中から
選択された文書の内容を表示するというアプリケーショ
ンを考える。リストアップに必要なのは題目と著者であ
る。選択されない文書に関しては、長大なデータである
文書内容などは必要ない。にもかかわらず、リストアッ
プした文書インスタンスすべてがメモリに展開されてし
まう。もちろん、アプリケーション側で題目・著者など
と文書インスタンスへのハンドルを管理することによ
り、メモリ資源の消費や通信コストを抑えることができ
る。しかし、題目や著者は文書の属性であるのが自然で
ある。文書というものを抽象データ型として一括してデ
ータベースに格納できるにもかかわらず、アプリケーシ
ョン側で属性ごとにばらばらに取り出し、管理し直すと
いうのはデータベースとアプリケーション間のインタフ
ェース仕様の不良である。
当する文書の題目と著者をリストアップし、その中から
選択された文書の内容を表示するというアプリケーショ
ンを考える。リストアップに必要なのは題目と著者であ
る。選択されない文書に関しては、長大なデータである
文書内容などは必要ない。にもかかわらず、リストアッ
プした文書インスタンスすべてがメモリに展開されてし
まう。もちろん、アプリケーション側で題目・著者など
と文書インスタンスへのハンドルを管理することによ
り、メモリ資源の消費や通信コストを抑えることができ
る。しかし、題目や著者は文書の属性であるのが自然で
ある。文書というものを抽象データ型として一括してデ
ータベースに格納できるにもかかわらず、アプリケーシ
ョン側で属性ごとにばらばらに取り出し、管理し直すと
いうのはデータベースとアプリケーション間のインタフ
ェース仕様の不良である。
【0012】(2)長大なインスタンスの場合は、全体
をメモリに展開することが現実的でない場合が存在す
る。また、ハンドルによって物理的構造が隠蔽されてい
るため、長大であるという物理的特性を考慮した処理を
選択する手段がない。したがって、メモリに展開するこ
とが現実的でない大きさのインスタンスの処理を行うと
莫大な通信負荷とメモリ資源の消費が発生し、多くの場
合に処理が不可能となる。
をメモリに展開することが現実的でない場合が存在す
る。また、ハンドルによって物理的構造が隠蔽されてい
るため、長大であるという物理的特性を考慮した処理を
選択する手段がない。したがって、メモリに展開するこ
とが現実的でない大きさのインスタンスの処理を行うと
莫大な通信負荷とメモリ資源の消費が発生し、多くの場
合に処理が不可能となる。
【0013】この2つの問題点を解決するために本発明
は、データベースに格納された複雑な構造をもつデータ
や、メモリ上に展開することが現実的でない長大データ
の操作や問い合わせ処理を、データの構造に依存しない
一貫したインタフェースを保ちながら高速化する手段を
提供することを課題とする。
は、データベースに格納された複雑な構造をもつデータ
や、メモリ上に展開することが現実的でない長大データ
の操作や問い合わせ処理を、データの構造に依存しない
一貫したインタフェースを保ちながら高速化する手段を
提供することを課題とする。
【0014】
【課題を解決するための手段】前述の課題を解決するた
めに、インスタンスのもつ情報のうち、ユーザやデータ
ベース処理に必要な部分情報または前述の情報を制御す
るための制御情報と、部分情報または制御情報を管理す
る情報と、前述のインスタンスを取得するのに必要な情
報とからなる代理インスタンスを実インスタンスの代わ
りにハンドルから指すことで、ハンドルを用いたインス
タンス操作の一部分を代理インスタンスで処理し、実イ
ンスタンス全体の転送やメモリへの展開を抑制する。
めに、インスタンスのもつ情報のうち、ユーザやデータ
ベース処理に必要な部分情報または前述の情報を制御す
るための制御情報と、部分情報または制御情報を管理す
る情報と、前述のインスタンスを取得するのに必要な情
報とからなる代理インスタンスを実インスタンスの代わ
りにハンドルから指すことで、ハンドルを用いたインス
タンス操作の一部分を代理インスタンスで処理し、実イ
ンスタンス全体の転送やメモリへの展開を抑制する。
【0015】
【発明の実施の形態】以下、本発明の実施例を図面に基
づいて詳細に説明する。
づいて詳細に説明する。
【0016】第一の実施例として、抽象データ型のイン
スタンスに対するデータベース処理を代理インスタンス
をもちいて行う方法を説明する。
スタンスに対するデータベース処理を代理インスタンス
をもちいて行う方法を説明する。
【0017】まず、本発明を実施するハードウェアの構
成を説明する。
成を説明する。
【0018】図2は本発明の実施例のハードウエアの構
成を表している。処理装置の単位である1個以上のノー
ドがLANなどのネットワーク(200)によって接続
されている。一つのノードの構成は独立にデータベース
システムとして機能するコンピュータシステムであれば
どのような形態をとってもかまわない。例えば、ノード
201は中央演算装置や主記憶装置などからなるデータ
処理装置(211)とハードディスクなどのデータ記憶
装置(210)からなる。また、ノード202はノード
201の構成にキーボードやディスプレイなどのデータ
入出力装置を加えた構成となっている。それぞれのノー
ドは、独立にデータベースシステムとして機能し、さら
にネットワークを通してデータのやり取りを行うことが
できる。この構成は複数のデータベースシステムがネッ
トワークを介して相互に結合し、データ処理を並列に行
うシステムである。
成を表している。処理装置の単位である1個以上のノー
ドがLANなどのネットワーク(200)によって接続
されている。一つのノードの構成は独立にデータベース
システムとして機能するコンピュータシステムであれば
どのような形態をとってもかまわない。例えば、ノード
201は中央演算装置や主記憶装置などからなるデータ
処理装置(211)とハードディスクなどのデータ記憶
装置(210)からなる。また、ノード202はノード
201の構成にキーボードやディスプレイなどのデータ
入出力装置を加えた構成となっている。それぞれのノー
ドは、独立にデータベースシステムとして機能し、さら
にネットワークを通してデータのやり取りを行うことが
できる。この構成は複数のデータベースシステムがネッ
トワークを介して相互に結合し、データ処理を並列に行
うシステムである。
【0019】次に、上記ハードウェア構成の各ノードが
機能するデータベースシステムの概要を図3をもちいて
説明する。
機能するデータベースシステムの概要を図3をもちいて
説明する。
【0020】データベースシステムは、ユーザが作成し
た複数のアプリケーションプログラム303及び304
と、アプリケーションプログラムからのデータ操作や問
い合せなどの処理やリソース管理などデータベースシス
テム全体の管理を行なうデータベース管理システム(3
00)と、データが格納されるデータベース(103)
と、データベースの定義情報を格納するディクショナリ
(302)から構成する。
た複数のアプリケーションプログラム303及び304
と、アプリケーションプログラムからのデータ操作や問
い合せなどの処理やリソース管理などデータベースシス
テム全体の管理を行なうデータベース管理システム(3
00)と、データが格納されるデータベース(103)
と、データベースの定義情報を格納するディクショナリ
(302)から構成する。
【0021】データベース管理システム(300)は、
論理処理部(310)と物理処理部(320)とシステ
ム制御部に分割することができる。論理処理部(31
0)はアプリケーションプログラムからの問い合せなど
を解析・実行する。アプリケーションプログラムから渡
される問い合せはSQLなどのデータベース問い合せ言
語によって記述されている。問い合せ解析部(311)
は、問い合せ文に対して構文解析及び意味解析を行う。
解析結果は静的最適化処理(312)によって、問い合
せに最適な処理手順を選択する。コード生成(313)
は、選択された処理手順に従い、実行可能な中間コード
を生成する。動的最適化処理(314)は、静的最適化
処理によって選ばれた処理候補の中から実行時の状態に
応じた最適な処理を選択する。コード解析実行(31
5)は生成した中間コードを動的最適化処理の選択に従
い実行する。
論理処理部(310)と物理処理部(320)とシステ
ム制御部に分割することができる。論理処理部(31
0)はアプリケーションプログラムからの問い合せなど
を解析・実行する。アプリケーションプログラムから渡
される問い合せはSQLなどのデータベース問い合せ言
語によって記述されている。問い合せ解析部(311)
は、問い合せ文に対して構文解析及び意味解析を行う。
解析結果は静的最適化処理(312)によって、問い合
せに最適な処理手順を選択する。コード生成(313)
は、選択された処理手順に従い、実行可能な中間コード
を生成する。動的最適化処理(314)は、静的最適化
処理によって選ばれた処理候補の中から実行時の状態に
応じた最適な処理を選択する。コード解析実行(31
5)は生成した中間コードを動的最適化処理の選択に従
い実行する。
【0022】物理処理部(320)は、システムで共用
するリソースの排他制御を行う排他制御(321)と、
データの編集や条件判定などを行うデータアクセス処理
(322)と、データの読み書きを行うデータベースバ
ッファ制御(323)から成る。
するリソースの排他制御を行う排他制御(321)と、
データの編集や条件判定などを行うデータアクセス処理
(322)と、データの読み書きを行うデータベースバ
ッファ制御(323)から成る。
【0023】システム制御部(330)は入出力の管理
などを行う。
などを行う。
【0024】以下、上記データベース管理システムにお
いて、代理インスタンスを用いたデータベース処理方法
について説明する。
いて、代理インスタンスを用いたデータベース処理方法
について説明する。
【0025】図1は、代理インスタンスを用いたデータ
ベース処理の概要図である。
ベース処理の概要図である。
【0026】本実施例では、説明を容易にするためデー
タベース処理を2つのノードにおける処理として説明す
る。実際は、複数のノードが存在できる。これらの処理
は、2つのノードにおける処理の組み合わせとして考え
ることができる。また、問い合わせ実行ノード(10
1)やデータベースアクセスノード(102)は、論理
的な処理の単位であり、図2のハードウェア構成の物理
的なノードに対応させることもできるし、一つの物理的
なノード内で、ソフトウェア的にノード(例えば、プロ
セスなど)を割り当てることもできる。前者の場合は、
100は図2の200のネットワークと同等であるし、
後者の場合は、100はプロセス間通信などを表わす。
タベース処理を2つのノードにおける処理として説明す
る。実際は、複数のノードが存在できる。これらの処理
は、2つのノードにおける処理の組み合わせとして考え
ることができる。また、問い合わせ実行ノード(10
1)やデータベースアクセスノード(102)は、論理
的な処理の単位であり、図2のハードウェア構成の物理
的なノードに対応させることもできるし、一つの物理的
なノード内で、ソフトウェア的にノード(例えば、プロ
セスなど)を割り当てることもできる。前者の場合は、
100は図2の200のネットワークと同等であるし、
後者の場合は、100はプロセス間通信などを表わす。
【0027】問い合わせ実行ノード(101)は、問い
合わせを解析した結果から生成した中間コードに従い、
インスタンスの操作を実行するノードである。問い合わ
せ実行ノード(101)には、インスタンス管理(10
5)が存在し、インスタンスを展開するための領域の確
保・解放、インスタンスに対する基本操作(生成、破
壊、参照、更新、代入)を提供する。代理インスタンス
に対する基本操作もこのインスタンス管理(105)が
行う。
合わせを解析した結果から生成した中間コードに従い、
インスタンスの操作を実行するノードである。問い合わ
せ実行ノード(101)には、インスタンス管理(10
5)が存在し、インスタンスを展開するための領域の確
保・解放、インスタンスに対する基本操作(生成、破
壊、参照、更新、代入)を提供する。代理インスタンス
に対する基本操作もこのインスタンス管理(105)が
行う。
【0028】データベースアクセスノード(102)
は、データベースに格納されたインスタンスを管理する
ノードであり、格納インスタンスに対する基本操作(挿
入、更新、検索、取り出し、削除)を提供する格納イン
スタンス操作(104)と、インスタンスを格納するデ
ータベースから成る。
は、データベースに格納されたインスタンスを管理する
ノードであり、格納インスタンスに対する基本操作(挿
入、更新、検索、取り出し、削除)を提供する格納イン
スタンス操作(104)と、インスタンスを格納するデ
ータベースから成る。
【0029】次にインスタンスの構造を概説する。
【0030】インスタンスは、インスタンスの値を管理
する物理表現(インスタンス実体)とインスタンスの物
理表現を指すハンドル(180)から構成される。イン
スタンスの物理表現には、インスタンスのサイズや参照
カウンタなどを管理するインスタンス管理情報(19
0)とインスタンスの値を表わす本体から成る。インス
タンス操作はハンドルを経由して行う。
する物理表現(インスタンス実体)とインスタンスの物
理表現を指すハンドル(180)から構成される。イン
スタンスの物理表現には、インスタンスのサイズや参照
カウンタなどを管理するインスタンス管理情報(19
0)とインスタンスの値を表わす本体から成る。インス
タンス操作はハンドルを経由して行う。
【0031】図1において、データベースに格納されて
いるインスタンスは120,130,140の3つのイ
ンスタンスから成る複合インスタンスである。インスタ
ンス120に注目する。インスタンスは、インスタンス
管理情報(190)とインスタンスのデータを表わす本
体(121)から成る。インスタンス120の本体12
1には、各属性a1,a2,a3ごとに値が格納されている。
いるインスタンスは120,130,140の3つのイ
ンスタンスから成る複合インスタンスである。インスタ
ンス120に注目する。インスタンスは、インスタンス
管理情報(190)とインスタンスのデータを表わす本
体(121)から成る。インスタンス120の本体12
1には、各属性a1,a2,a3ごとに値が格納されている。
【0032】属性a1の値はインスタンス130へのハン
ドル(180)である。
ドル(180)である。
【0033】属性a2の値はva2である。
【0034】属性a3の値はインスタンス140へのハン
ドル(180)である。
ドル(180)である。
【0035】インスタンス130の本体131には、属
性管理されていない値(例えば、文字列型のインスタン
スや長大オブジェクト型のインスタンスの本体)、vb1
が格納されている。
性管理されていない値(例えば、文字列型のインスタン
スや長大オブジェクト型のインスタンスの本体)、vb1
が格納されている。
【0036】インスタンス140の本体141は、属性
c1,c2から成り、それぞれに値vc1,vc2が格納されてい
る。
c1,c2から成り、それぞれに値vc1,vc2が格納されてい
る。
【0037】代理インスタンスはインスタンスの一つで
あり、基本的な構造は、一般のインスタンス実体と同様
に、インスタンス管理情報(190)と本体部分からな
る。したがって、一般のインスタンスに対する基本操作
をすべて行うことができる。ただし、代理インスタンス
を指すハンドルは、代理インスタンスを実体とするので
はなく、代理インスタンスが指すインスタンスの物理表
現を実体とする。
あり、基本的な構造は、一般のインスタンス実体と同様
に、インスタンス管理情報(190)と本体部分からな
る。したがって、一般のインスタンスに対する基本操作
をすべて行うことができる。ただし、代理インスタンス
を指すハンドルは、代理インスタンスを実体とするので
はなく、代理インスタンスが指すインスタンスの物理表
現を実体とする。
【0038】図1の代理インスタンス110は、インス
タンス120,130,140と同様にインスタンス管
理情報(190)と本体から成る。本体はインスタンス
実体120へのハンドル(180)と部分データ管理情
報(111)とデータキャッシュ領域(112)から構
成されている。本実施例では、データキャッシュ領域に
はインスタンス120の属性a2の値va2と、インスタン
ス120の属性a3の値であるインスタンス140の属性
c2の値vc2がキャッシングされている。
タンス120,130,140と同様にインスタンス管
理情報(190)と本体から成る。本体はインスタンス
実体120へのハンドル(180)と部分データ管理情
報(111)とデータキャッシュ領域(112)から構
成されている。本実施例では、データキャッシュ領域に
はインスタンス120の属性a2の値va2と、インスタン
ス120の属性a3の値であるインスタンス140の属性
c2の値vc2がキャッシングされている。
【0039】代理インスタンス110は、ハンドル1
(180)とハンドル2(180)から直接参照されて
いるが、ハンドル1とハンドル2は、論理的にはインス
タンス120を指すハンドルである。したがって、ハン
ドル1やハンドル2を経由するインスタンス操作はイン
スタンス実体120への操作となる。
(180)とハンドル2(180)から直接参照されて
いるが、ハンドル1とハンドル2は、論理的にはインス
タンス120を指すハンドルである。したがって、ハン
ドル1やハンドル2を経由するインスタンス操作はイン
スタンス実体120への操作となる。
【0040】さらに詳しく代理インスタンスの各構造に
ついて説明する。
ついて説明する。
【0041】インスタンス管理情報:一般のインスタン
スと同様。参照カウンタ、インスタンス長、本体のデー
タタイプ(抽象データ型、長大オブジェクト型、文字列
型などを識別)などを管理する。
スと同様。参照カウンタ、インスタンス長、本体のデー
タタイプ(抽象データ型、長大オブジェクト型、文字列
型などを識別)などを管理する。
【0042】ただし、代理インスタンスを導入するため
に、本体のデータタイプとは別に、代理インスタンスで
あることの識別フラグが必要である。
に、本体のデータタイプとは別に、代理インスタンスで
あることの識別フラグが必要である。
【0043】なお、本体のデータタイプは、インスタン
ス実体のデータタイプとなる。すなわち、インスタンス
管理情報から、何のインスタンス実体の代理インスタン
スなのかを判定することができる。例えば、抽象データ
型のインスタンスの代理インスタンスと判定することが
可能である。
ス実体のデータタイプとなる。すなわち、インスタンス
管理情報から、何のインスタンス実体の代理インスタン
スなのかを判定することができる。例えば、抽象データ
型のインスタンスの代理インスタンスと判定することが
可能である。
【0044】インスタンス実体へのハンドル:代理をす
るインスタンス実体を指すハンドル。
るインスタンス実体を指すハンドル。
【0045】代理インスタンスを指すハンドルは、代理
インスタンスのこのハンドルが指すインスタンス実体を
操作するためのハンドルである。
インスタンスのこのハンドルが指すインスタンス実体を
操作するためのハンドルである。
【0046】データキャッシュ管理情報:データキャッ
シュ領域にキャッシュするインスタンス実体の部分情報
または制御情報を管理するための情報であり、 ・キャッシュする情報の種別。
シュ領域にキャッシュするインスタンス実体の部分情報
または制御情報を管理するための情報であり、 ・キャッシュする情報の種別。
【0047】・キャッシュする情報。
【0048】・キャッシュする情報のキャッシュ状態。
【0049】などを管理する。
【0050】データキャッシュ領域:インスタンス実体
の部分情報または制御情報を格納する領域。
の部分情報または制御情報を格納する領域。
【0051】コンパイル時にキャッシュする内容が決定
したときに、領域長を計算する。
したときに、領域長を計算する。
【0052】次に、代理インスタンスで管理するインス
タンス実体の部分情報または制御情報を指定する方法に
ついて説明する。インスタンス実体の部分情報とは、抽
象データ型の属性や、長大オブジェクト型や文字列型の
部分データ(先頭からのオフセットと取り出す長さで指
定)などの値の一部分や、抽象データ型のタイプ識別子
や長大オブジェクト型や文字列型のインスタンス長など
値を管理するための情報などである。インスタンス実体
の制御情報とは、長大オブジェクト型のインスタンスの
分割転送など制御するための情報などである。
タンス実体の部分情報または制御情報を指定する方法に
ついて説明する。インスタンス実体の部分情報とは、抽
象データ型の属性や、長大オブジェクト型や文字列型の
部分データ(先頭からのオフセットと取り出す長さで指
定)などの値の一部分や、抽象データ型のタイプ識別子
や長大オブジェクト型や文字列型のインスタンス長など
値を管理するための情報などである。インスタンス実体
の制御情報とは、長大オブジェクト型のインスタンスの
分割転送など制御するための情報などである。
【0053】これらの情報を代理インスタンスで管理す
ることを指定する方法は、大きく2つに分けることがで
きる。
ることを指定する方法は、大きく2つに分けることがで
きる。
【0054】一つは、ユーザによる明示的な指定であ
る。指定の方法は、 ・定義文の拡張を行い、タイプ定義やテーブル生成にお
いて属性に代理インスタンスでキャッシュすることを示
すマークを設ける ・長大オブジェクトは分割転送することを環境変数など
で指定する ・明示的に代理インスタンスのコンストラクタを呼び出
し、長大オブジェクトの分割転送の指示を出すなどであ
る。
る。指定の方法は、 ・定義文の拡張を行い、タイプ定義やテーブル生成にお
いて属性に代理インスタンスでキャッシュすることを示
すマークを設ける ・長大オブジェクトは分割転送することを環境変数など
で指定する ・明示的に代理インスタンスのコンストラクタを呼び出
し、長大オブジェクトの分割転送の指示を出すなどであ
る。
【0055】もう一つは、データベースシステムがキャ
ッシュする内容を決定する方法である。これらは、 ・デフォルト。特にユーザの指定が無い場合、デフォル
ト指定としてタイプ識別子などのキャッシュを行う。
ッシュする内容を決定する方法である。これらは、 ・デフォルト。特にユーザの指定が無い場合、デフォル
ト指定としてタイプ識別子などのキャッシュを行う。
【0056】・問い合わせ文のなどの解析結果から、図
3の静的最適化処理(312)などでキャッシュすべき
属性を決定する。例えば、 Select 文書,文書>>題目,文書>>著者 From 文書表 wher
e ... という問い合わせ文であれば、文書インスタンスの代理
インスタンスに題目、著者をキャッシュする。
3の静的最適化処理(312)などでキャッシュすべき
属性を決定する。例えば、 Select 文書,文書>>題目,文書>>著者 From 文書表 wher
e ... という問い合わせ文であれば、文書インスタンスの代理
インスタンスに題目、著者をキャッシュする。
【0057】・統計情報を取得し、頻繁にアクセスされ
る属性を解析し、その属性をキャッシュする。
る属性を解析し、その属性をキャッシュする。
【0058】・実行時にインスタンスの状態を解析し、
キャッシュする内容を決定する。例えば、ある一定値よ
りも大きい長大オブジェクト型のインスタンスは、分割
転送用の制御情報をキャッシュする。
キャッシュする内容を決定する。例えば、ある一定値よ
りも大きい長大オブジェクト型のインスタンスは、分割
転送用の制御情報をキャッシュする。
【0059】などがある。
【0060】次に、図1のように、抽象データ型の一部
の属性を部分情報としてキャッシュしている代理インス
タンスを用いて、属性の参照というデータベース処理の
方法を図4、図5の流れ図を用いて説明する。
の属性を部分情報としてキャッシュしている代理インス
タンスを用いて、属性の参照というデータベース処理の
方法を図4、図5の流れ図を用いて説明する。
【0061】代理インスタンスをもちいた属性の参照は
大きく2つの処理に分けることができる。属性参照の第
一の処理は、検索を実行し、検索結果の抽象データ型の
ハンドルを取得し、代理インスタンスを生成する。属性
参照の第二の処理は、生成した代理インスタンスを指す
ハンドルを経由して、属性の参照を行う。
大きく2つの処理に分けることができる。属性参照の第
一の処理は、検索を実行し、検索結果の抽象データ型の
ハンドルを取得し、代理インスタンスを生成する。属性
参照の第二の処理は、生成した代理インスタンスを指す
ハンドルを経由して、属性の参照を行う。
【0062】図4は、属性参照の第一の処理の流れ図で
ある。
ある。
【0063】図1の問い合わせ実行ノードにおいて、検
索の実行と代理インスタンスの生成(400)を行う。
まず、目的の抽象データ型のインスタンスを取得するた
めに、データベースアクセスノードに問い合せ文の実
行、すなわち、検索の実行を要求する(401)。この
とき、検索結果には、目的の抽象データ型のインスタン
ス(のハンドル)だけではなく、代理インスタンスにキ
ャッシュする属性値も指定する。図1のようにa2とc2を
キャッシュするのであれば、問い合せ文の一つの例は,
C1を目的の抽象データ型のインスタンスが格納されてい
るカラムであるとして、 Select C1, C1>>a2, C1>>a3>>c2 from ..... のようになる。
索の実行と代理インスタンスの生成(400)を行う。
まず、目的の抽象データ型のインスタンスを取得するた
めに、データベースアクセスノードに問い合せ文の実
行、すなわち、検索の実行を要求する(401)。この
とき、検索結果には、目的の抽象データ型のインスタン
ス(のハンドル)だけではなく、代理インスタンスにキ
ャッシュする属性値も指定する。図1のようにa2とc2を
キャッシュするのであれば、問い合せ文の一つの例は,
C1を目的の抽象データ型のインスタンスが格納されてい
るカラムであるとして、 Select C1, C1>>a2, C1>>a3>>c2 from ..... のようになる。
【0064】この要求を受け、データベースアクセスノ
ードでは、検索を実行(450,451,452)す
る。問い合せ実行ノードでは、検索結果として、指定し
た抽象データ型のインスタンスへのハンドルと代理イン
スタンスにキャッシュする属性の属性値を取得する(4
02)。キャッシュするデータのサイズを考慮して代理
インスタンスを生成し、取得したハンドルの内容を、代
理インスタンスのインスタンス実体へのハンドルに設定
する。さらに、取得した属性値を代理インスタンスのデ
ータキャッシュ領域に設定し、キャッシュ管理情報の内
容を更新する(403)。さらに検索結果として取得し
た抽象データ型のインスタンスを指すハンドルを生成し
た代理インスタンスを指すように更新する(404)。
図1は、この第一の処理が終了した時点での各ノードの
状態を表している。
ードでは、検索を実行(450,451,452)す
る。問い合せ実行ノードでは、検索結果として、指定し
た抽象データ型のインスタンスへのハンドルと代理イン
スタンスにキャッシュする属性の属性値を取得する(4
02)。キャッシュするデータのサイズを考慮して代理
インスタンスを生成し、取得したハンドルの内容を、代
理インスタンスのインスタンス実体へのハンドルに設定
する。さらに、取得した属性値を代理インスタンスのデ
ータキャッシュ領域に設定し、キャッシュ管理情報の内
容を更新する(403)。さらに検索結果として取得し
た抽象データ型のインスタンスを指すハンドルを生成し
た代理インスタンスを指すように更新する(404)。
図1は、この第一の処理が終了した時点での各ノードの
状態を表している。
【0065】図5は、属性参照の第二の処理の流れ図で
ある。問い合わせ実行ノードにおいて、ハンドルを経由
して、指定した属性値を取得する(500)。まず、ハ
ンドルが指すインスタンスが代理インスタンスかどうか
をチェックする。これは、インスタンスのインスタンス
管理情報(190)から調べることができる。もし、代
理インスタンスでなければ、すでに、抽象データ型のイ
ンスタンスがメモリ上に展開されているので、インスタ
ンス実体から属性値の取得を行う(514)。代理イン
スタンスであれば、次に指定した属性がキャッシュする
属性であるかどうかをチェックし(502)、さらに属
性がキャッシュされているかどうかをチェック(50
3)する。キャッシュ管理情報から指定した属性がキャ
ッシュ対象であり、かつ属性値がキャッシュされている
のであれば、代理インスタンスのデータキャッシュ領域
から属性値を取得する(504)。もし、どちらかのチ
ェック条件が満たされないのであれば、インスタンス実
体の転送要求を代理インスタンスのインスタンス実体へ
のハンドルを用いて行う(510)。この要求を受け
て、データベースアクセスノードでは、インスタンスの
転送処理を行う(550)。まず、ハンドルで複合イン
スタンスを形成しているような抽象データ型のインスタ
ンスは、転送可能なように、一つの連続した領域に梱包
する(551)。このとき、ハンドルの内容は相対位置
を表すように変更する。そして、この梱包したインスタ
ンスを転送する(552)。問い合わせ実行ノードで
は、転送されたインスタンスを受け取り、代理インスタ
ンスと入れ替える(512)。代理インスタンスは削除
する(513)。このステップ513が終了した時点で
の問い合わせ実行ノードの状態を表したのが図6であ
る。図1では、代理インスタンスを指していたハンドル
1とハンドル2が、図6ではインスタンス実体を指して
いる。属性値の取得は、この展開されたインスタンス実
体から行う(514)。
ある。問い合わせ実行ノードにおいて、ハンドルを経由
して、指定した属性値を取得する(500)。まず、ハ
ンドルが指すインスタンスが代理インスタンスかどうか
をチェックする。これは、インスタンスのインスタンス
管理情報(190)から調べることができる。もし、代
理インスタンスでなければ、すでに、抽象データ型のイ
ンスタンスがメモリ上に展開されているので、インスタ
ンス実体から属性値の取得を行う(514)。代理イン
スタンスであれば、次に指定した属性がキャッシュする
属性であるかどうかをチェックし(502)、さらに属
性がキャッシュされているかどうかをチェック(50
3)する。キャッシュ管理情報から指定した属性がキャ
ッシュ対象であり、かつ属性値がキャッシュされている
のであれば、代理インスタンスのデータキャッシュ領域
から属性値を取得する(504)。もし、どちらかのチ
ェック条件が満たされないのであれば、インスタンス実
体の転送要求を代理インスタンスのインスタンス実体へ
のハンドルを用いて行う(510)。この要求を受け
て、データベースアクセスノードでは、インスタンスの
転送処理を行う(550)。まず、ハンドルで複合イン
スタンスを形成しているような抽象データ型のインスタ
ンスは、転送可能なように、一つの連続した領域に梱包
する(551)。このとき、ハンドルの内容は相対位置
を表すように変更する。そして、この梱包したインスタ
ンスを転送する(552)。問い合わせ実行ノードで
は、転送されたインスタンスを受け取り、代理インスタ
ンスと入れ替える(512)。代理インスタンスは削除
する(513)。このステップ513が終了した時点で
の問い合わせ実行ノードの状態を表したのが図6であ
る。図1では、代理インスタンスを指していたハンドル
1とハンドル2が、図6ではインスタンス実体を指して
いる。属性値の取得は、この展開されたインスタンス実
体から行う(514)。
【0066】このように、代理インスタンスにキャッシ
ュされているデータのアクセスには、新たなメモリ確保
もデータ転送も発生しないため非常に高速である。ま
た、キャッシュしていないデータへのアクセスが発生し
た場合でも、代理インスタンスはインスタンス実体への
ハンドルをもっているため、インスタンス実体のデータ
をアクセスすることが可能である。ただし、インスタン
スの転送やメモリの確保が発生する。
ュされているデータのアクセスには、新たなメモリ確保
もデータ転送も発生しないため非常に高速である。ま
た、キャッシュしていないデータへのアクセスが発生し
た場合でも、代理インスタンスはインスタンス実体への
ハンドルをもっているため、インスタンス実体のデータ
をアクセスすることが可能である。ただし、インスタン
スの転送やメモリの確保が発生する。
【0067】第二の実施例として、文字列型や長大オブ
ジェク型のインスタンスなど、メモリに展開することが
現実的でないサイズの長大インスタンスに対するデータ
ベース処理を、代理インスタンスを用いて行う方法につ
いて説明する。
ジェク型のインスタンスなど、メモリに展開することが
現実的でないサイズの長大インスタンスに対するデータ
ベース処理を、代理インスタンスを用いて行う方法につ
いて説明する。
【0068】ハードウェア構成や、基本となるデータベ
ースシステムの構成は第一の実施例と同様である。
ースシステムの構成は第一の実施例と同様である。
【0069】図7は、代理インスタンスを用いた長大イ
ンスタンスの取り出しの概要を説明する図である。
ンスタンスの取り出しの概要を説明する図である。
【0070】データベースアクセスノード(102)と
問い合わせ実行ノード(101)が、100のネットワ
ークまたはプロセス間通信で接続されている。問い合わ
せ実行ノードにはアプリケーションプログラム(70
0)が接続している。
問い合わせ実行ノード(101)が、100のネットワ
ークまたはプロセス間通信で接続されている。問い合わ
せ実行ノードにはアプリケーションプログラム(70
0)が接続している。
【0071】データベースアクセスノードには、インス
タンス管理(105)がある。これは、図1の問い合わ
せ実行ノードのインスタンス管理と同様のものである。
タンス管理(105)がある。これは、図1の問い合わ
せ実行ノードのインスタンス管理と同様のものである。
【0072】データベースには、長大インスタンス(7
20)が格納され、そのインスタンスを指す(代理イン
スタンスを指す)ハンドル(180)をアプリケーショ
ンプログラムが取得し、このハンドルを用いて、アプリ
ケーションプログラムの長大インスタンス作業領域(7
01)に、長大インスタンスの本体部分(721)を取
り出そうとしている。なお、長大インスタンス作業領域
はメモリ上の領域、またはその他の記憶装置の領域であ
る。長大インスタンスは大きいため、問い合わせ実行ノ
ードやデータベースアクセスノードのメモリ上に展開す
るのは現実的ではない。そこで、メモリ上に展開しなく
てもハンドルを用いてデータアクセスができるように、
代理インスタンス(710)を導入する。この代理イン
スタンスは、データキャッシュ領域(112)に、長大
インスタンスの部分情報である長大インスタンスのデー
タ長(711)と、長大インスタンスをメモリ上に展開
しなくともデータの取得ができるような制御情報(71
2)をキャッシュしている。制御情報712は具体的に
は、分割転送を制御するための情報であり、分割転送用
のバッファ管理や、状態管理の情報を保持する。
20)が格納され、そのインスタンスを指す(代理イン
スタンスを指す)ハンドル(180)をアプリケーショ
ンプログラムが取得し、このハンドルを用いて、アプリ
ケーションプログラムの長大インスタンス作業領域(7
01)に、長大インスタンスの本体部分(721)を取
り出そうとしている。なお、長大インスタンス作業領域
はメモリ上の領域、またはその他の記憶装置の領域であ
る。長大インスタンスは大きいため、問い合わせ実行ノ
ードやデータベースアクセスノードのメモリ上に展開す
るのは現実的ではない。そこで、メモリ上に展開しなく
てもハンドルを用いてデータアクセスができるように、
代理インスタンス(710)を導入する。この代理イン
スタンスは、データキャッシュ領域(112)に、長大
インスタンスの部分情報である長大インスタンスのデー
タ長(711)と、長大インスタンスをメモリ上に展開
しなくともデータの取得ができるような制御情報(71
2)をキャッシュしている。制御情報712は具体的に
は、分割転送を制御するための情報であり、分割転送用
のバッファ管理や、状態管理の情報を保持する。
【0073】代理インスタンスを用いた長大インスタン
スの取り出しも、第一の実施例と同様に、検索をして代
理インスタンスを生成する第一の処理と、長大インスタ
ンスを分割転送する第二の処理から成る。
スの取り出しも、第一の実施例と同様に、検索をして代
理インスタンスを生成する第一の処理と、長大インスタ
ンスを分割転送する第二の処理から成る。
【0074】図8は、長大インスタンスの取り出しの第
一の処理の流れ図である。アプリケーションプログラム
は、データベースに格納された長大インスタンスを取得
する(800)ために問い合わせ文の実行をデータベー
スアクセスノードに要求する(801)。これを受け、
データベースアクセスノードでは、検索の実行と代理イ
ンスタンスの生成を行う(850)。まず、問い合わせ
文に従い検索を実行する(851)。次に、代理インス
タンスを生成し、初期化する。検索結果の長大インスタ
ンスへのハンドルの内容を代理インスタンスのインスタ
ンス実体へのハンドルに設定する(852)。この生成
した代理インスタンスを指すハンドルを検索結果として
返却する(853)。アプリケーションプログラムで
は、データベースアクセスノードのインスタンス管理に
生成された代理インスタンスを指すハンドルを検索結果
として受け取る(802)。
一の処理の流れ図である。アプリケーションプログラム
は、データベースに格納された長大インスタンスを取得
する(800)ために問い合わせ文の実行をデータベー
スアクセスノードに要求する(801)。これを受け、
データベースアクセスノードでは、検索の実行と代理イ
ンスタンスの生成を行う(850)。まず、問い合わせ
文に従い検索を実行する(851)。次に、代理インス
タンスを生成し、初期化する。検索結果の長大インスタ
ンスへのハンドルの内容を代理インスタンスのインスタ
ンス実体へのハンドルに設定する(852)。この生成
した代理インスタンスを指すハンドルを検索結果として
返却する(853)。アプリケーションプログラムで
は、データベースアクセスノードのインスタンス管理に
生成された代理インスタンスを指すハンドルを検索結果
として受け取る(802)。
【0075】図9は、長大インスタンスの取り出しの第
二の処理の流れ図である。
二の処理の流れ図である。
【0076】アプリケーションプログラムにおいて、長
大インスタンスの取得処理が開始される(900)。長
大インスタンス作業領域を確保するために、長大インス
タンスのデータ長の取得要求をハンドルを用いてデータ
ベースアクセスノードに要求する(901)。これを受
けてデータベースアクセスノードで長大インスタンスの
データ長の取得を行う(920)。まず、ハンドルが指
す代理インスタンスのデータキャッシュ領域にあるデー
タ長がキャッシュされているかどうかをチェックする
(921)。キャッシュされているのであれば、キャッ
シュされている値を返却する(922,923)。キャ
ッシュされていないのであれば、データベースから長大
インスタンスのデータ長を代理インスタンスのインスタ
ンス実体へのハンドルを用いて取得する(930)。取
得した値を代理インスタンスのデータキャッシュ領域に
設定して(931)、返却する(923)。
大インスタンスの取得処理が開始される(900)。長
大インスタンス作業領域を確保するために、長大インス
タンスのデータ長の取得要求をハンドルを用いてデータ
ベースアクセスノードに要求する(901)。これを受
けてデータベースアクセスノードで長大インスタンスの
データ長の取得を行う(920)。まず、ハンドルが指
す代理インスタンスのデータキャッシュ領域にあるデー
タ長がキャッシュされているかどうかをチェックする
(921)。キャッシュされているのであれば、キャッ
シュされている値を返却する(922,923)。キャ
ッシュされていないのであれば、データベースから長大
インスタンスのデータ長を代理インスタンスのインスタ
ンス実体へのハンドルを用いて取得する(930)。取
得した値を代理インスタンスのデータキャッシュ領域に
設定して(931)、返却する(923)。
【0077】アプリケーションプログラムでは、取得し
たデータ長(902)を用い、長大インスタンス作業領
域を確保する(903)。この領域を指定し、ハンドル
をもちいて、長大インスタンスの取り出しを要求する
(904,910)。データベースアクセスノードで
は、インスタンスの転送処理を開始し(930)、代理
インスタンスのインスタンス実体へのハンドルを用い、
転送制御情報をメンテナンスしながら、データベースの
長大インスタンスを分割転送する(931,932,9
33,934)。
たデータ長(902)を用い、長大インスタンス作業領
域を確保する(903)。この領域を指定し、ハンドル
をもちいて、長大インスタンスの取り出しを要求する
(904,910)。データベースアクセスノードで
は、インスタンスの転送処理を開始し(930)、代理
インスタンスのインスタンス実体へのハンドルを用い、
転送制御情報をメンテナンスしながら、データベースの
長大インスタンスを分割転送する(931,932,9
33,934)。
【0078】問い合わせ実行ノードではこの分割転送を
受ける処理を実行する(911,912,913)。す
べてが受信できると、長大インスタンス作業領域に長大
インスタンスが取り出されている(905)。
受ける処理を実行する(911,912,913)。す
べてが受信できると、長大インスタンス作業領域に長大
インスタンスが取り出されている(905)。
【0079】図10は、代理インスタンスを用いた長大
インスタンスのデータベースへの挿入の概要を示してい
る。代理インスタンスの形式は図7と同様であるが、代
理インスタンスが問い合わせ実行ノード側のインスタン
ス管理上に存在すること、代理インスタンスのインスタ
ンス実体へのハンドルが長大インスタンスが格納されて
いる長大インスタンス作業領域を指していること、代理
インスタンスを指すハンドルがデータベースアクセスノ
ードの格納インスタンス操作が保持していること、が異
なる。
インスタンスのデータベースへの挿入の概要を示してい
る。代理インスタンスの形式は図7と同様であるが、代
理インスタンスが問い合わせ実行ノード側のインスタン
ス管理上に存在すること、代理インスタンスのインスタ
ンス実体へのハンドルが長大インスタンスが格納されて
いる長大インスタンス作業領域を指していること、代理
インスタンスを指すハンドルがデータベースアクセスノ
ードの格納インスタンス操作が保持していること、が異
なる。
【0080】代理インスタンスを用いた長大インスタン
スの挿入の方法を図11の流れ図を用いて説明する。
スの挿入の方法を図11の流れ図を用いて説明する。
【0081】アプリケーションプログラムにおいて、長
大インスタンス作業領域に格納した長大インスタンスを
データベースに挿入する処理を開始する(1100)。
代理インスタンスを生成し、代理インスタンスのインス
タンス実体を指すハンドルに長大インスタンス作業領域
へのポインタを設定する(1101)。この生成した代
理インスタンスへのハンドルを用いて、長大インスタン
スのデータベースへの挿入を要求する。これを受け、デ
ータベースアクセスノードでは、長大インスタンスの挿
入処理が開始される(1110)。まず、挿入要求時に
指定された代理インスタンスへのハンドルを取得する
(1111)。このハンドルを経由して、代理インスタ
ンスに対し、長大インスタンスの分割転送要求を発行す
る(1112)。分割転送の方法は、問い合わせ実行ノ
ードからデータベースアクセスノードへと方向が逆にな
るが、方法は図9と同様であるので省略する。データベ
ースアクセスノードでは、分割して転送されるデータを
逐次データベースに格納する(1113)。すべてが転
送終了すると、終了通知がアプリケーションプログラム
に送られる(1103)。
大インスタンス作業領域に格納した長大インスタンスを
データベースに挿入する処理を開始する(1100)。
代理インスタンスを生成し、代理インスタンスのインス
タンス実体を指すハンドルに長大インスタンス作業領域
へのポインタを設定する(1101)。この生成した代
理インスタンスへのハンドルを用いて、長大インスタン
スのデータベースへの挿入を要求する。これを受け、デ
ータベースアクセスノードでは、長大インスタンスの挿
入処理が開始される(1110)。まず、挿入要求時に
指定された代理インスタンスへのハンドルを取得する
(1111)。このハンドルを経由して、代理インスタ
ンスに対し、長大インスタンスの分割転送要求を発行す
る(1112)。分割転送の方法は、問い合わせ実行ノ
ードからデータベースアクセスノードへと方向が逆にな
るが、方法は図9と同様であるので省略する。データベ
ースアクセスノードでは、分割して転送されるデータを
逐次データベースに格納する(1113)。すべてが転
送終了すると、終了通知がアプリケーションプログラム
に送られる(1103)。
【0082】このように、データ転送制御情報を代理イ
ンスタンスにキャッシュすることで、長大インスタンス
をメモリ上に展開せずに、データベースからユーザ領域
へまたはユーザ領域からデータベースへと転送すること
ができる。しかも、ハンドル用いたインタフェースはそ
もままである。
ンスタンスにキャッシュすることで、長大インスタンス
をメモリ上に展開せずに、データベースからユーザ領域
へまたはユーザ領域からデータベースへと転送すること
ができる。しかも、ハンドル用いたインタフェースはそ
もままである。
【0083】
【発明の効果】頻繁にアクセスするインスタンスの一部
分を、インスタンスのハンドルを取得するときに、同時
に取得し、代理インスタンスにキャッシュすることで、
インスタンスの実体を転送し、メモリに展開する処理を
抑制することで、データ転送負荷の軽減やメモリ資源の
消費を抑えることが可能となった。また、データベース
とユーザの間のデータ転送を制御する情報を代理インス
タンスにキャッシュすることで、メモリ資源の消費を抑
え、データ転送の最適化が可能となった。したがって、
全体の処理効率が高まり、データベース処理の高速化を
実現する。
分を、インスタンスのハンドルを取得するときに、同時
に取得し、代理インスタンスにキャッシュすることで、
インスタンスの実体を転送し、メモリに展開する処理を
抑制することで、データ転送負荷の軽減やメモリ資源の
消費を抑えることが可能となった。また、データベース
とユーザの間のデータ転送を制御する情報を代理インス
タンスにキャッシュすることで、メモリ資源の消費を抑
え、データ転送の最適化が可能となった。したがって、
全体の処理効率が高まり、データベース処理の高速化を
実現する。
【0084】この効果は、データ転送が多く発生するノ
ード数の多い並列データベースシステムにおいて顕著で
ある。
ード数の多い並列データベースシステムにおいて顕著で
ある。
【図1】代理インスタンスを用いたデータベース処理の
概要図
概要図
【図2】ハードウエア構成図
【図3】データベースシステムの構成図
【図4】代理インスタンスを用いたインスタンスの属性
参照の流れ図−1
参照の流れ図−1
【図5】代理インスタンスを用いたインスタンスの属性
参照の流れ図−2
参照の流れ図−2
【図6】代理インスタンスを実インスタンスに置き変え
た後の状態
た後の状態
【図7】代理インスタンスを用いた長大インスタンスの
取り出しの概要図
取り出しの概要図
【図8】代理インスタンスを用いた長大インスタンスの
取り出しの流れ図−1
取り出しの流れ図−1
【図9】代理インスタンスを用いた長大インスタンスの
取り出しの流れ図−2
取り出しの流れ図−2
【図10】代理インスタンスを用いた長大インスタンス
の挿入の概要図
の挿入の概要図
【図11】代理インスタンスを用いた長大インスタンス
の挿入の流れ図
の挿入の流れ図
100…ネットワークまたはプロセス間通信、101…
問い合わせ実行ノード、102…データベースアクセス
ノード、 103…データベース、104…格納イ
ンスタンス操作、 105…インスタンス管
理、111…代理インスタンスのキャッシュ管理情報、
112…代理インスタンスのデータキャッシュ領域、1
80…ハンドル、190…インスタンス管理情報、31
1…問い合せ解析部、 312…静的最適化処理、 3
13…コード生成、 314…動的最適化処理、 31
5…コード解析実行、 700…アプリケーションプロ
グラム、701…長大インスタンス作業領域。
問い合わせ実行ノード、102…データベースアクセス
ノード、 103…データベース、104…格納イ
ンスタンス操作、 105…インスタンス管
理、111…代理インスタンスのキャッシュ管理情報、
112…代理インスタンスのデータキャッシュ領域、1
80…ハンドル、190…インスタンス管理情報、31
1…問い合せ解析部、 312…静的最適化処理、 3
13…コード生成、 314…動的最適化処理、 31
5…コード解析実行、 700…アプリケーションプロ
グラム、701…長大インスタンス作業領域。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 亀城 嘉人 神奈川県横浜市戸塚区戸塚町5030番地株式 会社日立製作所ソフトウェア開発本部内
Claims (8)
- 【請求項1】データベース処理をする複数のノードを備
え、それぞれのノードは他のノードとネットワークで接
続される並列データベースシステムにおけるデータベー
ス処理方法であって、 データベースに格納されているインスタンスの一部分の
情報と、 前述のデータベースに格納されているインスタンスをア
クセスすることが可能な情報とを、 前述のデータベースに格納されているインスタンスより
も小さな領域のインスタンスである代理インスタンスに
格納し、前述のデータベースに格納されているインスタ
ンスの代わりに、 前述の代理インスタンスに格納されている、前述のデー
タベースに格納されているインスタンスの一部分の情報
をもちいてデータベース処理を行うことを特徴とするデ
ータベース処理方法。 - 【請求項2】請求項1におけるデータベース処理が、請
求項1の代理インスタンスに格納されている、請求項1
のデータベースに格納されているインスタンスの一部分
の情報だけでは行うことができない場合は、 前述の代理インスタンスに格納されている、 請求項1の前述のデータベースに格納されているインス
タンスをアクセスすることが可能な情報から、前述のデ
ータベースに格納されているインスタンスにアクセスす
ることにより、前述のデータベース処理を行うことを特
徴とするデータベース処理方法。 - 【請求項3】請求項1のデータベースに格納されたイン
スタンスとその代理インスタンスは、 それぞれ同一構造のインスタンス管理情報をもち、 それぞれ同一構造のハンドルでアクセスすることがで
き、 前述のインスタンス管理情報に代理インスタンスである
ことを識別するフラグでのみ、前述のデータベースに格
納されたインスタンスとその代理インスタンスを区別す
ることを特徴とするデータベース処理方法。 - 【請求項4】請求項1の代理インスタンスにおいて、 前述の代理インスタンスに格納している請求項1のデー
タベースに格納されているインスタンスの一部分の情報
に対し、前述の情報が設定済みであるかどうかの状態を
管理する設定状態情報を前述の代理インスタンスに格納
し、 前述の代理インスタンスをアクセスする際に、設定状態
をチェックし、 設定されるべき情報が設定されていない場合、 前述のデータベースに格納されたインスタンスをアクセ
スするか、前述の設定されるべき情報を取得する際にそ
の情報を設定することを特徴とするデータベース処理方
法。 - 【請求項5】請求項1の代理インスタンスにおいて、 前述の代理インスタンスに格納している請求項1のデー
タベースに格納されているインスタンスの一部分の情報
に対し、どの一部分を格納するかを、タイプ定義やテー
ブル生成時に指定できる手段をもち、指定された内容を
ディクショナリに登録し、前述のデータベースに格納さ
れたインスタンスへのハンドルを取得する際に、前述の
登録された内容にしたがって、前述のデータベースに格
納されたインスタンスの一部分の情報も一緒に取得する
ような問い合わせを発行し、問い合わせの結果を用い
て、代理インスタンスを生成することを特徴とするデー
タベース処理方法。 - 【請求項6】請求項5のデータベースに格納されたイン
スタンスのどの一部分を、代理インスタンスに格納する
かを、問い合わせの解析結果や統計情報、インスタンス
の状態からデータベースシステムが判断し、前述のデー
タベースに格納されたインスタンスへのハンドルを取得
する際に、前述の判断された内容にしたがって、前述の
データベースに格納されたインスタンスの一部分の情報
も一緒に取得するような問い合わせを発行し、問い合わ
せの結果を用いて、代理インスタンスを生成することを
特徴とするデータベース処理方法。 - 【請求項7】インスタンスの取り出しというデータベー
ス処理において、 データベースに格納されている当該インスタンスが長大
である場合、 前述の長大インスタンスへのハンドルを返却するのでは
なく、 代理インスタンスを生成し、前述の代理インスタンスに
前述の長大インスタンスを分割転送することができる制
御情報を格納することで、長大インスタンスがメモリ上
に展開されることを抑止することを特徴とするデータベ
ース処理方法。 - 【請求項8】長大なインスタンスをデータベースに挿入
する場合、 長大なインスタンスを生成するのではなく、請求項7の
長大インスタンスを分割転送することができる制御情報
を格納した代理インスタンスを生成することで、長大イ
ンスタンスがメモリ上に展開されることを抑止すること
を特徴とするデータベース処理方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9284906A JPH11120067A (ja) | 1997-10-17 | 1997-10-17 | データの部分情報を先行して管理するデータベース処理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9284906A JPH11120067A (ja) | 1997-10-17 | 1997-10-17 | データの部分情報を先行して管理するデータベース処理方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11120067A true JPH11120067A (ja) | 1999-04-30 |
Family
ID=17684587
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9284906A Pending JPH11120067A (ja) | 1997-10-17 | 1997-10-17 | データの部分情報を先行して管理するデータベース処理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH11120067A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005049943A (ja) * | 2003-07-29 | 2005-02-24 | Toshiba Corp | データ処理装置、データ処理方法およびプログラム |
| JP2023518118A (ja) * | 2020-05-12 | 2023-04-27 | グーグル エルエルシー | Select*クエリのゼロコピー最適化 |
| CN119806597A (zh) * | 2025-01-23 | 2025-04-11 | 中国银联股份有限公司 | 分布式数据库的升级方法、装置、设备及介质 |
| US12619605B2 (en) | 2023-03-17 | 2026-05-05 | Google Llc | Zero copy optimization for select * queries |
-
1997
- 1997-10-17 JP JP9284906A patent/JPH11120067A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005049943A (ja) * | 2003-07-29 | 2005-02-24 | Toshiba Corp | データ処理装置、データ処理方法およびプログラム |
| JP2023518118A (ja) * | 2020-05-12 | 2023-04-27 | グーグル エルエルシー | Select*クエリのゼロコピー最適化 |
| US12619605B2 (en) | 2023-03-17 | 2026-05-05 | Google Llc | Zero copy optimization for select * queries |
| CN119806597A (zh) * | 2025-01-23 | 2025-04-11 | 中国银联股份有限公司 | 分布式数据库的升级方法、装置、设备及介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6487641B1 (en) | Dynamic caches with miss tables | |
| US7421541B2 (en) | Version management of cached permissions metadata | |
| US7987217B2 (en) | Transaction-aware caching for document metadata | |
| US7720869B2 (en) | Hierarchical structured abstract file system | |
| US7526481B1 (en) | Web servers with queryable dynamic caches | |
| JP3160719B2 (ja) | コンピュータのネットワークからワールドワイドウェッブ上のページを捜し出したり、ドキュメントを捜し出したりするためのシステム及び方法 | |
| US7058639B1 (en) | Use of dynamic multi-level hash table for managing hierarchically structured information | |
| JP3742177B2 (ja) | 並列データベースシステムルーチン実行方法 | |
| JPH10240589A (ja) | 実データ遅延取出しを行うデータベース処理方法 | |
| CN108920600B (zh) | 一种基于数据关联性的分布式文件系统元数据预取方法 | |
| US7533136B2 (en) | Efficient implementation of multiple work areas in a file system like repository that supports file versioning | |
| US20030195866A1 (en) | Transaction-aware caching for access control metadata | |
| CA2302303A1 (en) | System for accessing database tables mapped into memory for high performance | |
| CN110502535A (zh) | 数据访问方法、装置、设备和存储介质 | |
| US7769792B1 (en) | Low overhead thread synchronization system and method for garbage collecting stale data in a document repository without interrupting concurrent querying | |
| JP3863291B2 (ja) | データベース処理方法、データベース処理システム及び媒体 | |
| JP4126843B2 (ja) | データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体 | |
| US20050102276A1 (en) | Method and apparatus for case insensitive searching of ralational databases | |
| JPH11120067A (ja) | データの部分情報を先行して管理するデータベース処理方法 | |
| JP2000137689A (ja) | 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
| JPH08235040A (ja) | データファイル管理システム | |
| JPH09218880A (ja) | ドキュメントデータ検索システム | |
| JPH117445A (ja) | 統合化文書管理装置 | |
| JP4550876B2 (ja) | 構造化文書検索システム及びプログラム | |
| JP3060225B2 (ja) | デ―タベ―ス管理方法およびシステム |