JP2005190221A - キャッシュ制御装置およびその方法ならびにコンピュータプログラム - Google Patents

キャッシュ制御装置およびその方法ならびにコンピュータプログラム Download PDF

Info

Publication number
JP2005190221A
JP2005190221A JP2003431473A JP2003431473A JP2005190221A JP 2005190221 A JP2005190221 A JP 2005190221A JP 2003431473 A JP2003431473 A JP 2003431473A JP 2003431473 A JP2003431473 A JP 2003431473A JP 2005190221 A JP2005190221 A JP 2005190221A
Authority
JP
Japan
Prior art keywords
instance
class
counter
application
data
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.)
Granted
Application number
JP2003431473A
Other languages
English (en)
Other versions
JP4249605B2 (ja
Inventor
Kouha Ri
洪波 李
Yosuke Doi
洋介 土居
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.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Priority to JP2003431473A priority Critical patent/JP4249605B2/ja
Priority to US11/021,479 priority patent/US7441252B2/en
Publication of JP2005190221A publication Critical patent/JP2005190221A/ja
Application granted granted Critical
Publication of JP4249605B2 publication Critical patent/JP4249605B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 データの一貫性を維持するとともに、メモリ領域を節約しながら、アプリケーションからのデータアクセスを高速化する。
【解決手段】 携帯端末10のキャッシュ制御部15は、アプリケーション13が参照するデータを規定したオブジェクトのインスタンスへのアクセス要求を受け、該オブジェクトのインスタンスが存在しない場合は、オブジェクトのインスタンスと、カウンタを生成する。また、リファレンス設定クラスのインスタンスを生成し、要求されたオブジェクトのインスタンスを参照するリファレンスを設定してアプリケーション13に返送するとともに、カウンタを1増加させる。リファレンス設定クラスのインスタンスの解放通知を受けた場合は、対応するカウンタを1減算し、該カウンタが0になった場合にオブジェクトのインスタンスを解放する。
【選択図】 図1

Description

本発明は、キャッシュ制御装置およびその方法ならびにコンピュータプログラムに関する。
従来のクライアントサーバシステムにおけるクライアントである既存の携帯端末のブロック図を図5に示す。この既存の携帯端末は、仮想マシン、モバイルエンジン、各種ビジネスシナリオを実行するアプリケーション及びオブジェクト(SyncBo)を記憶するローカルデータベースを有する。
仮想マシンは、複数の特定のOS(オペレーションシステム)やハードウェアなどのプラットホームに依存せずにアプリケーションを実行する環境である。仮想マシンには、不要になったオブジェクトを自動的にメモリから解放するガーベッジコレクタが備えられる。
モバイルエンジンは、アプリケーションに対して、データの読込みや書込みを行うためのインタフェースを隠蔽するAPI(Application Program Interface)を提供する。また、アプリケーションがデータを要求した場合、要求されたデータのデータ定義を示すオブジェクト(SyncBo)をローカルデータベースから読み込み、この読み込んだオブジェクトの実体(インスタンス)を仮想マシン内に生成する。そして、この生成されたオブジェクトのインスタンスを参照するリファレンスをアプリケーションに返す。
一方、特許文献1には、以下のようにデータ記憶を制御するシステム等について記載されている。第1のプログラムが、第2の下位レベル言語プログラムと対話するタイプのデータ処理システムであって、第2のプログラムは、オブジェクトを生成する手段と、このオブジェクトを記憶するメモリと、第1のプログラムに割当てられた少なくとも1つのスロットをこのオブジェクトと関連づける手段とを含む。そして、第1及び第2のプログラム間のインタフェースには、第2のプログラムにより生成されたオブジェクトのオブジェクト参照を記憶するオブジェクト代理が生成される。第1のプログラムは、このオブジェクト代理を識別する代理参照をスロット内に記憶する。これにより、第1のプログラムの上位レベル言語不要情報コレクタは、オブジェクト代理がいずれかの代理参照によりいずれかのスロットに関連づけられていない場合に、第2のプログラムに通知する。
また、特許文献2には、従来のオブジェクト処理システムのガーベイジコレクション機能がガーベイジを発見し解放及び削除を行うために装置或はシステムにかかる負担を軽減し、不要なオブジェクトの増加を抑制する技術について記載されている。具体的には、オブジェクト(情報)を二次記憶装置に登録する場合に、そのオブジェクトの有効期間を設定しておく。そして、そのオブジェクトを特定するオブジェクト識別子とその有効期間を有効期間表に追加記憶する。オブジェクトのガーベイジ処理を行う場合には、その有効期間表に記憶された内容に基づく、有効期間をすぎたオブジェクトについては、二次記憶装置から削除する。
特開平6−96025号公報 特開平7−168744号公報
従来のクライアントサーバシステムにおける携帯端末(クライアント)において、同一のあるいは異なるアプリケーションが、何度も同一のデータを要求する場合がある。このとき、モバイルエンジンが要求を受ける度にローカルデータベースから要求されたデータのオブジェクトを読み出してオブジェクトのインスタンスを生成するため、同じオブジェクトに対して複数のインスタンスが生成されてしまうという問題があった。そして、これにより、同一のデータを参照する場合であっても、異なるインスタンスを参照してしまい、データの不整合が起きてしまうという問題があった。さらには、モバイルエンジンが要求を受ける度にローカルデータベースから要求されたデータのオブジェクトを読み出してオブジェクトのインスタンスを生成することにより、パフォーマンスが低下してしまう。そこで、一度生成したオブジェクトのインスタンスを解放せずに保持しておくキャッシュを行うことが考えられる。しかし、キャッシュにより仮想マシン内に生成されたオブジェクトのインスタンスは、メモリ空間上に存在するため、参照する必要がなくなった場合には解放しないと、とりわけ容量が限られているモバイルデバイスにおいてはメモリが圧迫されてしまう。この不要になったオブジェクトのインスタンスの解放は、仮想マシンに備えられるガーベッジコレクタが行う。しかし、モバイルエンジンは、アプリケーションがオブジェクトを使っているか否かを把握することができず、オブジェクトのインスタンスの解放のタイミングを知ることができなかった。
しかし、特許文献1においては、オブジェクトを要求する第1のプログラムにおいて、もはや必要なくなったオブジェクト代理を検出することにより、第2のプログラムにおいてこのオブジェクト代理で参照されるオブジェクトを解放し、さらにオブジェクト代理自体を処理しているが、同様の機能を既存の全てのアプリケーションに追加するのは非常に困難である。また、同じオブジェクトに対して複数のインスタンスを生成してしまうことによるデータの不整合を解決することはできない。
また、特許文献2においては、アプリケーションがオブジェクトを要求する期間を知ることは困難であり、従って、パフォーマンスとメモリスペースとを考慮しながら、オブジェクトの適切な有効期間を決めるのは難しい。また、同じオブジェクトに対して複数のインスタンスを生成してしまうことによるデータの不整合を解決することはできない。
本発明は、このような事情に鑑みてなされたもので、データの一貫性を維持するとともに、メモリ領域を節約しながら、アプリケーションからのデータアクセスを高速化することができるキャッシュ制御装置およびその方法ならびにコンピュータプログラムを提供することを目的とする。
上記目的を達成するために、請求項1に記載の発明は、アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置であって、前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるインスタンス要求受信手段と、要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成するインスタンス生成手段と、前記インスタンス生成手段が前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するカウンタ生成手段と、リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを1増加させるリファレンス設定手段と、リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを1減算するとともに、該カウンタが0になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するインスタンス解放手段と、を備えることを特徴とするキャッシュ制御装置である。
また、請求項2に記載の発明は、アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるキャッシュ制御方法であって、前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受け、要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成し、前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成し、リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを1増加させ、リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを1減算するとともに、該カウンタが0になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放する、
ことを特徴とするキャッシュ制御方法である。
また、請求項3に記載の発明は、アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるコンピュータプログラムであって、前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるステップと、要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスを読み出してインスタンスを生成するステップと、前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するステップと、リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを1増加させるステップと、リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを1減算するとともに、該カウンタが0になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するステップと、をコンピュータに実行させることを特徴とするコンピュータプログラムである。
本発明によれば、キャッシュ制御装置は、アプリケーションがデータを使用しているときには当該データの実体をメモリ内に保持することによりアプリケーションからデータへのアクセスを高速化し、また、データを使用しなくなった場合には、データの実体をメモリから削除することによりメモリ領域を節約しながら、アプリケーションが何度も同一のデータを要求する場合であってもデータの一貫性を保証する。
以下、本発明の一実施の形態について、図面を参照して説明する。図1は、クライアントサーバシステムにおけるクライアントであるキャッシュ制御装置としての携帯端末10の構成を示すブロック図であり、本発明と関係する機能ブロックのみ抽出して示してある。この携帯端末10は、モバイルエンジン11、ローカルデータベース12、アプリケーション13及び仮想マシン14を備える。
アプリケーション13は、例えば、サービスオーダーなど各種ビジネスシナリオを実行する。
ローカルデータベース12は、アプリケーション13が使用するデータのデータフィールド定義やデータ値などのデータ定義を示すオブジェクトを記憶している。ここでは、オブジェクトとして、後述するシンクロナイゼーションビジネスオブジェクト(以下、SyncBo、または、シンクBOと呼ぶ)を記憶する。SyncBoは、サーバ側で保持するデータの実体であるビジネスオブジェクトインスタンスから、携帯端末10にデータの参照関係/非参照関係を保ったまま当該携帯端末10に対し必要最低限のインスタンスを抽出してダウンロードしたものである。これにより、携帯端末10のメモリを圧迫せずに、サーバ側のデータと、携帯端末10側のデータとが同期される。それぞれのSyncBoは、オブジェクトの識別情報としてのSyncKey(シンクキー)により識別される。
仮想マシン14は、複数の特定のOS(オペレーションシステム)やハードウェアなどのプラットホームに依存せずにアプリケーション13のプログラム(アプリケーションプログラム)を実行する環境である。すなわち、携帯端末10のプラットホームが変わっても、この仮想マシン14により、同じアプリケーションプログラムが実行できる。ここでは、仮想マシン14は、Java(登録商標)コンパイラによって生成された中間コードであるJava(登録商標)バイトコードによるプログラムを解釈、実行するJava(登録商標) Virtual Machine(JVM)である。仮想マシン14には、不要になったオブジェクトを自動的にメモリから解放するガーベッジコレクタが備えられる。
モバイルエンジン11は、サーバ側からSyncBoをダウンロードして内部に備えるローカルデータベース12に記憶する。また、オブジェクトの実体であるSyncBoのインスタンスを生成するとともに、この生成されたオブジェクトの実体であるSyncBoのインスタンスにアクセスしてデータの読込みや書込みを行うためのインタフェースを隠蔽するAPI(Application Program Interface)を提供する。
このモバイルエンジン11は、SyncBoインスタンスのキャッシュを制御するキャッシュ制御部(インスタンス要求受信手段、インスタンス生成手段、カウンタ生成手段、リファレンス設定手段、インスタンス解放手段)15を備える。キャッシュ制御部15は、アプリケーション13から要求されたオブジェクト、すなわち、SyncBoが仮想マシン14内に生成されていない場合には、要求されたSyncBoのインスタンスを生成し、この生成したSyncBoインスタンスを参照するreferenceを設定するためのRefSyncBo(リファレンス設定クラス)のインスタンスを生成してアプリケーション13へ返却する。また、要求されたSyncBoのインスタンスが仮想マシン14内に既に生成されている場合には、当該SyncBoの新たなインスタンスを生成せずにRefSyncBoのインスタンスのみを生成し、生成済みのSyncBoインスタンスを参照するreferenceを設定して返却する。また、キャッシュ制御部15は、同一のSyncBoのインスタンスに対して生成されているRefSyncBoの数を示すカウンタを保持している。すなわち、キャッシュ制御部15が、RefSyncBoのインスタンスを生成したときにはカウンタに1加算し、仮想マシン14のガーベッジコレクタがアプリケーション13に使用されないRefSyncBoのインスタンスを解放したときには、カウンタを1減算する。そして、カウンタが「0」になったときに、このカウンタに対応するSyncBoインスタンスを解放する。
図2は、モバイルエンジン11が保持する、SyncBo、生成したSyncBoインスタンスのreference、及び、カウンタの関連の例を示す。同図において、モバイルエンジン11は、インスタンス生成済みのSyncBoを識別する「SyncKey=001」と、この「SyncKey=001」で識別されるSyncBoインスタンスのreferenceである「bo」と、「SyncKey=001」で識別されるSyncBoに対応してRefSyncBoインスタンスが生成されている数を示すカウンタ値「1」とを関連させて記憶している。
次に、携帯端末10の動作について説明する。図3は、アプリケーション13からのデータアクセス要求受信時のキャッシュ制御部15の動作フローである。
モバイルエンジン11が、アプリケーション13からSyncKeyを受信して新たなデータ、すなわち、新たなSyncBoのインスタンスへのアクセス要求を受けると、キャッシュ制御部15へ受け渡す(ステップS21)。すると、キャッシュ制御部15は、内部に記憶しているインスタンス生成済みのSyncBoのSyncKeyを参照し、受信したSyncKeyと一致するSyncKeyがあるか否かにより、要求されたSyncBoのインスタンスが既に生成済みであるか否かを判断する(ステップS22)。
キャッシュ制御部15は、要求されたSyncBoのインスタンスが生成されていないと判断した場合、受信したSyncKeyにより識別されるSyncBoをローカルデータベース12から読み出し、仮想マシン14内に読み出したSyncBoの実体、すなわち、SyncBoインスタンスを生成する(ステップS23)。例えば、アプリケーション13から「SyncKey=001」により識別されるSyncBo(001)が要求されると、仮想マシン14に「bo」というreferenceにより参照されるSyncBo(001)のインスタンスを生成する。
続いて、キャッシュ制御部15は、生成したSyncBoインスタンスのreferenceを設定するためのRefSyncBoのインスタンスと、SyncBoインスタンスに対してRefSyncBoインスタンスが生成されている数を示すカウンタを生成する(ステップS24)。そして、この生成したカウンタに「1」を設定する(ステップS25)。これにより、キャッシュ制御部15は、図2に示すように、SyncKeyと、SyncBoインスタンスのreferenceと、RefSyncBoインスタンスが生成されている数を示すカウンタ値とを関連させて記憶する。
そして、モバイルエンジン11は、RefSyncBoインスタンスに生成したSyncBoインスタンスのreference、すなわち、「bo」を設定してアプリケーション13に返す(ステップS26)。アプリケーション13は、受信したRefSyncBoインスタンスを内部で使用し、また、コピーなどを行う。
モバイルエンジン11が、再びアプリケーション13から「SyncKey=001」により識別されるSyncBo(001)の要求を受けると、キャッシュ制御部15に受け渡す(ステップS21)。キャッシュ制御部15は、内部に記憶しているインスタンス生成済みのSyncBoのSyncKeyを参照し、受信したSyncKeyと一致するSyncKeyが存在することにより、要求されたSyncBo(001)のインスタンスが既に生成済みであると判断する(ステップS22:Yes)。この場合、キャッシュ制御部15は、SyncBo(001)のインスタンスは生成せず、新たなRefSyncBoインスタンスのみを生成する(ステップS27)。そして、SyncBo(001)のインスタンスに対応するカウンタの現在のカウンタ値に1を加算する(ステップS28)。そして、キャッシュ制御部15は、新たに生成したRefSyncBoインスタンスに、SyncBo(001)のインスタンスのreferenceである「bo」を設定して、アプリケーション13に返す(ステップS26)。
図4は、RefSyncBoインスタンス削除時のキャッシュ制御部15の動作フローである。
まず、ガーベッジコレクタは、アプリケーション13が使用しないRefSyncBoインスタンスを検出し、解放する。通常、全てのクラス(オブジェクト)には予めインスタンスの解放のためのメソッド(処理)が含まれており、これによってRefSyncBoインスタンスは、解放される直前に自身が解放されることをキャッシュ制御部15に通知する。キャッシュ制御部15は、RefSyncBoインスタンスの解放通知を受信すると(ステップS31)、この解放されるRefSyncBoインスタンスに対応するカウンタのカウンタ値を1減算する(ステップS32)。そして、減算した結果、カウンタ値が「0」になったか否かを判断する(ステップS33)。カウンタ値が「0」ではない場合には、以降の処理は行わず、再び、SyncBoへのアクセス要求あるいはRefSyncBoインスタンスの解放の通知を待つ。
一方、ステップS33において、カウンタ値が「0」になったと判断した場合、キャッシュ制御部15は、この解放されるRefSyncBoインスタンスが示すreferenceにより参照されるSyncBoインスタンスを解放する(ステップS34)。
なお、上述する実施の形態においては、アプリケーション13が要求するデータはオブジェクト(SyncBo)により定義されるが、クラス定義により定義されているものでもよい。
上記実施の形態によれば、携帯端末10は、アプリケーション13がデータを使用しているときには当該データの実体をメモリ内に保持することによりアプリケーション13からデータへのアクセスを高速化し、また、データを使用しなくなった場合には、データの実体をメモリから削除することによりメモリ領域を節約しながら、アプリケーション13が何度も同一のデータを要求する場合であってもデータの一貫性を保証する。
なお、上述の携帯端末10は、内部にコンピュータシステムを有している。そして、上述した携帯端末10の動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、OSや周辺機器等のハードウェアを含むものである。
また、「コンピュータ読み取り可能な記録媒体」とは、ROMの他に、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のシステムやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
以下、上述するキャッシュ制御装置としての携帯端末10がクライアントとして適用されうるクライアントサーバシステムについて説明する。図6は、上述する携帯端末10がクライアントとして適用されうるクライアントサーバシステムの構成を示す構成図である。エンタープライズサーバシステム100は、複数のモバイルデバイス(携帯端末)120とネットワーク110を介して接続して構成される。
具体的には、エンタープライズサーバシステム100は、エンタープライズサーバ102と、シンクロナイゼーションサーバ106とから構成される。
エンタープライズサーバ102は、ビジネスオブジェクトデータベース(以下、DBとする)103とアプリケーションDB104を有しており、シンクロナイゼーションサーバ106を介して、モバイルデバイス120、ビジネスオブジェクトDB103及びアプリケーションDB104間のデータ通信管理を行う。
ビジネスオブジェクトDB103は、図7に示すような複数のビジネスオブジェクト200を格納する。ここで、ビジネスオブジェクト200とは、エンタープライズサーバ102に関連するプロパティとビジネスメソッド210とをカプセル化して定義され、カーネル層202、インテグリティ層204、インターフェイス層206、アクセス層208を有する。
カーネル層202は、ビジネスオブジェクト200と関連付けられたデータ(プロパティ)を構成する(後述する)。インテグリティ層204は、環境変数の制約条件に基づくデータ整合性チェックを行う。インターフェイス層206は、ビジネスオブジェクト200と関連付けられた、オブジェクトインターフェイス207を含む複数のメソッド、インターフェイスを定義する。アクセス層208は、ビジネスオブジェクト200へアクセスするためのモジュールを定義する。
アプリケーションDB104は、エンタープライズサーバ102がモバイルデバイス120に提供するアプリケーションを格納する。
シンクロナイゼーションサーバ106は、レプリカDB108を有しており、モバイルデバイス120、ビジネスオブジェクトDB103及びアプリケーションDB104間のデータ同期制御を行う。具体的には、シンクロナイゼーションサーバ106は、モバイルデバイス120、ビジネスオブジェクトDB103及びアプリケーションDB104間でアップロード、ダウンロードすべきデータを所定の選択条件(フィルタリングクライテリア)に基づいて判定するとともに、選択条件にヒットしたデータの参照関係、被参照関係(データ間の従属関係)、カスケードダウンロードフラグ等に基づいて、データ作成、修正、削除等のデータ操作を行う。
レプリカDB108は、ビジネスオブジェクトDB103に格納されるビジネスオブジェクトをマスタデータとするレプリカデータを格納する。
具体的には、ビジネスオブジェクトDB103に格納されるビジネスオブジェクト(A〜B)は、図8に示すように、1のキーと複数のデータフィールドとから構成されるが、上述したように、携帯端末のユーザにとっては冗長なデータフィールド部分を有している。したがって、これら冗長なデータフィールド全体をすべて携帯端末に送信すると、携帯端末のメモリ容量を圧迫するため、送信データを最適化する必要がある。
このため、レプリカDB108は、シンクロナイゼーションサーバ106のデータ同期制御の基、図9、10に示すように、選択条件にヒットした各ビジネスオブジェクトより必要なデータフィールドのみを抽出し、参照関係を有するビジネスオブジェクト間でデータフィールドの置換をしたシンクロナイゼーションビジネスオブジェクトA〜C(以下、SyncBo:シンクBOと呼ぶ)を格納する(後述する)。
次に、図面を参照して、図6におけるシンクロナイゼーションサーバ106の動作について説明する。図11は、シンクロナイゼーションサーバ106によるカスケードダウンロード処理の過程を示すフローチャートである。
シンクロナイゼーションサーバ106は、エンタープライズサーバ102において、ビジネスオブジェクトDB103、アプリケーションDB104に格納しているビジネスオブジェクト200が定期的に追加、削除、修正等のデータ更新されると、レプリカDB108においても、この更新データを受信する。
すなわち、図12に示すように、タイプ(種類)が、「国」、「顧客」、「セールスオーダー」のビジネスオブジェクト200のインスタンスをエンタープライズサーバ102から受信すると(図6のステップ400)、シンクロナイゼーションサーバ106は、各シンクBOにシンクキー(同期用キー情報)を発行し、レプリカDB108において、受信した各インスタンスと紐付けて格納する。
例えば、タイプが「国」であるシンクBO510(SyncBo ID:510)において、国IDが「US」、国名が「米国」のビジネスオブジェクトインスタンス512に、「1000000001」のシンクキー511が発行され、紐付けられる。ビジネスオブジェクトインスタンス514、516、518にも、同様に、シンクキー513、515、517を発行して紐付けておく。
また、タイプが「顧客」であるシンクBO520(SyncBo ID:520)において、顧客IDが「101」、顧客名が「Brawn」、国IDが「US」のビジネスオブジェクトインスタンス522に、「1000000005」のシンクキー521が発行され、紐付けられる。ビジネスオブジェクトインスタンス524、526にも、同様に、シンクキー523、525を発行して紐付けておく。
さらに、タイプが「セールスオーダー」であるシンクBO530(SyncBo ID:530)において、顧客IDが「101」、配送日が「2003/04/23」のビジネスオブジェクトインスタンス532に、「1000000008」のシンクキー531が発行され、紐付けられる。ビジネスオブジェクトインスタンス534、536にも、同様に、シンクキー533、535を発行して紐付けておく。
ここで、図12に示すように、シンクBO530のデータエレメント「顧客ID」は、シンクBO520のデータエレメント「顧客ID」とのデータ参照関係を有しており(矢印550を参照)、逆にシンクBO520のデータエレメント「顧客ID」は、シンクBO530のデータエレメント「顧客ID」とのデータ被参照関係を有している。
同様に、シンクBO520のデータエレメント「国ID」は、シンクBO510のデータエレメント「国ID」とのデータ参照関係を有しており(矢印552を参照)、逆にシンクBO510のデータエレメント「顧客ID」は、シンクBO520のデータエレメント「国ID」とのデータ被参照関係を有している。
本明細書中では、このシンクBO間のデータ参照関係・被参照関係(従属関係・被従属関係)を「親子関係(parent−child)と定義する。
次に、シンクロナイゼーションサーバ106は、予め設定された選択条件(どのモバイルデバイスに対して、レプリカDB108内のどのシンクBOのインスタンスをダウンロードするかを示す)に基づいて、レプリカDB108を検索し、ダウンロードすべき1または複数のインスタンスをリストとして抽出する。以下、抽出されたシンクBOのインスタンスをダウンロード候補オブジェクトのインスタンスという。
シンクロナイゼーションサーバ106は、このダウンロード候補オブジェクトのリストを読み込み、すべてのダウンロード候補オブジェクトのインスタンスに対して、逐次、再帰的にデータ参照関係/被参照関係を検査する。
ここで、ダウンロード候補オブジェクトの再帰的な検査とは、現在検査対象となっているダウンロード候補オブジェクトが、他のオブジェクトデータ(必ずしもダウンロード候補オブジェクトである必要はない)とデータ参照関係/被参照関係を有している場合は、当該他のオブジェクトデータを現在の検査対象として、さらに、データ参照関係/被参照関係の検査を繰り返すことをいう。
すなわち、シンクロナイゼーションサーバ106は、まず1のダウンロード候補オブジェクトのインスタンスを選択し(ステップS420)、親方向のデータ参照関係を検査して、該当するオブジェクトデータのインスタンスの探索を行う(ステップS420)。
例えば、図12に示すように、インスタンス532のデータエレメント「顧客ID:101」は、インスタンス522のデータエレメント「顧客ID:101」と参照関係を有しており、かつ、インスタンス522のデータエレメント「国ID:US」は、インスタンス512のデータエレメント「国ID:US」と参照関係を有していることから、シンクロナイゼーションサーバ106は、ダウンロード候補オブジェクトとしてインスタンス532が選択された場合、まずデータエレメント「顧客ID:101」と参照関係を有するインスタンス522のデータエレメント「顧客ID:101」を探索する。そして、シンクロナイゼーションサーバ106は、インスタンス522を現在の検査対象とした後、再帰的に探索処理を実行する。この場合、シンクロナイゼーションサーバ106は、さらに、データエレメント「国ID:US」と参照関係を有するインスタンス512のデータエレメント「国ID:US」を探索する。
次に、シンクロナイゼーションサーバ106は、インスタンス532に関する参照官憲の探索の結果、抽出されたインスタンス512、522を参照関係の階層レベルの降順(または昇順)に整列する(ステップS430)。降順に整列した場合、ダウンロード候補オブジェクトのインスタンスは、参照関係の階層レベルにおいて親方向に最も高順位に定義されるインスタンス512から子方向にインスタンス522、532へ並べ替えられる。 そして、シンクロナイゼーションサーバ106は、まずカスケードダウンロード対象であるインスタンス512、522をこの並び順にモバイルデバイス120に対して送信する(ステップS440)。これらカスケードダウンロード対象インスタンスの送信処理完了後、シンクロナイゼーションサーバ106は、さらに、ダウンロード候補オブジェクトとして原始的に選択されているインスタンス532をモバイルデバイス120に対して送信する(ステップS450)。
このように、シンクロナイゼーションサーバ106は、被参照関係を有する他のインスタンスを送信した後、参照関係を有するインスタンスをモバイルデバイスに対して送信することで、モバイルデバイス120内のメモリにおいて、参照データが存在しないといったデータミスの発生を防止することが出来る効果が得られる。
同様にして、インスタンス534が選択された場合も(ステップS410)、探索の結果、インスタンス524、514が抽出され(ステップS420)、降順に並べ替えられて(ステップS430)、被参照関係を有するカスケードダウンロード対象インスタンス524、514の送信処理完了後(ステップS440)、ダウンロード候補オブジェクトとして、インスタンス534が送信処理される。
図13に、レプリカDB108より抽出され、モバイルデバイス120に送信されるオブジェクトデータを示す。
レプリカDB108において、各インスタンス512、514、516、518、522、524、526、532、534、536は、それぞれシンクキー511、513、515、517、521、523、525、531、533、535を用いて統一的に識別されることから、インスタンス532、534のデータエレメント「顧客ID」は、シンクキー521、523(図13に示すシンクキー621、623と対応する)に置換されるとともに、インスタンス522、524のデータエレメント「国ID」は、シンクキー511、513(図13に示すシンクキー611、613と対応する)に置換される。
上述のエンタープライズサーバ102、シンクロナイゼーションサーバ106、モバイルデバイス120は、内部に、コンピュータシステムを有している。
そして、上述したカスケードダウンロード処理、カスケード削除処理に関する一連の処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。
すなわち、エンタープライズサーバ102、シンクロナイゼーションサーバ106、モバイルデバイス120における、各処理手段、処理部は、CPU等の中央演算処理装置がROMやRAM等の主記憶装置に上記プログラムを読み出して、情報の加工・演算処理を実行することにより、実現されるものである。
ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
本発明の一実施の形態によるクライアントサーバシステムにおけるクライアントである携帯端末のブロック図。 同実施の形態によるモバイルエンジンが保持する情報の関連を示す図。 同実施の形態によるアプリケーションからのデータアクセス要求受信時のモバイルエンジンの動作フロー。 同実施の形態によるRefSyncBoインスタンス削除時のモバイルエンジンの動作フロー。 従来のクライアントサーバシステムにおけるクライアントである携帯端末のブロック図。 図1に示す実施の形態による携帯端末がクライアントとして適用されうるクライアントサーバシステムの構成図。 図6のクライアントサーバシステムにおけるビジネスオブジェクトの機能階層の構造図。 図6のクライアントサーバシステムにおけるビジネスオブジェクトのデータ構造図。 図6のクライアントサーバシステムにおけるシンクBOのデータ構造図。 図6のクライアントサーバシステムにおけるシンクBOのデータ構造及び参照関係図。 図6のクライアントサーバシステムにおけるカスケードダウンロード処理のフローチャート。 図6のクライアントサーバシステムにおけるレプリカDBのデータ構造図。 図6のクライアントサーバシステムにおけるモバイルデバイスへのダウンロードデータの構造図。
符号の説明
10…携帯端末(キャッシュ制御装置)
11…モバイルエンジン
12…ローカルデータベース
13…アプリケーション
14…仮想マシン
15…キャッシュ制御部(インスタンス要求受信手段、インスタンス生成手段、カウンタ生成手段、リファレンス設定手段、インスタンス解放手段)

Claims (3)

  1. アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置であって、
    前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるインスタンス要求受信手段と、
    要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成するインスタンス生成手段と、
    前記インスタンス生成手段が前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するカウンタ生成手段と、
    リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを1増加させるリファレンス設定手段と、
    リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを1減算するとともに、該カウンタが0になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するインスタンス解放手段と、
    を備えることを特徴とするキャッシュ制御装置。
  2. アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるキャッシュ制御方法であって、
    前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受け、
    要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスのインスタンスを生成し、
    前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成し、
    リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを1増加させ、
    リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを1減算するとともに、該カウンタが0になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放する、
    ことを特徴とするキャッシュ制御方法。
  3. アプリケーションが参照するインスタンスのキャッシュを制御するキャッシュ制御装置に用いられるコンピュータプログラムであって、
    前記アプリケーションからオブジェクトまたはクラスのインスタンスへのアクセス要求を受けるステップと、
    要求された前記オブジェクトまたはクラスのインスタンスが存在しない場合に、該オブジェクトまたはクラスを読み出してインスタンスを生成するステップと、
    前記オブジェクトまたはクラスのインスタンスを生成したときに該オブジェクトまたはクラスのインスタンスに対応するカウンタを生成するステップと、
    リファレンス設定クラスのインスタンスを生成し、要求された前記オブジェクトまたはクラスのインスタンスを参照するリファレンスを設定して前記アプリケーションに返送するとともに、該オブジェクトまたはクラスのインスタンスに対応するカウンタを1増加させるステップと、
    リファレンス設定クラスのインスタンスの解放通知を受け、該リファレンス設定クラスのインスタンスにより参照されるオブジェクトまたはクラスのインスタンスに対応するカウンタを1減算するとともに、該カウンタが0になった場合に該カウンタに対応するオブジェクトまたはクラスのインスタンスを解放するステップと、
    をコンピュータに実行させることを特徴とするコンピュータプログラム。

JP2003431473A 2003-12-25 2003-12-25 クライアントサーバシステムおよびキャッシュ制御方法ならびにコンピュータプログラム Expired - Lifetime JP4249605B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003431473A JP4249605B2 (ja) 2003-12-25 2003-12-25 クライアントサーバシステムおよびキャッシュ制御方法ならびにコンピュータプログラム
US11/021,479 US7441252B2 (en) 2003-12-25 2004-12-23 Cache control device, and method and computer program for the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003431473A JP4249605B2 (ja) 2003-12-25 2003-12-25 クライアントサーバシステムおよびキャッシュ制御方法ならびにコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2005190221A true JP2005190221A (ja) 2005-07-14
JP4249605B2 JP4249605B2 (ja) 2009-04-02

Family

ID=34789485

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003431473A Expired - Lifetime JP4249605B2 (ja) 2003-12-25 2003-12-25 クライアントサーバシステムおよびキャッシュ制御方法ならびにコンピュータプログラム

Country Status (2)

Country Link
US (1) US7441252B2 (ja)
JP (1) JP4249605B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157805A (ja) * 2007-12-27 2009-07-16 Exa Corp オブジェクトキャッシュ構築方法、オブジェクトキャッシュ構築プログラム
JP2009266147A (ja) * 2008-04-30 2009-11-12 Internatl Business Mach Corp <Ibm> データベースと仮想テーブルの整合性を維持する方法および装置。
JP7472155B2 (ja) 2019-02-21 2024-04-22 オラクル・インターナショナル・コーポレイション 再帰的データトラバースモデル

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774405B2 (en) * 2005-05-16 2010-08-10 Microsoft Corporation Coordination of set enumeration information between independent agents
US7581232B2 (en) * 2005-05-16 2009-08-25 Microsoft Corporation Coordinating reference counting between entities executing within separate address spaces
US7730522B2 (en) * 2005-05-16 2010-06-01 Microsoft Corporation Self-registering objects for an IPC mechanism
US9081589B2 (en) * 2006-12-01 2015-07-14 Adobe Systems Incorporated Persistent web plug-ins
US8903782B2 (en) 2010-07-27 2014-12-02 Microsoft Corporation Application instance and query stores
US9223690B2 (en) 2013-10-04 2015-12-29 Sybase, Inc. Freeing memory safely with low performance overhead in a concurrent environment

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127724B2 (en) * 1999-02-03 2006-10-24 International Business Machines Corporation Method and apparatus for providing protocol independent naming and life cycle services in an object-oriented system
US7054853B2 (en) * 2001-07-02 2006-05-30 Sun Microsystems, Inc. Methods and system for efficient association traversals
US7730449B2 (en) * 2003-03-19 2010-06-01 Toshiba Corporation Auto reference counting pointer for C++ objects with ability to re-cast and lookup from a free pointer

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157805A (ja) * 2007-12-27 2009-07-16 Exa Corp オブジェクトキャッシュ構築方法、オブジェクトキャッシュ構築プログラム
JP2009266147A (ja) * 2008-04-30 2009-11-12 Internatl Business Mach Corp <Ibm> データベースと仮想テーブルの整合性を維持する方法および装置。
JP7472155B2 (ja) 2019-02-21 2024-04-22 オラクル・インターナショナル・コーポレイション 再帰的データトラバースモデル

Also Published As

Publication number Publication date
JP4249605B2 (ja) 2009-04-02
US20050188380A1 (en) 2005-08-25
US7441252B2 (en) 2008-10-21

Similar Documents

Publication Publication Date Title
US11647097B2 (en) Providing access to managed content
US9864736B2 (en) Information processing apparatus, control method, and recording medium
US7440971B2 (en) Context based access of files by file system to a client based on detection of related files opened by the client
WO2016005898A1 (en) Method for processing data quality exceptions in data processing system
CN112632919B (zh) 一种文档编辑方法、装置、计算机设备和存储介质
US8352442B2 (en) Determination of an updated data source from disparate data sources
US6985894B2 (en) Document management method and computer-readable storage medium storing program code for executing the same
CN111240892A (zh) 数据备份方法及装置
CN101266617A (zh) 用于存储平台中的锁定和隔离的系统和方法
JP4249605B2 (ja) クライアントサーバシステムおよびキャッシュ制御方法ならびにコンピュータプログラム
US7313657B1 (en) Conflict avoidance in data store replication
US11360966B2 (en) Information processing system and method of controlling information processing system
WO2019162830A1 (en) Chronologically ordered out-of-place update key-value storage system
JP2005025362A (ja) データ同期制御装置、データ同期制御方法及びデータ同期制御プログラム
US10606805B2 (en) Object-level image query and retrieval
US9665732B2 (en) Secure Download from internet marketplace
CN110045983B (zh) 版本库管理方法、装置及服务器
US7389515B1 (en) Application deflation system and method
KR101888131B1 (ko) Dds-dbms 연동 도구의 실시간 변경 데이터 발간 서비스 수행 방법
CN107526530B (zh) 数据处理方法和设备
US20190197108A1 (en) Method for managing semantic information on m2m/iot platform
US20090151001A1 (en) Method and apparatus for operating rights
US20140195481A1 (en) Content managing apparatus and content managing method
JP3527834B2 (ja) 分散データベースシステム
JPH07175641A (ja) 分散プログラム開発統合更新管理方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090115

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120123

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4249605

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120123

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130123

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term