JP2001331315A - データ処理システム及び方法、並びに、記憶媒体 - Google Patents

データ処理システム及び方法、並びに、記憶媒体

Info

Publication number
JP2001331315A
JP2001331315A JP2000153295A JP2000153295A JP2001331315A JP 2001331315 A JP2001331315 A JP 2001331315A JP 2000153295 A JP2000153295 A JP 2000153295A JP 2000153295 A JP2000153295 A JP 2000153295A JP 2001331315 A JP2001331315 A JP 2001331315A
Authority
JP
Japan
Prior art keywords
data
data structure
structure specification
application
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000153295A
Other languages
English (en)
Inventor
Curtis Eubanks
カーティス ユーバンクス
Hideki Asazu
英樹 浅津
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2000153295A priority Critical patent/JP2001331315A/ja
Publication of JP2001331315A publication Critical patent/JP2001331315A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 データ構造が経時的に変化する場合であって
も、アプリケーションのデータ・アクセスを許容する。 【解決手段】 第1のデータ構造仕様に従って構造化さ
れたデータに対してアクセス可能に記述されたアプリケ
ーションに対して、該第1のデータ構造仕様を変更した
第2のデータ構造仕様に従って構造化されたデータへの
アクセスを許容する。また、第2のデータ構造仕様に従
って構造化されたデータに対してアクセス可能に記述さ
れたアプリケーションに対して、第1のデータ構造仕様
に従って構造化されたデータへのアクセスを許容する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
言語によって記述されたクラス及びインターフェースの
継承メカニズムを利用したデータ処理システム及び方法
に係り、特に、データ構造が経時的に変化する(データ
ベース・スキーマ・エボリューション)ような場合であ
っても、アプリケーションに対して構造化データへのア
クセスを許容することができる、クラス及びインターフ
ェースの継承メカニズムを利用したデータ処理システム
及び方法に関する。
【0002】更に詳しくは、本発明は、古いアプリケー
ションが更新されたスキーマに従う新しいデータに対し
ても透過的にアクセスすることができるとともに、新し
いアプリケーションが古いデータ構造に従う古いデータ
に対しても透過的にアクセスすることができる、クラス
及びインターフェースの継承メカニズムを利用したデー
タ処理システム及び方法に関する。
【0003】
【従来の技術】テレビジョンやラジオのようにアナログ
信号を受信する機器が出現してから既に久しい。この種
の機器は、アナログ・スタンダードを用いた映像プログ
ラムや音響プログラムを選局しデコードするようになっ
ているが、アナログ・スタンダードは逐次変更が加えら
れるという性質を持つ。
【0004】例えば、1954年にNTSC(National
Television System Committee)信号にカラー情報が付
加されたり、1985年にステレオ音響信号の放送が追
加されたように、米国においてテレビジョン放送スタン
ダードが変更したような場合において、一般消費者が更
新された放送スタンダードによってもたらされる新しい
特徴の利益を享受するためには、新しいテレビジョン・
セットを購入する必要があった。
【0005】現在、デジタル・テレビジョン放送や、イ
ンターネットのような最新の放送/通信手段によれば、
メディア・コンテンツと一緒にアプリケーションやデー
タを送信することができる。しかしながら、技術革新
や、企業間の競合、独占的なメディア・フォーマットを
普及させようとする企業戦略などのために、メディアや
データのフォーマット変更が未曾有の頻度で行われるよ
うになってきている。インターネットのユーザは、デー
タ・フォーマットの新しいバージョンを用いてエンコー
ドされたWebコンテンツを閲覧するために、アプリケ
ーション・ソフトウェアを絶えずダウンロードし又はア
ップグレードするという処理には充分習熟している。
【0006】米国では、衛星放送、地上放送、ケーブル
放送など伝統的な放送に関しては、FCC(Federal Co
mmunications Commission:米国連邦通信委員会)のよ
うな中央集権的な機関が放送スタンダードに関し絶対的
な制御権を有しており、特定のデータ・フォーマットに
従うように命令することができる。しかしながら、イン
ターネットのように、権力が分散した環境下では、各サ
ービス・プロバイダに対して最新のデータ・フォーマッ
トのバージョンに従うように要求することは困難又は不
可能である。
【0007】さらに、最近のデジタル・セットトップボ
ックス(STB)やホーム・サーバの中には、アプリケ
ーションやデータをダウンロードしたり、不揮発性のロ
ーカル・データ蓄積装置に保存したりする能力を備えた
ものがある。時間の経過とともにもデータ・フォーマッ
トが変更すると、以前のバージョンのデータ・フォーマ
ットを使用して格納されたアプリケーションやデータは
使用不能になってしまう。データ・プロバイダの中に
は、以前のバージョンのデータ・フォーマットのままで
データ供給を続けるものもあるが、アプリケーション・
プロバイダがアプリケーションのアップグレードを望ま
なかったり、既に事業から撤退している場合もある。
【0008】
【発明が解決しようとする課題】本発明の目的は、オブ
ジェクト指向言語によって記述されたクラス及びインタ
ーフェースの継承メカニズムを利用した、優れたデータ
処理システム及び方法を提供することにある。
【0009】本発明の更なる目的は、データ構造が経時
的に変化する(データベース・スキーマ・エボリューシ
ョン)ような場合であっても、アプリケーションに対し
て構造化データへのアクセスを許容することができる、
クラス及びインターフェースの継承メカニズムを利用し
た、優れたデータ処理システム及び方法を提供すること
にある。
【0010】本発明の更なる目的は、古いアプリケーシ
ョンが更新されたスキーマに従う新しいデータに対して
も透過的にアクセスすることができるとともに、新しい
アプリケーションが古いデータ構造に従う古いデータに
対しても透過的にアクセスすることができる、クラス及
びインターフェースの継承メカニズムを利用した、優れ
たデータ処理システム及び方法を提供することにある。
【0011】
【課題を解決するための手段】本発明は、上記課題を参
酌してなされたものであり、その第1の側面は、オブジ
ェクト指向言語及びプログラミング・インターフェース
を用いてデータベースに格納された構造化データにアク
セスするデータ処理システム又は方法であって、アプリ
ケーションを実行するアプリケーション実行手段又はス
テップと、データ構造の仕様をアプリケーションと分離
可能な形式で指定するデータ構造指定手段又はステップ
と、第1のデータ構造仕様に従って構造化されたデータ
にアクセス可能に記述されたアプリケーションに対し
て、該第1のデータ構造仕様を変更した第2のデータ構
造仕様に従って構造化されたデータへのアクセスを許容
するデータ構造進化手段又はステップと、第1のデータ
構造仕様を変更した第2のデータ構造仕様に従って構造
化されたデータに対してアクセス可能に記述されたアプ
リケーションに対して、第1のデータ構造仕様に従って
構造化されたデータへのアクセスを許容するデータ構造
退化手段又はステップと、を具備することを特徴とする
データ処理システム又は方法である。
【0012】前記データ構造進化手段又はステップは、
第1のデータ構造仕様に従って構造化されたデータにア
クセス可能に記述されたアプリケーションに対して、該
第1のデータ構造仕様に複数回の変更を行った第2のデ
ータ構造仕様に従って構造化されたデータへのアクセス
を許容するようにしてもよい。
【0013】また、前記データ構造退化手段又はステッ
プは、第1のデータ構造仕様に複数回の変更を行った第
2のデータ構造仕様に従って構造化されたデータにアク
セス可能に記述されたアプリケーションに対して、第1
のデータ構造仕様に従って構造化されたデータへのアク
セスを許容するようにしてもよい。
【0014】また、前記データ構造進化手段又はステッ
プは、オブジェクト指向言語で記述されたクラス又はイ
ンターフェースの継承メカニズムで構成することができ
る。
【0015】また、前記データ構造退化手段又はステッ
プは、該第1のデータ構造仕様を該第2のデータ構造仕
様に変換するアダプタ・クラス又はインターフェース
と、前記アダプタ・クラス又はインターフェースを管理
するアダプタ・マネージャとで構成されて、問合せに応
答して、第1のデータ構造仕様から第2のデータ構造仕
様に変換可能な1以上のアダプタを探索し及び/又は生
成するようにしてもよい。
【0016】また、本発明の第1の側面に掛かるデータ
処理システムは、さらに、スキーマを識別する識別手段
と、格納されたデータに対する透過的なアクセスを提供
するデータベース・インターフェースと、データをイン
ポートする手段と、インポートされたデータとスキーマ
とを関連付ける手段と、データベースを格納する格納手
段と、を備えてもよい。
【0017】また、本発明の第2の側面は、オブジェク
ト指向言語及びプログラミング・インターフェースを用
いてデータベースに格納された構造化データにアクセス
するデータ処理をコンピュータ・システム上で実行する
ためのコンピュータ・ソフトウェアをコンピュータ可読
形式で物理的に格納した記憶媒体であって、前記コンピ
ュータ・ソフトウェアは、アプリケーションを実行する
アプリケーション実行ステップと、データ構造の仕様を
アプリケーションと分離可能な形式でデータ構造を指定
するデータ構造指定ステップと、第1のデータ構造仕様
に従って構造化されたデータにアクセス可能に記述され
たアプリケーションに対して、該第1のデータ構造仕様
を変更した第2のデータ構造仕様に従って構造化された
データへのアクセスを許容するデータ構造進化ステップ
と、第1のデータ構造仕様を変更した第2のデータ構造
仕様に従って構造化されたデータに対してアクセス可能
に記述されたアプリケーションに対して、第1のデータ
構造仕様に従って構造化されたデータへのアクセスを許
容するデータ構造退化ステップと、を具備することを特
徴とする記憶媒体である。
【0018】本発明の第2の側面に係る記憶媒体は、例
えば、様々なプログラム・コードを実行可能な汎用コン
ピュータ・システムに対して、コンピュータ・ソフトウ
ェアをコンピュータ可読な形式で提供する媒体である。
このような媒体は、例えば、CD(Compact Disc)やF
D(Floppy Disc)、MO(Magneto-Optical disc)な
どの着脱自在で可搬性の記憶媒体である。あるいは、ネ
ットワーク(ネットワークは無線、有線の区別を問わな
い)などの伝送媒体などを経由してコンピュータ・ソフ
トウェアを特定のコンピュータ・システムに提供するこ
とも技術的に可能である。
【0019】このような記憶媒体は、コンピュータ・シ
ステム上で所定のコンピュータ・ソフトウェアの機能を
実現するための、コンピュータ・ソフトウェアと記憶媒
体との構造上又は機能上の協働的関係を定義したもので
ある。換言すれば、本発明の第2の側面に係る記憶媒体
を介して所定のコンピュータ・ソフトウェアをコンピュ
ータ・システムにインストールすることによって、コン
ピュータ・システム上では協働的作用が発揮され、本発
明の第1の側面に係るデータ処理システム又は方法と同
様の作用効果を得ることができる。
【0020】
【作用】本発明は、古いアプリケーションが新しいバー
ジョンのデータにアクセスしたり、新しいアプリケーシ
ョンが古いバージョンのデータにアクセスすることがで
きる、"future proof"並びに"past proof"と呼ぶことが
できるデータ・フォーマット(以下では、「スキーマ
(schema)」とも言う)のメカニズムを提供するもので
ある。
【0021】データ構造進化手段又はステップは、第1
のデータ構造仕様に従って構造化されたデータにアクセ
ス可能に記述されたアプリケーションに対して、該第1
のデータ構造仕様を変更した第2のデータ構造仕様に従
って構造化されたデータへのアクセスを許容することが
できる。
【0022】また、データ構造退化手段又はステップ
は、第2のデータ構造仕様に従って構造化されたデータ
にアクセス可能に記述されたアプリケーションに対し
て、第1のデータ構造仕様に従って構造化されたデータ
へのアクセスを許容することができる。
【0023】したがって、データ構造が時間の経過とと
もに変更していっても、アプリケーション自体には何ら
変更を加えることなく、古いバージョン及び新しいバー
ジョンの双方に対して透過的にアクセスすることができ
る。
【0024】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0025】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施例を詳解する。
【0026】本発明が適用される環境は、データベース
や多数のアプリケーションを実行することができる機
器、又は、機器のネットワークである。以下では、この
ような機器又はネットワーク上の機器のことを「クライ
アント機器」と呼ぶことにする。
【0027】クライアント機器は、好ましくは、Jav
a(商標)プログラミング言語やC++などのようなオ
ブジェクト指向言語で記述された新しいソフトウェア・
モジュールをダウンロードする能力を備えている。ま
た、クライアント機器は、外部機器からデータを受信す
る能力も備えている。
【0028】図1には、本発明を実現するのに適したク
ライアント機器100のハードウェア構成を模式的に示
している。
【0029】このクライアント機器100は、アプリケ
ーション・プログラムを実行したり、他のハードウェア
・モジュールに対して制御コマンドや状態コマンドを送
信したりするプロセッサ1を含んでいる。プロセッサ1
は、外部ネットワークから受信したプログラム・コード
を実行する能力を備えている。このような能力は、例え
ばJava仮想マシンと呼ばれるようなバイト・コード
・インタープリタを実現するソフトウェアを利用するこ
とによって構成される。Java仮想マシンは、標準J
avaプログラミング言語で記述されたコードを解釈し
且つ実行することができる。
【0030】プロセッサ1は、バス2に接続され、他の
ハードウェア構成要素との間でデータやプログラムの転
送を行うことができる。PCI(Peripheral Component
Interconnect)バスやこれと同種のバスをバス2とし
て適用することができる。
【0031】バス2は、プログラムやデータを一時的に
保持するメモリ3に接続されている。同様に、バス2
は、記憶装置コントローラ4にも接続されている。記憶
装置コントローラ4は、SCSI(Small Computer Sys
tem Interface)コントローラ又はIDE(Integrated
Drive Electronics)コントローラに相当し、バス6を
介して不揮発性記憶装置5に接続されている。バス6は
SCSIバス又はIDEバスに相当し、不揮発性記憶装
置5はSCSIハード・ディスク又はIDEハード・デ
ィスクに相当する。複数台の不揮発性記憶装置をバス6
上に配設してもよいし、また、上記したSCSIやID
E以外の標準仕様に従うバス・インターフェースを使用
してもよい。また、不揮発性記憶装置5の中には、クラ
イアント機器100から取り外し可能に構成されたもの
もある。
【0032】バス2は、さらに1又はそれ以上のネット
ワーク・コントローラ7にも接続されている。ネットワ
ーク・コントローラ7は、例えばIP(Internet Proto
col)ネットワークのような外部ネットワーク8を介し
てプログラムやデータを送信したり、受信したり、解釈
したりすることができる。ネットワーク・コントローラ
7は、例えばテレビジョン・チューナのような、プログ
ラムやデータを受信可能な放送メディア受信機であって
もよい。勿論、クライアント機器100は、他のネット
ワークに接続された複数のネットワーク・コントローラ
を備えていてもよい。
【0033】本明細書中では、「スキーマ」("schem
a")という用語は、データ構造及びデータ構造の各要素
のタイプを記述したものを指す。スキーマの進化(sche
ma evolution)は、スキーマ又はスキーマに従うデータ
が新しいスキーマ構造に変更することを意味する。ま
た、スキーマの退化(schema devolution)は、あるス
キーマに従うデータをスキーマの古いバージョンに従う
ように変更するような逆のプロセスを意味する。
【0034】データ・サービスを考慮した場合、異なる
サービス・プロバイダが同じスキーマを使用する方が都
合がよいことがしばしばある。事実、例えば、MPEG
(Moving Picture Experts Group)−7のような標準的
なフォーマットでデータを表現することが要求されてい
るサービスもある。
【0035】標準化されたデータ構造であっても、時間
の経過とともにニーズが変化したり技術が進歩すること
に伴って進化する。データ構造が新しいバージョンにア
ップグレードされたとき、データ・サービス・プロバイ
ダは、新しいデータ構造が使用できるようにすべてのデ
ータ・サービスを同時にアップデートするとは限らな
い。アプリケーション・サービス・プロバイダに関して
もこれと同様のことが当てはまる。アプリケーションが
使用するデータに対してアクセスを行っているユーザが
いる限り、アプリケーション・サービス・プロバイダが
事業から撤退したりアプリケーションのサポート停止を
決定した数ヶ月又は数年経過した後であっても、アプリ
ケーション・サービス・プロバイダは、既存の巨大なユ
ーザ基盤を持ち続ける場合もある。
【0036】本発明は、多数のデータ・プロバイダ、ク
ライアント機器上で実行される多数のアプリケーショ
ン、並びに、クライアント機器のローカル・データベー
スに蓄積されたバージョンが異なるスキーマで記述され
たデータが存在するような環境におけるスキーマの進化
に対応するものである。図2には、2度のアップグレー
ドが行われたスキーマの例を示している。同図におい
て、原初的なスキーマ10はバージョン1であり、これ
を拡張することによりバージョン2のスキーマ11がで
きる。スキーマのバージョン2をさらに修正することに
より、バージョン3のスキーマ3ができる。
【0037】図3には、データ・プロバイダ、クライア
ント機器上のローカル記憶装置、並びにクライアント機
器上で実行されるアプリケーションのそれぞれが異なる
バージョンのスキーマを使用している様子を図解してい
る。
【0038】ある特定の時間においては、複数のデータ
・プロバイダA、B、及びCの各々が同じスキーマの異
なるバージョンを用いてデータを提供している。図3に
示す例では、データ・プロバイダAは原初的なバージョ
ン1に従うデータを供給している。同様に、データ・プ
ロバイダBは同じスキーマのバージョン2を使用し、デ
ータ・プロバイダCは同じスキーマのバージョン3を使
用している。
【0039】クライアント機器26は、図示の3つのす
べてのプロバイダからデータを受信する。したがって、
クライアント機器26のローカル・データベースには、
同じスキーマについての3つのすべてのバージョンのデ
ータが蓄積されることになる。ここで、プロバイダが過
去に同時にバージョン1のデータを供給していたなら
ば、スキーマ28のバージョン1に従うデータは、プロ
バイダA、B、及びCのうちいずれからも受け取り得た
という点に留意されたい。
【0040】さらにクライアント機器26は、3種類の
アプリケーション・プログラムX、Y、及びZを含んで
いる。各アプリケーション・プログラムは、同じスキー
マの異なるバージョンを使用するように記述されている
ものとする。アプリケーションX(31)はデータベー
ス・スキーマのバージョン1を使用する。同様に、アプ
リケーションY(32)は当該スキーマのバージョン2
を使用し、アプリケーションZ(33)は当該スキーマ
のバージョン3を使用する。従来より、各アプリケーシ
ョンは、該アプリケーション向けのスキーマのバージョ
ンに従って記述されたデータに対してはアクセスするこ
とができた。しかしながら、それぞれのアプリケーショ
ンが同じスキーマのいかなるバージョンに従うデータに
対してもアクセスできることが好ましい。
【0041】データベース・スキーマの進化に関連する
分野では、既に多くの提案がなされている。例えばUR
L"http://www.informatik.uni-trier.de/~ley/db/dbim
pl/evolution.html"でアクセス可能なホームページに
は、当該技術の従来技術に関する参考文献が掲載されて
いる。また、Objectivity,Inc社は、デ
ータベース・スキーマの進化に関する新規のソリューシ
ョンを提案したが、これに関しては、URL"http://ww
w.objectivity.com/ObjectDatabase/WP/Schema/schema.
html"でアクセス可能なホームページに論文が掲載さ
れ、また、米国特許番号5,794,030号明細書
(発明の名称:"System and method for maintenance a
nd deferred propagation of schema changes to the a
ffected objects in an object oriented database")
で権利化されている。これらのソリューションによれ
ば、データベース・サーバを実行しているままの状態
で、スキーマを更新することができる。蓄積されている
データは、最終的には新しいスキーマのフォーマットに
変換される。このような変換はすべて同時に行われる
か、又は、"lazy propagation"メカニズムを使用するこ
とでデータに最初にアクセスしたときにのみ変換される
ようになっている。いずれの場合であっても、古いスキ
ーマを使用したデータは新しいスキーマに変換されるの
で、依然として古いスキーマを使用するアプリケーショ
ンは変換後のデータに対してもはやアクセスできなくな
るという問題がある。
【0042】オブジェクト指向言語は当該技術分野にお
いて既に広く知られているが、ここで、オブジェクト指
向言語に関する基本的な概念について考察してみる。
【0043】例えば、Javaプログラミング言語やC
++などのようなオブジェクト指向言語では、クラスの
定義を行うことができる。図4には、Javaプログラ
ミング言語で記述されたクラス定義の例を示している。
【0044】クラスとは、クラスの特定の動作(behavi
or)を表現したプログラム・コード(すなわちクラスの
メソッド)とともに、データのメモリ上での記憶領域
(すなわちクラスのフィールド)を定義したものであ
る。図4に示す例では、"Foo"と呼ばれるクラスが、整
数(integer)フィールドを定義する"attribute1"、並
びに、文字列(String)フィールドを定義する"attribu
te2"という2つのフィールドを有している。タイプFoo
のすべてのオブジェクトは、attribute1並びにattribut
e2に割り当てられた保管場所を持つことになる。また、
タイプFooのすべてのオブジェクトは、method1及びmeth
od2の実装を持つことになる。
【0045】図5には、クラス継承の例を示している。
同図に示す"Bar"というクラスは、上述のクラス"Foo"を
継承するものであり、これはクラスFooのすべてのフィ
ールド及びメソッドがクラスBarのインスタンスにおい
ても同様に利用可能であることを意味する。付言すれ
ば、継承したクラスにはフィールドやメソッドを追加し
たり、メソッドの実装コードをオーバーライド(再定
義)したりすることができる。図示のBarクラスの場
合、"attribute3"というフィールドと、"method3"とい
うメソッドをそれぞれ追加している。クラスBarのこと
をクラスFooに由来する(derived from)と言うことも
できる。図6には、クラス継承の関係をブロック図形式
で示している。
【0046】またオブジェクト指向言語によっては、ク
ラスのフィールドや個々のメソッドの実装の詳細は記述
せずに、オブジェクトが備えるべきメソッドのセットの
みを定義するための機構を備えている場合もある。Ja
vaプログラミング言語では、インターフェースを用い
ることでかかるメカニズムが実現される。本明細書中で
は、要求されたメソッドのセットを記述するためのメカ
ニズムを指す用語としてインターフェースを使用するこ
とにする。
【0047】図7には、Java構文を用いたインター
フェースの例を示している。"HasDuration"と名づけら
れたインターフェースは、getDurationとsetDurationと
いう2つのメソッドを定義しているが、これらのメソッ
ドをどのように実装すべきかについては指定していな
い。いかなるクラスもHasDurationを実装することがで
きるし、HasDurationで定義しているメソッドを用い
て、例えば、持続時間の長さを比較するコードを記述す
ることができる。
【0048】図8には、クラスBarを継承するとともに
インターフェースHasDurationを実装したクラス"TimedB
ar"に関するクラス定義の例を示している。この例で
は、Timeオブジェクトを記憶するフィールドTimedBarが
定義される。このフィールドは、setDurationがコール
されたときにセットされ、getDurationがコールされた
ときに読み出される。Java構文では、クラス定義に
関して、クラスに由来するときには"extends"(拡張)
というキーワードが使用され、インターフェースに由来
するときには"implements"(実装)というキーワードが
使用される。
【0049】図9には、クラスTimedBarの継承木、すな
わち親クラスFooを拡張するとともに親インターフェー
スHasDurationを実装した様子を図解している。
【0050】本発明に係るアプリケーションで使用され
るデータは、スキーマに基づいて構造化されている。図
10には、スキーマの規定するデータ構造を有効グラフ
の形式で図解している。矩形のノードは、整数や文字列
などのような基本タイプを表す端点ノードである。一
方、円形で表されるノードは複数の属性を持つ構造を持
ったデータを表している。図10において、属性はノー
ド間のリンクとして表しており、属性名はそのラベルと
記されている。ノードのスキーマは各ノードが持つべき
属性とそのタイプを規定する。
【0051】図10に示す例では、最上位レベルのスキ
ーマ"TVProgram"は、番組タイトル(title)と、持続時
間(duration)と、シーン(Scene)の一覧で構成され
る。さらに、シーン・スキーマは、開始時刻と終了時刻
で構成される。
【0052】本発明では、スキーマの定義とデータへの
アクセスのために、オブジェクト指向プログラミング言
語におけるクラスとインターフェースを使用する。ま
た、新しいスキーマ・バージョンを古いバージョンに翻
訳するためにアダプタというクラスを使用する。
【0053】本実施例におけるスキーマは、インターフ
ェースによって表現することができる。図11には、"T
VProgram"並びに"Scene"というスキーマをJavaイン
ターフェースによって記述した例を示している。
【0054】スキーマが一旦インターフェースとして定
義されると、インターフェースを実装するとともに保管
とデータベースへの自動的なアクセスを提供するような
クラスを定義することができる。
【0055】オブジェクト指向における継承という概念
によれば、スキーマの進化をごく自然な形式で実装する
ことができる。標準的なオブジェクト指向データベース
の場合、アプリケーションは、データベースにアクセス
する代わりに、クラス・オブジェクトとしてデータにア
クセスする。アプリケーションがクラス・インスタンス
の属性を取り出すようにコールしたときには、該クラス
はデータベースから適切なフィールドを自動的に読み出
す。
【0056】本発明では、図12に示すように、すべて
のデータ・クラスはNodeクラスを継承する。図示の例で
は、Nodeクラスの実装は、データベース中における各ノ
ード固有の識別子を表現するためのフィールドを定義し
ているだけである。通常のオブジェクト指向データベー
スの実情によれば、データベース中の各データ・オブジ
ェクトには、オブジェクトが最初にデータベース中に書
き込まれるときに、ルックアップ・キーとして機能する
ような固有に識別子が自動的に与えられるようになって
いる。データ・クラスの実装者またはアプリケーション
は、このような固有識別子フィールドを明確にセットす
る必要はない。
【0057】Nodeクラスを継承することに加えて、デー
タ・クラスはその構造を定義するスキーマ・インターフ
ェースも実装しなければならない。図13には、以前既
に導入されているTVProgramインターフェースを継承し
たクラスTVProgramImplのリストを示している。getTitl
eというメソッドは、データベース・キーとして固有識
別子を用いて、データベース中から当該オブジェクトに
対応するタイトルを読み出す。図示の例では、後述する
他のすべてのプログラミング例と同様に、変数dbで表
される単一のデータベースを想定しており、以下の単純
なインターフェースを提供する。
【0058】
【数1】get<TYPE> Attribute(Class schemaInterface,
int nodeID, String attributeName) set<TYPE> Attribute(Class schemaInterface, int nod
eID, String attributeName,<TYPE> newValue)
【0059】ここで、<TYPE>は、適切なデータ・タイプ
で置き換えられる。上記の例では、文字列、時間、及
び、オブジェクトという3種類のタイプが使用される。
また、schemaInterfaceは、属性のタイプ(スキーマ)
を指定するインターフェースである。また、nodeIDは、
読み出し又は書き込まれるノードに関するデータベース
中での固有の整数識別子である。また、attributeName
は、読み出し又は書き込まれる属性の名前である。ま
た、newValueは、書き込まれた属性の新しい値である。
オブジェクト指向データベースのほとんどは、少なくと
もこのような最小限の機能を提供している。データベー
スに関する他の機能については後述に譲る。
【0060】setTitleというメソッドは、固有識別子を
キーとして用いながら、データベース中にタイトル・パ
ラメータを書き込む。同様に、durationという属性は、
getDurationというメソッドによってデータベースから
読み出されるとともに、setDurationというメソッドに
よってデータベースに書き込まれる。Sceneのリスト
は、オブジェクトの配列としてデータベースに書き込ま
れる。ここで、Java言語ではオブジェクトの配列も
オブジェクトとして扱われる点に留意されたい。
【0061】次いで、スキーマの変更について説明す
る。本発明では、属性が追加されるようなスキーマの変
更についてのみ考慮し、例えば属性の削除、タイプの変
更といった既存の属性に関する変更については考慮しな
いものとする。(一般には、属性のタイプの変更は許容
されないが、属性のタイプをサブタイプに変更すること
は許される。詳細は後述に譲る)。もしこういった変更
が必要な場合には、新たな属性を別の名前で追加した上
で、元の属性を無視すれば済むので、このような方策は
限定的とは言えない。
【0062】図14には、例示したスキーマを変更した
例を示している。図示の通り、TVProgramスキーマに対
して新しい属性"broadcaster name"を追加することによ
って、新しいスキーマTVProgram2が生成される。この新
しい属性は、ユーザが特定の放送局を指定してプログラ
ムを検索するような場合においてとりわけ有効である。
このようなスキーマの変更は、TVProgramスキーマにの
み影響し、該スキーマに埋め込まれている"scene"スキ
ーマには影響しないという点に留意されたい。
【0063】修正されたスキーマを記述するインターフ
ェースは図15のようになる。このインターフェースに
は、"getBroadcasterName"及び"setBroadcasterName"と
いう2つのメソッドが追加される。図16には、対応す
る実装クラスTVProgramImpl2のリストを示している。ま
た、図17には、この実施例に係るインターフェースと
クラス間の関係を図解している。
【0064】アプリケーションは、データベースに直接
アクセスすることは許されず、ローカル・データベース
中のデータにアクセスするためには、スキーマ・インタ
ーフェースで定義されているメソッドを用いなければな
らない。この規則に従うならば、上述したような継承を
使用することによってスキーマの進化を当然にして実現
することができる。この例に係るTVProgramインターフ
ェースを用いて記述されたいかなるアプリケーションも
また、TVProgramインターフェースを継承して修正され
たスキーマに従うオブジェクトを使用することができ
る。
【0065】次いで、スキーマの退化の場合について説
明する。より新しいバージョンのスキーマ・インターフ
ェースに合わせて記述されたアプリケーションは、古い
データにアクセスするためには、スキーマの退化(すな
わちダウングレード)を行う必要がある。このような場
合、古いデータは、アプリケーションか要求する新しい
メソッド(又はフィールド)を含んでいない点に問題が
ある。このような問題を解決するために、本発明では、
アダプタという概念を導入する。アダプタ・クラスは他
のデータ(adaptee)への参照を持ち、そのスキーマ・
インターフェースを更新された新しいスキーマ・インタ
ーフェースへと翻訳する機能を持つ。アダプタ・クラス
自身も更新されたスキーマ・インターフェースを継承す
るので、アダプタ・クラスのインスタンスはちょうど新
しいクラスのインスタンスとして機能することができ
る。開発者が古いスキーマを継承する新しいスキーマを
定義した場合、開発者はそのスキーマについてのアダプ
タ・クラスを提供することが望まれる。
【0066】図18には、すべてのアダプタ・クラスが
実装すべきインターフェースを示している。fromInterf
aceは、アダプタが翻訳するインターフェースを返すメ
ソッドである。また、toInterfaceは、アダプタが提供
するインターフェースを返すメソッドである。またsetA
dapteeは、変換の対象となるデータ・オブジェクト(ad
aptee)を設定するためのメソッドである。
【0067】図19には、TVProgramオブジェクトを新
しいTVProgram2オブジェクトに翻訳するアダプタの例を
示している。TVProgram2オブジェクトとして動作するた
めに、TVProgram1to2AdapterクラスはTVProgram2インタ
ーフェースを継承する。該クラスは、アップグレードさ
れたTVProgramインスタンスを参照するときに使用するa
dapteeフィールドを定義する。
【0068】本実施例では、例えばgetTitle、setTitl
e、getDuration、setDuration、getScene、setSceneと
言った古いスキーマが実装したメソッドは、単にadapte
eのメソッドをコールするだけである。TVProgram2によ
って追加されたメソッドもここで実装しなければならな
い。getBroadcasterNameというメソッドは、デフォルト
の文字列を返すように実装される。しかしなから、開発
者はさらに洗練されたメソッドを自由に記述することが
できる。例えば、メソッドgetBroadcasterNameを、We
bベースのデータベースを用いて放送局名を探索するよ
うに構成してもよい。
【0069】古いオブジェクトは放送曲名属性を保管す
るための記憶領域を含んでいないので、setBroadcaster
NameはUnsupportedOperationException(非サポート例
外)を投げるように記述される。あるいは、このメソッ
ドが呼び出された時点で、データベースに格納されてい
るデータを新しいスキーマのデータに書き換えた上で、
該当する属性の値を書きかえてもよい。
【0070】図20には、スキーマ・インターフェー
ス、及びその実装クラスの異なるバージョン、及びアダ
プタ・クラス関係について図解している。
【0071】同図において、TVProgram100は元のス
キーマである。TVProgramImplクラス102は、TVProgr
amを実装したクラスであり、そのインスタンスはデータ
ベース中のオブジェクトに対応する。TVProgramImpl
は、Nodeクラスを継承しており,TVProgramImplに対する
メソッド・コールは、データの読み出し及び書き込みを
行うデータベース・トランザクションとなる。
【0072】TVProgram2インターフェース103は、ア
ップグレードされたスキーマである。該インターフェー
スは、TVProgramインターフェース100を継承したも
のである。TVProgram2Impl104は、TVProgram2インタ
ーフェース103を実装し、TVProgramImplクラス10
2を継承したクラスである。TVProgram1to2Adapterクラ
ス105も、TVProgram2インターフェース105を実装
したものである。該クラスは、TVProgramImplクラス1
02のインスタンスを指すadapteeフィールド106を
備えている。
【0073】以上は既存のスキーマに新たな属性を追加
する場合について述べた。次に既存の属性のスキーマ
(サブスキーマ)を更新する場合について述べる。図2
1には、TVProgramスキーマを更新したTVProgram2スキ
ーマを更に修正したTVProgram3について図解している。
今回の修正では、Sceneサブスキーマ83に対して、キ
ー・フレーム属性90を追加するように修正が加えられ
ている。ここで言うキー・フレームとは、ビデオ・シー
ンにおける代表フレームを意味する。本明細書中では、
修正されたスキーマ89のことをScene2を呼ぶことにす
る。Sceneサブスキーマの更新に伴って、TVProgram2ス
キーマについてもその"scene"の属性のタイプが更新さ
れる。
【0074】図22には、新しいスキーマ・インターフ
ェースを記述したプログラム・リストの例を示してい
る。Scene2インターフェースは、以前の例に対して新し
いメソッドgetKeyFrame及びsetKeyFrameを追加してでき
る。一方、本来ならばTVProgram3インターフェースは、
Sceneオブジェクトの代わりに、Scene2オブジェクトの
配列を返すようにgetScenesをオーバーライド(再定
義)すべきである。しかしながら、Javaプログラミ
ング言語では、異なるタイプを返すようなオーバーライ
ドするのは、たとえその返値のタイプが元のタイプのサ
ブタイプである場合であっても許されていない。そこ
で、この例においては、実質的な変更を伴わないダミー
のサブインターフェースTVProgram3を定義している。こ
の場合、getScenes関数を呼ぶ側が返値に対し明示的に
型のキャストを行うことになる。なお、C++のような
他の言語ではメソッドに対するこのようなオーバーライ
ドが許されている場合もある。
【0075】図23には、TVProgram3スキーマ・インタ
ーフェースを実装したTVProgram3Implの実装コードを示
している。TVProgram3ImplはさらにTVProgram2Implを継
承し、getScenesメソッドをオーバーライドしている。
このメソッドは、親クラスによって使用されるSceneオ
ブジェクトの代わりにデータベースからScene2オブジェ
クトの配列を読み出す。
【0076】図24には、Scene2に関するクラス及びイ
ンターフェース、並びにその親クラス及びインターフェ
ースの構成図を示している。また、図25には、TVProg
ramインターフェース及びそのサブインターフェースに
関する新しい継承木を図解している。
【0077】TVProgram2に関しては、TVProgram2インタ
ーフェースからTVProgram3インターフェースへの翻訳を
行うアダプタ・クラスを生成する必要がある。図26に
は、このクラスのプログラム・リストを示している。TV
Program2to3Adapterでは、getScenesメソッドを実装す
る際にすべてのSceneオブジェクトをScene2オブジェク
トに翻訳するために何らかの特別な処理を行う必要があ
る。これは、Scene1to2Adapterインスタンスの配列を生
成することによって実現される。(Scene1to2Adapterク
ラスに関しては後述する)。この例で示したように、属
性のタイプをアップグレードする場合は、その属性のデ
ータ・オブジェクトのスキーマをアップグレードするの
に必要な新たなアダプタを生成し、それを返すようにす
る。
【0078】他のすべてのメソッドは、以前の例と同
様、単にadapteeの同じメソッドをコールするだけであ
る。図27には、Scene2to3Adapterに関するクラス継承
図を示している。
【0079】図28には、Scene1to2Adapterを実装した
プログラム・リストを示しているが、これは、TVProgra
m1to2Adapterと同様のパターンとなる。また、図29に
は、Scene1to2Adapterのクラス継承を図解している。
【0080】本実施例に係るシステムでは、従来のオブ
ジェクト指向データベースで用いられたものと同様のパ
ラダイムによりデータ・アクセスが実現される。ほとん
どのオブジェクトは、他のオブジェクトからの参照によ
ってアクセスされるが、参照の起点となる"root"オブジ
ェクトについては、文字列で指定される名前によって参
照される。”root”オブジェクトにアクセスするための
アプリケーション・コードの例を以下に示しておく。
【0081】
【数2】Database db; /* initialize database */ ......... /* retrieve top level object by name */ TVProgram p = db.getRoot("the Simpsons EPISODE AAB
F13",TVProgram.class);
【0082】上記の例では、データベースは、ノード名
及びスキーマ・インターフェースを指定して”root”ノ
ードを取り出すための、getRootメソッドを提供してい
る。
【0083】getRootメソッドでは、引数で指定された
ノードのタイプを調べ、それが指定されたスキーマ・イ
ンターフェースに適合する場合には、通常のオブジェク
ト指向データベースと同様に、そのノードを表すオブジ
ェクトをデータベースから取り出し、アプリケーション
に返す。
【0084】一方、データベース中のノードのタイプと
引数でしてされたスキーマ・インターフェースの型が適
合しない場合には、以下に述べる手順に従い、オブジェ
クトを翻訳することができる適切なアダプタ・クラスを
探索する。1つのアダプタ・クラスが見つかった場合に
は、データベースはこれをインスタンス化して戻り値と
する。他方、適切なアダプタ・クラスがまったく見つか
らなかった場合には、探索に失敗する。
【0085】アダプタ・クラスの探索を可能にするため
には、すべてのアダプタ・クラスをアダプタ・マネージ
ャに登録しておかなければならない。この登録手続き
は、アダプタ・クラスがシステムに最初にロードされる
ときに自動的に行うべきである。
【0086】図30には、簡易で且つ効果的なアダプタ
・マネージャの実装例を図解している。このアダプタ・
マネージャは、キー値の組に高速アクセスするためのマ
ッピング・テーブルを含んでいる。ここで使用されるキ
ーは、アダプタが翻訳する"fromInterface"インターフ
ェースと"toInterface"インターフェースの組合せであ
る。図30では、キーは内部クラスAdapterKeyとして示
されている。AdapterKeyは、fromInterfaceとtoInterfa
ce両方を同時に比較するためequalメソッドをオーバー
ライドしている。
【0087】registerAdapterは、アダプタ・クラスを
登録すラメのメソッドで、引数として渡されたアダプタ
・クラスの”fromInterface”インターフェース, “toI
nterface”インターフェースに基づいてキーを生成し、
内部のマッピング・テーブルへ格納する。またunregist
erAdapterメソッドは、該マッピング・テーブルからア
ダプタ・エントリを取り除くメソッドである。
【0088】createAdapterは、所定の"from"及び"to"
インターフェースに該当するアダプタを探し出すメソッ
ドである。図30に示した実装例では、極めて簡素なテ
ーブル探索で実現する。アダプタが見つかったときに
は、呼び出し元に対してこれを返す。また、該当するア
ダプタが見つからなかったときには例外が投じられる。
createAdapterの他の実装例では、一連のアダプタ・ク
ラスを照合するため処理をより洗練することができるで
あろう。
【0089】これまでに説明した実施例では、TVProgra
mスキーマ・インタフェースは2度修正されている。す
なわち、1度目の修正では放送局名属性が追加され(TV
Program2インターフェースに帰する)、2度目の修正で
は、キー・フレーム属性がサブスキーマに追加されてい
る(TVProgram3インターフェースに帰する)。
【0090】TVProgramインターフェースに関してのみ
知るアプリケーションであっても、これよりも新しいTV
Program2インターフェースやTVProgram3インターフェー
スに従って記述されたデータを使用することができる。
何故ならば、これら新しいインターフェースは、TVProg
ramインターフェースを実装しているからである。一般
に、オブジェクト指向言語のクラス継承特性によれば、
スキーマの古いバージョンを使用するアプリケーション
は、スキーマの新しいバージョンを使用するデータ・オ
ブジェクトのメソッドをコールすることができる。何故
ならば、新しいバージョンは同じインターフェースを継
承しているからである。
【0091】ここで、TVProgram3インターフェースを使
用するように記述されたアプリケーションの場合につい
て考察してみる。上述では、スキーマをあるバージョン
から以前のバージョンにアップグレードするためにアダ
プタ・クラスをどのように使用することができるかにつ
いて説明してきた。しかし、複数の変更が行われたよう
な場合、例えば、TVProgram3インターフェースに適合さ
せるためにTVProgramデータを2回にわたってアップグ
レードした場合は、どのようにすればよいであろうか。
【0092】この件に関して、少なくとも2通りの解決
法が可能である。新しいスキーマの開発者は、アダプタ
・マネージャに登録されている"TVProgram1to3"アダプ
タ・クラスを提供することができる。しかしながら、ス
キーマの以前のすべてのバージョンのために記述された
アダプタ・クラスを要求することは、アプリケーション
開発者にとって過大な負担である。
【0093】アダプタ・マネージャは、既存のTVProgra
m1to2アダプタ及びTVProgram2to3アダプタのクラスを用
いることで、新しいアダプタを生成することができる。
この際、TVProgram2to3アダプタのadapteeフィールドに
はTVProgram1to2アダプタのインスタンスをセットす
る。一般に、新しいスキーマ・インターフェースについ
て、その直近の親インターフェースに対するアダプタが
用意されてさえいれば、それらのアダプタを入れ子状に
組み合わせることにより、任意の祖先との間でのアダプ
タを生成することができる。図31には、このようなこ
とを実現するプログラミング・コードのリストを示して
いる。createAdapterの新しいバージョンは、fromInter
faceをtoInterfaceに変換するのに必要なアダプタのセ
ットを再帰的に探索する。アダプタをチェーン状に連結
していく。この時、各アダプタの”adaptee”フィール
ドは、最後のアダプタを除いてチェーン上での次のアダ
プタとなる。アダプタの入れ子構造が発見されなかった
場合には、例外が投じられる。
【0094】TVProgram1からTVProgram3へのアダプタを
生成する例について説明する。但し、TVProgram1to2Ada
pter及びTVProgram2to3Adapterの各アダプタは既にアダ
プタ・マネージャに登録されていると仮定する。ここ
で、以下に示すコードについて考察してみる。
【0095】
【数3】/* AdapterManager instance owned by the da
tabase */ AdapterManager manager; /* An instance that implements TVProgram */ TVProgram1Impl tv1; /* assume manager and tv1 are initialized elsewher
e */ ............ Adapter exampleAdapter =Manager.createAdapter(TVPr
ogram.class, TVProgram3.class, tv1);
【0096】図32〜図35には、このコードの動作を
図解している。
【0097】図32では、引数"toInterface"がTVProgr
am2302にセットされ、引数"fromInterface"がTVProg
ram3300にセットされ、所望のアダプタ303は未知
とする。
【0098】図31にプログラム・リストを示したcrea
teAdapterメソッドを用いて、行番号02において、TVP
rogram1及びTVProgram3のクラス・オブジェクトを使用
するアダプタに関するアダプタ・マネージャの内部テー
ブルを引くためのキーを生成する。TVProgram1をTVProg
ram3に翻訳するアダプタが登録されていないので、行番
号03において該テーブルを検索したときにgetメソッ
ドはNULLを返す。
【0099】行番号08では、fromInterface(TVProgr
am1)がtoInterface(TVProgram3)のスーパーインター
フェースか否かをチェックする。fromInterfaceがtoInt
erfaceへのサブインターフェースである場合には、アダ
プタが生成できない(アダプタを利用する必要がない)
ため処理は失敗に終わる。但し、ここではTVProgram1は
TVProgram3のスーパーインターフェースであり、行番号
10に相当する処理へと続く。
【0100】行番号10〜12では、toInterfaceの直
近の親インターフェースがfromInterfaceと同じである
か否かをチェックする。もし判断結果が真であれば、ア
ダプタを生成できないことを意味する。何故ならば、行
番号03における検索によって、"fromInterface"から"
toInterface"までの間にはアダプタは存在しないと判定
されているからである。ここでは、図32からも分かる
ように、TVProgram2がtoInterface(TVProgram3)に対
する直近の親となる。
【0101】処理の実行はさらに行番号14〜16へと
続き、問合せに照合する一連のアダプタを構築するため
に、再帰的探索を実行する。この時点における実行状況
は、図32に示す通りである。行番号14では、行番号
30〜45で定義されている、toInterfaceの直近の親
スキーマ・インターフェースを戻すユーティリティ機能
を使用する。(該ユーティリティ機能getParentSchemaI
nterfaceは、実際には、引数として渡されたクラスの実
装するアダプタ・クラスではない最初のインターフェー
スを返す。より簡潔に言えば、各クラスは、単一のスキ
ーマ・インターフェースのみを実装するものと仮定す
る。)
【0102】行番号15では、最初の再帰的検索を実行
して、createMethodを再帰的にコールすることによっ
て、fromInterfaceであるTVProgram300からtoInterf
aceの親インターフェース(すなわちTVProgram230
1)までのアダプタ・クラスの生成を試行する。図33
には、最初の再帰的コールについて図解している。TVPr
ogram1to2Adapterは既にTVProgramをTVProgram2に変換
するアダプタとして登録されているので、TVProgram1to
2Adapter305が瞬時に返される。TVProgram1to2Adapt
erはチェーン上の最後のアダプタなので、tv1すなわち
元のadapteeにセットされたadapteeフィールドを持つこ
とになるという点に留意されたい。
【0103】図34には、TVProgram2301をTVProgra
m3302に変換することができるアダプタを探索する様
子を示している。createMethodをコールすると、すぐに
TVProgram2to3Adapter304が見つけ出されて返され
る。この時点では、行番号15における探索の結果すな
わちアダプタ・クラスaが、行番号16における探索結
果のadapteeとして用いられる。この結果として図35
に示すように、TVProgram300をTVProgram3302に
変換するアダプタ306が、TVProgram1to2Adapter30
5とTVProgram2to3Adapter304の組み合わせとして形
成されたことになる。
【0104】新たに生成されたアダプタbは、行番号1
7において、呼び出し元に返される。
【0105】exampleAdapterに対して適用されるすべて
のTVProgramメソッド・コールは、まず最初にTVProgram
2to3Adapterのadapteeフィールドを通過し、アダプタa
305のadapteeフィールドに渡される。次いで、アダ
プタaは、これらのコールをさらにaのadapteeフィルド
で参照されるオブジェクトに委譲する。この例では、ア
ダプタaのadapteeフィルドが tv1 に設定されている。
【0106】exampleAdapterに対して適用されるTVProg
ram2メソッド・コールは、同様に、exampleAdapterのad
apteeフィールドで参照されるTVProgram1to2Adapterに
委譲される。TVProgram1to2Adapterは、これらをtv1に
は渡さず、その代わりに、getBroadcasterNameメソッド
に代わるデフォルト値を供給することによって自ら処理
する。
【0107】exampleAdapterに対して適用されるTVProg
ram3メソッド・コールは、他に委譲されることはない。
これらのコールは、TVProgram2to3Adapterによって直接
処理され、Scene1to2Adapterのオブジェクトの新しい配
列を返す。図26にはこの点について図解している。
【0108】上記のcreateAdapterの処理は、スキーマ
が何代にも渡って更新された場合であっても適用でき
る。さらには図36に示すように、スキーマのバージョ
ンが分岐している、すなわち複数のスキーマが同じ親ス
キーマを継承して定義されている場合であっても以下に
述べるように、前述の方法を拡張することで対応でき
る。
【0109】図36において、円形はスキーマを表して
いる。この図において、スキーマ400から、異なる2
つのバージョン401および402が派生している。同
様にスキーマ401から派生して403、404という
二つのバージョンが定義されている。さらにスキーマ4
04に対し、406、407という2つの派生スキーマ
が定義されるている。
【0110】このような複数のスキーマへの分岐が発生
するような、より一般的な場合では、以下のようにcrea
teAdapterメソッドを変更することによって処理するこ
とができる。まず最初に"fromInterface"及び"toInterf
ace"の最も近い共通の祖先インターフェースを求める。
次に前述の方法により祖先インターフェースと”toInte
rface”へのアダプタを求める。ここで”fromInterfac
e”はこの祖先インターフェースを継承しているの
で、”fromInterface”から祖先インターフェースへと
翻訳すのに特にアダプタは必要としない。従って祖先イ
ンタフェースから”toInterface”へと翻訳するアダプ
タを用いて”fromInterface”から”toInterface”への
翻訳を実現することが可能となる。
【0111】図36に示す例では、403から407へ
変換したい場合には、まず最初に最も近い共通の祖先と
して401を見つけ出す。次に、401から407への
アダプタを生成し、このアダプタの”adaptee”フィー
ルドを403のデータ・オブジェクトへの参照へと設定
する。
【0112】本明細書中並びに添付図面でJavaプロ
グラミング言語形式で記述されたスキーマの例では、説
明を簡単にするため、sceneオブジェクトのグループを
表現するために配列を使用しているが、その代わりにJa
va Collectionインターフェース又はこれの等価物を使
用してもよい。Collectionインターフェースは、Collec
tionに対する要素の追加や削除によってデータベースに
対するオブジェクトの追加や削除を自動化することがで
きるので、より柔軟性に富んでいる。オブジェクト指向
プログラミングに精通した当業者であれば、より適切な
Collectionオブジェクトに対して本発明を適用できるこ
とを理解できるであろう。
【0113】[追補]以上、特定の実施例を参照しなが
ら、本発明について詳解してきた。しかしながら、本発
明の要旨を逸脱しない範囲で当業者が該実施例の修正や
代用を成し得ることは自明である。すなわち、例示とい
う形態で本発明を開示してきたのであり、限定的に解釈
されるべきではない。本発明の要旨を判断するために
は、冒頭に記載した特許請求の範囲の欄を参酌すべきで
ある。
【0114】
【発明の効果】以上詳記したように、本発明によれば、
オブジェクト指向言語によって記述されたクラス及びイ
ンターフェースの継承メカニズムを利用した、優れたデ
ータ処理システム及び方法を提供することができる。
【0115】また、本発明によれば、データ構造が経時
的に変化する(データベース・スキーマ・エボリューシ
ョン)ような場合であっても、アプリケーションに対し
て構造化データへのアクセスを許容することができ、ク
ラス及びインターフェースの継承メカニズムを利用し
た、優れたデータ処理システム及び方法を提供すること
ができる。
【0116】また、本発明によれば、古いアプリケーシ
ョンが更新されたスキーマに従う新しいデータに対して
も透過的にアクセスすることができるとともに、新しい
アプリケーションが古いデータ構造に従う古いデータに
対しても透過的にアクセスすることができ、クラス及び
インターフェースの継承メカニズムを利用した、優れた
データ処理システム及び方法を提供することができる。
【図面の簡単な説明】
【図1】本発明を実現するのに適したクライアント機器
100のハードウェア構成を模式的に示した図である。
【図2】2度のアップグレードが行われたスキーマの例
を示した図である。
【図3】データ・プロバイダ、クライアント機器上のロ
ーカル記憶装置、並びにクライアント機器上で実行され
るアプリケーションのそれぞれが異なるバージョンのス
キーマを使用している様子を示した図である。
【図4】Javaプログラミング言語で記述されたクラ
ス定義の例を示した図である。
【図5】クラス継承の例を示した図である。
【図6】クラス継承の関係を示したブロック図である。
【図7】Java構文を用いたインターフェースの例を
示した図である。
【図8】クラスBarを継承するとともにインターフェ
ースHasDurationを実装したクラス"TimedBar"に関する
クラス定義の例を示した図である。
【図9】クラスTimedBarの継承木、すなわち親クラスFo
oを継承するとともに親インターフェースHasDurationを
実装した様子を示した図である。
【図10】スキーマの構造を有効グラフの形式で示した
図である。
【図11】"TVProgram"並びに"Scene"というスキーマを
Javaインターフェースによって記述した例を示した
図である。
【図12】すべてのデータ・クラスがノード・クラスを
継承する例を示した図である。
【図13】以前既に導入されているTVProgramインター
フェースを継承したクラスTVProgramImplのリストを示
した図である。
【図14】スキーマを変更した例を示した図である。
【図15】修正されたスキーマを記述するインターフェ
ースを示した図である。
【図16】実装クラスTVProgramImpl2のリストを示した
図である。
【図17】インターフェースとクラス間の関係を示した
図である。
【図18】すべてのアダプタ・クラスが実装しなければ
ならないアダプタ・インターフェースを示した図であ
る。
【図19】TVProgramオブジェクトを新しいTVProgram2
オブジェクトに翻訳するアダプタの例を示した図であ
る。
【図20】TVProgramスキーマ・インターフェース、ク
ラス、及びアダプタの異なるバージョン間の関係につい
て示した図である。
【図21】TVProgramスキーマの第2番目の修正を示し
た図である。
【図22】新しいインターフェースを記述したプログラ
ム・リストの例を示した図である。
【図23】TVProgram3インターフェースを実装したTVPr
ogramImplの実装形態を示した図である。
【図24】Scene2に関するクラス及びインターフェー
ス、並びにその親クラス及びインターフェースの構成図
である。
【図25】TVProgramインターフェース及びそのサブイ
ンターフェースに関する新しい継承木を示した図であ
る。
【図26】TVProgram2インターフェースからTVProgram3
インターフェースへの翻訳を行うアダプタ・クラスのプ
ログラム・リストである。
【図27】Scene1to2Adapterに関するクラス継承図であ
る。
【図28】Scene1to2Adapterを実装したプログラム・リ
ストである。
【図29】Scene1to2Adapterのクラス継承図である。
【図30】簡易で且つ効果的なアダプタ・マネージャの
実装例を示した図である。
【図31】インターフェースとその祖先との間でアダプ
タの生成を実現するプログラミング・コードのリストで
ある。
【図32】TVProgram1からTVProgram3へのアダプタを生
成するcreateAdapterをコールする様子を示した図であ
り、より具体的には、再帰的探索を開始した時点におけ
る実行状況を示した図である。
【図33】TVProgram1からTVProgram3へのアダプタを生
成するcreateAdapterをコールする様子を示した図であ
り、より具体的には、最初の再帰的コールを行う様子を
示した図である。
【図34】TVProgram1からTVProgram3へのアダプタを生
成するcreateAdapterをコールする様子を示した図であ
り、より具体的には、TVProgram2301をTVProgram33
02に変換することができるアダプタを探索する様子を
示した図である。
【図35】TVProgram1からTVProgram3へのアダプタを生
成するcreateAdapterをコールする様子を示した図であ
り、より具体的には、TVProgram300をTVProgram33
02に変換することができる単一のアダプタ306が形
成される様子を示した図である。
【図36】複数のスキーマへの分岐が発生するような、
より一般的なスキーマ家系図の例である。
【符号の説明】
1…プロセッサ 2…バス 3…メモリ 4…記憶装置コントローラ 5…不揮発性記憶装置 6…バス 7…ネットワーク・コントローラ 8…ネットワーク 100…クライアント機器

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】オブジェクト指向言語及びプログラミング
    ・インターフェースを用いてデータベースに格納された
    構造化データにアクセスするデータ処理システムであっ
    て、 アプリケーションを実行するアプリケーション実行手段
    と、 データ構造の仕様をアプリケーションと分離可能な形式
    で指定するデータ構造指定手段と、 第1のデータ構造仕様に従って構造化されたデータにア
    クセス可能に記述されたアプリケーションに対して、該
    第1のデータ構造仕様を変更した第2のデータ構造仕様
    に従って構造化されたデータへのアクセスを許容するデ
    ータ構造進化手段と、 第1のデータ構造仕様を変更した第2のデータ構造仕様
    に従って構造化されたデータに対してアクセス可能に記
    述されたアプリケーションに対して、第1のデータ構造
    仕様に従って構造化されたデータへのアクセスを許容す
    るデータ構造退化手段と、を具備することを特徴とする
    データ処理システム。
  2. 【請求項2】前記データ構造進化手段は、第1のデータ
    構造仕様に従って構造化されたデータにアクセス可能に
    記述されたアプリケーションに対して、該第1のデータ
    構造仕様に複数回の変更を行った第2のデータ構造仕様
    に従って構造化されたデータへのアクセスを許容するこ
    とを特徴とする請求項1に記載のデータ処理システム。
  3. 【請求項3】前記データ構造退化手段は、第1のデータ
    構造仕様に複数回の変更を行った第2のデータ構造仕様
    に従って構造化されたデータにアクセス可能に記述され
    たアプリケーションに対して、第1のデータ構造仕様に
    従って構造化されたデータへのアクセスを許容すること
    を特徴とする請求項1に記載のデータ処理システム。
  4. 【請求項4】前記データ構造進化手段は、オブジェクト
    指向言語で記述されたクラス又はインターフェースの継
    承メカニズムであることを特徴とする請求項1に記載の
    データ処理システム。
  5. 【請求項5】前記データ構造退化手段は、該第1のデー
    タ構造仕様を該第2のデータ構造仕様に変換するアダプ
    タ・クラス又はインターフェースと、前記アダプタ・ク
    ラス又はインターフェースを管理するアダプタ・マネー
    ジャとで構成されて、問合せに応答して、第1のデータ
    構造仕様から第2のデータ構造仕様に変換可能な1以上
    のアダプタを探索し及び/又は生成することを特徴とす
    る請求項1に記載のデータ処理システム。
  6. 【請求項6】さらに、 スキーマを識別する識別手段と、 格納されたデータに対する透過的なアクセスを提供する
    データベース・インターフェースと、 データをインポートする手段と、 インポートされたデータとスキーマとを関連付ける手段
    と、 データベースを格納する格納手段と、を備えることを特
    徴とする請求項1に記載のデータ処理システム。
  7. 【請求項7】オブジェクト指向言語及びプログラミング
    ・インターフェースを用いてデータベースに格納された
    構造化データにアクセスするデータ処理方法であって、 アプリケーションを実行するアプリケーション実行ステ
    ップと、 データ構造の仕様をアプリケーションと分離可能な形式
    でデータ構造を指定するデータ構造指定ステップと、 第1のデータ構造仕様に従って構造化されたデータにア
    クセス可能に記述されたアプリケーションに対して、該
    第1のデータ構造仕様を変更した第2のデータ構造仕様
    に従って構造化されたデータへのアクセスを許容するデ
    ータ構造進化ステップと、 第1のデータ構造仕様を変更した第2のデータ構造仕様
    に従って構造化されたデータに対してアクセス可能に記
    述されたアプリケーションに対して、第1のデータ構造
    仕様に従って構造化されたデータへのアクセスを許容す
    るデータ構造退化ステップと、を具備することを特徴と
    するデータ処理システム。
  8. 【請求項8】前記データ構造進化ステップでは、第1の
    データ構造仕様に従って構造化されたデータにアクセス
    可能に記述されたアプリケーションに対して、該第1の
    データ構造仕様に複数回の変更を行った第2のデータ構
    造仕様に従って構造化されたデータへのアクセスを許容
    することを特徴とする請求項7に記載のデータ処理方
    法。
  9. 【請求項9】前記データ構造退化ステップでは、第1の
    データ構造仕様に複数回の変更を行った第2のデータ構
    造仕様に従って構造化されたデータにアクセス可能に記
    述されたアプリケーションに対して、第1のデータ構造
    仕様に従って構造化されたデータへのアクセスを許容す
    ることを特徴とする請求項7に記載のデータ処理方法。
  10. 【請求項10】前記データ構造進化ステップは、オブジ
    ェクト指向言語で記述されたクラス又はインターフェー
    スの継承メカニズムを用いて実現されることを特徴とす
    る請求項7に記載のデータ処理方法。
  11. 【請求項11】前記データ構造退化ステップは、該第1
    のデータ構造仕様を該第2のデータ構造仕様に変換する
    サブステップと、前記アダプタ・クラス又はインターフ
    ェースを管理するサブステップとで構成されて、問合せ
    に応答して、第1のデータ構造仕様から第2のデータ構
    造仕様に変換可能な1以上のアダプタを探索し及び/又
    は生成することを特徴とする請求項7に記載のデータ処
    理方法。
  12. 【請求項12】オブジェクト指向言語及びプログラミン
    グ・インターフェースを用いてデータベースに格納され
    た構造化データにアクセスするデータ処理をコンピュー
    タ・システム上で実行するためのコンピュータ・ソフト
    ウェアをコンピュータ可読形式で物理的に格納した記憶
    媒体であって、前記コンピュータ・ソフトウェアは、 アプリケーションを実行するアプリケーション実行ステ
    ップと、 データ構造の仕様をアプリケーションと分離可能な形式
    でデータ構造を指定するデータ構造指定ステップと、 第1のデータ構造仕様に従って構造化されたデータにア
    クセス可能に記述されたアプリケーションに対して、該
    第1のデータ構造仕様を変更した第2のデータ構造仕様
    に従って構造化されたデータへのアクセスを許容するデ
    ータ構造進化ステップと、 第1のデータ構造仕様を変更した第2のデータ構造仕様
    に従って構造化されたデータに対してアクセス可能に記
    述されたアプリケーションに対して、第1のデータ構造
    仕様に従って構造化されたデータへのアクセスを許容す
    るデータ構造退化ステップと、を具備することを特徴と
    する記憶媒体。
JP2000153295A 2000-05-24 2000-05-24 データ処理システム及び方法、並びに、記憶媒体 Pending JP2001331315A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000153295A JP2001331315A (ja) 2000-05-24 2000-05-24 データ処理システム及び方法、並びに、記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000153295A JP2001331315A (ja) 2000-05-24 2000-05-24 データ処理システム及び方法、並びに、記憶媒体

Publications (1)

Publication Number Publication Date
JP2001331315A true JP2001331315A (ja) 2001-11-30

Family

ID=18658578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000153295A Pending JP2001331315A (ja) 2000-05-24 2000-05-24 データ処理システム及び方法、並びに、記憶媒体

Country Status (1)

Country Link
JP (1) JP2001331315A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012504266A (ja) * 2008-09-30 2012-02-16 レインスター リミテッド データ記憶のためのシステム及び方法
US8332398B2 (en) 2003-01-31 2012-12-11 Minolta Co., Ltd. Database system in which logical principles for a data retrieval process can evolve based upon learning
WO2018035341A1 (en) 2016-08-18 2018-02-22 Eastman Chemical Company Polyester compositions which comprise tetramethylcyclobutanediol and ethylene glycol for calendering
WO2019171794A1 (ja) 2018-03-07 2019-09-12 オムロン株式会社 サポート装置およびサポートプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332398B2 (en) 2003-01-31 2012-12-11 Minolta Co., Ltd. Database system in which logical principles for a data retrieval process can evolve based upon learning
JP2012504266A (ja) * 2008-09-30 2012-02-16 レインスター リミテッド データ記憶のためのシステム及び方法
US8706779B2 (en) 2008-09-30 2014-04-22 Rainstor Limited System and method for data storage
WO2018035341A1 (en) 2016-08-18 2018-02-22 Eastman Chemical Company Polyester compositions which comprise tetramethylcyclobutanediol and ethylene glycol for calendering
WO2019171794A1 (ja) 2018-03-07 2019-09-12 オムロン株式会社 サポート装置およびサポートプログラム
US11221828B2 (en) 2018-03-07 2022-01-11 Omron Corporation Support device and support program

Similar Documents

Publication Publication Date Title
US7254814B1 (en) Methods and apparatus for managing plug-in services
US7246134B1 (en) System and methods for tag library generation
US20100299438A1 (en) Online resource server for allowing device control and access to digital content trhough pluggable user interfaces
US7930685B2 (en) Method and system for providing a version-independent interface
US20080178198A1 (en) Distributed digital media management
US20040201600A1 (en) Methods and system for providing an XML-based interface description language
CN101351992B (zh) 自动克隆it资源结构的方法和系统
US20070174297A1 (en) Apparatus and method for providing remote user interface service
JP2008507755A (ja) インデックスベースのパラメータアクセス及びこれを使用するためのソフトウェア
CN101681320A (zh) 内容目录服务和控制点之间的内容同步
US10445079B2 (en) Mapping and formatting input commands to a third party protocol
US8903965B2 (en) Method and apparatus for re-generating configuration commands of a network device using an object-based approach
US6918122B2 (en) Apparatus for dynamic implementation of Java™ metadata interfaces
US7107574B1 (en) Managing computer program configuration data
CN113039498A (zh) 在工业系统网络中调试现场设备的方法
AU2001251329A1 (en) Generic data processing engine
EP1281279A1 (en) Generic data processing engine
US20020159519A1 (en) Delivery of multimedia descriptions using access units
US7237222B1 (en) Protocol for controlling an execution process on a destination computer from a source computer
CN1716960B (zh) 产生包括xpath表达式的xml表示的管理事务的方法和设备
US7328234B1 (en) Agent architecture for triggering remotely initiated data processing operations
JP4136271B2 (ja) アプリケーションサーバシステム
US20020165996A1 (en) Apparatus for meta object facility repository bootstrap
JP2001331315A (ja) データ処理システム及び方法、並びに、記憶媒体
US6721949B1 (en) Kernel abstraction layer for digital television set-top box firmware