JP2008262585A - データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法 - Google Patents
データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法 Download PDFInfo
- Publication number
- JP2008262585A JP2008262585A JP2008149726A JP2008149726A JP2008262585A JP 2008262585 A JP2008262585 A JP 2008262585A JP 2008149726 A JP2008149726 A JP 2008149726A JP 2008149726 A JP2008149726 A JP 2008149726A JP 2008262585 A JP2008262585 A JP 2008262585A
- Authority
- JP
- Japan
- Prior art keywords
- objects
- instruction
- main memory
- classes
- computer program
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
【課題】持続的に記憶されたオブジェクトをアクセスしかつ更新するプログラムの中に主メモリに記憶されたオブジェクトをアクセスするコンパイルされたプログラムを自動的に変換するシステム及び方法を提供する。
【解決手段】初期コンピュータ・プログラムは、少なくとも第1のオブジェクト・クラスにおけるオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む。オリジナル命令は、コンピュータの主メモリのオブジェクトをアクセスしかつ更新する。システムは、オブジェクト・ローディング命令及びオブジェクト記憶命令をオリジナル命令に追加することによって改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂する。
【選択図】図1
【解決手段】初期コンピュータ・プログラムは、少なくとも第1のオブジェクト・クラスにおけるオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む。オリジナル命令は、コンピュータの主メモリのオブジェクトをアクセスしかつ更新する。システムは、オブジェクト・ローディング命令及びオブジェクト記憶命令をオリジナル命令に追加することによって改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂する。
【選択図】図1
Description
本発明は、一般に、データベースに記憶されたデータを処理するためにオブジェクト指向型コンピュータ・プログラムを用いるシステム及び方法に関し、特に、データベースからデータを検察し、かつ適切な時間にデータベースの中に戻して新しくかつ変更されたデータを記憶するために命令を挿入するようにデータベースのデータをアクセスするオブジェクト分類方法を自動的に変更するシステム及び方法に関する。
オブジェクト指向型DBMSs(データベース管理システム)は、言語オブジェクトをプログラムするための持続的な記憶(persistent storage)を供給し、かつそれらは、プログラミング言語の事実上あらゆるデータ構造の記憶を支持する。対照的に、従来のレコード−構造型DBMSsは、データをデータベース及びプログラミング言語表現の間で前後にコピーすべく埋込型データベース言語(例えば、SQL)ステートメントまたは手順呼出しを必要とし、かつそれらは、レコードの記録だけを支持する。ある新しい製品は、従来のレコード−指向型データベースをプログラミング言語オブジェクトに自動的にマップさせ、それゆえに、オブジェクト指向型DBMSとして同じプログラマーのビューを供給する。本発明は、これらのオブジェクト指向型マッピング及びオブジェクト指向型DBMSsに対する革新的インプリメンテーション技術である。我々の目的のために、両方に対して後者の用語を用いる。
オブジェクト指向型データベースの興味をそそる態様は、そのようなデータベースを処理(操作)するために用いるコンピュータ・プログラムが従来のデータベース・アクセス・プログラムよりも理解するのが容易であるということである。オブジェクト指向型データベースのより重要な利点は、“静的データ型エンフォースメント(static data type enforcement)”がデータベースをアクセスするコンピュータ・プログラムに適用できるということである。これは、そのようなプログラムのコンパイラが、特定のデータベース・フィールドに記憶された全てのデータベースがそのフィールドに対して定義されたデータ型に一致することを確実にすることができるということを意味する。それゆえに、整数を従業員(雇い人)の名前フィードの中に入れることを試みるプログラムは、オブジェクト指向型システムのコンパイラによって拒否されるであろう。
残念ながら、DBMS(データベース管理システム)のディスクまたは他の2次メモリ上に記憶されたデータをアクセスするためにオブジェクト指向型プログラムを書くことは、一見してそれが見えるよりも難しい。オブジェクト・フィールドへのアクセスをデータベース照会の中に変換(翻訳)するオブジェクト分類方法を書くことは、かなり直接的であるが、データがデータベースから読取られることが必要なとき及びデータがデータベースの中に書き戻されることが必要なときを一貫して決定するためにコードを書くことは、オブジェクトへの参照(即ち、他のオブジェクトに対するオブジェクトにおける参照)が用いられるような方法なので、ある程度注意を要する。例えば、同じデータベース・オブジェクトを表わすメモリにおいて二つのオブジェクトを不注意に生成しないことは、重要である。
この文書の目的に対して、用語“メモリ”及び“主メモリ”は、コンピュータ・システムのランダム・アクセス・メモリまたは1次メモリを意味すべく定義され、用語“2次メモリ”及び“持続的記憶”は、ディスク・メモリまたは、主メモリよりも持続的または長い期間ベイシスでデータを保持する記憶の他の形を意味する。
実際の持続的記憶データからデータを読取りかつそれに書くための機構でそれら自体を考慮することなく、それらが主メモリにおけるデータベース・オブジェクトを単に処理することであっても、プログラマがオブジェクト指向型データベース使用プログラムを書くことができるようにすることが、本プログラムの目的である。
実際の持続的記憶データからデータを読取りかつそれに書くための機構でそれら自体を考慮することなく、それらが主メモリにおけるデータベース・オブジェクトを単に処理することであっても、プログラマがオブジェクト指向型データベース使用プログラムを書くことができるようにすることが、本プログラムの目的である。
より特定的には、適時に、データベースからメモリのオブジェクトの中にデータをコピーしかつメモリのオブジェクトからデータの中に新しくかつ変更されたデータをコピーするために必要な追加のコードを自動的に挿入するようにコンパイルされたオブジェクト指向型データベース・プログラムを“後処理(post processing) ”するシステム及び方法を供給することが本発明の目的である。この方法で、プログラマは、非持続的データを記憶しているオブジェクトとは異ならない、初期ソース・コード・プログラムの目的に対して、持続的に記憶されたデータを表しているオブジェクトが処理されるようなオジェクト指向型データベース・プログラムを書くことができる。
本発明の上記目的は、持続的に記憶されたオブジェクトをアクセスしかつ更新するオブジェクト指向型コンピュータ・プログラムを生成する方法であって:コンピュータの主メモリに記憶されたオブジェクトをアクセスしかつ更新するオリジナル命令を含む初期コンピュータ・プログラムを受け取り;改訂されたコンピュータ・プログラムの実行中に、各対応オブジェクトが最初にアクセスされるときにオブジェクトの対応するもの持続性記憶装置から主メモリの中にロードする、オブジェクト・ローディング命令を追加し;かつ改訂されたコンピュータ・プログラムの実行中に、所定事象の発生によりコンピュータの主メモリのオブジェクトの対応するものを持続性記憶装置の中に記憶するオブジェクト記憶命令を追加することによって:改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂する段階を具備する方法によって達成される。
本発明の方法では、改訂段階は、改訂されたコンピュータ・プログラムの実行中に、コンピュータの主メモリのどのオブジェクトが新しい及び/又は更新されたデータを含むのかを示しているデータを記憶するダーティ・オブジェクト・マーキング命令を追加することを更に含み、オブジェクト記憶命令は、新しい及び/又は更新されたデータを含むコンピュータの主メモリのオブジェクトのそれらを持続性記憶装置に記憶するようにしてもよい。
本発明の方法では、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;改訂段階は:オブジェクト・クラスの第2のセットにおけるオブジェクトに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を追加することを更に含むようにしてもよい。
本発明の方法では、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;改訂段階は:オブジェクト・クラスの第2のセットにおけるオブジェクトに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を追加することを更に含むようにしてもよい。
本発明の方法では、オブジェクト・ローディング命令によって主メモリの中にロードされたオブジェクトは、主メモリにロードされたオブジェクトによって参照される持続性記憶装置におけるオブジェクトに対するヌル・オブジェクト・ポインタを含み;改訂段階は、オブジェクト・クラスの第2のセットにおけるオブジェクトのヌル・オブジェクト・ポインタがアクセスされるときにはいつでもオブジェクト・ローディング命令が呼出されるように初期コンピュータ・プログラムを改訂することを含むようにしてもよい。
本発明の方法では、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データベース構造定義命令を含み;改訂段階は:
オブジェクト・クラスの第2のセットにおけるオブジェクトに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を追加することを更に含むようにしてもよい。
本発明の方法では、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データベース構造定義命令を含み;改訂段階は:
オブジェクト・クラスの第2のセットにおけるオブジェクトに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を追加することを更に含むようにしてもよい。
また、本発明の上記目的は、データ処理システム上で実行されるプログラムによるアクセスに対するデータを記憶するためのメモリであって:コンピュータの主メモリに記憶されたオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む初期コンピュータ・プログラムを変更するためのポストプロセッサ手順を備え;ポストプロセッサ手順は、初期コンピュータ・プログラムに補足命令を追加することによって改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂する命令を含み、補足命令は:改訂されたコンピュータ・プログラムの実行中に、各対応オブジェクトが最初にアクセスされるときにオブジェクトの対応するものを持続性記憶装置から主メモリの中にロードするオブジェクト・ローディング命令;及び改訂されたコンピュータ・プログラムの実行中に、所定の事象の発生によりコンピュータの主メモリのオブジェクトの対応するものを持続性記憶装置の中に記憶するオブジェクト記憶命令を含んでいるメモリによって達成される。
本発明のメモリでは、補足命令は、改訂されたコンピュータ・プログラムの実行中に、コンピュータの主メモリにおけるどのオブジェクトが新しい及び/又は更新されたデータを含むものかを示しているデータを記憶するダーティ・オブジェクト・マーキング命令を含み;オブジェクト記憶命令は、新しい及び/又は更新されたデータを含むコンピュータの主メモリにおけるオブジェクトのそれらを持続性記憶装置に記憶するようにしてもよい。
本発明のメモリでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットにおけるオブジェクトに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
本発明のメモリでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットにおけるオブジェクトに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
本発明のメモリでは、オブジェクト・ローディング命令によって主メモリの中にロードされたオブジェクトは、主メモリにロードされたオブジェクトによって参照される持続性記憶装置におけるオブジェクトに対するヌル・オブジェクト・ポインタを含み;ポストプロセッサ手順は、オブジェクト・クラスの第2のセットにおけるオブジェクトのヌル・オブジェクト・ポインタがアクセスされるときにはいつでもオブジェクト・ローディング命令が呼出されるように初期コンピュータ・プログラムを改訂するようにしてもよい。
本発明のメモリでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
本発明のメモリでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
更に本発明の上記目的は、コンピュータ・システムであって:オブジェクトを記憶するための主メモリを含んでいる、メモリを備え;メモリは、初期コンピュータ・プログラム、改訂されたコンピュータ・プログラム及び、主メモリに記憶されたオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む初期コンピュータ・プログラムを変更するためのポストプロセッサ手順を更に記憶しており;ポストプロセッサ手順は、初期コンピュータ・プログラムに補足命令を追加することによって改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂するための命令を含んでおり、補足命令は:改訂されたコンピュータ・プログラムの実行中に、各対応オブジェクトが最初にアクセスされるときにオブジェクトの対応するものを持続性記憶装置から主メモリの中にロードするオブジェクト・ローディング命令;及び改訂されたコンピュータ・プログラムの実行中に、所定の事象の発生によりコンピュータの主メモリのオブジェクトの対応するものを持続性記憶装置の中に記憶するオブジェクト記憶命令を含むコンピュータ・システムによって達成される。
本発明のコンピュータ・システムでは、補足命令は、改訂されたコンピュータ・プログラムの実行中に、コンピュータの主メモリにおけるどのオブジェクトが新しい及び/又は更新されたデータを含むものかを示しているデータを記憶するダーティ・オブジェクト・マーキング命令を含み;オブジェクト記憶命令は、新しい及び/又は更新されたデータを含むコンピュータの主メモリにおけるオブジェクトのそれらを持続性記憶装置に記憶するようにしてもよい。
本発明のコンピュータ・システムでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
本発明のコンピュータ・システムでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
本発明のコンピュータ・システムでは、オブジェクト・ローディング命令によって主メモリの中にロードされたオブジェクトは、主メモリにロードされたオブジェクトによって参照される持続性記憶装置におけるオブジェクトに対するヌル・オブジェクト・ポインタを含み;ポストプロセッサ手順は、オブジェクト・クラスの第2のセットにおけるオブジェクトのヌル・オブジェクト・ポインタがアクセスされるときにはいつでもオブジェクト・ローディング命令が呼出されるように初期コンピュータ・プログラムを改訂するようにしてもよい。
本発明のコンピュータ・システムでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
本発明のコンピュータ・システムでは、オリジナル命令によってアクセスされかつ更新されたオブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつオブジェクト記憶命令によって持続性記憶装置に記憶されたオブジェクトは、第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み;オリジナル命令は、オブジェクト・クラスの第1のセットにおけるオブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み;補足命令は:オブジェクト・クラスの第2のセットに、オブジェクト・クラスの第2のセットにおけるオブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるようにオブジェクト・クラスの第2のセットに関連付けられたデータ構造を改訂する補足オブジェクト定義命令を更に含むようにしてもよい。
纏めると、本発明は、主メモリに記憶されたオブジェクトをアクセスするコンパイルされたプログラムを、持続的に記憶されたオブジェクトをアクセスしかつ更新するプログラムの中に自動的に変換するシステム及び方法である。初期コンピュータ・プログラムは、少なくとも第1のオブジェクト・クラスにおけるオブジェクトをアクセスしかつ更新するための原始命令(original instructions) を含む。原始命令は、コンピュータの主メモリのオブジェクトをアクセスしかつ更新する。本発明のシステム及び方法は、オブジェクト・ローディングド命令及びオブジェクト記憶命令を原始命令に追加することによって改訂版コンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂する。
改訂版コンピュータ・プログラムの実行中、オブジェクト・ローディング命令は、オブジェクトが初めてアクセスされるときに持続的に記憶されたオブジェクトの一つのコピーをコンピュータの主メモリの対応オブジェクトの中にロードする。オブジェクト記憶命令は、トランザクションの終了のような、所定の事象の発生により新しいかまたは変更されたデータを含むコンピュータの主メモリのオブジェクトを対応している持続的に記憶されたオブジェクトの中にコピーする。
本発明のシステム及び方法は、改訂版コンピュータ・プログラムの実行中に、新しい及び/又は更新されたデータを含むコンピュータの主メモリのオブジェクトを追跡する、ダーティ・オブジェクト・マーキング命令を原始命令に追加することによって改訂版コンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを更に改訂する。オブジェクト記憶命令は、新しい及び/又は更新されたデータを含むコンピュータの主メモリのオブジェクトのそれらだけをコピーする。
本発明のシステム及び方法は、改訂版コンピュータ・プログラムの実行中に、新しい及び/又は更新されたデータを含むコンピュータの主メモリのオブジェクトを追跡する、ダーティ・オブジェクト・マーキング命令を原始命令に追加することによって改訂版コンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを更に改訂する。オブジェクト記憶命令は、新しい及び/又は更新されたデータを含むコンピュータの主メモリのオブジェクトのそれらだけをコピーする。
本発明の方法は、持続的に記憶されたオブジェクトをアクセスしかつ更新するオブジェクト指向型コンピュータ・プログラムを生成する方法であって:コンピュータの主メモリに記憶されたオブジェクトをアクセスしかつ更新するオリジナル命令を含む初期コンピュータ・プログラムを受け取り;改訂されたコンピュータ・プログラムの実行中に、各対応オブジェクトが最初にアクセスされるときにオブジェクトの対応するもの持続性記憶装置から主メモリの中にロードする、オブジェクト・ローディング命令を追加し;かつ改訂されたコンピュータ・プログラムの実行中に、所定事象の発生によりコンピュータの主メモリのオブジェクトの対応するものを持続性記憶装置の中に記憶するオブジェクト記憶命令を追加することによって:改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂する段階を具備するので、実際の持続的記憶データからデータを読取りかつそれに書くための機構でそれら自体を考慮することなく、それらが主メモリにおけるデータベース・オブジェクトを単に処理することであっても、プログラマがオブジェクト指向型データベース使用プログラムを書くことができ、かつ適時に、データベースからメモリのオブジェクトの中にデータをコピーしかつメモリのオブジェクトからデータの中に新しくかつ変更されたデータをコピーするために必要な追加のコードを自動的に挿入するようにコンパイルされたオブジェクト指向型データベース・プログラムを後処理することができる。
本発明のメモリは、データ処理システム上で実行されるプログラムによるアクセスに対するデータを記憶するためのメモリであって:コンピュータの主メモリに記憶されたオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む初期コンピュータ・プログラムを変更するためのポストプロセッサ手順を備え;ポストプロセッサ手順は、初期コンピュータ・プログラムに補足命令を追加することによって改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂する命令を含み、補足命令は:改訂されたコンピュータ・プログラムの実行中に、各対応オブジェクトが最初にアクセスされるときにオブジェクトの対応するものを持続性記憶装置から主メモリの中にロードするオブジェクト・ローディング命令;及び改訂されたコンピュータ・プログラムの実行中に、所定の事象の発生によりコンピュータの主メモリのオブジェクトの対応するものを持続性記憶装置の中に記憶するオブジェクト記憶命令を含んでいるので、実際の持続的記憶データからデータを読取りかつそれに書くための機構でそれら自体を考慮することなく、それらが主メモリにおけるデータベース・オブジェクトを単に処理することであっても、プログラマがオブジェクト指向型データベース使用プログラムを書くことができ、かつ適時に、データベースからメモリのオブジェクトの中にデータをコピーしかつメモリのオブジェクトからデータの中に新しくかつ変更されたデータをコピーするために必要な追加のコードを自動的に挿入するようにコンパイルされたオブジェクト指向型データベース・プログラムを後処理することができる。
本発明のコンピュータ・システムは、オブジェクトを記憶するための主メモリを含んでいる、メモリを備え;メモリは、初期コンピュータ・プログラム、改訂されたコンピュータ・プログラム及び、主メモリに記憶されたオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む初期コンピュータ・プログラムを変更するためのポストプロセッサ手順を更に記憶しており;ポストプロセッサ手順は、初期コンピュータ・プログラムに補足命令を追加することによって改訂されたコンピュータ・プログラムを生成すべく初期コンピュータ・プログラムを自動的に改訂するための命令を含んでおり、補足命令は:改訂されたコンピュータ・プログラムの実行中に、各対応オブジェクトが最初にアクセスされるときにオブジェクトの対応するものを持続性記憶装置から主メモリの中にロードするオブジェクト・ローディング命令;及び改訂されたコンピュータ・プログラムの実行中に、所定の事象の発生によりコンピュータの主メモリのオブジェクトの対応するものを持続性記憶装置の中に記憶するオブジェクト記憶命令を含むので、実際の持続的記憶データからデータを読取りかつそれに書くための機構でそれら自体を考慮することなく、それらが主メモリにおけるデータベース・オブジェクトを単に処理することであっても、プログラマがオブジェクト指向型データベース使用プログラムを書くことができ、かつ適時に、データベースからメモリのオブジェクトの中にデータをコピーしかつメモリのオブジェクトからデータの中に新しくかつ変更されたデータをコピーするために必要な追加のコードを自動的に挿入するようにコンパイルされたオブジェクト指向型データベース・プログラムを後処理することができる。
本発明の更なるオブジェクト及び特徴は、図面を参照することにより以下の詳細の説明及び添付した特許請求の範囲からより容易に明らかであろう。
この文書の目的に対して、用語“データベース使用プログラム”及び“データベース利用プログラム”は、持続的に記憶されたデータベースまたは持続的に記憶されたファイルに記憶されたデータをアクセスするあらゆるプログラムを意味する。
好ましい実施例では、データベース使用プログラムの著者は、用いられるデータベース全体が主メモリに記憶されていても、プログラムを書く。データベース使用プログラムのソース・コードは、従って、現行トランザクションが処理されるならばデータベースに書き戻されることが結果として必要である新しい及び/又は更新されたデータを含む主メモリのオブジェクトを追跡するために、かつ新しいまたは変更されたデータを有するオブジェクトをデータベースに書き戻すために、オブジェクトが持続的に記憶されたデータベースから主メモリにコピーされるべきときを決定するために必要な全てのプログラム・コードが不要である。
結果として、ソース・コード・プログラムは、データベースと主メモリの間で前後に情報を転送するために必要な全てのコードを含んだソース・コード・プログラムよりも読取りかつ改訂することが容易である。
好ましい実施例では、データベース使用プログラムの著者は、用いられるデータベース全体が主メモリに記憶されていても、プログラムを書く。データベース使用プログラムのソース・コードは、従って、現行トランザクションが処理されるならばデータベースに書き戻されることが結果として必要である新しい及び/又は更新されたデータを含む主メモリのオブジェクトを追跡するために、かつ新しいまたは変更されたデータを有するオブジェクトをデータベースに書き戻すために、オブジェクトが持続的に記憶されたデータベースから主メモリにコピーされるべきときを決定するために必要な全てのプログラム・コードが不要である。
結果として、ソース・コード・プログラムは、データベースと主メモリの間で前後に情報を転送するために必要な全てのコードを含んだソース・コード・プログラムよりも読取りかつ改訂することが容易である。
好ましい実施例では、データベース利用プログラムのソース・コードは、サン・マイクロシステムズ(Sun Microsystems,Inc.)によって市販された“マシン・プラットフォーム独立”プログラミング言語である、Java(登録商標)(ジャワ)プログラミング言語に書き込まれる。データベース利用プログラムのソース・コード200(図2及び図3参照)は、通常のJava(登録商標)コンパイラ202を用いてJava(登録商標)バイトコード・プログラム204の中にコンパイルされ、それにより、多数のオブジェクト・クラスを一般に含むバイトコード・ファイルを生成する。
Java(登録商標)バイトコード・プログラムは、バーチャル・マシン(仮想計算機)を形成するバイトコード・プログラム・インタープリタ176に関して実行される。Java(登録商標)バイトコード・プログラムは、Java(登録商標)バイトコード・プログラム・インタープリタがコンピュータ上に存在する限り、コンピュータのオペレーティング・システム及びコンピュータ・ハードウェア・プラットフォームに係わりなく、それらがあらゆるコンピュータ上で実行されうるように設計される。
Java(登録商標)バイトコード・プログラムは、バーチャル・マシン(仮想計算機)を形成するバイトコード・プログラム・インタープリタ176に関して実行される。Java(登録商標)バイトコード・プログラムは、Java(登録商標)バイトコード・プログラム・インタープリタがコンピュータ上に存在する限り、コンピュータのオペレーティング・システム及びコンピュータ・ハードウェア・プラットフォームに係わりなく、それらがあらゆるコンピュータ上で実行されうるように設計される。
しかしながら、データベース利用プログラムの初期のコンパイルされたバイトコード・プログラム版は、データベースが持続的記憶に実際に記憶されるのに対して、用いられるデータベース全体が主メモリに記憶されるという誤った想定(false assumption)に基づいてそれが書き込まれていたので、真に機能的なプログラムではない。本発明によれば、データベース利用プログラムの初期のコンパイルされたバイトコード・プログラム版は、コンパイルされたプログラムのオブジェクト・クラスを変更する“ポストプロセッサ”プログラム206によって改訂される。ポストプロセッサ206は、オブジェクト・ポインタを管理しかつ持続的に記憶されたデータベースに記憶されることが必要な“ダーティ”オブジェクトを追跡するために必要な追加情報の記憶を可能にすべく持続的に記憶されたオブジェクトのコピーを主メモリに記憶するために用いられるオブジェクト・クラスのオブジェクト・データ構造を変更する。また、ポストプロセッサは、オブジェクトが持続的に記憶されたデータベースから主メモリにコピーされるべきときを決定し、データベースから主メモリにオブジェクトをコピーし、現行トランザクションが処理されるならばデータベースへ書き戻されることが結果として必要な新しいまたは変更されたデータを含む主メモリのオブジェクトを追跡し、新しいまたは変更されたデータを有するオブジェクトをデータベースに書き戻すための追加命令を加えることによってコンパイルされたプログラムのオブジェクト・クラスの方法を変更する。
図1を参照すると、データ使用プログラムの動作に関連付けられた1次データ構造のあるものが示されている。この説明の目的に対して、本発明を用いているコンピュータ・システム100は、高速ランダム・アクセス・メモリから一般に構成されている、主メモリ102と、装置がパワー・オフされるときでさえもその中に記憶された情報を保持する一般に磁気ディスク記憶または他の記憶装置である、持続性データ記憶104(2次メモリとも呼ばれる)を含むということを想定する。
持続性データ記憶104は、この場合には、多数のオブジェクト108を記憶するオブジェクト指向型データベースであると想定される、データベース106を記憶する。記憶されたオブジェクト108の全てまたはほとんどは、データベースにおけるオブジェクトの他のものへのポインタを含む。更に、データベース106は、一般に、データベースに記憶されたデータへの全てのアクセスを管理するデータベース管理システム(DBMS)110の一部であり、データベースへのアクセスが、SQLの種々の版に含まれたそれらのようなよく定義された指令を用いて実行されることを一般的に必要とする。この説明の目的に対して、DBMS110及びデータベース106は、本発明によって変更されないということが想定される。
好ましい実施例では、ランタイム・システム112は、データを主メモリ102に記憶する、プログラムの実行を制御する。ランタイム・システム112によて実行されるプログラムは、オブジェクト指向型プログラムであるとこのアプリケーションの目的に対して想定され、従って、オブジェクト114の形でデータを主メモリに記憶する傾向がある。主メモリ102に記憶された、オブジェクト114−3のような、オブジェクトのあるものは、それらが持続性記憶装置104に決して記憶されずそれゆえにそれらを生成した処理よりも長くは存在しないので、“トランジエント(一時)”オブジェクトと呼ばれる。オブジェクト114−1及び114−2のような、他のオブジェクトは、(A)それらのオブジェクトのコピーが持続性記憶装置104に記憶されか、または(B)それらを生成したトランザクションが成功裏に終了したならばこれらのオブジェクトが持続性記憶装置104における記憶に対して構成されるので、“持続性”オブジェクトと呼ばれる。
持続性データ記憶104は、この場合には、多数のオブジェクト108を記憶するオブジェクト指向型データベースであると想定される、データベース106を記憶する。記憶されたオブジェクト108の全てまたはほとんどは、データベースにおけるオブジェクトの他のものへのポインタを含む。更に、データベース106は、一般に、データベースに記憶されたデータへの全てのアクセスを管理するデータベース管理システム(DBMS)110の一部であり、データベースへのアクセスが、SQLの種々の版に含まれたそれらのようなよく定義された指令を用いて実行されることを一般的に必要とする。この説明の目的に対して、DBMS110及びデータベース106は、本発明によって変更されないということが想定される。
好ましい実施例では、ランタイム・システム112は、データを主メモリ102に記憶する、プログラムの実行を制御する。ランタイム・システム112によて実行されるプログラムは、オブジェクト指向型プログラムであるとこのアプリケーションの目的に対して想定され、従って、オブジェクト114の形でデータを主メモリに記憶する傾向がある。主メモリ102に記憶された、オブジェクト114−3のような、オブジェクトのあるものは、それらが持続性記憶装置104に決して記憶されずそれゆえにそれらを生成した処理よりも長くは存在しないので、“トランジエント(一時)”オブジェクトと呼ばれる。オブジェクト114−1及び114−2のような、他のオブジェクトは、(A)それらのオブジェクトのコピーが持続性記憶装置104に記憶されか、または(B)それらを生成したトランザクションが成功裏に終了したならばこれらのオブジェクトが持続性記憶装置104における記憶に対して構成されるので、“持続性”オブジェクトと呼ばれる。
本発明は、一組のオブジェクト記憶基準の充足(例えば、第1のセットの定義された事象のあるものの発生)によりオブジェクト・データが持続性記憶装置媒体に記憶され、かつ一組のオブジェクト検索基準の充足(例えば、第2のセットの定義された事象のあるものの発生)によりオブジェクト・データが持続性記憶装置媒体から検索されるようなあらゆるシステムに適用可能であるということが理解されるべきである。
図1に示すように、好ましい実施例では、持続性オブジェクトは、持続性データ記述子122へのポインタ120を含む。好ましい実施例では、持続性データ記述子122は、A)フル・オブジェクト識別子(OID)124または持続性記憶装置のオブジェクトのアドレス、B)オブジェクトが“ダーティ”オブジェクトのリストに含まれるならば用いられるリスト・ポインタ126、及びC)フル・オブジェクト識別子(OID)128または別のオブジェクトに対するオブジェクトの各レファレンス130のアドレスを含む。メモリ使用を最小化するために、持続性オブジェクトだけが持続性データ記述子122を含む。
図1に示すように、好ましい実施例では、持続性オブジェクトは、持続性データ記述子122へのポインタ120を含む。好ましい実施例では、持続性データ記述子122は、A)フル・オブジェクト識別子(OID)124または持続性記憶装置のオブジェクトのアドレス、B)オブジェクトが“ダーティ”オブジェクトのリストに含まれるならば用いられるリスト・ポインタ126、及びC)フル・オブジェクト識別子(OID)128または別のオブジェクトに対するオブジェクトの各レファレンス130のアドレスを含む。メモリ使用を最小化するために、持続性オブジェクトだけが持続性データ記述子122を含む。
明瞭のために、好ましい実施例では、オブジェクトがDBMS110から(即ち、持続性記憶装置104から)主メモリ102にコピーされるときに、コピーされたオブジェクトの全てのオブジェクト・レファレンスは、DBMSオブジェクト識別子(OIDs)とここで呼ばれる64−ビット以上のオブジェクト・アドレスであるということに注目すべきである。それらOIDsは、持続性データ記述子122に記憶され、かつ主メモリ・オブジェクト・コピー114のオブジェクト・レファレンス・フィールド130は、(A)参照されたオブジェクトが主メモリ102に存在しないならばヌル・ポインタ値で、または(B)参照されたオブジェクトが主メモリにあるならば主メモリの参照されたオブジェクトのコピーへの主メモリ・オブジェクト・ポインタで置換される。代替実施例ではOIDsは、データベースからコピーされたオブジェクトに関連付けられた固有の1次キー値で構成されうる。
好ましい実施例では、持続性オブジェクトに対する各オブジェクト・クラスは、また、一時オブジェクトを維持する。一時オブジェクトは、同じオブジェクト・クラスの持続性オブジェクトと同じデータ構造を有するが、ヌル持続性データ記述子ポインタ120を有する。同じオブジェクト・クラスの一時及び持続性オブジェクトの両方を支持する一つの理由は、一時オブジェクトのデータが持続性記憶装置104に記憶される必要が決してなくても、種々の計算中の使用のためにオブジェクト並びに持続性オブジェクトと同じ型の中間または一時“ワーキング”オブジェクトの一時的コピーを作ることがしばしば都合がよいということである。
ある一定のオブジェクト・クラスが持続性オブジェクトに対してだけ用いられるような本発明のインプリメンテーションでは、それらオブジェクト・クラス定義は、持続性データ記述子ポインタ120を除去しかつ、その代わりに、主オブジェクト定義の一部として持続性データ記述子122自体を含むべく改訂されうる。
ある一定のオブジェクト・クラスが持続性オブジェクトに対してだけ用いられるような本発明のインプリメンテーションでは、それらオブジェクト・クラス定義は、持続性データ記述子ポインタ120を除去しかつ、その代わりに、主オブジェクト定義の一部として持続性データ記述子122自体を含むべく改訂されうる。
主メモリに記憶されたオブジェクト114を追跡すべく二つの追加データ構造が好ましい実施例において用いられる。まず、ハッシュ・テーブル140は、主メモリに記憶されかつDBMS OIDsを主メモリ・オブジェクト・ポインタの中にマップするために用いられる。オブジェクトがDBMSから主メモリにコピーされるときにはいつでも、対応エントリは、オブジェクトのOID並びにその主メモリ・オブジェクト・ポインタを示すハッシュ・テーブルに追加される。
ハッシュ・テーブル140のあらゆるオブジェクトのフルDBMS OIDを探索(ルック・アップ)するとき、対応エントリがハッシュ・テーブル140に見出されないならば、オブジェクトは、主メモリにまだコピーされていない。他方、対応エントリがハッシュ・テーブルに見出されるならば、そのエントリのオブジェクト・ポインタは、主メモリのオブジェクトをポイントする(指し示す)。
ハッシュ・テーブル140のあらゆるオブジェクトのフルDBMS OIDを探索(ルック・アップ)するとき、対応エントリがハッシュ・テーブル140に見出されないならば、オブジェクトは、主メモリにまだコピーされていない。他方、対応エントリがハッシュ・テーブルに見出されるならば、そのエントリのオブジェクト・ポインタは、主メモリのオブジェクトをポイントする(指し示す)。
第2に、リスト・ヘッダ142は、持続性記憶装置にコピー・バックされることが必要であるオブジェクトのリンクされたリストをポイントする。それらが主メモリに書き戻されることが必要であるキャッシュ・メモリ(“ダーティ”キャッシュ回線と呼ばれる)における変更されたデータのようなものなので、これらのオブジェクトは、“ダーティ”オブジェクトと呼ばれる。リンクされたリストは、リスト・ヘッダ142のポインタ、プラス、ダーティ・オブジェクトの持続性データ記述子122における一連のポインタ126によって形成される。ダーティ・オブジェクト・リストが空ならば、リスト・ヘッダ142は、ヌル・ポインタを含む。ダーティ・オブジェクトが空でないとき、リスト・ヘッダ142は、ダーティ・オブジェクト・リストに追加されるべき最終オブジェクト(last object) をポイントし、順次、ダーティ・オブジェクト・リストに追加されるべき最終オブジェクトの次のものをポイントする、等。ダーティ・オブジェクト・リストに追加されるべき最初の項目であった、ダーティ・オブジェクト・リストの最終項目は、その次のポインタ・フィールド126にヌル・ポインタを有する。
“新しいオブジェクト”がダーティ・オブジェクト・リストに追加されることが必要であるときに、実行されるべき一連の段階は:(A)リスト・ヘッダ142のオブジェクト・ポインタを新しいオブジェクトの次のダーティ・オブジェクト・ポインタ・フィールド126の中にコピーし、かつ(B)新しいオブジェクトへのポインタをリスト・ヘッダ142に記憶することである。
好ましい実施例で成された別の組の想定は、データベース・オブジェクトが有限トランザクションのコンテキストで用いられ、かつ各トランザクションが、“スタート・トランザクション(start transaction) ”によって一般に規定された、明確に規定された始まり、及びトランザクションの結果がデータベースに永続的(恒久的)に記憶されるべきであるならば“コミット・トランザクション(commit transaction)”によって及びトランザクションの結果が放棄されるべきであるならば“アボート・トランザクション(abort transaction) ”によって一般に規定された、明確に規定された終りを有する。るということである。更に、各トランザクションの実行中に、ランタイム・システム112は、主メモリにコピーされた全てのデータベース・オブジェクト上に読み取りロック(read lock) を要求しなければならず、更に、その内容がランタイム・システム112により実行されるプログラムによって変更される全てのデータベース・オブジェクト上に書込みロック(write lock)を要求しなければならないということが想定される。
好ましい実施例で成された別の組の想定は、データベース・オブジェクトが有限トランザクションのコンテキストで用いられ、かつ各トランザクションが、“スタート・トランザクション(start transaction) ”によって一般に規定された、明確に規定された始まり、及びトランザクションの結果がデータベースに永続的(恒久的)に記憶されるべきであるならば“コミット・トランザクション(commit transaction)”によって及びトランザクションの結果が放棄されるべきであるならば“アボート・トランザクション(abort transaction) ”によって一般に規定された、明確に規定された終りを有する。るということである。更に、各トランザクションの実行中に、ランタイム・システム112は、主メモリにコピーされた全てのデータベース・オブジェクト上に読み取りロック(read lock) を要求しなければならず、更に、その内容がランタイム・システム112により実行されるプログラムによって変更される全てのデータベース・オブジェクト上に書込みロック(write lock)を要求しなければならないということが想定される。
より特定的に、データ利用プログラムのソース・コードを準備しているプログラマは、各トランザクションの開始におけるデータベース(Database)・オブジェクト・クラスのスタート・トランザクション(StartTransaction)方法を呼出すために
Invoke Database.StartTransaction
に等しいソース・コードにステートメントを含まなければならない。同様にプログラマは、各成功裏に終了したトランザクションの終結(conclusion)におけるデータベース(Database)・オブジェクト・クラスのエンド・トランザクション(EndTransaction)方法を呼出すために
Invoke Database.EndTransaction
に等しいソース・コードにステートメントを含まなければならず、かつ各非成功裏に終了したトランザクションの開始におけるデータベース(Database)・オブジェクト・クラスのアボート・トランザクション(AbortTransaction)方法を呼出すために
InvokeDatabase.AbortTransaction
に等しいソース・コードにステートメントを含まなければならない。
Invoke Database.StartTransaction
に等しいソース・コードにステートメントを含まなければならない。同様にプログラマは、各成功裏に終了したトランザクションの終結(conclusion)におけるデータベース(Database)・オブジェクト・クラスのエンド・トランザクション(EndTransaction)方法を呼出すために
Invoke Database.EndTransaction
に等しいソース・コードにステートメントを含まなければならず、かつ各非成功裏に終了したトランザクションの開始におけるデータベース(Database)・オブジェクト・クラスのアボート・トランザクション(AbortTransaction)方法を呼出すために
InvokeDatabase.AbortTransaction
に等しいソース・コードにステートメントを含まなければならない。
スタート・トランザクション(StartTransaction)、エンド・トランザクション(EndTransaction)、アボート・トランザクション(AbortTransaction)方法は、図4に関連して以下により詳細に説明される。
ランタイム・システムが動作するような“明確に規定されたトランザクション”コンテキストにより、各トランザクションの終結で、主メモリに記憶された一組のオブジェクトは、好ましくはそのPDDの各オブジェクトのOIDをヌル・アウトすることによって、通常、無効にされる。更に、ハッシュ・テーブル140の内容は、クリアされ、かつヌル・ポインタは、ダーティ・リスト・ヘッダ142に記憶され、それにより、実行されるプログラマがこれらのオブジェクトのいずれかに対する追加ポインタを生成しない限りガーベッジ・コレクションに対して主メモリのオブジェクトを準備する。しかしながら、全てのそのようなオブジェクトが無効でありかつ使用不可能であると考えられるべきなので、適切に書かれたプログラマは、トランザクションが終了した後に主メモリのあらゆるオブジェクトへのポインタを維持すべきでない。
ランタイム・システムが動作するような“明確に規定されたトランザクション”コンテキストにより、各トランザクションの終結で、主メモリに記憶された一組のオブジェクトは、好ましくはそのPDDの各オブジェクトのOIDをヌル・アウトすることによって、通常、無効にされる。更に、ハッシュ・テーブル140の内容は、クリアされ、かつヌル・ポインタは、ダーティ・リスト・ヘッダ142に記憶され、それにより、実行されるプログラマがこれらのオブジェクトのいずれかに対する追加ポインタを生成しない限りガーベッジ・コレクションに対して主メモリのオブジェクトを準備する。しかしながら、全てのそのようなオブジェクトが無効でありかつ使用不可能であると考えられるべきなので、適切に書かれたプログラマは、トランザクションが終了した後に主メモリのあらゆるオブジェクトへのポインタを維持すべきでない。
通常、主メモリに記憶された全てまたはほとんどのトランジエント・オブジェクトは、主メモリに記憶された持続性オブジェクトによって、直接的または間接的に、参照されるということに注目する。主メモリの全ての持続性オブジェクトを無効にしかつ全てのそのような持続性オブジェクトを到達不可能にすることによって、また、主メモリのトランジエント・オブジェクトは、通常、到達不可能になりそれゆえにガーベッジ・コレクションの準備ができる。
代替実施例では、使用不可能なオブジェクトを削除するためにガーベック・コレクションを用いないシステムにおけるように、主メモリのオブジェクトは、明示的に削除されかつ割当てを解除されうる。
コンピュータ・システム構成
図2を参照すると、好ましい実施例では、本発明の好ましい実施例を組み込んでいるコンピュータ・システム100は、一般に、スタンド・アロン・コンピュータ、またはネットワーク型コンピュータのシステムのクライアント・コンピュータ150またはサーバ・コンピュータ152のいずれかである。本説明の目的のために、本発明の好ましい実施例は、クライアント・コンピュータ150上に埋め込まれるものと想定する。クライアント・コンピュータ150は、中央処理装置(CPU)160、ユーザ・インターフェイス162、及び通信ネットワーク166を介する他のコンピュータとの通信のための通信インターフェイス164を含む。
代替実施例では、使用不可能なオブジェクトを削除するためにガーベック・コレクションを用いないシステムにおけるように、主メモリのオブジェクトは、明示的に削除されかつ割当てを解除されうる。
コンピュータ・システム構成
図2を参照すると、好ましい実施例では、本発明の好ましい実施例を組み込んでいるコンピュータ・システム100は、一般に、スタンド・アロン・コンピュータ、またはネットワーク型コンピュータのシステムのクライアント・コンピュータ150またはサーバ・コンピュータ152のいずれかである。本説明の目的のために、本発明の好ましい実施例は、クライアント・コンピュータ150上に埋め込まれるものと想定する。クライアント・コンピュータ150は、中央処理装置(CPU)160、ユーザ・インターフェイス162、及び通信ネットワーク166を介する他のコンピュータとの通信のための通信インターフェイス164を含む。
主メモリ102及び持続性記憶装置104の両方を含む、メモリ102/104は、
・ オペレーティング・システム170;
・ インターネット通信マネージャ・プログラム172;
・ 指定されたプログラムがある所定の完全性基準を満足するか否かを検証するJava(登録商標)バイトコード・プログラム・ベリファイヤ174;
・ アプリケーション・プログラムを実行するJava(登録商標)バイトコード・プログラム・インタープリタ176;
・ オブジェクト・クラスをユーザのアドレス空間の中にロードし、かつ各ロードされたオブジェクト・クラスに関連付けられた方法の完全性を検証するためにバイコード・プログラム・ベリファイヤを用いる、クラス・ローダ178;
・ 使用中及び/又はコンピュータ102のユーザの使用のために入手可能なオブジェクト・クラス182、184、186を局所的に記憶するための、少なくとも一つのクラス・リポジトリ180;
・ オブジェクト・リポジトリ182に記憶されたオブジェクト・クラスのオブジェクトの例である、オブジェクト192、194を記憶するための少なくとも一つのオブジェクト・リポジトリ190;
・ DBMSデータベース110/106に記憶されたオブジェクトに対応する主メモリに記憶されたオブジェクトを追跡するための、オブジェクト・ハッシュ・テーブル140;及び
・ ダーティ・オブジェクト・リスト・ヘッダ142
を記憶する。
・ オペレーティング・システム170;
・ インターネット通信マネージャ・プログラム172;
・ 指定されたプログラムがある所定の完全性基準を満足するか否かを検証するJava(登録商標)バイトコード・プログラム・ベリファイヤ174;
・ アプリケーション・プログラムを実行するJava(登録商標)バイトコード・プログラム・インタープリタ176;
・ オブジェクト・クラスをユーザのアドレス空間の中にロードし、かつ各ロードされたオブジェクト・クラスに関連付けられた方法の完全性を検証するためにバイコード・プログラム・ベリファイヤを用いる、クラス・ローダ178;
・ 使用中及び/又はコンピュータ102のユーザの使用のために入手可能なオブジェクト・クラス182、184、186を局所的に記憶するための、少なくとも一つのクラス・リポジトリ180;
・ オブジェクト・リポジトリ182に記憶されたオブジェクト・クラスのオブジェクトの例である、オブジェクト192、194を記憶するための少なくとも一つのオブジェクト・リポジトリ190;
・ DBMSデータベース110/106に記憶されたオブジェクトに対応する主メモリに記憶されたオブジェクトを追跡するための、オブジェクト・ハッシュ・テーブル140;及び
・ ダーティ・オブジェクト・リスト・ヘッダ142
を記憶する。
また、メモリ102/104に記憶されるものは、
・ ソース・コード・データベース利用プログラム200;
・ Java(登録商標)プログラム・コンパイラ202;
・ ソース・コード・プログラム200からコンパイラ202によって生成された初期コンパイルド・プログラム204;
・ 好ましい実施例のポストプロセッサ手順206;及び
・ ポストプロセッサ手順206によって生成された変更プログラム208
である。
しかしながら、ソース・コード200、コンパイラ202、初期コンパイルド・プログラム204、及びポストプロセッサ手順206は、変更プログラム208の実行中に通常、主メモリ102に記憶されないということが理解されるべきである。
・ ソース・コード・データベース利用プログラム200;
・ Java(登録商標)プログラム・コンパイラ202;
・ ソース・コード・プログラム200からコンパイラ202によって生成された初期コンパイルド・プログラム204;
・ 好ましい実施例のポストプロセッサ手順206;及び
・ ポストプロセッサ手順206によって生成された変更プログラム208
である。
しかしながら、ソース・コード200、コンパイラ202、初期コンパイルド・プログラム204、及びポストプロセッサ手順206は、変更プログラム208の実行中に通常、主メモリ102に記憶されないということが理解されるべきである。
好ましい実施例ではオペレーティング・システム170は、各規定アドレス空間内の実行の多重スレッドを支持するオブジェクト指向型マルチタスキング・オペレーティング・システムである。オペレーティング・システムは、解放されたデータ構造に関連付けられたメモリ空間を回復するためにガーベッジ・コレクタ手順を更に用いる。ガーベッジ・コレクタ手順は、周期ごと(periodic basis)に自動的に実行され、かつ割り当てに利用可能なメモリの量がしきいレベル以下になるような更なるときにおいて自動的に呼出される。
図3を参照すると、好ましい実施例のシステム及び方法は、初期の、ソース・コード、Java(登録商標)言語データベース利用プログラム200を受け取る。この初期ソース・コード・プログラムは、Java(登録商標)バイトコード・プログラム204を生成すべく通常のJava(登録商標)コンパイラ202によってコンパイルされる。しかしながら、Java(登録商標)バイトコード・プログラムは、プログラムによって用いられるデータベースは、持続性記憶装置に実際に記憶されるのに対して、用いられるデータベース全体が主メモリに記憶されるという誤想定(false assumption)にそのコードが基づくので、真に機能的なプログラムではない。
図3を参照すると、好ましい実施例のシステム及び方法は、初期の、ソース・コード、Java(登録商標)言語データベース利用プログラム200を受け取る。この初期ソース・コード・プログラムは、Java(登録商標)バイトコード・プログラム204を生成すべく通常のJava(登録商標)コンパイラ202によってコンパイルされる。しかしながら、Java(登録商標)バイトコード・プログラムは、プログラムによって用いられるデータベースは、持続性記憶装置に実際に記憶されるのに対して、用いられるデータベース全体が主メモリに記憶されるという誤想定(false assumption)にそのコードが基づくので、真に機能的なプログラムではない。
データベース利用プログラム204の初期の、コンパイルされたバイトコード・プログラム版は、コンパイルされたプログラムのオブジェクト・クラスを変更する“ポストプロセッサ”206によって次に改訂され、それにより変更されたJava(登録商標)バイトコード・プログラム208を生成する。ポストプロセッサ206は、オブジェクト・ポインタを管理しかつ持続的に記憶されたデータベースに記憶されることが必要な“ダーティ”オブジェクトを追跡するために必要な更なる情報の記憶を可能にするために持続的に記憶されたオブジェクトのコピーを主メモリに記憶するために用いられるオブジェクト・クラスのオブジェクト・データ構造を変更する。ポストプロセッサ206は、また、オブジェクトが持続的に記憶されあデータベースから主メモリにコピーされるべきときを決定し、オブジェクトをデータベースから主メモリにコピーし、現行トランザクションが処理されるならばデータベースに書き戻されることが結果としてに必要な新しいまたは変更されたデータを含む主メモリのオブジェクトを追跡し、かつ新しいまたは変更されたデータを有するオブジェクトをデータベースに書き戻すために更なる命令を追加することによってコンパイルされたプログラムのオブジェクト・クラスの方法を変更する。
変更されたプログラム208は、以下に詳述する、一つ以上の所定のオブジェクト・クラス182の方法への方法呼出しを含む。しかしながら、一般的に、変更されたプログラムによって用いられる所定のオブジェクト・クラスの方法は、持続性オブジェクトで用いられる持続性データ記述子構造122(図1参照)で作動することが必要な方法であり、かつデータベース106への及びそれからのデータベースの移動を処理するためである。
結果として得られる変更されたバイトコード・プログラム208の完全性は、バイトコード・プログラム・ベリファイヤ174によって検証され、そしてバイトコード・プログラム・インタープリタ176によって実行される。
図4を参照すると、好ましい実施例では、持続性オブジェクトで作動しかつデータベース106へ及びそれからのデータの移動を処理するために必要な全ての方法を含む、Database(データベース)オブジェクト・クラスと呼ばれる、所定のオブジェクト・クラスが存在する。Databaseオブジェクト・クラスは、二つの変数を含む:1)ダーティ・オブジェクト・リスト・ヘッダ142及び2)オブジェクト・ハッシュ・テーブル140。Databaseオブジェクト・クラスに含まれる方法は:
・ ユーザまたはプログラム指定基準に一致する一つ以上のデータベース・オブジェクトを要求し、かつ主メモリにそれらオブジェクトのコピーを生成する、Query(クェリー)方法220;
・ 指定されたデータベース・オブジェクトから主メモリのオブジェクトの中にデータをロードし、また、主メモリのそのオブジェクトに対する持続性データ記述子の生成をもたらす、LoadData方法222;LoadData方法は、また、対応しているDBMSオブジェクトに読み取りロックを要求しかつ取得し、かつ主メモリにロードされた各オブジェクトに対してハッシュ・テーブルにエントリを追加する;
・ 主メモリの指定オブジェクトをダーティ・オブジェクト・リストに追加する、ダーティ方法224としてのMarkObject;MarkObjectは、また、対応するDBMSオブジェクトに書込みロックを要求しかつ取得する;
・ ハッシュ・テーブル140のオブジェクトIDを検索するため並びにハッシュ・テーブル140における新しいエントリを記憶する場所を決定するためにデータベース・クェリー方法220及びロード・データ方法222によって用いられる、ハッシュ関数方法226;
・ しかしそれらがトランザクションの始めで既に初期化されていないならば、トランザクションの開始においてオブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を初期化するために用いられる、StartTransaction(スタート・トランザクション)方法228;
・ トランザクションが成功裏に終わる(即ち、処理する)ときに呼出され、かつダーティ・オブジェクト・リストの全てのオブジェクトをデータベース106にまずコピーしそしてオブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を再初期化するために用いられる、EndTransaction(エンド・トランザクション)方法230;
・ トランザクションが不成功裏に終わる(即ち、アボートする)ときに呼出され、かつオブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を再初期化するために用いられる、AbortTransaction(アボート・トランザクション)方法232;及び
・ オブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を初期化または再初期化し、かつそれにより主メモリに先に記憶された全ての持続性オブジェクトを使用不可能にするためにスタート、エンド及びアボード・トランザクション方法228、230、及び232によって呼出される、ハッシュ・テーブル及びダーティ・オブジェクト・リストを初期化する方法234。
結果として得られる変更されたバイトコード・プログラム208の完全性は、バイトコード・プログラム・ベリファイヤ174によって検証され、そしてバイトコード・プログラム・インタープリタ176によって実行される。
図4を参照すると、好ましい実施例では、持続性オブジェクトで作動しかつデータベース106へ及びそれからのデータの移動を処理するために必要な全ての方法を含む、Database(データベース)オブジェクト・クラスと呼ばれる、所定のオブジェクト・クラスが存在する。Databaseオブジェクト・クラスは、二つの変数を含む:1)ダーティ・オブジェクト・リスト・ヘッダ142及び2)オブジェクト・ハッシュ・テーブル140。Databaseオブジェクト・クラスに含まれる方法は:
・ ユーザまたはプログラム指定基準に一致する一つ以上のデータベース・オブジェクトを要求し、かつ主メモリにそれらオブジェクトのコピーを生成する、Query(クェリー)方法220;
・ 指定されたデータベース・オブジェクトから主メモリのオブジェクトの中にデータをロードし、また、主メモリのそのオブジェクトに対する持続性データ記述子の生成をもたらす、LoadData方法222;LoadData方法は、また、対応しているDBMSオブジェクトに読み取りロックを要求しかつ取得し、かつ主メモリにロードされた各オブジェクトに対してハッシュ・テーブルにエントリを追加する;
・ 主メモリの指定オブジェクトをダーティ・オブジェクト・リストに追加する、ダーティ方法224としてのMarkObject;MarkObjectは、また、対応するDBMSオブジェクトに書込みロックを要求しかつ取得する;
・ ハッシュ・テーブル140のオブジェクトIDを検索するため並びにハッシュ・テーブル140における新しいエントリを記憶する場所を決定するためにデータベース・クェリー方法220及びロード・データ方法222によって用いられる、ハッシュ関数方法226;
・ しかしそれらがトランザクションの始めで既に初期化されていないならば、トランザクションの開始においてオブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を初期化するために用いられる、StartTransaction(スタート・トランザクション)方法228;
・ トランザクションが成功裏に終わる(即ち、処理する)ときに呼出され、かつダーティ・オブジェクト・リストの全てのオブジェクトをデータベース106にまずコピーしそしてオブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を再初期化するために用いられる、EndTransaction(エンド・トランザクション)方法230;
・ トランザクションが不成功裏に終わる(即ち、アボートする)ときに呼出され、かつオブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を再初期化するために用いられる、AbortTransaction(アボート・トランザクション)方法232;及び
・ オブジェクト・ハッシュ・テーブル140及びダーティ・オブジェクト・リスト・ヘッダ142を初期化または再初期化し、かつそれにより主メモリに先に記憶された全ての持続性オブジェクトを使用不可能にするためにスタート、エンド及びアボード・トランザクション方法228、230、及び232によって呼出される、ハッシュ・テーブル及びダーティ・オブジェクト・リストを初期化する方法234。
Query、StarTransaction、EndTransaction及びAbortTransaction方法は、データベース・プログラマを書くときにプログラマによって用いられる。Databaseオブジェクト・クラスのLoadData、MarkDirty及びHashFunction方法は、ポストプロセッサ206によって生成された変更プログラマの命令によってのみ用いられる。
Query方法220が呼出されかつデータベースから一つ以上のオブジェクトのリターンを結果として生ずるときに、読出しロックは、全ての要求されたオブジェクト上で自動的に要求される。更に、データベースQuery方法220によってリターンされた全てのオブジェクトは、それぞれが持続性データ記述子122を有している持続性オブジェクトとして主メモリに表される。
Query方法220が呼出されかつデータベースから一つ以上のオブジェクトのリターンを結果として生ずるときに、読出しロックは、全ての要求されたオブジェクト上で自動的に要求される。更に、データベースQuery方法220によってリターンされた全てのオブジェクトは、それぞれが持続性データ記述子122を有している持続性オブジェクトとして主メモリに表される。
StartTransaction方法228は、(A)それらが既にクリアされていないならばハッシュ・テーブル140及びダーティ・リスト・ポインタ142をクリアし、かつ(B)DBMSの内部状態を適切に初期化するように“スタート・トランザクション”指令をDBMSに送る。
EndTransaction(エンド・トランザクション)方法230は、次のように作動する。成功裏のトランザクションの終りで、ダーティ・オブジェクト・リストの全てのオブジェクトは、持続性記憶装置にコピーされることが必要である。しかしならが、ダーティ・オブジェクトがDBMSにコピーされる前に、DBMSにコピーされるダーティ・オブジェクトのオブジェクト・ポインタによって参照された全てのトランジエント・オブジェクトは、持続性オブジェクトに変換され、かつDBMSにコピーされるべきダーティ・オブジェクトのリストに追加されなければならない。これは、DBMSオブジェクトにおいて未解決なポインタを有することを回避するために必要である。好ましい実施例では、持続性記憶装置にダーティ・オブジェクトの全てのオブジェクトをコピーするためのEndTransaction(エンド・トランザクション)方法は、ダーティ・オブジェクト・リストを通して二つのパスを実行する。第1のパスは、(A)他のトランジエント・オブジェクトを通して直接または間接的に、ダーティ・オブジェクト・リストのオブジェクトによって参照される全てのトランジエント・オブジェクトを位置決めし、(B)全てのそれらオブジェクトに対するデータベースOIDsを取得し、(C)全てのそれら参照されたトランジエント・オブジェクトを持続性オブジェクトに変換し、かつ(D)これらのオブジェクトに対するレファレンスをハッシュ・テーブル及びダーティ・オブジェクト・リストに追加するために用いられる。
EndTransaction(エンド・トランザクション)方法230は、次のように作動する。成功裏のトランザクションの終りで、ダーティ・オブジェクト・リストの全てのオブジェクトは、持続性記憶装置にコピーされることが必要である。しかしならが、ダーティ・オブジェクトがDBMSにコピーされる前に、DBMSにコピーされるダーティ・オブジェクトのオブジェクト・ポインタによって参照された全てのトランジエント・オブジェクトは、持続性オブジェクトに変換され、かつDBMSにコピーされるべきダーティ・オブジェクトのリストに追加されなければならない。これは、DBMSオブジェクトにおいて未解決なポインタを有することを回避するために必要である。好ましい実施例では、持続性記憶装置にダーティ・オブジェクトの全てのオブジェクトをコピーするためのEndTransaction(エンド・トランザクション)方法は、ダーティ・オブジェクト・リストを通して二つのパスを実行する。第1のパスは、(A)他のトランジエント・オブジェクトを通して直接または間接的に、ダーティ・オブジェクト・リストのオブジェクトによって参照される全てのトランジエント・オブジェクトを位置決めし、(B)全てのそれらオブジェクトに対するデータベースOIDsを取得し、(C)全てのそれら参照されたトランジエント・オブジェクトを持続性オブジェクトに変換し、かつ(D)これらのオブジェクトに対するレファレンスをハッシュ・テーブル及びダーティ・オブジェクト・リストに追加するために用いられる。
次いで、第2のパスではダーティ・オブジェクト・リストの各オブジェクトは、DBMSにコピーされ、DBMSにオブジェクトを送る前に各オブジェクトのローカル・オブジェクト・レファレンスをそれらの対応DBMS OIDsで置換する。次いで、“コミット・トランザクション(処理トランザクション)”指令がDBMSに送られ、DBMSオブジェクト上で先に取得した全ての読取りロックを解放させかつ全てのDBMSオブジェクト変更を永続的に記憶させる。
表1は、Database.EndTransaction(データベース.エンド・トランザクション)方法の擬似コード表現である。
表1は、Database.EndTransaction(データベース.エンド・トランザクション)方法の擬似コード表現である。
ポストプロセッサ手順
図4及び図5を参照すると、Database(データベース)オブジェクト・クラスのデータ構造及び方法は、コンパイルされたデータベース使用プログラマの中にポストプロセッサによって挿入されたコードにより用いられる。好ましい実施例におけるコンパイルされたデータベース使用プログラマをポストプロセッシングする処理は、次に示す通りである。
ポストプロセッシング手順は、コンパイルされたデータベース使用プログラマのオブジェクト・クラス定義を変更し、かつプログラマの第1の命令に対してポインタを設定することによって開始する(ステップ250)。
データベースまたは他の持続性記憶装置からコピーされたをデータ記憶するために用いられうるコンパイルされたデータベース使用プログラマの全てのオブジェクト・クラスは、持続性データ記述子に対するポインタを含むべく変更される。本発明のある実施例では、ポストプロセッサは、そのオブジェクトが持続性データを記憶するために用いられうる全てのオブジェクト・クラスのリストを受け取り、そのような場合にはそれらのオブジェクト・クラスだけが持続性データ記述子を含むべく検査されかつ変更される。
次に、初期にコンパイルされたデータベース使用プログラマの各ステートメントまたは命令は、ステートメントが、特別の処理を必要とする複数の命令型の一つであるかどうかを決定すべく検査される(ステップ254、258)。以下の説明では、コンパイルされたデータベース使用プログラマに追加された命令は、擬似コード・フォームで書かれる。この文書で用いられた擬似コードは、汎用コンピュータ言語規定を利用する。ここで採用された擬似コードは、この説明の目的のためにだけ開発され、この分野におけるあらゆるコンピュータ・プログラマによって容易に理解できるように設計されている。
図4及び図5を参照すると、Database(データベース)オブジェクト・クラスのデータ構造及び方法は、コンパイルされたデータベース使用プログラマの中にポストプロセッサによって挿入されたコードにより用いられる。好ましい実施例におけるコンパイルされたデータベース使用プログラマをポストプロセッシングする処理は、次に示す通りである。
ポストプロセッシング手順は、コンパイルされたデータベース使用プログラマのオブジェクト・クラス定義を変更し、かつプログラマの第1の命令に対してポインタを設定することによって開始する(ステップ250)。
データベースまたは他の持続性記憶装置からコピーされたをデータ記憶するために用いられうるコンパイルされたデータベース使用プログラマの全てのオブジェクト・クラスは、持続性データ記述子に対するポインタを含むべく変更される。本発明のある実施例では、ポストプロセッサは、そのオブジェクトが持続性データを記憶するために用いられうる全てのオブジェクト・クラスのリストを受け取り、そのような場合にはそれらのオブジェクト・クラスだけが持続性データ記述子を含むべく検査されかつ変更される。
次に、初期にコンパイルされたデータベース使用プログラマの各ステートメントまたは命令は、ステートメントが、特別の処理を必要とする複数の命令型の一つであるかどうかを決定すべく検査される(ステップ254、258)。以下の説明では、コンパイルされたデータベース使用プログラマに追加された命令は、擬似コード・フォームで書かれる。この文書で用いられた擬似コードは、汎用コンピュータ言語規定を利用する。ここで採用された擬似コードは、この説明の目的のためにだけ開発され、この分野におけるあらゆるコンピュータ・プログラマによって容易に理解できるように設計されている。
オブジェクトのオブジェクト・ポインタ・フィールド
を参照する“GetField(ゲット・フィールド)”命令
のために挿入されるコード
現行命令(即ち、ポストプロセッサ・ポインタによってポインタされたもの)がオブジェクトからオブジェクト・ポインタ・フィールドを読取るための命令であれば(Java(登録商標)バイトコード言語において“getfield(ゲット・フィールド)”命令と呼ばれる)(ステップ254)、表2に示した命令は、プログラマに追加される(ステップ256)。レファレンスの容易のために、表2において追加された命令は、番号が付されている。
を参照する“GetField(ゲット・フィールド)”命令
のために挿入されるコード
現行命令(即ち、ポストプロセッサ・ポインタによってポインタされたもの)がオブジェクトからオブジェクト・ポインタ・フィールドを読取るための命令であれば(Java(登録商標)バイトコード言語において“getfield(ゲット・フィールド)”命令と呼ばれる)(ステップ254)、表2に示した命令は、プログラマに追加される(ステップ256)。レファレンスの容易のために、表2において追加された命令は、番号が付されている。
追加された命令01は、参照されたオブジェクトに対するオブジェクト・ポインタがヌルであるか否かを単にテストする。オブジェクト・ポインタがヌルでないならば、ラベルS1へのジャンプ(命令02)が実行され、オリジナル・プログラムの実行が再開される。それゆえに、参照されたオブジェクトが主メモリに既に存在するときには、一つの追加命令だけが実行される:非ヌル・ポインタ・テストで条件付けられる条件付き分岐。
参照されたオブジェクトに対するオブジェクト・ポインタがヌルであれば(命令01)、残りの命令(03〜14)が用いられる。命令03は、参照オブジェクトが持続性データ記述子を有するか否かを見るべくチェックする。そうでなければ、プログラムが存在しないであろうオブジェクトをアクセスすることを試みているので、これは致命的誤りでありうるし、かつ命令04は、ヌル・ポインタ例外をスローして(投じて)、例外ハンドラにプログラムの制御を取って代わらせる。
参照オブジェクトが持続性データ記述子を有すると想定すると、命令04は、実行されず、かつその代わり命令05が実行されて、参照オブジェクトの持続性データ記述子から参照されたオブジェクトに対するオブジェクト識別子(OID)を取得する。
参照オブジェクトが持続性データ記述子を有すると想定すると、命令04は、実行されず、かつその代わり命令05が実行されて、参照オブジェクトの持続性データ記述子から参照されたオブジェクトに対するオブジェクト識別子(OID)を取得する。
命令06は、OIDがヌルであるかどうかを決定する。そうであれば、それは、プログラムがトリーまたはリストのトラバースを実行してリーフ・ノードに到達することを示す。この点において、命令07は、S1ラベルに対する分岐を実行することによってオリジナル・プログラムの次の命令に戻すように制御を単に転送して、スタックにヌル・ポインタを置き去りにする。
次に、非ヌルOIDが見出されたと想定すると、命令08は、もしあれば、OIDに対応している、オブジェクト・ポインタを要求すべくハッシュ・テーブルをアクセスする。命令09は、ハッシュ・テーブルが非ヌル・オブジェクト・ポインタをリターンするかどうかを見るべくチェックする。そうであれば、これは、参照されたオブジェクトが既に主メモリの中にあることを意味する。その場合には命令10は、オブジェクト・ポインタを参照オブジェクトの適切なフィールドの中にコピーし、命令18は、オブジェクト・ポインタをスタック上にプッシュし、そして制御は、ラベルS1でオリジナル・プログラム命令にリターンされる。
次に、非ヌルOIDが見出されたと想定すると、命令08は、もしあれば、OIDに対応している、オブジェクト・ポインタを要求すべくハッシュ・テーブルをアクセスする。命令09は、ハッシュ・テーブルが非ヌル・オブジェクト・ポインタをリターンするかどうかを見るべくチェックする。そうであれば、これは、参照されたオブジェクトが既に主メモリの中にあることを意味する。その場合には命令10は、オブジェクト・ポインタを参照オブジェクトの適切なフィールドの中にコピーし、命令18は、オブジェクト・ポインタをスタック上にプッシュし、そして制御は、ラベルS1でオリジナル・プログラム命令にリターンされる。
命令12は、命令09が、参照されたオブジェクトが主メモリにないということを決定したならば、実行される。命令12は、Database.LoadObject方法を呼出し、a)データベースから参照されたオブジェクトをフェッチし、b)適切なオブジェクト・クラスの新しい例を生成しかつ初期化し、c)新しいオブジェクトに対する持続性データ記述子を生成し、d)フェッチされたオブジェクトの内容を新しいオブジェクトの中にコピーし、かつフェッチされたオブジェクトからのあらゆるOIDs(即ち、データベースにおける他のオブジェクトへの参照(基準))を新しいオブジェクトの持続性データ記述子の中に記憶し、かつe)新しいオブジェクトに対してハッシュ・テーブルに新しい記録を生成する。命令14は、新しいオブジェクトに対するオブジェクト・ポインタをスタック上にプッシュする。次いで制御は、オリジナル・プログラム命令にリターンされる。
纏めると、追加されたコードは、参照されたオブジェクトが既に主メモリにあるかどうかを決定し、そうでなければ、それは、データベースからオブジェクトをフェッチしかつ主メモリに新しいオブジェクトのフェッチされたオブジェクトからの情報を記憶する。このコードは、(A)既に主メモリにあるオブジェクトへのヌル・オブジェクト・ポインタを用いて、または(B)主メモリにまだコピーされていないオブジェクトへのヌル・オブジェクト・ポインタを用いて、情報を読取ることを試みることができるプログラム位置でのみオリジナル・コンパイルされたプログラムに追加される。
“プット・フィールド(PutField)”命令に対して挿入されたコード
現行命令(即ち、ポストプロセッサ・ポインタによってポイントされるもの)が情報をオブジェクトの中に記憶するための命令であれば(Java(登録商標)バイトコード言語において“フットフィールド(putfield)”命令を呼ばれる)(ステップ258)、表3に示した命令は、プログラムに追加される(ステップ260)。参照の容易のために、表3における追加された命令は、番号が付けられる。
“プット・フィールド(PutField)”命令に対して挿入されたコード
現行命令(即ち、ポストプロセッサ・ポインタによってポイントされるもの)が情報をオブジェクトの中に記憶するための命令であれば(Java(登録商標)バイトコード言語において“フットフィールド(putfield)”命令を呼ばれる)(ステップ258)、表3に示した命令は、プログラムに追加される(ステップ260)。参照の容易のために、表3における追加された命令は、番号が付けられる。
命令31及び32は、参照オブジェクトと時々呼ばれる、オブジェクトからの持続性データ記述子ポインタのコピーをゲットする。命令33は、ポインタがヌルであるかどうかを見るためにテストする。ポインタがヌルであれば、それは、参照オブジェクトが、ダーティとマークすることができない、トランジエント・オブジェクトであることを意味し、その場合には、挿入されたコードの命令34は、ラベルS2への分岐を実行する。
次に、命令35は、参照オブジェクトの持続性データ記述子におけるリンクされたリスト・ポインタをゲットし、かつ命令36は、それがヌルでないかどうかを見るためにテストする。非ヌル・リンクド・リスト・ポインタは、オブジェクトがダーティと予め先にマークされたことを示し、その場合には挿入されたコードの命令37がラベルS2への分岐を実行する。
参照オブジェクトが持続性データ記述子を有しかつダーティとして予め先にマークされていないならば、命令38は、オブジェクトをダーティをマークすべくデータベース・オブジェクト・クラスのMarkDirth(マーク・ダーティ)方法を呼出す。MarkDirth(マーク・ダーティ)方法は、データベースからの書込みロックを要求する命令を含む。
命令41から48は、値が書き込まれるフィールドがオブジェクト・ポインタ・フィールドであるならば、オリジナル・コンパイルされたプログラムに追加される。命令41及び42は、参照オブジェクトに記憶されるべき値Vがヌル・オブジェクト・ポインタであるかどうかを決定する。記憶されるべき値Vがヌル・オブジェクト・ポインタであれば、制御は、参照オブジェクトの持続性データ記述子に記憶されるべきOIDが存在しないので、ラベルS3に続く命令(即ち、オリジナル・コンパイルされたプログラムの“PushV(プッシュV)”命令)にパスされる。
命令41から48は、値が書き込まれるフィールドがオブジェクト・ポインタ・フィールドであるならば、オリジナル・コンパイルされたプログラムに追加される。命令41及び42は、参照オブジェクトに記憶されるべき値Vがヌル・オブジェクト・ポインタであるかどうかを決定する。記憶されるべき値Vがヌル・オブジェクト・ポインタであれば、制御は、参照オブジェクトの持続性データ記述子に記憶されるべきOIDが存在しないので、ラベルS3に続く命令(即ち、オリジナル・コンパイルされたプログラムの“PushV(プッシュV)”命令)にパスされる。
記憶されるべき値Vがヌル・オブジェクト・ポインタでないならば、命令43及び44は、値Vによりポイントされたオブジェクトが持続性データ記述子を有するかどうか決定する。有さないならば、参照オブジェクトの(即ち、オブジェクトE’s)PDDに記憶されるべきOIDが存在せず、かつ制御がラベルS3に続く命令にパスされる。さもなければ、値Vに対応しているOIDは、命令46によって取得され、かつ命令47により参照されたオブジェクトの持続性データ記述子の適切なフィールドに記憶される。
図5に示す手順のステップ262及び252は、オリジナル・コンパイルされたプログラムの各命令が処理された後に実行され、もしあれば、次のプログラム命令にポインタを進め、かつポストプロセッシング手順が終了したときを決定する。
ポストプロセッサによって生成された変更されたプログラムは、好ましい実施例において、有効Java(登録商標)バイトコード・プログラムであるということに注目すべきである。それゆえに、適切なときに、ポストプロセッサによって生成された変更されたプログラムは、その上でそれが実行されるコンピュータ・プラットフォームに対するネイティブ・コード(native code) の中に更にコンパイルされうる。
図5に示す手順のステップ262及び252は、オリジナル・コンパイルされたプログラムの各命令が処理された後に実行され、もしあれば、次のプログラム命令にポインタを進め、かつポストプロセッシング手順が終了したときを決定する。
ポストプロセッサによって生成された変更されたプログラムは、好ましい実施例において、有効Java(登録商標)バイトコード・プログラムであるということに注目すべきである。それゆえに、適切なときに、ポストプロセッサによって生成された変更されたプログラムは、その上でそれが実行されるコンピュータ・プラットフォームに対するネイティブ・コード(native code) の中に更にコンパイルされうる。
代替実施例
代替実施例では、オブジェクトのオブジェクト・ポインタ・フィールドを読取るための各ゲットフィールド命令の後、表1に示したコードの挿入は、クレバー“ヌル・オブジェクト・ポインタ”例外ハンドラの使用によりほとんどの場合に回避されうる。ヌル・オブジェクト・ポインタ例外は、ランタイム・システムが、オペランド・スタック上に記憶されるべき有効オブジェクト・ポインタを必要とするが、スタック上の値がヌル・オブジェクト・ポインタのそれである、ゲットフィールドまたはプットフィールド命令のような、命令を実行することを試みるときにはいつでも発生する。
代替実施例では、オブジェクトのオブジェクト・ポインタ・フィールドを読取るための各ゲットフィールド命令の後、表1に示したコードの挿入は、クレバー“ヌル・オブジェクト・ポインタ”例外ハンドラの使用によりほとんどの場合に回避されうる。ヌル・オブジェクト・ポインタ例外は、ランタイム・システムが、オペランド・スタック上に記憶されるべき有効オブジェクト・ポインタを必要とするが、スタック上の値がヌル・オブジェクト・ポインタのそれである、ゲットフィールドまたはプットフィールド命令のような、命令を実行することを試みるときにはいつでも発生する。
この代替実施例では、図5のポストプロセッサ手順のステップ250では、ポストプロセッサは、処理されるコンパイルされたデータベース利用プログラムにヌル・ポインタ例外ハンドラを追加しかつ、また、挿入されたヌル・ポインタ例外ハンドラを参照するようにプログラムの例外ハンドラ・テーブルを変更する。
ステップ256は、ヌル・ポインタ例外ハンドラが、ヌル・オブジェクト・ポインタ・フィールドがそれから取得された参照プログラムを識別するトラブルを有するようならば、表1に示した命令が(ステップ268により)プログラムに挿入されるように、変更される。即ち、オブジェクト・ポインタを用いるための第1の命令が第1のオブジェクトからオブジェクト・ポインタを検索する命令からプログラムにおいて遠くに移動されたならば、例外ハンドラは、その第1のオブジェクトを識別することができないであろう。例えば、プログラムが次の一連の命令を有するものと考える:
ステップ256は、ヌル・ポインタ例外ハンドラが、ヌル・オブジェクト・ポインタ・フィールドがそれから取得された参照プログラムを識別するトラブルを有するようならば、表1に示した命令が(ステップ268により)プログラムに挿入されるように、変更される。即ち、オブジェクト・ポインタを用いるための第1の命令が第1のオブジェクトからオブジェクト・ポインタを検索する命令からプログラムにおいて遠くに移動されたならば、例外ハンドラは、その第1のオブジェクトを識別することができないであろう。例えば、プログラムが次の一連の命令を有するものと考える:
第1の好ましい実施例では少なくとも一つの追加命令(プログラム分岐をもたらす非ヌル・テスト命令)が全てのそのようなgetfield(ゲットフィールド)命令に対して実行されなければならないが、この代替実施例では、ほとんどの場合においてオーバヘッドは、非ヌル・オブジェクト・ポインタがオブジェクトから読取られるランタイムの間に招かれない。
上記したように、ヌル・ポインタ例外ハンドラは、変更されたデータベース使用プログラムが、プログラムの実行の間に、ヌル・ポインタを用いてオブジェクトを参照することを試みるときにはいつでも呼出される。変更されたデータベース使用プログラムは、(A)データベースから主メモリの中にまだ運ばれていないオブジェクトにおける情報をアクセスするための“getfield(ゲットフィールド)”または“putfield(プットフィールド)”動作を実行することが最初の試みであるときに、または(B)主メモリのオブジェクトを参照するために先に用いられていないオブジェクトからのオブジェクト・ポインタを用いているときにだけ、ヌル・ポインタを有するオブジェクトを参照することを試みるべきである。ヌル・ポインタ例外ハンドラは、図6を参照して以下に説明する。
図6を参照して、ヌル・ポインタ例外ハンドラは次のステップを実行する:
A)どのオブジェクト(参照オブジェクト)がヌル・ポインタ例外をもたらしたヌル・オブジェクト・ポインタを含むかを決定する(280);
B)参照オブジェクトが持続性データ記述子を有さないならば(281)、次に高いレベル例外ハンドラを、もしあれば、呼び出させるように、ヌル・ポインタ例外をリアサート(re-assert) する(282);
C)参照オブジェクトが持続性データ記述子を有するならば(281)、そのオブジェクトの持続性データ記述子から対応データベース・オブジェクトIDをゲットする(283);
D)オブジェクトのコピーが既に主メモリにあるかどうかを見るためにハッシュ・テーブルのオブジェクトIDを調べる(284);
E)オブジェクトが既に主メモリにあるならば(286,Y)、ヌル・ポインタを(ハッシュ・テーブルからコピーした)オブジェクトへの主メモリ・オブジェクト・ポインタのコピーで置換し、オブジェクト・ポインタをプログラム・オペランド・スタック上にプッシュし、そして、それに、ヌル・ポインタ例外をもたらした命令を再実行させるようにデータベース使用プログラムに制御を戻す(288);
F)オブジェクトがまだ主メモリにないならば(286,N)、Database.LoadObject方法を呼出す(289)、そして
G)それにヌル・ポインタ例外をもたらした命令を再実行させるようにデータベース使用プログラムに制御をリターンする(299)。
Database.LoadObject方法は、呼出されたときに、次のステップを実行する:
H)オブジェクトIDによって参照されたオブジェクトのコピーを要求しかつ取得する;また、DBMSオブジェクト上に読取りロックを要求しかつ取得する(290);
I)DBMSから受け取ったオブジェクトに対応しているオブジェクト・クラスの新しいオブジェクト例を生成し、かつオブジェクトに対する持続性データ記述子を生成する(292);
J)新しいオブジェクトの全てのオブジェクト識別子が新しいオブジェクトに対する持続性データ記述子に記憶されかつ主オブジェクトのオブジェクト識別子がヌル・オブジェクト・ポインタで置換されることを除き、DBMSオブジェクトの内容を新しいオブジェクトの中にコピーする(294);
K)新しいオブジェクトそのへのポインタ及びそのデータベース・オブジェクト識別子を包含している記録をハッシュ・テーブルに追加する(296);そして、
L)プログラム・オペランド・スタック・ポインタ上に主メモリ・オブジェクト・ポインタのコピーをプッシュする(298)。
A)どのオブジェクト(参照オブジェクト)がヌル・ポインタ例外をもたらしたヌル・オブジェクト・ポインタを含むかを決定する(280);
B)参照オブジェクトが持続性データ記述子を有さないならば(281)、次に高いレベル例外ハンドラを、もしあれば、呼び出させるように、ヌル・ポインタ例外をリアサート(re-assert) する(282);
C)参照オブジェクトが持続性データ記述子を有するならば(281)、そのオブジェクトの持続性データ記述子から対応データベース・オブジェクトIDをゲットする(283);
D)オブジェクトのコピーが既に主メモリにあるかどうかを見るためにハッシュ・テーブルのオブジェクトIDを調べる(284);
E)オブジェクトが既に主メモリにあるならば(286,Y)、ヌル・ポインタを(ハッシュ・テーブルからコピーした)オブジェクトへの主メモリ・オブジェクト・ポインタのコピーで置換し、オブジェクト・ポインタをプログラム・オペランド・スタック上にプッシュし、そして、それに、ヌル・ポインタ例外をもたらした命令を再実行させるようにデータベース使用プログラムに制御を戻す(288);
F)オブジェクトがまだ主メモリにないならば(286,N)、Database.LoadObject方法を呼出す(289)、そして
G)それにヌル・ポインタ例外をもたらした命令を再実行させるようにデータベース使用プログラムに制御をリターンする(299)。
Database.LoadObject方法は、呼出されたときに、次のステップを実行する:
H)オブジェクトIDによって参照されたオブジェクトのコピーを要求しかつ取得する;また、DBMSオブジェクト上に読取りロックを要求しかつ取得する(290);
I)DBMSから受け取ったオブジェクトに対応しているオブジェクト・クラスの新しいオブジェクト例を生成し、かつオブジェクトに対する持続性データ記述子を生成する(292);
J)新しいオブジェクトの全てのオブジェクト識別子が新しいオブジェクトに対する持続性データ記述子に記憶されかつ主オブジェクトのオブジェクト識別子がヌル・オブジェクト・ポインタで置換されることを除き、DBMSオブジェクトの内容を新しいオブジェクトの中にコピーする(294);
K)新しいオブジェクトそのへのポインタ及びそのデータベース・オブジェクト識別子を包含している記録をハッシュ・テーブルに追加する(296);そして、
L)プログラム・オペランド・スタック・ポインタ上に主メモリ・オブジェクト・ポインタのコピーをプッシュする(298)。
本発明は、2〜3の特定の実施例を参照して記述したが、記述は、本発明の説明のためであり、本発明を限定するものであると解釈されるべきでない。添付した特許請求の範囲によって規定されたような本発明の真の精神及び範疇から逸脱することなく種々の変更が当業者に生じうる。
100 コンピュータ・システム
102 主メモリ
104 持続性データ記憶
106 データベース
108 オブジェクト
110 データベース管理システム(DBMS)
112 ランタイム・システム
114−1〜114−3 オブジェクト
120 ポインタ
122 持続性データ記述子
124 フル・オブジェクト識別子(OID)
126 リスト・ポインタ
128−1〜128−2 フル・オブジェクト識別子(OID)
130−1〜130−2 オブジェクト・レファレンス・フィールド
140 ハッシュ・テーブル
142 リスト・ヘッダ
102 主メモリ
104 持続性データ記憶
106 データベース
108 オブジェクト
110 データベース管理システム(DBMS)
112 ランタイム・システム
114−1〜114−3 オブジェクト
120 ポインタ
122 持続性データ記述子
124 フル・オブジェクト識別子(OID)
126 リスト・ポインタ
128−1〜128−2 フル・オブジェクト識別子(OID)
130−1〜130−2 オブジェクト・レファレンス・フィールド
140 ハッシュ・テーブル
142 リスト・ヘッダ
Claims (15)
- 持続的に記憶されたオブジェクトをアクセスしかつ更新するオブジェクト指向型コンピュータ・プログラムを生成する方法であって、
コンピュータの主メモリに記憶されたオブジェクトをアクセスしかつ更新するオリジナル命令を含む初期コンピュータ・プログラムを受け取り、
改訂されたコンピュータ・プログラムの実行中に、各前記オブジェクトが最初にアクセスされるときに前記オブジェクトのそれぞれを持続性記憶装置から前記主メモリの中にロードする、オブジェクト・ローディング命令を追加し、
前記改訂されたコンピュータ・プログラムの実行中に、所定事象の発生により前記コンピュータの主メモリの前記オブジェクトの内のそれぞれを前記持続性記憶装置の中に記憶するオブジェクト記憶命令を追加することによって、
前記改訂されたコンピュータ・プログラムを生成すべく前記初期コンピュータ・プログラムを自動的に改訂する
段階を具備することを特徴とする方法。 - 前記改訂段階は、前記改訂されたコンピュータ・プログラムの実行中に、前記コンピュータの主メモリのどのオブジェクトが新しい及び/又は更新されたデータを含むのかを示しているデータを記憶するダーティ・オブジェクト・マーキング命令を追加することを更に含み、
前記オブジェクト記憶命令は、新しい及び/又は更新されたデータを含む前記コンピュータの主メモリの前記オブジェクトのそれらを前記持続性記憶装置に記憶することを特徴とする請求項1に記載の方法。 - 前記オリジナル命令によってアクセスされかつ更新された前記オブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつ前記オブジェクト記憶命令によって前記持続性記憶装置に記憶された前記オブジェクトは、前記第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み、
前記オリジナル命令は、前記オブジェクト・クラスの第1のセットにおける前記オブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み、
前記改訂段階は、
前記オブジェクト・クラスの第2のセットにおける前記オブジェクトに、前記オブジェクト・クラスの第2のセットにおける前記オブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるように前記オブジェクト・クラスの第2のセットに関連付けられた前記データ構造を改訂する補足オブジェクト定義命令を追加することを更に含む
ことを特徴とする請求項1または2に記載の方法。 - 前記オブジェクト・ローディング命令によって主メモリの中にロードされたオブジェクトは、主メモリにロードされた前記オブジェクトによって参照される持続性記憶装置におけるオブジェクトに対するヌル・オブジェクト・ポインタを含み、
前記改訂段階は、前記オブジェクト・クラスの第2のセットにおけるオブジェクトのヌル・オブジェクト・ポインタがアクセスされるときにはいつでも前記オブジェクト・ローディング命令が呼出されるように前記初期コンピュータ・プログラムを改訂することを含むことを特徴とする請求項3に記載の方法。 - 前記オリジナル命令によってアクセスされかつ更新された前記オブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつ前記オブジェクト記憶命令によって前記持続性記憶装置に記憶された前記オブジェクトは、前記第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み、
前記オリジナル命令は、前記オブジェクト・クラスの第1のセットにおける前記オブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データベース構造定義命令を含み、
前記改訂段階は、
前記オブジェクト・クラスの第2のセットにおける前記オブジェクトに、前記オブジェクト・クラスの第2のセットにおける前記オブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるように前記オブジェクト・クラスの第2のセットに関連付けられた前記データ構造を改訂する補足オブジェクト定義命令を追加することを更に含む
ことを特徴とする請求項1に記載の方法。 - データ処理システム上で実行されるプログラムによるアクセスに対するデータを記憶するためのメモリであって、
コンピュータの主メモリに記憶されたオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む初期コンピュータ・プログラムを変更するためのポストプロセッサ手順を備え、
前記ポストプロセッサ手順は、前記初期コンピュータ・プログラムに補足命令を追加することによって改訂されたコンピュータ・プログラムを生成すべく前記初期コンピュータ・プログラムを自動的に改訂する命令を含み、前記補足命令は、
前記改訂されたコンピュータ・プログラムの実行中に、各前記オブジェクトが最初にアクセスされるときに前記オブジェクトのそれぞれを持続性記憶装置から前記主メモリの中にロードするオブジェクト・ローディング命令、
前記改訂されたコンピュータ・プログラムの実行中に、所定の事象の発生により前記コンピュータの主メモリの前記オブジェクトの内のそれぞれを前記持続性記憶装置の中に記憶するオブジェクト記憶命令
を含んでいることを特徴とするメモリ。 - 前記補足命令は、前記改訂されたコンピュータ・プログラムの実行中に、前記コンピュータの主メモリにおけるどのオブジェクトが新しい及び/又は更新されたデータを含むものかを示しているデータを記憶するダーティ・オブジェクト・マーキング命令を含み、
前記オブジェクト記憶命令は、新しい及び/又は更新されたデータを含む前記コンピュータの主メモリにおける前記オブジェクトのそれらを前記持続性記憶装置に記憶することを特徴とする請求項6に記載のメモリ。 - 前記オリジナル命令によってアクセスされかつ更新された前記オブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつ前記オブジェクト記憶命令によって前記持続性記憶装置に記憶された前記オブジェクトは、前記第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み、
前記オリジナル命令は、前記オブジェクト・クラスの第1のセットにおける前記オブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み、
前記補足命令は、
前記オブジェクト・クラスの第2のセットにおける前記オブジェクトに、前記オブジェクト・クラスの第2のセットにおける前記オブジェクトによって参照されるオブジェクトに対する主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるように前記オブジェクト・クラスの第2のセットに関連付けられた前記データ構造を改訂する補足オブジェクト定義命令を更に含む
ことを特徴とする請求項6または7に記載のメモリ。 - 前記オブジェクト・ローディング命令によって主メモリの中にロードされたオブジェクトは、主メモリにロードされた前記オブジェクトによって参照される持続性記憶装置におけるオブジェクトに対するヌル・オブジェクト・ポインタを含み、
前記ポストプロセッサ手順は、前記オブジェクト・クラスの第2のセットにおけるオブジェクトのヌル・オブジェクト・ポインタがアクセスされるときにはいつでも前記オブジェクト・ローディング命令が呼出されるように前記初期コンピュータ・プログラムを改訂することを特徴とする請求項8に記載のメモリ。 - 前記オリジナル命令によってアクセスされかつ更新された前記オブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつ前記オブジェクト記憶命令によって前記持続性記憶装置に記憶された前記オブジェクトは、前記第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み、
前記オリジナル命令は、前記オブジェクト・クラスの第1のセットにおける前記オブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み、
前記補足命令は、
前記オブジェクト・クラスの第2のセットに、前記オブジェクト・クラスの第2のセットにおける前記オブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるように前記オブジェクト・クラスの第2のセットに関連付けられた前記データ構造を改訂する補足オブジェクト定義命令を更に含む
ことを特徴とする請求項6に記載のメモリ。 - コンピュータ・システムであって、
オブジェクトを記憶するための主メモリを含んでいる、メモリを備え、
前記メモリは、初期コンピュータ・プログラム、改訂されたコンピュータ・プログラム及び、前記主メモリに記憶されたオブジェクトをアクセスしかつ更新するためのオリジナル命令を含む初期コンピュータ・プログラムを変更するためのポストプロセッサ手順を更に記憶しており、
前記ポストプロセッサ手順は、前記初期コンピュータ・プログラムに補足命令を追加することによって改訂されたコンピュータ・プログラムを生成すべく前記初期コンピュータ・プログラムを自動的に改訂するための命令を含んでおり、該補足命令は、
前記改訂されたコンピュータ・プログラムの実行中に、各前記オブジェクトが最初にアクセスされるときに前記オブジェクトのそれぞれを持続性記憶装置から前記主メモリの中にロードするオブジェクト・ローディング命令、及び
前記改訂されたコンピュータ・プログラムの実行中に、所定の事象の発生により前記コンピュータの主メモリの前記オブジェクトの対応するものを前記持続性記憶装置の中に記憶するオブジェクト記憶命令
を含むことを特徴とするコンピュータ・システム。 - 前記補足命令は、前記改訂されたコンピュータ・プログラムの実行中に、前記コンピュータの主メモリにおけるどのオブジェクトが新しい及び/又は更新されたデータを含むものかを示しているデータを記憶するダーティ・オブジェクト・マーキング命令を含み、
前記オブジェクト記憶命令は、新しい及び/又は更新されたデータを含む前記コンピュータの主メモリにおける前記オブジェクトのそれらを前記持続性記憶装置に記憶することを特徴とする請求項11に記載のコンピュータ・システム。 - 前記オリジナル命令によってアクセスされかつ更新された前記オブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつ前記オブジェクト記憶命令によって前記持続性記憶装置に記憶された前記オブジェクトは、前記第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み、
前記オリジナル命令は、前記オブジェクト・クラスの第1のセットにおける前記オブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み、
前記補足命令は、
前記オブジェクト・クラスの第2のセットに、前記オブジェクト・クラスの第2のセットにおける前記オブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるように前記オブジェクト・クラスの第2のセットに関連付けられた前記データ構造を改訂する補足オブジェクト定義命令を更に含む
ことを特徴とする請求項11または12に記載のコンピュータ・システム。 - 前記オブジェクト・ローディング命令によって主メモリの中にロードされたオブジェクトは、主メモリにロードされた前記オブジェクトによって参照される持続性記憶装置におけるオブジェクトに対するヌル・オブジェクト・ポインタを含み、
前記ポストプロセッサ手順は、前記オブジェクト・クラスの第2のセットにおけるオブジェクトのヌル・オブジェクト・ポインタがアクセスされるときにはいつでも前記オブジェクト・ローディング命令が呼出されるように前記初期コンピュータ・プログラムを改訂することを特徴とする請求項13に記載のコンピュータ・システム。 - 前記オリジナル命令によってアクセスされかつ更新された前記オブジェクトは、オブジェクト・クラスの第1のセットにおけるオブジェクトを含み、かつ前記オブジェクト記憶命令によって前記持続性記憶装置に記憶された前記オブジェクトは、前記第1のセットのサブセットであるオブジェクト・クラスの第2のセットにおけるオブジェクトを含み、
前記オリジナル命令は、前記オブジェクト・クラスの第1のセットにおける前記オブジェクトに関連付けられたデータ構造を定義するためのオブジェクト・データ構造定義命令を含み、
前記補足命令は、
前記オブジェクト・クラスの第2のセットに、前記オブジェクト・クラスの第2のセットにおける前記オブジェクトによって参照されるオブジェクトに対して主メモリ・オブジェクト・ポインタ及び持続性記憶装置オブジェクト識別子の両方を記憶することができるように前記オブジェクト・クラスの第2のセットに関連付けられた前記データ構造を改訂する補足オブジェクト定義命令を更に含む
ことを特徴とする請求項13に記載のコンピュータ・システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/599,055 US6128771A (en) | 1996-02-09 | 1996-02-09 | System and method for automatically modifying database access methods to insert database object handling instructions |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9025450A Division JPH1063561A (ja) | 1996-02-09 | 1997-02-07 | データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008262585A true JP2008262585A (ja) | 2008-10-30 |
Family
ID=24398014
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9025450A Pending JPH1063561A (ja) | 1996-02-09 | 1997-02-07 | データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法 |
JP2008149726A Pending JP2008262585A (ja) | 1996-02-09 | 2008-06-06 | データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9025450A Pending JPH1063561A (ja) | 1996-02-09 | 1997-02-07 | データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US6128771A (ja) |
EP (1) | EP0789300B1 (ja) |
JP (2) | JPH1063561A (ja) |
KR (1) | KR100472807B1 (ja) |
CN (1) | CN1146786C (ja) |
DE (1) | DE69724855D1 (ja) |
SG (1) | SG75111A1 (ja) |
TW (1) | TW317624B (ja) |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5911071A (en) * | 1996-09-13 | 1999-06-08 | Sun Microsystems, Inc. | Persistent programming system and method for deploying self-containing executable applications |
US5930794A (en) * | 1996-10-18 | 1999-07-27 | Sagent Technologies, Inc. | Database repository with deferred transactions |
KR100512157B1 (ko) * | 1997-09-04 | 2005-11-01 | 삼성전자주식회사 | 오오피 기반의 마이크로컨트롤러 응용 개발 시스템 |
US6360363B1 (en) * | 1997-12-31 | 2002-03-19 | Eternal Systems, Inc. | Live upgrade process for object-oriented programs |
US6714935B1 (en) * | 1998-09-21 | 2004-03-30 | Microsoft Corporation | Management of non-persistent data in a persistent database |
US7464383B1 (en) * | 1999-04-16 | 2008-12-09 | Adobe Systems Incorporated | Dynamic dependency graph in MVC paradigm |
US6490616B1 (en) | 1999-06-14 | 2002-12-03 | Wind River International, Ltd. | Method and apparatus for incremental download from server to client |
WO2000077613A2 (en) * | 1999-06-14 | 2000-12-21 | Wind River International Inc. | Method and system for managing and using persistent storage |
US6857015B1 (en) | 1999-06-14 | 2005-02-15 | Wind River International, Ltd. | Method and system for remotely observing and controlling objects |
JP3756352B2 (ja) * | 1999-06-29 | 2006-03-15 | 富士通株式会社 | コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体 |
KR100689368B1 (ko) * | 1999-12-29 | 2007-03-08 | 삼성전자주식회사 | 개인용 컴퓨터에서 데이터 베이스 접속 방법 |
US6658660B1 (en) * | 1999-12-31 | 2003-12-02 | Nortel Networks Limited | System and method of automatically modifying source code for marshaling, unmarshaling and marking modified data objects |
US7389493B1 (en) | 2000-05-12 | 2008-06-17 | Oracle International Corporation | Categories on a per instance basis |
US7185005B1 (en) | 2000-05-12 | 2007-02-27 | Oracle International Corporation | Nested transactions in a file system |
US7725878B1 (en) * | 2000-05-12 | 2010-05-25 | Oracle International Corporation | Property bundles on a per instance basis |
US7987217B2 (en) * | 2000-05-12 | 2011-07-26 | Oracle International Corporation | Transaction-aware caching for document metadata |
US6772320B1 (en) * | 2000-11-17 | 2004-08-03 | Intel Corporation | Method and computer program for data conversion in a heterogeneous communications network |
US7434156B1 (en) | 2000-11-27 | 2008-10-07 | Sun Microsystems, Inc. | Method, system, program, and computer readable medium for providing a database for object oriented objects |
KR100426620B1 (ko) * | 2000-12-26 | 2004-04-13 | 한국전자통신연구원 | 주기억장치 상주 객체관계형 dbms 에서의 클래스 인스턴스 변경 방법 |
US6931638B2 (en) * | 2001-03-15 | 2005-08-16 | Sun Microsystems, Inc | Method and apparatus to facilitate sharing optimized instruction code in a multitasking virtual machine |
US7370322B1 (en) * | 2001-04-11 | 2008-05-06 | Sun Microsystems, Inc. | Method and apparatus for performing online application upgrades in a java platform |
US6772172B2 (en) | 2001-04-27 | 2004-08-03 | Sun Microsystems, Inc. | Method, system, program, and computer readable medium for indexing object oriented objects in an object oriented database |
US7069540B1 (en) * | 2001-07-02 | 2006-06-27 | Unisys Corporation | COM persistence model |
US20030018909A1 (en) * | 2001-07-17 | 2003-01-23 | International Business Machines Corporation | Method and apparatus for enforcing security policies in Java applications |
US6857119B1 (en) * | 2001-09-25 | 2005-02-15 | Oracle International Corporation | Techniques for modifying a compiled application |
US6763347B1 (en) * | 2001-10-19 | 2004-07-13 | Nick Zhang | Indexing management for hierarchical main memory |
US7020641B2 (en) * | 2001-10-22 | 2006-03-28 | Sun Microsystems, Inc. | Method, system, and program for maintaining a database of data objects |
US7320137B1 (en) | 2001-12-06 | 2008-01-15 | Digeo, Inc. | Method and system for distributing personalized editions of media programs using bookmarks |
US20030122966A1 (en) * | 2001-12-06 | 2003-07-03 | Digeo, Inc. | System and method for meta data distribution to customize media content playback |
US7016913B2 (en) | 2002-03-20 | 2006-03-21 | Sun Microsystems, Inc. | Method, system, data structures, and article of manufacture for implementing a persistent object |
US7356537B2 (en) | 2002-06-06 | 2008-04-08 | Microsoft Corporation | Providing contextually sensitive tools and help content in computer-generated documents |
US20070088655A1 (en) * | 2002-06-27 | 2007-04-19 | Peter Seilern | Method for the electronic processing of share transactions |
US7093245B2 (en) * | 2002-11-20 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | System and apparatus for upgrading concentrated executable computer software code without reconcentration |
US7096463B2 (en) * | 2002-11-20 | 2006-08-22 | Hewlett-Packard Development Company, Lp. | System and apparatus for dynamically upgrading concentrated executable computer software code |
US7113953B2 (en) * | 2003-06-30 | 2006-09-26 | International Business Machines Corporation | System and method for efficiently writing data from an in-memory database to a disk database |
US20050044523A1 (en) * | 2003-08-20 | 2005-02-24 | International Business Machines Corporation | Method and system for compiling Java code with referenced classes in a workspace environment |
US20050203903A1 (en) * | 2004-03-10 | 2005-09-15 | Rajan Rajeev B. | System and method for locking and isolation in a storage platform |
US20060085473A1 (en) * | 2004-10-14 | 2006-04-20 | Frederik Thormaehlen | Method and system for business process super-transaction |
US7665077B2 (en) * | 2004-10-18 | 2010-02-16 | Microsoft Corporation | System and method for sharing objects between applications in a virtual runtime environment |
US8416251B2 (en) * | 2004-11-15 | 2013-04-09 | Nvidia Corporation | Stream processing in a video processor |
US20060242171A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of using code-based case tools to verify application layer configurations |
US20060241999A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of exposing a sequence of instructions into an object-oriented programming language |
US20060242174A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Systems and methods for using object-oriented tools to debug business applications |
US20060242176A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of exposing business configuration dependencies |
US8539003B2 (en) * | 2005-04-22 | 2013-09-17 | Sap Ag | Systems and methods for identifying problems of a business application in a customer support system |
US20060293935A1 (en) * | 2005-04-22 | 2006-12-28 | Igor Tsyganskiy | Methods and systems for incrementally exposing business application errors using an integrated display |
US7542980B2 (en) | 2005-04-22 | 2009-06-02 | Sap Ag | Methods of comparing and merging business process configurations |
US7702638B2 (en) * | 2005-04-22 | 2010-04-20 | Sap Ag | Systems and methods for off-line modeling a business application |
US20060282458A1 (en) * | 2005-04-22 | 2006-12-14 | Igor Tsyganskiy | Methods and systems for merging business process configurations |
US20060242194A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Systems and methods for modeling and manipulating a table-driven business application in an object-oriented environment |
US20060293940A1 (en) * | 2005-04-22 | 2006-12-28 | Igor Tsyganskiy | Methods and systems for applying intelligent filters and identifying life cycle events for data elements during business application debugging |
US20060242197A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of transforming application layer structure as objects |
US7720879B2 (en) * | 2005-04-22 | 2010-05-18 | Sap Ag | Methods of using an integrated development environment to configure business applications |
US20060242196A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of exposing application layer integrity as object oriented programming language elements |
US20060242177A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of exposing business application runtime exceptions at design time |
US20060241961A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of optimizing legacy application layer control structure using refactoring |
US7958486B2 (en) * | 2005-04-22 | 2011-06-07 | Sap Ag | Methods and systems for data-focused debugging and tracing capabilities |
US20060242172A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Systems and methods for transforming logic entities of a business application into an object-oriented model |
US20060242188A1 (en) * | 2005-04-22 | 2006-10-26 | Igor Tsyganskiy | Methods of exposing a missing collection of application elements as deprecated |
KR100772455B1 (ko) * | 2005-06-22 | 2007-11-01 | 한국전자통신연구원 | Dac 강화를 위한 프로세스 분류/실행 제어 장치 및 방법 |
US7487178B2 (en) * | 2005-10-05 | 2009-02-03 | International Business Machines Corporation | System and method for providing an object to support data structures in worm storage |
US20100122073A1 (en) * | 2008-11-10 | 2010-05-13 | Ravi Narayanaswamy | Handling exceptions in software transactional memory systems |
US9020905B2 (en) * | 2009-10-31 | 2015-04-28 | International Business Machines Corporation | Synchronizing database and non-database resources without a commit coordinator |
JP4959781B2 (ja) * | 2009-12-22 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクト生成地点記録方法およびプログラム |
US8756193B2 (en) | 2011-10-31 | 2014-06-17 | Apple Inc. | System and method for persisting object pointers |
US10509725B2 (en) * | 2013-03-08 | 2019-12-17 | Oracle International Corporation | Flushing by copying entries in a non-coherent cache to main memory |
WO2014159883A1 (en) * | 2013-03-14 | 2014-10-02 | Apperian, Inc. | Modification of compiled applications and application management using retrievable policies |
US10754842B2 (en) * | 2014-06-13 | 2020-08-25 | International Business Machines Corporation | Preplaying transactions that mix hot and cold data |
US9934008B2 (en) * | 2014-06-18 | 2018-04-03 | Netapp, Inc. | Methods for facilitating persistent storage of in-memory databases and devices thereof |
US10698671B2 (en) | 2015-03-30 | 2020-06-30 | Arxan Technologies, Inc. | Processing, modification, distribution of custom software installation packages |
US11424931B2 (en) | 2016-01-27 | 2022-08-23 | Blackberry Limited | Trusted execution environment |
US10599409B2 (en) | 2016-02-02 | 2020-03-24 | Blackberry Limited | Application lifecycle operation queueing |
US11514186B2 (en) * | 2021-04-14 | 2022-11-29 | Sap Se | Integrated database user privilege management |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6437621A (en) * | 1987-07-20 | 1989-02-08 | Ibm | Updating of program |
US5325531A (en) * | 1989-06-30 | 1994-06-28 | Digital Equipment Corporation | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines |
JPH0833862B2 (ja) * | 1989-10-23 | 1996-03-29 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | オブジエクト指向コンピユータ・システム |
US5297279A (en) * | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
JPH04160893A (ja) * | 1990-10-25 | 1992-06-04 | Oki Electric Ind Co Ltd | オブジェクト指向ソフトウェアの局データ・加入者データ管理方法 |
US5295256A (en) * | 1990-12-14 | 1994-03-15 | Racal-Datacom, Inc. | Automatic storage of persistent objects in a relational schema |
US5426747A (en) | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
US5193180A (en) * | 1991-06-21 | 1993-03-09 | Pure Software Inc. | System for modifying relocatable object code files to monitor accesses to dynamically allocated memory |
US5822590A (en) * | 1991-10-31 | 1998-10-13 | Texas Instruments Incorporated | dbX: a persistent programming language model |
US5568642A (en) * | 1991-12-26 | 1996-10-22 | Institute Of Software Scientifical Constructions | Computer system with easy programming architecture and programming method therefor |
US5535392A (en) * | 1992-06-26 | 1996-07-09 | Digital Equipment Corporation | Using hint generation to cause portions of object files to remain the same |
JPH06103075A (ja) * | 1992-07-06 | 1994-04-15 | Internatl Business Mach Corp <Ibm> | オブジェクト指向適用業務 |
US5404525A (en) * | 1992-09-30 | 1995-04-04 | International Business Machines Corporation | Efficient method router that supports multiple simultaneous object versions |
US5359730A (en) * | 1992-12-04 | 1994-10-25 | International Business Machines Corporation | Method of operating a data processing system having a dynamic software update facility |
US5634123A (en) * | 1993-07-08 | 1997-05-27 | Park City Group, Inc. | Data management using nested records and code points |
WO1995003586A1 (en) | 1993-07-21 | 1995-02-02 | Persistence Software, Inc. | Method and apparatus for generation of code for mapping relational data to objects |
WO1995004960A2 (en) | 1993-08-02 | 1995-02-16 | Persistence Software, Inc. | Method and apparatus for managing relational data in an object cache |
JP3910221B2 (ja) * | 1993-12-28 | 2007-04-25 | 株式会社日立製作所 | オブジェクト指向データベース管理システム及び方法 |
US5590269A (en) * | 1994-04-22 | 1996-12-31 | Minnesota Mining & Manufacturing Company | Resource assignment system providing mixed-initiative user interface updates |
US5522077A (en) | 1994-05-19 | 1996-05-28 | Ontos, Inc. | Object oriented network system for allocating ranges of globally unique object identifiers from a server process to client processes which release unused identifiers |
US5542078A (en) | 1994-09-29 | 1996-07-30 | Ontos, Inc. | Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities |
US5864864A (en) * | 1995-09-27 | 1999-01-26 | Sun Microsystems, Inc. | Method and apparatus for providing transparent persistent data support to foreign data types |
US6134710A (en) * | 1998-06-26 | 2000-10-17 | International Business Machines Corp. | Adaptive method and system to minimize the effect of long cache misses |
-
1996
- 1996-02-09 US US08/599,055 patent/US6128771A/en not_active Expired - Fee Related
-
1997
- 1997-01-30 SG SG1997000199A patent/SG75111A1/en unknown
- 1997-02-03 EP EP97300667A patent/EP0789300B1/en not_active Expired - Lifetime
- 1997-02-03 DE DE69724855T patent/DE69724855D1/de not_active Expired - Lifetime
- 1997-02-05 CN CNB971010803A patent/CN1146786C/zh not_active Expired - Fee Related
- 1997-02-06 KR KR1019970003651A patent/KR100472807B1/ko not_active IP Right Cessation
- 1997-02-07 JP JP9025450A patent/JPH1063561A/ja active Pending
- 1997-03-27 TW TW086103931A patent/TW317624B/zh active
-
2000
- 2000-07-27 US US09/627,413 patent/US6915510B1/en not_active Expired - Fee Related
-
2008
- 2008-06-06 JP JP2008149726A patent/JP2008262585A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US6128771A (en) | 2000-10-03 |
CN1161505A (zh) | 1997-10-08 |
TW317624B (ja) | 1997-10-11 |
DE69724855D1 (de) | 2003-10-23 |
JPH1063561A (ja) | 1998-03-06 |
EP0789300A2 (en) | 1997-08-13 |
US6915510B1 (en) | 2005-07-05 |
KR970062897A (ko) | 1997-09-12 |
CN1146786C (zh) | 2004-04-21 |
EP0789300B1 (en) | 2003-09-17 |
KR100472807B1 (ko) | 2005-05-16 |
EP0789300A3 (en) | 2001-04-11 |
SG75111A1 (en) | 2000-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0789300B1 (en) | Method, Data storing memory and System for automatic revising of object-oriented computer programs, that access and update persistently stored objects. | |
US5414840A (en) | Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory | |
Cockshot et al. | Persistent object management system | |
US6912520B2 (en) | System and method for providing a persistent object framework for managing persistent objects | |
Olson et al. | Berkeley DB. | |
US5542078A (en) | Object oriented data store integration environment for integration of object oriented databases and non-object oriented data facilities | |
US5915253A (en) | Method and system for implementing objects in a storage system | |
US7831771B2 (en) | System and method for managing cachable entities | |
US6868425B1 (en) | Versions and workspaces in an object repository | |
Bohannon et al. | The architecture of the Dali main-memory storage manager | |
US5043876A (en) | N-level file shadowing and recovery in a shared file system | |
US6760815B1 (en) | Caching mechanism for a virtual heap | |
US5809507A (en) | Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework | |
US7747996B1 (en) | Method of mixed lock-free and locking synchronization | |
US7451434B1 (en) | Programming with shared objects in a shared memory | |
JPH0997204A (ja) | 分散オブジェクト操作環境において透明性のある不変性を提供する方法および装置 | |
US8095731B2 (en) | Mutable object caching | |
Kersten et al. | Application of an optimistic concurrency control method | |
Atkinson et al. | Scalable and recoverable implementation of object evolution for the PJama1 platform | |
White et al. | QuickStore: a high performance mapped object store | |
Brachman et al. | TDBM: A DBM Library with Atomic Transactions. | |
Knasmüller | Adding persistence to the Oberon-System | |
Daynes | Implementation of automated fine‐granularity locking in a persistent programming language | |
JP2001527241A (ja) | オブジェクト指向データ依存性に対応するデータベース内の記憶済み手続をロードするための方法及び装置 | |
Biliris et al. | Object storage management architectures |