(57)【要約】【課題】  データの一貫性を維持するとともに、メモリ領域を節約しながら、アプリケーションからのデータアクセスを高速化する。【解決手段】  携帯端末１０のキャッシュ制御部１５は、アプリケーション１３が参照するデータを規定したオブジェクトのインスタンスへのアクセス要求を受け、該オブジェクトのインスタンスが存在しない場合は、オブジェクトのインスタンスと、カウンタを生成する。また、リファレンス設定クラスのインスタンスを生成し、要求されたオブジェクトのインスタンスを参照するリファレンスを設定してアプリケーション１３に返送するとともに、カウンタを１増加させる。リファレンス設定クラスのインスタンスの解放通知を受けた場合は、対応するカウンタを１減算し、該カウンタが０になった場合にオブジェクトのインスタンスを解放する。【選択図】  図１
2005190221.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置であって、
前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるインスタンス要求受信手段と、
要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成するインスタンス生成手段と、
前記インスタンス生成手段が前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するカウンタ生成手段と、
リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを１増加させるリファレンス設定手段と、
リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを１減算するとともに、該カウンタが０になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するインスタンス解放手段と、
を備えることを特徴とするキャッシュ制御装置。
【請求項２】
アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるキャッシュ制御方法であって、
前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受け、
要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成し、
前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成し、
リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを１増加させ、
リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを１減算するとともに、該カウンタが０になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放する、
ことを特徴とするキャッシュ制御方法。
【請求項３】
アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるコンピュータプログラムであって、
前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるステップと、
要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスを読み出してインスタンスを生成するステップと、
前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するステップと、
リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを１増加させるステップと、
リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを１減算するとともに、該カウンタが０になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するステップと、
をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ制御装置およびその方法ならびにコンピュータプログラムに関する。
【背景技術】
【０００２】
従来のクライアントサーバシステムにおけるクライアントである既存の携帯端末のブロック図を図５に示す。この既存の携帯端末は、仮想マシン、モバイルエンジン、各種ビジネスシナリオを実行するアプリケーション及びオブジェクト（SyncBo）を記憶するローカルデータベースを有する。
仮想マシンは、複数の特定のＯＳ（オペレーションシステム）やハードウェアなどのプラットホームに依存せずにアプリケーションを実行する環境である。仮想マシンには、不要になったオブジェクトを自動的にメモリから解放するガーベッジコレクタが備えられる。
モバイルエンジンは、アプリケーションに対して、データの読込みや書込みを行うためのインタフェースを隠蔽するＡＰＩ（Application Program Interface）を提供する。また、アプリケーションがデータを要求した場合、要求されたデータのデータ定義を示すオブジェクト（SyncBo）をローカルデータベースから読み込み、この読み込んだオブジェクトの実体（インスタンス）を仮想マシン内に生成する。そして、この生成されたオブジェクトのインスタンスを参照するリファレンスをアプリケーションに返す。
【０００３】
一方、特許文献１には、以下のようにデータ記憶を制御するシステム等について記載されている。第１のプログラムが、第２の下位レベル言語プログラムと対話するタイプのデータ処理システムであって、第２のプログラムは、オブジェクトを生成する手段と、このオブジェクトを記憶するメモリと、第１のプログラムに割当てられた少なくとも１つのスロットをこのオブジェクトと関連づける手段とを含む。そして、第１及び第２のプログラム間のインタフェースには、第２のプログラムにより生成されたオブジェクトのオブジェクト参照を記憶するオブジェクト代理が生成される。第１のプログラムは、このオブジェクト代理を識別する代理参照をスロット内に記憶する。これにより、第１のプログラムの上位レベル言語不要情報コレクタは、オブジェクト代理がいずれかの代理参照によりいずれかのスロットに関連づけられていない場合に、第２のプログラムに通知する。
【０００４】
また、特許文献２には、従来のオブジェクト処理システムのガーベイジコレクション機能がガーベイジを発見し解放及び削除を行うために装置或はシステムにかかる負担を軽減し、不要なオブジェクトの増加を抑制する技術について記載されている。具体的には、オブジェクト（情報）を二次記憶装置に登録する場合に、そのオブジェクトの有効期間を設定しておく。そして、そのオブジェクトを特定するオブジェクト識別子とその有効期間を有効期間表に追加記憶する。オブジェクトのガーベイジ処理を行う場合には、その有効期間表に記憶された内容に基づく、有効期間をすぎたオブジェクトについては、二次記憶装置から削除する。
【特許文献１】特開平６−９６０２５号公報
【特許文献２】特開平７−１６８７４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のクライアントサーバシステムにおける携帯端末（クライアント）において、同一のあるいは異なるアプリケーションが、何度も同一のデータを要求する場合がある。このとき、モバイルエンジンが要求を受ける度にローカルデータベースから要求されたデータのオブジェクトを読み出してオブジェクトのインスタンスを生成するため、同じオブジェクトに対して複数のインスタンスが生成されてしまうという問題があった。そして、これにより、同一のデータを参照する場合であっても、異なるインスタンスを参照してしまい、データの不整合が起きてしまうという問題があった。さらには、モバイルエンジンが要求を受ける度にローカルデータベースから要求されたデータのオブジェクトを読み出してオブジェクトのインスタンスを生成することにより、パフォーマンスが低下してしまう。そこで、一度生成したオブジェクトのインスタンスを解放せずに保持しておくキャッシュを行うことが考えられる。しかし、キャッシュにより仮想マシン内に生成されたオブジェクトのインスタンスは、メモリ空間上に存在するため、参照する必要がなくなった場合には解放しないと、とりわけ容量が限られているモバイルデバイスにおいてはメモリが圧迫されてしまう。この不要になったオブジェクトのインスタンスの解放は、仮想マシンに備えられるガーベッジコレクタが行う。しかし、モバイルエンジンは、アプリケーションがオブジェクトを使っているか否かを把握することができず、オブジェクトのインスタンスの解放のタイミングを知ることができなかった。
【０００６】
しかし、特許文献１においては、オブジェクトを要求する第１のプログラムにおいて、もはや必要なくなったオブジェクト代理を検出することにより、第２のプログラムにおいてこのオブジェクト代理で参照されるオブジェクトを解放し、さらにオブジェクト代理自体を処理しているが、同様の機能を既存の全てのアプリケーションに追加するのは非常に困難である。また、同じオブジェクトに対して複数のインスタンスを生成してしまうことによるデータの不整合を解決することはできない。
また、特許文献２においては、アプリケーションがオブジェクトを要求する期間を知ることは困難であり、従って、パフォーマンスとメモリスペースとを考慮しながら、オブジェクトの適切な有効期間を決めるのは難しい。また、同じオブジェクトに対して複数のインスタンスを生成してしまうことによるデータの不整合を解決することはできない。
【０００７】
本発明は、このような事情に鑑みてなされたもので、データの一貫性を維持するとともに、メモリ領域を節約しながら、アプリケーションからのデータアクセスを高速化することができるキャッシュ制御装置およびその方法ならびにコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１に記載の発明は、アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置であって、前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるインスタンス要求受信手段と、要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成するインスタンス生成手段と、前記インスタンス生成手段が前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するカウンタ生成手段と、リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを１増加させるリファレンス設定手段と、リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを１減算するとともに、該カウンタが０になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するインスタンス解放手段と、を備えることを特徴とするキャッシュ制御装置である。
【０００９】
また、請求項２に記載の発明は、アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるキャッシュ制御方法であって、前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受け、要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成し、前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成し、リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを１増加させ、リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを１減算するとともに、該カウンタが０になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放する、
ことを特徴とするキャッシュ制御方法である。
【００１０】
また、請求項３に記載の発明は、アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるコンピュータプログラムであって、前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるステップと、要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスを読み出してインスタンスを生成するステップと、前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するステップと、リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを１増加させるステップと、リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを１減算するとともに、該カウンタが０になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するステップと、をコンピュータに実行させることを特徴とするコンピュータプログラムである。
【発明の効果】
【００１１】
本発明によれば、キャッシュ制御装置は、アプリケーションがデータを使用しているときには当該データの実体をメモリ内に保持することによりアプリケーションからデータへのアクセスを高速化し、また、データを使用しなくなった場合には、データの実体をメモリから削除することによりメモリ領域を節約しながら、アプリケーションが何度も同一のデータを要求する場合であってもデータの一貫性を保証する。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施の形態について、図面を参照して説明する。図１は、クライアントサーバシステムにおけるクライアントであるキャッシュ制御装置としての携帯端末１０の構成を示すブロック図であり、本発明と関係する機能ブロックのみ抽出して示してある。この携帯端末１０は、モバイルエンジン１１、ローカルデータベース１２、アプリケーション１３及び仮想マシン１４を備える。
アプリケーション１３は、例えば、サービスオーダーなど各種ビジネスシナリオを実行する。
ローカルデータベース１２は、アプリケーション１３が使用するデータのデータフィールド定義やデータ値などのデータ定義を示すオブジェクトを記憶している。ここでは、オブジェクトとして、後述するシンクロナイゼーションビジネスオブジェクト（以下、SyncBo、または、シンクＢＯと呼ぶ）を記憶する。SyncBoは、サーバ側で保持するデータの実体であるビジネスオブジェクトインスタンスから、携帯端末１０にデータの参照関係／非参照関係を保ったまま当該携帯端末１０に対し必要最低限のインスタンスを抽出してダウンロードしたものである。これにより、携帯端末１０のメモリを圧迫せずに、サーバ側のデータと、携帯端末１０側のデータとが同期される。それぞれのSyncBoは、オブジェクトの識別情報としてのSyncKey（シンクキー）により識別される。
【００１３】
仮想マシン１４は、複数の特定のＯＳ（オペレーションシステム）やハードウェアなどのプラットホームに依存せずにアプリケーション１３のプログラム（アプリケーションプログラム）を実行する環境である。すなわち、携帯端末１０のプラットホームが変わっても、この仮想マシン１４により、同じアプリケーションプログラムが実行できる。ここでは、仮想マシン１４は、Java（登録商標）コンパイラによって生成された中間コードであるJava（登録商標）バイトコードによるプログラムを解釈、実行するJava（登録商標） Virtual Machine（ＪＶＭ）である。仮想マシン１４には、不要になったオブジェクトを自動的にメモリから解放するガーベッジコレクタが備えられる。
【００１４】
モバイルエンジン１１は、サーバ側からSyncBoをダウンロードして内部に備えるローカルデータベース１２に記憶する。また、オブジェクトの実体であるSyncBoのインスタンスを生成するとともに、この生成されたオブジェクトの実体であるSyncBoのインスタンスにアクセスしてデータの読込みや書込みを行うためのインタフェースを隠蔽するＡＰＩ（Application Program Interface）を提供する。
このモバイルエンジン１１は、SyncBoインスタンスのキャッシュを制御するキャッシュ制御部（インスタンス要求受信手段、インスタンス生成手段、カウンタ生成手段、リファレンス設定手段、インスタンス解放手段）１５を備える。キャッシュ制御部１５は、アプリケーション１３から要求されたオブジェクト、すなわち、SyncBoが仮想マシン１４内に生成されていない場合には、要求されたSyncBoのインスタンスを生成し、この生成したSyncBoインスタンスを参照するreferenceを設定するためのRefSyncBo（リファレンス設定クラス）のインスタンスを生成してアプリケーション１３へ返却する。また、要求されたSyncBoのインスタンスが仮想マシン１４内に既に生成されている場合には、当該SyncBoの新たなインスタンスを生成せずにRefSyncBoのインスタンスのみを生成し、生成済みのSyncBoインスタンスを参照するreferenceを設定して返却する。また、キャッシュ制御部１５は、同一のSyncBoのインスタンスに対して生成されているRefSyncBoの数を示すカウンタを保持している。すなわち、キャッシュ制御部１５が、RefSyncBoのインスタンスを生成したときにはカウンタに１加算し、仮想マシン１４のガーベッジコレクタがアプリケーション１３に使用されないRefSyncBoのインスタンスを解放したときには、カウンタを１減算する。そして、カウンタが「０」になったときに、このカウンタに対応するSyncBoインスタンスを解放する。
【００１５】
図２は、モバイルエンジン１１が保持する、SyncBo、生成したSyncBoインスタンスのreference、及び、カウンタの関連の例を示す。同図において、モバイルエンジン１１は、インスタンス生成済みのSyncBoを識別する「SyncKey=001」と、この「SyncKey=001」で識別されるSyncBoインスタンスのreferenceである「bo」と、「SyncKey=001」で識別されるSyncBoに対応してRefSyncBoインスタンスが生成されている数を示すカウンタ値「１」とを関連させて記憶している。
【００１６】
次に、携帯端末１０の動作について説明する。図３は、アプリケーション１３からのデータアクセス要求受信時のキャッシュ制御部１５の動作フローである。
モバイルエンジン１１が、アプリケーション１３からSyncKeyを受信して新たなデータ、すなわち、新たなSyncBoのインスタンスへのアクセス要求を受けると、キャッシュ制御部１５へ受け渡す（ステップＳ２１）。すると、キャッシュ制御部１５は、内部に記憶しているインスタンス生成済みのSyncBoのSyncKeyを参照し、受信したSyncKeyと一致するSyncKeyがあるか否かにより、要求されたSyncBoのインスタンスが既に生成済みであるか否かを判断する（ステップＳ２２）。
キャッシュ制御部１５は、要求されたSyncBoのインスタンスが生成されていないと判断した場合、受信したSyncKeyにより識別されるSyncBoをローカルデータベース１２から読み出し、仮想マシン１４内に読み出したSyncBoの実体、すなわち、SyncBoインスタンスを生成する（ステップＳ２３）。例えば、アプリケーション１３から「SyncKey=001」により識別されるSyncBo(001)が要求されると、仮想マシン１４に「bo」というreferenceにより参照されるSyncBo(001)のインスタンスを生成する。
【００１７】
続いて、キャッシュ制御部１５は、生成したSyncBoインスタンスのreferenceを設定するためのRefSyncBoのインスタンスと、SyncBoインスタンスに対してRefSyncBoインスタンスが生成されている数を示すカウンタを生成する（ステップＳ２４）。そして、この生成したカウンタに「１」を設定する（ステップＳ２５）。これにより、キャッシュ制御部１５は、図２に示すように、SyncKeyと、SyncBoインスタンスのreferenceと、RefSyncBoインスタンスが生成されている数を示すカウンタ値とを関連させて記憶する。
そして、モバイルエンジン１１は、RefSyncBoインスタンスに生成したSyncBoインスタンスのreference、すなわち、「bo」を設定してアプリケーション１３に返す（ステップＳ２６）。アプリケーション１３は、受信したRefSyncBoインスタンスを内部で使用し、また、コピーなどを行う。
【００１８】
モバイルエンジン１１が、再びアプリケーション１３から「SyncKey=001」により識別されるSyncBo(001)の要求を受けると、キャッシュ制御部１５に受け渡す（ステップＳ２１）。キャッシュ制御部１５は、内部に記憶しているインスタンス生成済みのSyncBoのSyncKeyを参照し、受信したSyncKeyと一致するSyncKeyが存在することにより、要求されたSyncBo(001)のインスタンスが既に生成済みであると判断する（ステップＳ２２：Ｙｅｓ）。この場合、キャッシュ制御部１５は、SyncBo(001)のインスタンスは生成せず、新たなRefSyncBoインスタンスのみを生成する（ステップＳ２７）。そして、SyncBo(001)のインスタンスに対応するカウンタの現在のカウンタ値に１を加算する（ステップＳ２８）。そして、キャッシュ制御部１５は、新たに生成したRefSyncBoインスタンスに、SyncBo(001)のインスタンスのreferenceである「bo」を設定して、アプリケーション１３に返す（ステップＳ２６）。
【００１９】
図４は、RefSyncBoインスタンス削除時のキャッシュ制御部１５の動作フローである。
まず、ガーベッジコレクタは、アプリケーション１３が使用しないRefSyncBoインスタンスを検出し、解放する。通常、全てのクラス（オブジェクト）には予めインスタンスの解放のためのメソッド（処理）が含まれており、これによってRefSyncBoインスタンスは、解放される直前に自身が解放されることをキャッシュ制御部１５に通知する。キャッシュ制御部１５は、RefSyncBoインスタンスの解放通知を受信すると（ステップＳ３１）、この解放されるRefSyncBoインスタンスに対応するカウンタのカウンタ値を１減算する（ステップＳ３２）。そして、減算した結果、カウンタ値が「０」になったか否かを判断する（ステップＳ３３）。カウンタ値が「０」ではない場合には、以降の処理は行わず、再び、SyncBoへのアクセス要求あるいはRefSyncBoインスタンスの解放の通知を待つ。
一方、ステップＳ３３において、カウンタ値が「０」になったと判断した場合、キャッシュ制御部１５は、この解放されるRefSyncBoインスタンスが示すreferenceにより参照されるSyncBoインスタンスを解放する（ステップＳ３４）。
【００２０】
なお、上述する実施の形態においては、アプリケーション１３が要求するデータはオブジェクト（SyncBo）により定義されるが、クラス定義により定義されているものでもよい。
【００２１】
上記実施の形態によれば、携帯端末１０は、アプリケーション１３がデータを使用しているときには当該データの実体をメモリ内に保持することによりアプリケーション１３からデータへのアクセスを高速化し、また、データを使用しなくなった場合には、データの実体をメモリから削除することによりメモリ領域を節約しながら、アプリケーション１３が何度も同一のデータを要求する場合であってもデータの一貫性を保証する。
【００２２】
なお、上述の携帯端末１０は、内部にコンピュータシステムを有している。そして、上述した携帯端末１０の動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、ＯＳや周辺機器等のハードウェアを含むものである。
【００２３】
また、「コンピュータ読み取り可能な記録媒体」とは、ＲＯＭの他に、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のシステムやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００２４】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００２５】
以下、上述するキャッシュ制御装置としての携帯端末１０がクライアントとして適用されうるクライアントサーバシステムについて説明する。図６は、上述する携帯端末１０がクライアントとして適用されうるクライアントサーバシステムの構成を示す構成図である。エンタープライズサーバシステム１００は、複数のモバイルデバイス（携帯端末）１２０とネットワーク１１０を介して接続して構成される。
【００２６】
具体的には、エンタープライズサーバシステム１００は、エンタープライズサーバ１０２と、シンクロナイゼーションサーバ１０６とから構成される。
エンタープライズサーバ１０２は、ビジネスオブジェクトデータベース（以下、ＤＢとする）１０３とアプリケーションＤＢ１０４を有しており、シンクロナイゼーションサーバ１０６を介して、モバイルデバイス１２０、ビジネスオブジェクトＤＢ１０３及びアプリケーションＤＢ１０４間のデータ通信管理を行う。
【００２７】
ビジネスオブジェクトＤＢ１０３は、図７に示すような複数のビジネスオブジェクト２００を格納する。ここで、ビジネスオブジェクト２００とは、エンタープライズサーバ１０２に関連するプロパティとビジネスメソッド２１０とをカプセル化して定義され、カーネル層２０２、インテグリティ層２０４、インターフェイス層２０６、アクセス層２０８を有する。
カーネル層２０２は、ビジネスオブジェクト２００と関連付けられたデータ（プロパティ）を構成する（後述する）。インテグリティ層２０４は、環境変数の制約条件に基づくデータ整合性チェックを行う。インターフェイス層２０６は、ビジネスオブジェクト２００と関連付けられた、オブジェクトインターフェイス２０７を含む複数のメソッド、インターフェイスを定義する。アクセス層２０８は、ビジネスオブジェクト２００へアクセスするためのモジュールを定義する。
アプリケーションＤＢ１０４は、エンタープライズサーバ１０２がモバイルデバイス１２０に提供するアプリケーションを格納する。
【００２８】
シンクロナイゼーションサーバ１０６は、レプリカＤＢ１０８を有しており、モバイルデバイス１２０、ビジネスオブジェクトＤＢ１０３及びアプリケーションＤＢ１０４間のデータ同期制御を行う。具体的には、シンクロナイゼーションサーバ１０６は、モバイルデバイス１２０、ビジネスオブジェクトＤＢ１０３及びアプリケーションＤＢ１０４間でアップロード、ダウンロードすべきデータを所定の選択条件（フィルタリングクライテリア）に基づいて判定するとともに、選択条件にヒットしたデータの参照関係、被参照関係（データ間の従属関係）、カスケードダウンロードフラグ等に基づいて、データ作成、修正、削除等のデータ操作を行う。
【００２９】
レプリカＤＢ１０８は、ビジネスオブジェクトＤＢ１０３に格納されるビジネスオブジェクトをマスタデータとするレプリカデータを格納する。
具体的には、ビジネスオブジェクトＤＢ１０３に格納されるビジネスオブジェクト（Ａ〜Ｂ）は、図８に示すように、１のキーと複数のデータフィールドとから構成されるが、上述したように、携帯端末のユーザにとっては冗長なデータフィールド部分を有している。したがって、これら冗長なデータフィールド全体をすべて携帯端末に送信すると、携帯端末のメモリ容量を圧迫するため、送信データを最適化する必要がある。
このため、レプリカＤＢ１０８は、シンクロナイゼーションサーバ１０６のデータ同期制御の基、図９、１０に示すように、選択条件にヒットした各ビジネスオブジェクトより必要なデータフィールドのみを抽出し、参照関係を有するビジネスオブジェクト間でデータフィールドの置換をしたシンクロナイゼーションビジネスオブジェクトＡ〜Ｃ（以下、SyncBo：シンクＢＯと呼ぶ）を格納する（後述する）。
【００３０】
次に、図面を参照して、図６におけるシンクロナイゼーションサーバ１０６の動作について説明する。図１１は、シンクロナイゼーションサーバ１０６によるカスケードダウンロード処理の過程を示すフローチャートである。
シンクロナイゼーションサーバ１０６は、エンタープライズサーバ１０２において、ビジネスオブジェクトＤＢ１０３、アプリケーションＤＢ１０４に格納しているビジネスオブジェクト２００が定期的に追加、削除、修正等のデータ更新されると、レプリカＤＢ１０８においても、この更新データを受信する。
すなわち、図１２に示すように、タイプ（種類）が、「国」、「顧客」、「セールスオーダー」のビジネスオブジェクト２００のインスタンスをエンタープライズサーバ１０２から受信すると（図６のステップ４００）、シンクロナイゼーションサーバ１０６は、各シンクＢＯにシンクキー（同期用キー情報）を発行し、レプリカＤＢ１０８において、受信した各インスタンスと紐付けて格納する。
【００３１】
例えば、タイプが「国」であるシンクＢＯ５１０（SyncBo ID：５１０）において、国ＩＤが「ＵＳ」、国名が「米国」のビジネスオブジェクトインスタンス５１２に、「１００００００００１」のシンクキー５１１が発行され、紐付けられる。ビジネスオブジェクトインスタンス５１４、５１６、５１８にも、同様に、シンクキー５１３、５１５、５１７を発行して紐付けておく。
また、タイプが「顧客」であるシンクＢＯ５２０（SyncBo ID：５２０）において、顧客ＩＤが「１０１」、顧客名が「Ｂｒａｗｎ」、国ＩＤが「ＵＳ」のビジネスオブジェクトインスタンス５２２に、「１００００００００５」のシンクキー５２１が発行され、紐付けられる。ビジネスオブジェクトインスタンス５２４、５２６にも、同様に、シンクキー５２３、５２５を発行して紐付けておく。
さらに、タイプが「セールスオーダー」であるシンクＢＯ５３０（SyncBo ID：５３０）において、顧客ＩＤが「１０１」、配送日が「２００３／０４／２３」のビジネスオブジェクトインスタンス５３２に、「１００００００００８」のシンクキー５３１が発行され、紐付けられる。ビジネスオブジェクトインスタンス５３４、５３６にも、同様に、シンクキー５３３、５３５を発行して紐付けておく。
【００３２】
ここで、図１２に示すように、シンクＢＯ５３０のデータエレメント「顧客ＩＤ」は、シンクＢＯ５２０のデータエレメント「顧客ＩＤ」とのデータ参照関係を有しており（矢印５５０を参照）、逆にシンクＢＯ５２０のデータエレメント「顧客ＩＤ」は、シンクＢＯ５３０のデータエレメント「顧客ＩＤ」とのデータ被参照関係を有している。
同様に、シンクＢＯ５２０のデータエレメント「国ＩＤ」は、シンクＢＯ５１０のデータエレメント「国ＩＤ」とのデータ参照関係を有しており（矢印５５２を参照）、逆にシンクＢＯ５１０のデータエレメント「顧客ＩＤ」は、シンクＢＯ５２０のデータエレメント「国ＩＤ」とのデータ被参照関係を有している。
本明細書中では、このシンクＢＯ間のデータ参照関係・被参照関係（従属関係・被従属関係）を「親子関係（ｐａｒｅｎｔ−ｃｈｉｌｄ）と定義する。
【００３３】
次に、シンクロナイゼーションサーバ１０６は、予め設定された選択条件（どのモバイルデバイスに対して、レプリカＤＢ１０８内のどのシンクＢＯのインスタンスをダウンロードするかを示す）に基づいて、レプリカＤＢ１０８を検索し、ダウンロードすべき１または複数のインスタンスをリストとして抽出する。以下、抽出されたシンクＢＯのインスタンスをダウンロード候補オブジェクトのインスタンスという。
シンクロナイゼーションサーバ１０６は、このダウンロード候補オブジェクトのリストを読み込み、すべてのダウンロード候補オブジェクトのインスタンスに対して、逐次、再帰的にデータ参照関係／被参照関係を検査する。
ここで、ダウンロード候補オブジェクトの再帰的な検査とは、現在検査対象となっているダウンロード候補オブジェクトが、他のオブジェクトデータ（必ずしもダウンロード候補オブジェクトである必要はない）とデータ参照関係／被参照関係を有している場合は、当該他のオブジェクトデータを現在の検査対象として、さらに、データ参照関係／被参照関係の検査を繰り返すことをいう。
【００３４】
すなわち、シンクロナイゼーションサーバ１０６は、まず１のダウンロード候補オブジェクトのインスタンスを選択し（ステップＳ４２０）、親方向のデータ参照関係を検査して、該当するオブジェクトデータのインスタンスの探索を行う（ステップＳ４２０）。
例えば、図１２に示すように、インスタンス５３２のデータエレメント「顧客ＩＤ：１０１」は、インスタンス５２２のデータエレメント「顧客ＩＤ：１０１」と参照関係を有しており、かつ、インスタンス５２２のデータエレメント「国ＩＤ：ＵＳ」は、インスタンス５１２のデータエレメント「国ＩＤ：ＵＳ」と参照関係を有していることから、シンクロナイゼーションサーバ１０６は、ダウンロード候補オブジェクトとしてインスタンス５３２が選択された場合、まずデータエレメント「顧客ＩＤ：１０１」と参照関係を有するインスタンス５２２のデータエレメント「顧客ＩＤ：１０１」を探索する。そして、シンクロナイゼーションサーバ１０６は、インスタンス５２２を現在の検査対象とした後、再帰的に探索処理を実行する。この場合、シンクロナイゼーションサーバ１０６は、さらに、データエレメント「国ＩＤ：ＵＳ」と参照関係を有するインスタンス５１２のデータエレメント「国ＩＤ：ＵＳ」を探索する。
【００３５】
次に、シンクロナイゼーションサーバ１０６は、インスタンス５３２に関する参照官憲の探索の結果、抽出されたインスタンス５１２、５２２を参照関係の階層レベルの降順（または昇順）に整列する（ステップＳ４３０）。降順に整列した場合、ダウンロード候補オブジェクトのインスタンスは、参照関係の階層レベルにおいて親方向に最も高順位に定義されるインスタンス５１２から子方向にインスタンス５２２、５３２へ並べ替えられる。  そして、シンクロナイゼーションサーバ１０６は、まずカスケードダウンロード対象であるインスタンス５１２、５２２をこの並び順にモバイルデバイス１２０に対して送信する（ステップＳ４４０）。これらカスケードダウンロード対象インスタンスの送信処理完了後、シンクロナイゼーションサーバ１０６は、さらに、ダウンロード候補オブジェクトとして原始的に選択されているインスタンス５３２をモバイルデバイス１２０に対して送信する（ステップＳ４５０）。
このように、シンクロナイゼーションサーバ１０６は、被参照関係を有する他のインスタンスを送信した後、参照関係を有するインスタンスをモバイルデバイスに対して送信することで、モバイルデバイス１２０内のメモリにおいて、参照データが存在しないといったデータミスの発生を防止することが出来る効果が得られる。
【００３６】
同様にして、インスタンス５３４が選択された場合も（ステップＳ４１０）、探索の結果、インスタンス５２４、５１４が抽出され（ステップＳ４２０）、降順に並べ替えられて（ステップＳ４３０）、被参照関係を有するカスケードダウンロード対象インスタンス５２４、５１４の送信処理完了後（ステップＳ４４０）、ダウンロード候補オブジェクトとして、インスタンス５３４が送信処理される。
【００３７】
図１３に、レプリカＤＢ１０８より抽出され、モバイルデバイス１２０に送信されるオブジェクトデータを示す。
レプリカＤＢ１０８において、各インスタンス５１２、５１４、５１６、５１８、５２２、５２４、５２６、５３２、５３４、５３６は、それぞれシンクキー５１１、５１３、５１５、５１７、５２１、５２３、５２５、５３１、５３３、５３５を用いて統一的に識別されることから、インスタンス５３２、５３４のデータエレメント「顧客ＩＤ」は、シンクキー５２１、５２３（図１３に示すシンクキー６２１、６２３と対応する）に置換されるとともに、インスタンス５２２、５２４のデータエレメント「国ＩＤ」は、シンクキー５１１、５１３（図１３に示すシンクキー６１１、６１３と対応する）に置換される。
【００３８】
上述のエンタープライズサーバ１０２、シンクロナイゼーションサーバ１０６、モバイルデバイス１２０は、内部に、コンピュータシステムを有している。
そして、上述したカスケードダウンロード処理、カスケード削除処理に関する一連の処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。
すなわち、エンタープライズサーバ１０２、シンクロナイゼーションサーバ１０６、モバイルデバイス１２０における、各処理手段、処理部は、ＣＰＵ等の中央演算処理装置がＲＯＭやＲＡＭ等の主記憶装置に上記プログラムを読み出して、情報の加工・演算処理を実行することにより、実現されるものである。
ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【図面の簡単な説明】
【００３９】
【図１】本発明の一実施の形態によるクライアントサーバシステムにおけるクライアントである携帯端末のブロック図。
【図２】同実施の形態によるモバイルエンジンが保持する情報の関連を示す図。
【図３】同実施の形態によるアプリケーションからのデータアクセス要求受信時のモバイルエンジンの動作フロー。
【図４】同実施の形態によるRefSyncBoインスタンス削除時のモバイルエンジンの動作フロー。
【図５】従来のクライアントサーバシステムにおけるクライアントである携帯端末のブロック図。
【図６】図１に示す実施の形態による携帯端末がクライアントとして適用されうるクライアントサーバシステムの構成図。
【図７】図６のクライアントサーバシステムにおけるビジネスオブジェクトの機能階層の構造図。
【図８】図６のクライアントサーバシステムにおけるビジネスオブジェクトのデータ構造図。
【図９】図６のクライアントサーバシステムにおけるシンクＢＯのデータ構造図。
【図１０】図６のクライアントサーバシステムにおけるシンクＢＯのデータ構造及び参照関係図。
【図１１】図６のクライアントサーバシステムにおけるカスケードダウンロード処理のフローチャート。
【図１２】図６のクライアントサーバシステムにおけるレプリカＤＢのデータ構造図。
【図１３】図６のクライアントサーバシステムにおけるモバイルデバイスへのダウンロードデータの構造図。
【符号の説明】
【００４０】
１０…携帯端末（キャッシュ制御装置）
１１…モバイルエンジン
１２…ローカルデータベース
１３…アプリケーション
１４…仮想マシン
１５…キャッシュ制御部（インスタンス要求受信手段、インスタンス生成手段、カウンタ生成手段、リファレンス設定手段、インスタンス解放手段）
【図１】
2005190221.tif 000003
【図２】
2005190221.tif 000004
【図３】
2005190221.tif 000005
【図４】
2005190221.tif 000006
【図５】
2005190221.tif 000007
【図６】
2005190221.tif 000008
【図７】
2005190221.tif 000009
【図８】
2005190221.tif 000010
【図９】
2005190221.tif 000011
【図１０】
2005190221.tif 000012
【図１１】
2005190221.tif 000013
【図１２】
2005190221.tif 000014
【図１３】
2005190221.tif 000015