JP2009157805A - Object cache construction method, object cache construction program - Google Patents
Object cache construction method, object cache construction program Download PDFInfo
- Publication number
- JP2009157805A JP2009157805A JP2007337505A JP2007337505A JP2009157805A JP 2009157805 A JP2009157805 A JP 2009157805A JP 2007337505 A JP2007337505 A JP 2007337505A JP 2007337505 A JP2007337505 A JP 2007337505A JP 2009157805 A JP2009157805 A JP 2009157805A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- referenced
- clone
- area
- cache area
- 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
Links
- 238000010276 construction Methods 0.000 title claims description 19
- 238000000034 method Methods 0.000 claims abstract description 74
- 238000012790 confirmation Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 10
- 238000012217 deletion Methods 0.000 claims description 9
- 230000037430 deletion Effects 0.000 claims description 9
- 230000006870 function Effects 0.000 description 6
- 238000002955 isolation Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、コンピュータのメモリ上にオブジェクトキャッシュを構築する方法、およびそのプログラムに関するものである。 The present invention relates to a method for constructing an object cache on a memory of a computer and a program therefor.
コンピュータ上で実行されるアプリケーションからデータにアクセスする際に、そのアクセスを高速化する手段として、メモリ上に対象データのキャッシュを構築する手法が、しばしば用いられる。
アプリケーションから利用するキャッシュの分類の仕方として、例えば以下のようなものがある。
When accessing data from an application executed on a computer, a method of constructing a cache of target data on a memory is often used as means for speeding up the access.
For example, there are the following methods for classifying caches used by applications.
(1)DBキャッシュ
アクセス頻度の高いデータ本体や実行頻度の高い処理プログラムをキャッシュ領域にコピーしておくことで、データベースへのアクセス高速化を図る。一般にアプリケーションから利用するキャッシュとは、このDBキャッシュを指すことが多い。
(1) DB cache By copying a data body with high access frequency and a processing program with high execution frequency to a cache area, the access speed to the database is increased. In general, a cache used by an application often refers to this DB cache.
(2)オブジェクトキャッシュ
バイナリオブジェクトをキャッシュ領域上に預けて所定のキーと関連付けておき、後にアプリケーションから利用するときは、キーを指定することで、そのバイナリオブジェクトに直接的にアクセスする。
比較的サイズの大きい同一のバイナリオブジェクトを何度も使用するような場合に、キャッシュ領域に預けておいたバイナリオブジェクトを使い回すことで、同一のオブジェクトを何度も生成する負荷を削減する、といった用途に向く。
具体的な実装例としては、格納しておくバイナリオブジェクトと、そのハッシュキーとを関連付けてハッシュマッピング領域に格納しておき、アプリケーションからハッシュキーを指定して、関連付けられたバイナリオブジェクトを取得する、という手法がある。
(2) Object cache When a binary object is deposited on a cache area and associated with a predetermined key and used later by an application, the binary object is directly accessed by specifying the key.
When the same binary object with a relatively large size is used many times, the load to generate the same object many times can be reduced by using the binary object stored in the cache area repeatedly. Suitable for use.
As a specific implementation example, the binary object to be stored and the hash key are associated and stored in the hash mapping area, the hash key is specified from the application, and the associated binary object is acquired. There is a technique.
また、コンピュータのメモリ上のキャッシュに関し、『データの一貫性を維持するとともに、メモリ領域を節約しながら、アプリケーションからのデータアクセスを高速化する。』ことを目的とした技術として、『携帯端末10のキャッシュ制御部15は、アプリケーション13が参照するデータを規定したオブジェクトのインスタンスへのアクセス要求を受け、該オブジェクトのインスタンスが存在しない場合は、オブジェクトのインスタンスと、カウンタを生成する。また、リファレンス設定クラスのインスタンスを生成し、要求されたオブジェクトのインスタンスを参照するリファレンスを設定してアプリケーション13に返送するとともに、カウンタを1増加させる。リファレンス設定クラスのインスタンスの解放通知を受けた場合は、対応するカウンタを1減算し、該カウンタが0になった場合にオブジェクトのインスタンスを解放する。』というものが提案されている(特許文献1)。
In addition, regarding the cache on the memory of the computer, “speeding data access from an application while maintaining data consistency and saving memory area”. As a technology for the purpose of the above, “the cache control unit 15 of the
また、オブジェクトキャッシュに関し、『効率的にキャッシュデータを格納できるキャッシュシステムを提供する。』ことを目的とした技術として、『高効率キャッシュシステムは、オブジェクトリレーショナルマッピングにおける高効率キャッシュシステムであって、前記リレーショナルデータベースに保存されているデータから、キャッシュ用オブジェクトと処理用オブジェクトとに変換するデータオブジェクト変換手段と、前記キャッシュ用オブジェクトと前記処理用オブジェクトとを対応付けて相互に変換可能なオブジェクト対応相互変換手段と、前記キャッシュ用オブジェクトを格納するオブジェクトキャッシュ格納手段と、前記リレーショナルデータベースからデータを取得する補充オブジェクトデータ取得手段と、取得したオブジェクトと取得したデータとから、キャッシュ用オブジェクトと、取得要求に対して提供される処理用オブジェクトとを生成するオブジェクト生成手段とを有する。』というものも提案されている(特許文献2)。 Further, regarding an object cache, “a cache system capable of efficiently storing cache data is provided. As a technology for the purpose, "High-efficiency cache system is a high-efficiency cache system in object-relational mapping, and converts data stored in the relational database into cache objects and processing objects. Data object conversion means, object correspondence mutual conversion means capable of converting the cache object and the processing object in association with each other, object cache storage means for storing the cache object, and data from the relational database Replenishment object data acquisition means for acquiring the cache object and processing object provided for the acquisition request from the acquired object and the acquired data And a object generation means for generating and. Is also proposed (Patent Document 2).
上記特許文献1に記載の技術は、キャッシュを構築することにより携帯端末10のオブジェクトアクセスを高速化する手法に関するものであり、アプリケーションからキャッシュを利用することでアプリケーションの便宜に資する観点から述べられている。
これは、上記のキャッシュ分類の仕方によれば、(1)のDBキャッシュに近い技術について述べているものと言える。
The technique described in
This can be said to describe the technique close to the DB cache of (1) according to the above-described cache classification method.
また、上記特許文献2に記載の技術は、オブジェクトキャッシュに言及しているものの、その用途は(1)のDBキャッシュに近いものであり、キャッシュの形式がオブジェクト型であるに過ぎない。
Further, although the technique described in
一方、オブジェクトキャッシュそのものについての高速化やデータ一貫性の維持については、従来から要求のあるところであるが、上記特許文献1や特許文献2に記載の技術では、キャッシュそのものの高速化やデータ一貫性の維持については、詳細は述べられておらず、これを可能とするキャッシュ構築手法が望まれている。
On the other hand, there has been a demand for speeding up and maintaining data consistency for the object cache itself. However, with the techniques described in
本発明は、上記のような課題を解決するためになされたものであり、コンピュータのメモリ上にオブジェクトキャッシュを構築し、キャッシュ自体のアクセスの高速化やデータ一貫性の維持を図ることを目的とする。 The present invention has been made to solve the above-described problems, and has an object to construct an object cache on a memory of a computer, to speed up access to the cache itself and to maintain data consistency. To do.
本発明に係るオブジェクトキャッシュ構築方法は、コンピュータのメモリ上にオブジェクトキャッシュを構築する方法であって、前記メモリ上にキャッシュ領域を確保するステップと、前記キャッシュ領域にキャッシュ対象オブジェクトを格納するステップと、格納したキャッシュ対象オブジェクトに対するアクセス要求を受け付けるステップと、を有し、前記キャッシュ領域に前記キャッシュ対象オブジェクトを格納する際に、当該キャッシュ対象オブジェクトを、そのキャッシュ対象オブジェクトそのものの内容を表す被参照オブジェクトと、その被参照オブジェクトに向けた参照情報を保持する参照オブジェクトと、に分割して前記キャッシュ領域に格納しておき、格納した被参照オブジェクトに対するアクセス要求を受け付けると、前記参照オブジェクトを介して当該被参照オブジェクトに向けた参照を返し、その参照を用いて間接的に当該被参照オブジェクトにアクセスさせるものである。 An object cache construction method according to the present invention is a method of constructing an object cache on a memory of a computer, the step of securing a cache area on the memory, the step of storing a cache target object in the cache area, Receiving an access request for the stored cache target object, and when the cache target object is stored in the cache area, the cache target object is referred to as a referenced object representing the content of the cache target object itself; The reference object that holds the reference information for the referenced object is divided and stored in the cache area, and when an access request for the stored referenced object is received, Via the serial reference object returns a reference directed to the referenced object is intended to be accessed indirectly the referenced object using the reference.
本発明に係るオブジェクトキャッシュ構築方法によれば、キャッシュにオブジェクトを格納する際に、被参照オブジェクトと参照オブジェクトに分割して格納しておき、参照オブジェクトを介して被参照オブジェクトにアクセスさせるので、複数のアプリケーションが1つの更新中オブジェクトに同時にアクセスすることを防止でき、データ一貫性が確保される。
また、複数のオブジェクトが関連付けられてキャッシュ領域に格納されている場合に、各関連付けを分割して格納することができるので、取得対象のオブジェクトのみを取り出すことが容易となり、関連付けられた周辺オブジェクトを併せて取得する必要はない。
そのため、1度のオブジェクトアクセス時に消費するメモリ領域を押さえることができるので、オブジェクトアクセスを高速化することができる。
According to the object cache construction method of the present invention, when an object is stored in the cache, the object is divided into a referenced object and a reference object, and the referenced object is accessed via the reference object. Can be prevented from accessing one updating object at the same time, and data consistency is ensured.
Also, when multiple objects are associated and stored in the cache area, each association can be divided and stored, making it easy to retrieve only the acquisition target object, There is no need to obtain it together.
Therefore, the memory area consumed at the time of one object access can be suppressed, so that the object access can be speeded up.
実施の形態1.
図1は、本発明の実施の形態1に係るオブジェクトキャッシュの構成図である。
図1において、キャッシュ領域100は、コンピュータのメモリ上に確保される一定の領域であり、内部的に、参照オブジェクト領域110と被参照オブジェクト領域120に分けられている。
参照オブジェクト領域110と被参照オブジェクト領域120は、例えばハッシュマップなどのコレクション領域や配列領域などを用いて構築することができる。これらの領域については、後述の図2で改めて説明する。
なお、実装上は、参照オブジェクト領域110内に、被参照オブジェクト領域120を保持させるように構成してもよい。本実施の形態1では、記載の便宜上、図1のように表すこととした。以後の実施の形態でも同様である。
FIG. 1 is a configuration diagram of an object cache according to
In FIG. 1, a
The
For implementation, the
キャッシュ領域100上に構築された参照オブジェクト領域110と被参照オブジェクト領域120が、本実施の形態1における狭義のオブジェクトキャッシュに相当し、これにキャッシュマネージャ200を加えてオブジェクトの格納と取得の手段を追加したものが、本実施の形態1における広義のオブジェクトキャッシュに相当する。
The
キャッシュマネージャ200とアプリケーション300は、キャッシュ領域100をメモリ上に格納するコンピュータ上のプログラムであり、図示しないCPU(Central Processing Unit)やマイコンなどの演算装置上で実行されるものである。
キャッシュマネージャ200は、当該コンピュータのメモリ上にキャッシュ領域100を確保し、キャッシュ領域100にオブジェクトを格納し、あるいはアプリケーション300からの要求によりキャッシュ領域100に格納されているオブジェクトを取得する。より詳しくは、後述の図2で改めて説明する。
アプリケーション300は、キャッシュマネージャ200を介して、キャッシュ領域100にオブジェクトを格納し、あるいはキャッシュ領域100に格納されているオブジェクトを取得する。
The
The
The
図2は、キャッシュ領域100にオブジェクトを格納するイメージを示すものである。
図2(a)は、エンティティAとエンティティCが関連Bで関連付けられている場合の関係モデルを図示するものである。
図2(b)は、図2(a)の関連モデルをオブジェクトモデルで表現したものである。オブジェクトモデルでは、関連Bもオブジェクトとして表現される。この場合は、オブジェクトAとオブジェクトBが参照関係で関連付けられ、オブジェクトBとオブジェクトCが参照関係で関連付けられる。
FIG. 2 shows an image for storing an object in the
FIG. 2A illustrates a relationship model in the case where the entity A and the entity C are related by the relationship B.
FIG. 2B represents the related model of FIG. 2A with an object model. In the object model, the relation B is also expressed as an object. In this case, object A and object B are associated with each other in a reference relationship, and object B and object C are associated with each other in a reference relationship.
図2(c)は、図2(b)の各オブジェクトを、本実施の形態1に係るオブジェクトキャッシュに格納した様子を示すものである。
従来のオブジェクトキャッシュでは、図2(b)の各オブジェクトをそのままキャッシュ領域100に格納するところ、本実施の形態1に係るオブジェクトキャッシュでは、図2(b)の各オブジェクトを、「参照オブジェクト」と「被参照オブジェクト」と呼ぶ2種類のオブジェクトに分割して格納する。
「参照オブジェクト」は参照オブジェクト領域110に、「被参照オブジェクト」は被参照オブジェクト領域120に、それぞれ格納される。
FIG. 2C shows a state in which each object in FIG. 2B is stored in the object cache according to the first embodiment.
In the conventional object cache, each object in FIG. 2B is stored in the
“Reference object” is stored in the
参照オブジェクトは、対応する被参照オブジェクトに向けた参照情報を保持する。
被参照オブジェクトは、対応する参照オブジェクトから参照されるとともに、関連付けられているオブジェクトに対応した参照オブジェクトに向けた参照情報を保持する。
The reference object holds reference information for the corresponding referenced object.
The referenced object is referenced from the corresponding reference object and holds reference information for the reference object corresponding to the associated object.
図2(c)の例では、被参照オブジェクトBは、参照オブジェクトA(図2(c)中の「RefA」)と参照オブジェクトC(図2(c)中の「RefC」)に向けた参照情報を保持する。
また、被参照オブジェクトAと被参照オブジェクトCは、参照オブジェクトB(図2(c)中の「RefB」)に向けた参照情報を保持する。
In the example of FIG. 2C, the referenced object B is referred to the reference object A (“RefA” in FIG. 2C) and the reference object C (“RefC” in FIG. 2C). Keep information.
The referenced object A and the referenced object C hold reference information for the reference object B (“RefB” in FIG. 2C).
キャッシュ領域100に格納された被参照オブジェクトにアクセスするためには、必ず参照オブジェクトを介さなければならず、被参照オブジェクトに直接アクセスすることはできない。この点は、通常のハッシュキーを用いて実現するオブジェクトキャッシュとは異なる。
より詳細なオブジェクトの取得手順については、後述の図4で改めて説明する。
In order to access the referenced object stored in the
A more detailed object acquisition procedure will be described later with reference to FIG.
図3は、アプリケーション300が新たなオブジェクトAをキャッシュ領域100に預ける際の手順を説明するものである。以下、図3の各ステップについて説明する。
FIG. 3 illustrates a procedure when the
(1)アプリケーション300は、キャッシュ領域100に格納したいオブジェクトAを生成する。このとき、オブジェクトAのメンバ変数に、オブジェクトAの一意の識別キーを格納しておく。
(2)アプリケーション300は、キャッシュマネージャ200に、オブジェクトAをキャッシュ領域100へ預けるよう依頼する。
(3)キャッシュマネージャ200は、オブジェクトAを参照オブジェクトAと被参照オブジェクトAに分割し、それぞれの領域に格納する。このとき、参照オブジェクトAに、被参照オブジェクトAに向けた参照情報を格納しておく。
(1) The
(2) The
(3) The
なお、参照オブジェクト領域110とその中の参照オブジェクトは、弱参照で緩やかに連結される。したがって、参照オブジェクトが他のいずれのオブジェクトからも参照されなくなった時点で、その参照オブジェクトは自動的に参照オブジェクト領域110から削除される。
被参照オブジェクト領域120とその中の被参照オブジェクトの連結についても、同様である。
オブジェクトが実際に各領域から削除されるのは、例えばキャッシュマネージャ200の実行環境でガーベジコレクション(Garbage Collection)が実行された時点などが候補となり得る。
Note that the
The same applies to the connection between the referenced
For example, when an object is actually deleted from each area, garbage collection (Garbage Collection) is executed in the execution environment of the
このように、キャッシュ領域100に格納されたオブジェクトは、他のオブジェクトから参照されなくなった時点で不要と判断され、キャッシュ領域100から削除される対象となるので、参照オブジェクト領域110と被参照オブジェクト領域120は、擬似キャッシュのような役割を果たすことができるのである。
As described above, the object stored in the
図4は、キャッシュ領域100に格納されているオブジェクトにアクセスする際の手順を説明するものである。以下、図4の各ステップについて説明する。
FIG. 4 illustrates a procedure for accessing an object stored in the
(1)アプリケーション300は、キャッシュマネージャ200に対し、被参照オブジェクトBの取得を依頼する。
(2)キャッシュマネージャ200は、被参照オブジェクトBそのものを返すのではなく、参照オブジェクトBを新たに生成し、アプリケーション300に返す。このとき、内部的には、被参照オブジェクト領域120に格納されている被参照オブジェクトBのクローンが生成され、新たに生成された参照オブジェクトBから参照されるように設定される。
(1) The
(2) The
(3)被参照オブジェクトBのクローンは、クローン元の被参照オブジェクトBが保持している、参照オブジェクトAと参照オブジェクトCに向けた参照関係を、そのままコピーして保持する。 (3) The clone of the referenced object B is copied and held as it is with respect to the reference object A and the reference object C held by the clone-referenced object B.
ステップ(3)において、被参照オブジェクトBのクローンが保持する参照情報は、当該クローンBから参照オブジェクトA、参照オブジェクトCに向けた一方向のみの参照である。
このように、クローンBが保持する参照情報を一方向のみとするのは、アプリケーション300が被参照オブジェクトBのクローンに変更を加えている最中に、他のアプリケーションから同オブジェクトにアクセスされないようにするためである。
即ち、もし他の参照情報を生成して、参照オブジェクト領域110からクローンBへの向きにも参照可能としておくと、その参照を辿って、変更中である被参照オブジェクトBのクローンに他のアプリケーションが到達してしまう可能性があるからである。
In step (3), the reference information held by the clone of the referenced object B is a reference in only one direction from the clone B toward the reference object A and the reference object C.
As described above, the reference information held by the clone B is set to only one direction so that the
That is, if other reference information is generated and can be referred to in the direction from the
以後、アプリケーション300は、キャッシュマネージャ200より受け取った新たな参照オブジェクトBを介して、被参照オブジェクトBのクローンに対し、同オブジェクトが保持する値の取得など、種々の処理を実行する。
Thereafter, the
「参照情報」と「識別キー」の差異について、ここで補足しておく。
「参照情報」とは、参照先オブジェクトに対するポインタ情報のようなもので、キャッシュマネージャ200やアプリケーション300は、これを取得することにより、参照先のオブジェクトに直接的に到達することができる。例えばJava(登録商標)言語の場合は、Referenceクラスやそのサブクラスで実現される。
「識別キー」とは、当該オブジェクトの一意な識別IDであり、関係データベースでいうところの「主キー」や、ハッシュインデックスにおけるハッシュキーに相当する。キャッシュマネージャ200やアプリケーション300は、「識別キー」を指定することで、参照先オブジェクトを間接的に取得することができる。
The difference between “reference information” and “identification key” will be supplemented here.
The “reference information” is pointer information for the reference destination object, and the
The “identification key” is a unique identification ID of the object, and corresponds to a “primary key” in the relational database or a hash key in a hash index. The
本実施の形態1に係るオブジェクトキャッシュは、取得対象のオブジェクトが取得できれば用を成すため、関連付けられた他のオブジェクトを併せて取得する必要はないが、もしアプリケーション300の処理の上で必要であれば、被参照オブジェクトBのクローンは、参照オブジェクト領域110内の参照オブジェクトAや参照オブジェクトCに向けた参照関係を保持しているため、これを辿って各オブジェクトに到達することもできる。
ただし、このようにオブジェクトの参照関係を次々と辿るのは、本実施の形態1に係るオブジェクトキャッシュの本来の用途ではないことを付言しておく。
The object cache according to the first embodiment is useful if the object to be acquired can be acquired, so it is not necessary to acquire other related objects together, but it is necessary for the processing of the
However, it is added that tracing the object reference relationship one after another in this way is not the original use of the object cache according to the first embodiment.
もし、アプリケーション300が被参照オブジェクトBのクローンにアクセスしている際に、他のアプリケーションがキャッシュ領域100に格納されている被参照オブジェクトBへのアクセスを要求したとしても、当該他のアプリケーションも、図4と同様の手順により被参照オブジェクトBの新たなクローンを取得することになる。
したがって、アプリケーション300がアクセスしている被参照オブジェクトBのクローンに、他のアプリケーションがアクセスすることはなく、更新中の不安定な状態で被参照オブジェクトBのクローンがアクセスされないことが保証される。
If the
Accordingly, the clone of the referenced object B accessed by the
これは換言すると、本実施の形態1に係るオブジェクトキャッシュ上において、データベース上で行われるような「Read Committed」アイソレーションレベルが実現されているに等しいと言うことができる。
即ち、更新中の不安定な状態のオブジェクトがアクセスされることがない、ということは、アプリケーション300からアクセスされるオブジェクトは必ず更新済のものであることが保証されている、ということであり、これは「Read Committed」アイソレーションレベルそのものである。
In other words, it can be said that the “Read Committed” isolation level as performed on the database is realized in the object cache according to the first embodiment.
That is, an object in an unstable state being updated is never accessed, which means that an object accessed from the
以上のように、本実施の形態1で説明した例によれば、キャッシュマネージャ200は、キャッシュ領域100にオブジェクト(仮にオブジェクトBとする)を格納する際に、参照オブジェクトBと被参照オブジェクトBに分割してそれぞれの領域に格納しておき、参照オブジェクトBを介して被参照オブジェクトBにアクセスさせる。
このように、分割したオブジェクト格納構造を採用したことにより、アクセス要求に対しては、参照オブジェクトBのみを返せば足り、関連する全てのオブジェクトを返す必要がなくなる。
As described above, according to the example described in the first embodiment, when the
As described above, by adopting the divided object storage structure, it is sufficient to return only the reference object B for the access request, and it is not necessary to return all related objects.
また、本実施の形態1で説明した例によれば、キャッシュマネージャ200は、アプリケーション300から被参照オブジェクトBに対するアクセス要求を受け付けると、その被参照オブジェクトBのクローンおよび新たな参照オブジェクトBを生成して、新たな参照オブジェクトBをアプリケーション300に返す。
このとき、被参照オブジェクトBのクローンには、参照先オブジェクトへ向けた一方向の参照情報のみがコピーされる。
参照オブジェクト領域110からクローンBに向けた参照情報は、コピー元のオブジェクトがそもそもそのような参照情報を保持していないため、クローンBにはコピーされない。
これにより、アプリケーション300が被参照オブジェクトBのクローンを更新している最中は、他のアプリケーションが同オブジェクトにアクセスしないよう防ぐことができる。
Further, according to the example described in the first embodiment, when the
At this time, only one-way reference information directed to the reference destination object is copied to the clone of the referenced object B.
The reference information from the
This prevents other applications from accessing the object while the
また、複数のアプリケーションが被参照オブジェクトBにアクセスを要求したとしても、各アプリケーションが被参照オブジェクトB(のクローン)を更新中に他のアプリケーションが同じオブジェクトへアクセスすることがない。
これにより、上述の一方向の参照情報のみをクローンBに保持させる手法と合わせて、「Read Committed」アイソレーションレベルが実現される。
即ち、本実施の形態1に係るオブジェクトキャッシュによれば、格納するデータの一貫性を確実に維持できるのである。
Even if a plurality of applications request access to the referenced object B, other applications do not access the same object while each application is updating the referenced object B (clone thereof).
Thereby, the “Read Committed” isolation level is realized in combination with the method in which only the one-way reference information is stored in the clone B.
That is, according to the object cache according to the first embodiment, it is possible to reliably maintain consistency of stored data.
実施の形態2.
実施の形態1では、アプリケーション300は、キャッシュ領域100に格納されている被参照オブジェクトBの取得をキャッシュマネージャ200に要求し、キャッシュマネージャ200は、被参照オブジェクトBのクローンを生成して参照オブジェクトBを返すことを説明した。
本発明の実施の形態2では、被参照オブジェクトBのクローンに対して行った変更をキャッシュ領域100に反映して確定させる手順を説明する。なお、オブジェクトキャッシュに係る各構成は実施の形態1と同様であるため、説明を省略する。
In the first embodiment, the
In the second embodiment of the present invention, a procedure for reflecting and confirming changes made to the clone of the referenced object B in the
図5は、アプリケーション300が被参照オブジェクトBのクローンに対して行った変更をキャッシュ領域100に反映して確定させる手順を説明するものである。以下、図5の各ステップについて説明する。
FIG. 5 illustrates a procedure in which changes made by the
(1)参照オブジェクトBを生成して返す
図4のステップ(1)〜(3)と同様の手順により、アプリケーション300は、被参照オブジェクトBのクローンに間接的にアクセスできるようになる。
次に、アプリケーション300は、新たに生成された参照オブジェクトBを介して、被参照オブジェクトBのクローンが保持している値の変更などを行う。
(1) Generating and Returning Reference Object B The
Next, the
(2)オブジェクトBのクローンとの参照に張り替える
アプリケーション300は、キャッシュマネージャ200に対し、被参照オブジェクトBのクローンに対して行った変更をキャッシュ領域100に反映して確定するよう要求する。これは、データベースでいうところのコミット要求に相当する。
キャッシュマネージャ200は、その要求を受け取り、参照オブジェクト領域110内の各オブジェクトの参照情報を、被参照オブジェクトBのクローンとの間の参照情報に張り替える。
これにより、被参照オブジェクト領域120内の被参照オブジェクトBは、被参照オブジェクトBのクローンと論理的に置き換えられることになる。
(2) Replacing with Reference to the Clone of Object B The
The
As a result, the referenced object B in the referenced
図5の例では、参照オブジェクトBの参照情報を、被参照オブジェクトBのクローンに向けたものに張り替えている。
参照情報を張り替える際の具体的な実装例としては、参照先オブジェクトを引数として、参照元オブジェクトのメソッドをコールする、という方法がある。
In the example of FIG. 5, the reference information of the reference object B is replaced with information for the clone of the referenced object B.
As a specific implementation example when replacing reference information, there is a method of calling a method of a reference source object with a reference destination object as an argument.
(3)元のオブジェクトは削除対象となる
先に被参照オブジェクト領域120内に格納されていた被参照オブジェクトBは、未だ参照オブジェクトAと参照オブジェクトCに向けた参照情報を保持しているものの(図5中では図示省略)、自身はどのオブジェクトからも参照されなくなる。
したがって、先に被参照オブジェクト領域120内に格納されていた被参照オブジェクトBは、キャッシュ領域100から削除される対象となり、後に自動削除される。
(3) The original object is to be deleted The referenced object B that was previously stored in the referenced
Therefore, the referenced object B previously stored in the referenced
なお、ステップ(2)において、キャッシュマネージャ200が参照オブジェクト領域110内の各オブジェクトの参照情報を張り替えている最中(コミット中に相当)は、他のアプリケーションがキャッシュ領域100にアクセスしないよう、キャッシュ領域100は、キャッシュマネージャ200によりロックされる。
In step (2), while the
以上のように、本実施の形態2によれば、キャッシュマネージャ200は、アプリケーション300が被参照オブジェクトBのクローンに対して行った変更をキャッシュ領域100に反映して確定する際には、参照オブジェクト領域Bに格納されている参照オブジェクトBの参照情報を、被参照オブジェクトBのクローンに向けた参照情報に書き換えることにより、確定処理を実行する。
そのため、キャッシュ領域100に対する反映を確定する処理が極めて短時間で終了するので、キャッシュ領域100をロックする時間を短縮し、アプリケーションの同時アクセス性を高めることができる。
As described above, according to the second embodiment, when the
For this reason, the process of determining the reflection to the
実施の形態3.
実施の形態2では、被参照オブジェクトBのクローンに対して加えた変更をキャッシュ領域100に反映して確定する手順を説明した。
本発明の実施の形態3では、先にオブジェクトがキャッシュ領域に格納されている場合において、そのオブジェクトに関連付けられた新たなオブジェクトを追加し、キャッシュ領域100に反映して確定させる手順を説明する。なお、オブジェクトキャッシュに係る各構成は実施の形態1〜2と同様であるため、説明を省略する。
In the second embodiment, the procedure for reflecting and confirming the change made to the clone of the referenced object B in the
In the third embodiment of the present invention, a procedure will be described in which, when an object is stored in the cache area first, a new object associated with the object is added and reflected in the
図6は、既存のエンティティAに関連Bをもって新たなエンティティCを関連付ける様子を、関連モデルで表したものである。
図6(a)はエンティティCの追加前、図6(b)はエンティティCの追加後を表す。
次に、この関連モデル上の追加を、本実施の形態3に係るオブジェクトキャッシュ上で実施する手順について、図7〜図10で説明する。
FIG. 6 shows a state in which a new entity C is associated with an existing entity A with a relationship B using a relationship model.
6A shows the state before the addition of the entity C, and FIG. 6B shows the state after the addition of the entity C.
Next, the procedure for performing the addition on the relation model on the object cache according to the third embodiment will be described with reference to FIGS.
図7は、アプリケーション300が、キャッシュ領域100に格納されている被参照オブジェクトAを取得する様子を示すものである。
キャッシュ領域100には、図6のエンティティAに対応した参照オブジェクトAと被参照オブジェクトAが格納されている。
アプリケーション300は、これから関連BとエンティティCに対応したオブジェクトBとオブジェクトCを生成するに際し、まずキャッシュ領域100内のオブジェクトAを取得する。取得の手順は、実施の形態1の図4(2)で説明したものと同様である。
キャッシュマネージャ200は、被参照オブジェクトAのクローンを生成するとともに、アプリケーション300に、新たに生成した参照オブジェクトAを返す。
アプリケーション300は、受け取った参照オブジェクトAを介して、被参照オブジェクトAのクローンにアクセスすることができる。
FIG. 7 shows how the
The
The
The
The
図8は、アプリケーション300が、新たに追加するオブジェクトCと、関連を表す関連オブジェクトBとを生成する様子を示すものである。
図6(b)で説明した関連モデルは、図2(b)で説明したように、オブジェクトAとオブジェクトCが関連オブジェクトBで関連付けられることで、表現される。したがってアプリケーション300は、図7の手順で取得した被参照オブジェクトAのクローンに加え、新たにオブジェクトBとオブジェクトCを生成する。
FIG. 8 shows a state in which the
The related model described with reference to FIG. 6B is expressed by associating the object A and the object C with the related object B as described with reference to FIG. Therefore, the
このときアプリケーション300は、本発明におけるオブジェクトの格納構造に準じ、オブジェクトBとオブジェクトCを、参照オブジェクトと被参照オブジェクトに分割して生成する。各参照オブジェクトは、それぞれが対応する被参照オブジェクトに向けた参照情報を保持する。
At this time, the
なお、単一のオブジェクトをキャッシュ領域100に預けるときと同様に、被参照オブジェクトのみを生成してキャッシュマネージャ200に預け、キャッシュマネージャ200が参照オブジェクトを生成するようにしてもよい。
ここでは、説明の便宜上、アプリケーション300側で被参照オブジェクトと参照オブジェクトの双方を生成することとする。
As in the case of depositing a single object in the
Here, for convenience of explanation, it is assumed that both the referenced object and the reference object are generated on the
また、下記の参照関係は、参照先オブジェクトの識別キーを用いた論理上のみの参照として保持しておく。
(1)参照オブジェクトBと被参照オブジェクトA/Cとの参照関係
(2)被参照オブジェクトBと参照オブジェクトA/Cとの参照関係
Further, the following reference relationship is held as a logical reference using the identification key of the reference destination object.
(1) Reference relationship between reference object B and referenced object A / C (2) Reference relationship between referenced object B and reference object A / C
上記(1)(2)の参照関係について、参照情報を保持させるのではなく、識別キーを用いた論理参照のみとするのは、これらのオブジェクトをキャッシュ領域100に格納する際に、他のアプリケーションから参照情報を辿って各オブジェクトにアクセスさせないようにするためである。
Regarding the reference relationship of (1) and (2) above, reference information is not held but only logical reference using an identification key is used when other objects are stored when storing these objects in the
図9は、アプリケーション300が取得および生成した各オブジェクトを、キャッシュ領域100に反映する様子を示すものである。
アプリケーション300は、各オブジェクトをキャッシュ領域100に反映するよう、キャッシュマネージャ200に要求する。これは、データベースでいうところのコミット要求に相当する。
キャッシュマネージャ200は、以下の手順で各オブジェクトをキャッシュ領域100に反映する。
FIG. 9 shows a state in which each object acquired and generated by the
The
The
(1)キャッシュマネージャ200は、参照/被参照オブジェクトBと、参照/被参照オブジェクトCを、キャッシュ領域100のそれぞれの領域に格納する。
(1) The
(2)キャッシュマネージャ200は、先に参照オブジェクト領域110に格納されている参照オブジェクトAの参照情報を、被参照オブジェクトAのクローンに向けた参照情報に書き換える。
これにより、被参照オブジェクト領域120内の被参照オブジェクトAは、被参照オブジェクトAのクローンと論理的に置き換えられることになる。
(2) The
As a result, the referenced object A in the referenced
(3)キャッシュマネージャ200は、上述のステップ(1)〜(2)を実行している最中、参照オブジェクト領域110内の参照オブジェクトAに、「Non−repeatable read」フラグを保持させておく。
これは、この時点で参照オブジェクトAにアクセスしても、「Non−repeatable read」が発生する可能性がある、ということを他のアプリケーションに通知するためのフラグである。
同フラグを保持しているオブジェクトに対するアクセス要求を受け付けると、そのフラグの内容が返される。
(3) The
This is a flag for notifying other applications that “Non-repeatable read” may occur even if the reference object A is accessed at this time.
When an access request for an object holding the flag is received, the contents of the flag are returned.
図10は、キャッシュ領域100へ行った変更を確定する様子を示すものである。
キャッシュマネージャ200は、図9の処理に続き、図10に示す各処理を実行することで、キャッシュ領域100に対して行った変更を確定する。以下、図10の各ステップについて説明する。
FIG. 10 shows how changes made to the
The
(1)キャッシュマネージャ200は、キャッシュ領域100内の各オブジェクト同士のキー参照による論理参照を、参照情報を用いた直接参照に書き換える。
(2)キャッシュマネージャ200は、上記の処理が終了すると、参照オブジェクト領域110内の参照オブジェクトAに保持させている「Non−repeatable read」フラグをクリアする。
(1) The
(2) When the above processing is completed, the
(3)先に被参照オブジェクト領域120内に格納されていた被参照オブジェクトAは、どのオブジェクトからも参照されなくなる。したがって、先に被参照オブジェクト領域120内に格納されていた被参照オブジェクトAは、キャッシュ領域100から削除される対象となり、後に自動削除される。
(3) The referenced object A previously stored in the referenced
以上の手順により、先にキャッシュ領域100に格納されたオブジェクトAに加え、新たにオブジェクトBとオブジェクトCが追加され、図6(b)で説明した関係モデルがキャッシュ領域100上に反映される。
Through the above procedure, in addition to the object A previously stored in the
なお、「Non−repeatable read」とは、アプリケーションが以前取得したオブジェクトを再度取得したとき、そのオブジェクトを別のアプリケーションが変更してキャッシュ領域100に確定させたことにより、以前のオブジェクトではなく、新しいオブジェクトを取得してしまう状態を言う。
図9〜図10の状態では、キャッシュマネージャ200はキャッシュ領域100への反映を確定させている最中(コミット中に相当)であるため、この状態で他のアプリケーションがキャッシュ領域100にアクセスしても、再度アクセスした時は異なる内容になってしまっている。これは、「Non−repeatable read」が発生し得る状態そのものであると言える。
Note that “Non-repeatable read” means that when an object acquired by the application is acquired again, another application changes the object and fixes it in the
9 to 10, the
以上のように、本実施の形態3によれば、アプリケーション300は、先にキャッシュ領域100に格納されているオブジェクトAのクローンを取得し、新たにオブジェクトCおよび関連オブジェクトBを生成し、これらのオブジェクトをキャッシュ領域100に格納するよう、キャッシュマネージャ200に要求する。
この動作により、既存のキャッシュ領域100内のオブジェクトに、任意の関連を追加することができる。
As described above, according to the third embodiment, the
With this operation, an arbitrary relation can be added to the object in the existing
また、本実施の形態3によれば、キャッシュマネージャ200は、キャッシュ領域100内に各オブジェクトを格納した後、各オブジェクト同士のキー参照による論理参照を、参照情報を用いた直接参照に書き換える。
即ち、被参照オブジェクトA/Cに、参照オブジェクトBに向けた参照情報を保持させるとともに、被参照オブジェクトBに、参照オブジェクトA/Cに向けた参照情報を保持させる。
これにより、キャッシュ領域100に対する変更を反映して確定している最中に、他のアプリケーションから変更中のオブジェクトに到達することがなくなり、データ一貫性が維持される。
Further, according to the third embodiment, after storing each object in the
That is, the reference object A / C holds the reference information for the reference object B, and the reference object B holds the reference information for the reference object A / C.
As a result, while the change to the
また、本実施の形態3によれば、キャッシュマネージャ200は、キャッシュ領域100に対する変更を反映して確定している最中に、参照オブジェクト領域110内の参照オブジェクトに「Non−repeatable read」フラグを保持させておき、他のアプリケーションから同オブジェクトに対するアクセスがあると、そのフラグの内容に応じた情報を返す。
これにより、他のアプリケーションは、キャッシュ領域100が更新中であることが分かり、エラー処理を行ったり、一定時間待機したりするなど、適宜適切な対応を取ることができる。
Further, according to the third embodiment, the
As a result, other applications can recognize that the
実施の形態4.
実施の形態3では、新たにオブジェクトCを生成して関連オブジェクトBでオブジェクトAと関連付け、キャッシュ領域100に反映して確定する手順を説明した。
本発明の実施の形態4では、実施の形態3で追加したオブジェクトをキャッシュ領域100から削除し、オブジェクト追加前の状態に戻す手順を説明する。なお、オブジェクトキャッシュに係る各構成は実施の形態1〜3と同様であるため、説明を省略する。
Embodiment 4 FIG.
In the third embodiment, the procedure for generating a new object C, associating with the related object B with the object A, and reflecting and confirming in the
In the fourth embodiment of the present invention, a procedure for deleting the object added in the third embodiment from the
図11は、キャッシュ領域100内のオブジェクトCを削除する最初のステップを示すものである。
アプリケーション300は、キャッシュ領域100内のオブジェクトCを削除するようキャッシュマネージャ200に要求する。
キャッシュマネージャ200は、オブジェクトAとオブジェクトCを関連付けているオブジェクトBのクローンを生成するとともに、対応する参照オブジェクトBを生成し、アプリケーション300に返す。この手順は、実施の形態1の図4(2)で説明したものと同様である。
FIG. 11 shows the first step of deleting the object C in the
The
The
図12は、被参照オブジェクトBのクローンをキャッシュ領域100に反映するステップを示すものである。
アプリケーション300は、図11で取得した被参照オブジェクトBのクローンをキャッシュ領域100に反映させるよう、キャッシュマネージャ200に要求する。
キャッシュマネージャ200は、参照オブジェクト領域110に格納されている参照オブジェクトBの参照情報を、被参照オブジェクトBのクローンに向けた参照情報に書き換える。
これにより、被参照オブジェクト領域120内の被参照オブジェクトBは、被参照オブジェクトBのクローンと論理的に置き換えられることになる。
FIG. 12 shows a step of reflecting the clone of the referenced object B in the
The
The
As a result, the referenced object B in the referenced
被参照オブジェクトBのクローンは、参照オブジェクト領域110内の参照オブジェクトA/Cに対する参照情報を保持している。
また、クローンの元となった被参照オブジェクトBも、参照オブジェクト領域110内の参照オブジェクトA/Cに対する参照情報を未だ保持している。
したがってこの時点で、参照オブジェクトA/Cは、被参照オブジェクトBから参照されているため、キャッシュ領域100から削除される対象にはなっていない。
The clone of the referenced object B holds reference information for the reference object A / C in the
Also, the referenced object B that is the origin of the clone still holds reference information for the reference object A / C in the
Therefore, at this point, the reference object A / C is not deleted from the
なお、キャッシュマネージャ200は、参照オブジェクト領域110内の参照オブジェクトBに、「Phantom read」フラグを保持させておく。
これは、この時点で参照オブジェクトBにアクセスしても、「Phantom read」が発生する可能性がある、ということを他のアプリケーションに通知するためのフラグである。「Phantom read」の内容については、後述する。
同フラグを保持しているオブジェクトに対するアクセス要求を受け付けると、そのフラグの内容が返される。
Note that the
This is a flag for notifying other applications that “Phantom read” may occur even if the reference object B is accessed at this time. The contents of “Phantom read” will be described later.
When an access request for an object holding the flag is received, the contents of the flag are returned.
図13は、被参照オブジェクトA/Cから参照オブジェクトBに向けた参照情報を削除するステップを示すものである。以下、図13の各ステップについて説明する。 FIG. 13 shows a step of deleting reference information from the referenced object A / C toward the reference object B. Hereinafter, each step of FIG. 13 will be described.
(1)キャッシュマネージャ200は、被参照オブジェクトA/Cから参照オブジェクトBに向けた参照情報を、削除する。また、被参照オブジェクトBのクローンから被参照オブジェクトA/Cに向けた参照情報を削除する。
(2)一方、クローンの元となった被参照オブジェクトBは、他のいずれのオブジェクトからも参照されていないため、キャッシュ領域100からの削除対象となる。
(1) The
(2) On the other hand, the referenced object B that is the origin of the clone is not referenced by any other object, and is therefore a deletion target from the
図14〜図16は、削除対象の各オブジェクトがキャッシュ領域100から順次削除されていく様子を示すものである。以下、各図について説明する。
なお、被参照オブジェクト領域110内の被参照オブジェクトAは、図示しない他のオブジェクトから参照されており、削除対象にはならないものとする。
14 to 16 show how the objects to be deleted are sequentially deleted from the
It is assumed that the referenced object A in the referenced
図14では、クローンの元となった被参照オブジェクトBがキャッシュ領域100から削除されている。
また、参照オブジェクト領域110内の参照オブジェクトBも、他のいずれのオブジェクトからも参照されなくなるため、キャッシュ領域100からの削除対象となる。
さらには、アプリケーション300がキャッシュマネージャ200から受け取った参照オブジェクトBは、アプリケーション300の終了とともに削除される。
アプリケーション300と参照オブジェクトBが消滅することにより、被参照オブジェクトBのクローンは他のいずれのオブジェクトからも参照されなくなり、後に削除される対象となる。
In FIG. 14, the referenced object B that is the source of the clone is deleted from the
Further, the reference object B in the
Furthermore, the reference object B received by the
When the
図15では、参照オブジェクトCと被参照オブジェクトBのクローンがキャッシュ領域100から削除されている。
また、被参照オブジェクトCも、他のいずれのオブジェクトからも参照されなくなるため、後に削除対象となる。
In FIG. 15, the clones of the reference object C and the referenced object B are deleted from the
In addition, the referenced object C is not deleted from any other object, and is later deleted.
図16は、キャッシュ領域100内の最終的な状態を指す。
最終的に、キャッシュ領域100内には、図示しない他のオブジェクトから参照されている参照オブジェクトAと、その参照オブジェクトAから参照されている被参照オブジェクトAが、削除対象とならずに残される。
FIG. 16 shows the final state in the
Eventually, in the
以上の手順により、キャッシュ領域100内の状態は、図7と同一の状態まで戻る。
これは、図6(a)で説明した関連モデルに相当する。
Through the above procedure, the state in the
This corresponds to the related model described in FIG.
なお、「Phantom read」とは、アプリケーションが以前取得したオブジェクトの集合を同じ条件で再度取得したとき、それらのオブジェクトを別のアプリケーションが変更してキャッシュ領域100に確定させたことにより、同じ条件でオブジェクトの集合を取得しても、以前のオブジェクト集合が得られない状態を言う。
図12〜図13の状態では、キャッシュマネージャ200が削除を行っている最中の参照オブジェクトBに他のアプリケーションがアクセスしても、同オブジェクトはその後に削除されてしまうため、再度アクセスしても同じ結果が得られない可能性がある。
これは、「Phantom read」が発生し得る状態そのものであると言える。
Note that “Phantom read” means that when a set of objects previously acquired by an application is acquired again under the same conditions, those objects are changed by another application and confirmed in the
In the state of FIGS. 12 to 13, even if another application accesses the reference object B being deleted by the
This can be said to be a state where “Phantom read” can occur.
以上のように、本実施の形態4によれば、キャッシュマネージャ200は、先にキャッシュ領域100に格納されている関連オブジェクトBのクローンを取得し、先に格納されている関連オブジェクトBと論理的に入れ替える。
この動作により、関連オブジェクトBのみから参照されているオブジェクトは、他のいずれのオブジェクトからも参照されなくなり、キャッシュ領域100から削除される。
As described above, according to the fourth embodiment, the
With this operation, an object that is referred to only from the related object B is not referenced from any other object, and is deleted from the
また、本実施の形態4によれば、キャッシュマネージャ200は、参照オブジェクトBに向けた参照情報を削除する。
これにより、関連オブジェクトB自身も、他のいずれのオブジェクトからも参照されなくなり、キャッシュ領域100から削除される。
Further, according to the fourth embodiment, the
As a result, the related object B itself is not referred to by any other object, and is deleted from the
また、本実施の形態4によれば、キャッシュマネージャ200は、オブジェクトB/Cの削除処理を行っている最中に、参照オブジェクト領域110内の参照オブジェクトBに「Phantom read」フラグを保持させておき、他のアプリケーションから同オブジェクトに対するアクセスがあると、そのフラグの内容に応じた情報を返す。
これにより、他のアプリケーションは、キャッシュ領域100が更新中であることが分かり、エラー処理を行ったり、一定時間待機したりするなど、適宜適切な対応を取ることができる。
Further, according to the fourth embodiment, the
As a result, other applications can recognize that the
実施の形態5.
実施の形態1〜4では、各オブジェクトに対して行った変更/追加/削除などの処理をキャッシュ領域100に反映して確定させる(コミットに相当)際に、キャッシュマネージャ200は、キャッシュ領域100をロックすることを説明した。
しかし、確定処理は瞬時に終了するとはいえ、キャッシュ領域100全体をロックすると、キャッシュ領域100内のオブジェクトに対する平行アクセス性が下がり、全体としてキャッシュのパフォーマンスが下がる可能性がある。
Embodiment 5 FIG.
In the first to fourth embodiments, when the process such as change / addition / deletion performed on each object is reflected in the
However, although the finalizing process ends instantaneously, if the
そこで、本発明の実施の形態5では、キャッシュ領域100の一部のみをロックする手法について説明する。なお、オブジェクトキャッシュに係る各構成は実施の形態1〜4と同様であるため、説明を省略する。
In the fifth embodiment of the present invention, a method for locking only a part of the
図17は、本実施の形態5におけるキャッシュ領域100のロック範囲を説明するものである。
本実施の形態5において、キャッシュマネージャ200は、キャッシュ領域100に変更などを反映する際に、対象オブジェクトとその周辺のオブジェクトのみをロック対象とし、その他のオブジェクトは他のアプリケーションから平行してアクセスできるようにしておく。
FIG. 17 illustrates the lock range of the
In the fifth embodiment, when reflecting a change or the like in the
本実施の形態5におけるロック範囲は、例えば以下のようにすることができる。
(1)変更対象オブジェクトと、そのオブジェクトから参照される下位オブジェクトとを全てロックする。したがって、ロック範囲は更新の度に異なる。
(2)キャッシュ領域100内をあらかじめ複数の領域に固定的に分割しておき、その領域内のオブジェクトを更新するときは、該当する領域をロック範囲とする。
The lock range in the fifth embodiment can be set as follows, for example.
(1) Lock all change target objects and subordinate objects referenced from the objects. Therefore, the lock range varies with each update.
(2) When the
以上のように、本実施の形態5によれば、キャッシュマネージャ200は、キャッシュ領域100に格納している各オブジェクトに対して行った変更を確定させる際は、キャッシュ領域100全体をロックするのではなく、一部の領域のみを限定的にロックする。
そのため、ロックされていない領域に格納されているオブジェクトに関しては、他のアプリケーションが同時平行してアクセスすることができるので、アプリケーションの同時実効性が上がり、オブジェクトキャッシュとしてのパフォーマンスが向上する。
As described above, according to the fifth embodiment, the
For this reason, the object stored in the unlocked area can be accessed in parallel by other applications, so that the simultaneous effectiveness of the application is improved and the performance as an object cache is improved.
実施の形態6.
本発明の実施の形態6では、キャッシュ領域100に格納されているオブジェクトの参照関係を辿って複数のオブジェクトを取得する際に、その処理を高速化する手法について説明する。
まず、本発明に係るオブジェクトキャッシュ(実体はキャッシュ領域100)から複数のオブジェクトを取得する際の原則的な動作を説明し、その後、本実施の形態6に係るオブジェクト取得動作を説明する。
なお、オブジェクトキャッシュに係る各構成は実施の形態1〜5と同様であるため、説明を省略する。
Embodiment 6 FIG.
In the sixth embodiment of the present invention, a method for speeding up the processing when acquiring a plurality of objects by tracing the reference relationship of objects stored in the
First, the principle operation when acquiring a plurality of objects from the object cache (the entity is the cache area 100) according to the present invention will be described, and then the object acquisition operation according to the sixth embodiment will be described.
Note that each configuration related to the object cache is the same as that of the first to fifth embodiments, and thus description thereof is omitted.
図18は、キャッシュ領域100から複数のオブジェクトを取得する際の原則的手順を説明するものである。以下、図18の各ステップについて説明する。
FIG. 18 illustrates a principle procedure when acquiring a plurality of objects from the
(1)参照関係を辿っていく
アプリケーション300は、被参照オブジェクトBを取得するよう、キャッシュマネージャ200に要求する。キャッシュマネージャ200は、図4(2)と同様の手順で被参照オブジェクトBのクローンを生成し、新たに生成した参照オブジェクトBをアプリケーション300に返す。
アプリケーション300は、被参照オブジェクトBのクローンが保持する参照情報を辿って、参照先オブジェクトが参照オブジェクトCであることを知る。
(1) Tracing the reference relationship The
The
(2)参照先オブジェクトを取得する
アプリケーション300は、被参照オブジェクトBのクローンの参照先である被参照オブジェクトCを取得するよう、キャッシュマネージャ200に要求する。キャッシュマネージャ200は、(1)と同様の手順で被参照オブジェクトCのクローンを生成し、新たに生成した参照オブジェクトCをアプリケーション300に返す。
(2) Acquiring Referenced Object The
以後、同様の手順を繰り返すことにより、アプリケーション300は、キャッシュ領域100に格納されている複数のオブジェクトを、参照情報を辿りながら順次取得することができる。
Thereafter, by repeating the same procedure, the
ここで、図18(2)では、アプリケーション300が被参照オブジェクトを取得する毎に、被参照オブジェクトのクローンが生成されることに着目する。
被参照オブジェクトのクローンを生成するのは、操作中の被参照オブジェクトに他のアプリケーションがアクセスしないようにするためであり、その目的に対して有効な効果を発揮するが、大量の被参照オブジェクトを取得する際には、この手法が不都合となる場合がある。
Here, in FIG. 18B, attention is paid to the fact that the clone of the referenced object is generated every time the
The clone of the referenced object is created to prevent other applications from accessing the referenced object being operated, and it is effective for that purpose. This method may be inconvenient when acquiring.
オブジェクトのクローンを生成する処理は、新たなオブジェクトを生成することに他ならないため、メモリ領域やCPUリソースを一定量消費する。
大量のオブジェクトを取得する場合、これが積み重なり、全体として速度面のパフォーマンスが低下してしまう懸念がある。
Since the process of creating an object clone is nothing but creating a new object, it consumes a certain amount of memory area and CPU resources.
When a large number of objects are acquired, there is a concern that these may be stacked, resulting in a decrease in speed performance as a whole.
そこで、本実施の形態6では、被参照オブジェクトのクローン生成は極力行わないようにし、参照情報を用いた直接参照を行いながら、複数のオブジェクトを取得する手順を説明する。 Therefore, in the sixth embodiment, a procedure for acquiring a plurality of objects while performing direct reference using reference information while avoiding clone generation of the referenced object as much as possible will be described.
図19は、本実施の形態6において、キャッシュ領域100から複数のオブジェクトを取得する手順を説明するものである。以下、図19の各ステップについて説明する。
FIG. 19 illustrates a procedure for acquiring a plurality of objects from the
(1)参照オブジェクトBを取得する
アプリケーション300は、被参照オブジェクトBを取得するよう、キャッシュマネージャ200に要求する。キャッシュマネージャ200は、図4(2)や図18(1)と同様の手順により、新たに生成した参照オブジェクトBをアプリケーション300に返す。
(1) Acquiring Reference Object B The
(2)エージェントを生成して送り込む
アプリケーション300は、キャッシュ領域100内のオブジェクトを収集するエージェントオブジェクトを生成し、参照オブジェクトB−>被参照オブジェクトBのクローンを介して、キャッシュ領域100に送り込む。
エージェントオブジェクトを送り込む際の具体的な実装例としては、生成したエージェントオブジェクトを引数として、参照オブジェクト領域110内の参照オブジェクトCのメソッドをコールする、という手法が考えられる。
以後、同様にエージェントオブジェクトを引数として参照先オブジェクトのメソッドを順次コールすることで、エージェントオブジェクトがキャッシュ領域100内を循環し、各オブジェクトの属性値が収集される。
(2) Generating and sending an agent The
As a specific implementation example when sending the agent object, a method of calling the method of the reference object C in the
Thereafter, similarly, by sequentially calling the method of the reference destination object with the agent object as an argument, the agent object circulates in the
この手法は、図18で説明した原則的な取得手順と比較すると、最初に被参照オブジェクトBのクローンとエージェントオブジェクトを生成することを除いて、オブジェクト生成が行われないため、CPU処理負荷やメモリ負荷の観点から、図18の例と比較して格段に有利である。
したがって、アプリケーション300が大量のオブジェクトを取得する際でも、速度面のパフォーマンスを低下させる懸念がない。
Compared with the basic acquisition procedure described with reference to FIG. 18, this method does not perform object generation except that the clone of the referenced object B and the agent object are first generated. From the viewpoint of load, it is much more advantageous than the example of FIG.
Therefore, even when the
このような、相手方オブジェクトが保持していない機能(本実施の形態6ではオブジェクト収集機能)を有するオブジェクトを引き渡すことで、相手方オブジェクトに機能を追加する手法は、一般に「Visitorパターン」と呼ばれるデザインパターンとして知られている。
ただし、「Visitorパターン」は、一般的なオブジェクトデザイン手法について言及したものであり、汎用的に定義されたものであるのに対し、本発明では、オブジェクトの参照関係を利用したオブジェクト収集を行う点において、「Visitorパターン」一般とは異なる独自の手法であると言える。
Such a method of adding a function to a counterpart object by delivering an object having a function that the counterpart object does not hold (an object collection function in the sixth embodiment) is a design pattern generally called a “visitor pattern”. Known as.
However, the “Visitor pattern” refers to a general object design method and is defined for general purposes, whereas in the present invention, the object collection using the reference relationship between objects is performed. However, it can be said that this is a unique method different from the general “Visitor pattern”.
図20は、従来のキャッシュと本実施の形態6に係るオブジェクトキャッシュの、メモリ使用に関する差異点を比較して説明するものである。
図20(a)は、従来のキャッシュにおけるメモリの使用状況を示す。従来のキャッシュでは、ある1つのオブジェクトを入口として、関連する全てのオブジェクトを取得する場合は、関連付けられている全てのオブジェクトをアプリケーション300側にクローン生成する。
この場合、関連する全てのオブジェクトがインスタンス化されるため、アプリケーションのメモリ領域を圧迫する要因となっていた。
FIG. 20 compares and explains the difference in memory usage between the conventional cache and the object cache according to the sixth embodiment.
FIG. 20A shows the usage status of a memory in a conventional cache. In the conventional cache, when acquiring all related objects using a certain object as an entrance, all the related objects are cloned on the
In this case, since all related objects are instantiated, this has been a factor in pressing the memory area of the application.
図20(b)は、本実施の形態6に係るオブジェクトキャッシュのオブジェクト収集動作状況を示す。
図19で説明したように、キャッシュ領域100内の複数のオブジェクトを生成する際には、入口となるオブジェクトのクローンのみを生成し、これを入口としてエージェントオブジェクトを送り込むので、オブジェクトのクローンを大量に生成する必要がなく、メモリ使用量の観点からも有利である。
FIG. 20B shows the object collection operation status of the object cache according to the sixth embodiment.
As described with reference to FIG. 19, when generating a plurality of objects in the
以上のように、本実施の形態6では、キャッシュ領域100内の複数のオブジェクトを取得する際は、入口となるオブジェクトを介してエージェントオブジェクトをキャッシュ領域100内に送り込む。
この手法により、アクセス速度とメモリ使用量の双方の観点から、オブジェクトキャッシュのパフォーマンスを向上させることができる。
As described above, in the sixth embodiment, when a plurality of objects in the
This technique can improve the performance of the object cache from the viewpoint of both access speed and memory usage.
実施の形態7.
実施の形態6では、エージェントオブジェクトを用いて、キャッシュ領域100内のオブジェクトを高速に収集する手法について説明した。
本発明の実施の形態7では、エージェントオブジェクトの収集条件について、より具体的に説明する。
Embodiment 7 FIG.
In the sixth embodiment, the method for collecting the objects in the
In the seventh embodiment of the present invention, the agent object collection conditions will be described more specifically.
エージェントオブジェクトが、キャッシュ領域100内の全てのオブジェクトを取得する場合は、特段の措置は必要ないが、ある一定の条件に該当するオブジェクトのみを収集するような場合は、検索条件に相当する情報を、エージェントオブジェクトに渡す必要がある。
そこで、本実施の形態7では、エージェントオブジェクトの検索条件を定義したプロパティファイルを、キャッシュマネージャ200の配下に渡しておくこととする。
このプロパティファイルには、以下の(1)(2)の情報を記述しておく。
When the agent object acquires all the objects in the
Therefore, in the seventh embodiment, the property file defining the search conditions for the agent object is passed under the
The following information (1) and (2) is described in this property file.
(1)収集対象オブジェクトのタイプ/ステレオタイプの少なくとも一方
収集対象オブジェクトのタイプ/ステレオタイプを指定して収集するとは、例えば以下のようなことを言う。
(1.1)収集対象オブジェクトのクラス型を、プロパティファイルに指定しておく。例えば、「Account」クラスとそのサブクラスのみを収集する、といったような使い方をする。
(1.2)<<control>>ステレオタイプのオブジェクトのみを収集する、といったような使い方をする。
(1.3)上記の双方を収集条件に指定する。
(1) Collecting by specifying at least one of the type / stereotype of the object to be collected and specifying the type / stereotype of the object to be collected means the following, for example.
(1.1) The class type of the collection target object is specified in the property file. For example, the usage is such that only the “Account” class and its subclasses are collected.
(1.2) << control >>>> Only a stereo type object is collected.
(1.3) Specify both of the above as collection conditions.
(2)エージェントオブジェクトの進行方向
進行方向を指定して収集するとは、オブジェクトの参照先が複数ある場合に、エージェントオブジェクトがいずれの方向に向かって進むかを指定しておくことである。
オブジェクトの参照関係は、キャッシュ領域100にオブジェクトを預ける際に、アプリケーション300側で把握しているため、これに基づき、いずれの方向に進んで収集を行うべきかを、アプリケーション300の側から指定する。
(2) Direction of travel of agent object Specifying the direction of travel and collecting means to specify in which direction the agent object proceeds when there are a plurality of object reference destinations.
The object reference relationship is known on the
以上のように、本実施の形態7では、検索条件をプロパティファイルとしてエージェントプログラムから分離したことで、ひとつのエージェントで様々なパターンのデータ収集が可能になる。 As described above, in the seventh embodiment, the search condition is separated from the agent program as a property file, so that various patterns of data can be collected by one agent.
実施の形態8.
以上の実施の形態1〜7では、キャッシュマネージャ200は、キャッシュ領域100内のオブジェクトの参照情報を張り替えている最中などには、オブジェクトに「Non−repeatable read」フラグや「Phantom read」フラグを保持させておくことを説明した。
アプリケーション300がこれらのフラグの内容を取得した時、アプリケーション300がどのように振舞うかは、そのときのトランザクションのポリシーなどによる。
Embodiment 8 FIG.
In the above first to seventh embodiments, the
How the
1つの実装例としては、アプリケーション300とキャッシュマネージャ200の間を接続するコネクションオブジェクトを生成し、このコネクションオブジェクトに、上述のようなフラグを受け取った際の振る舞いに関するポリシーをセットしておく、という手法が考えられる。
As one implementation example, a method of generating a connection object for connecting the
実施の形態9.
以上の実施の形態1〜8では、本発明に係るオブジェクトキャッシュの実体は、キャッシュマネージャ200とキャッシュ領域100であることを説明した。
キャッシュマネージャ200の実装形態としては、例えば以下のようなものが考えられる。
Embodiment 9 FIG.
In the first to eighth embodiments described above, the object cache entity according to the present invention is the
As an implementation form of the
(1)キャッシュマネージャ200を、コンピュータ上で常時起動してアプリケーション300からの要求を待ち受ける、サービスとして構成する。
(2)キャッシュマネージャ200の機能を、クラスライブラリのような機能群として構成しておき、アプリケーション300にこれを組み込んで、アプリケーション300にこれと同等の機能を付与する。
(1) The
(2) The function of the
実施の形態10.
以上の実施の形態1〜9では、オブジェクトキャッシュのアイソレーションレベルとして、「Read Committed」を実現していることを説明したが、その他のアイソレーションレベルも、フラグを適切に設定することにより実現可能である。
In the above first to ninth embodiments, it has been described that “Read Committed” is realized as the isolation level of the object cache. However, other isolation levels can also be realized by appropriately setting a flag. It is.
また、以上の実施の形態1〜9では、オブジェクトキャッシュを構築する方法として、キャッシュ領域100のみならず、キャッシュマネージャ200を介したオブジェクトの取得や変更などについても説明した。
これは、オブジェクトキャッシュは構築するのみでは用をなさず、格納したオブジェクトを取得や変更することが必須であるからである。
即ち、本発明に係る狭義のオブジェクトキャッシュとは、キャッシュ領域100のことを指すが、本発明に係るオブジェクトキャッシュをより広義に捉えると、キャッシュ領域100とキャッシュマネージャ200の総体を指すものと言えるのである。
In the above first to ninth embodiments, the acquisition and change of the object via the
This is because the object cache is not used only for construction, but the stored object must be acquired or changed.
That is, the narrowly-defined object cache according to the present invention refers to the
100 キャッシュ領域、110 参照オブジェクト領域、120 被参照オブジェクト領域、200 キャッシュマネージャ、300 アプリケーション。 100 cache area, 110 reference object area, 120 referenced object area, 200 cache manager, 300 application.
Claims (15)
前記メモリ上にキャッシュ領域を確保するステップと、
前記キャッシュ領域にキャッシュ対象オブジェクトを格納するステップと、
格納したキャッシュ対象オブジェクトに対するアクセス要求を受け付けるステップと、
を有し、
前記キャッシュ領域に前記キャッシュ対象オブジェクトを格納する際に、
当該キャッシュ対象オブジェクトを、
そのキャッシュ対象オブジェクトそのものの内容を表す被参照オブジェクトと、
その被参照オブジェクトに向けた参照情報を保持する参照オブジェクトと、
に分割して前記キャッシュ領域に格納しておき、
格納した被参照オブジェクトに対するアクセス要求を受け付けると、
前記参照オブジェクトを介して当該被参照オブジェクトに向けた参照を返し、
その参照を用いて間接的に当該被参照オブジェクトにアクセスさせる
ことを特徴とするオブジェクトキャッシュ構築方法。 A method of building an object cache on a computer memory,
Securing a cache area on the memory;
Storing a cache object in the cache area;
Receiving an access request for the stored cache target object;
Have
When storing the cache target object in the cache area,
The cached object
A referenced object that represents the contents of the cached object itself,
A reference object that holds reference information for the referenced object;
Divided into two and stored in the cache area,
When an access request for the stored referenced object is received,
Returns a reference to the referenced object via the reference object;
A method for constructing an object cache, characterized in that the referenced object is indirectly accessed using the reference.
その被参照オブジェクトのクローンを生成するとともに、
そのクローンに向けた参照情報を保持する参照オブジェクトを生成し、
その参照オブジェクトを介して前記クローンに向けた参照を返し、
その参照を用いて前記クローンにアクセスさせる
ことを特徴とする請求項1に記載のオブジェクトキャッシュ構築方法。 When receiving an access request for the referenced object stored in the cache area,
A clone of the referenced object,
Create a reference object that holds the reference information for the clone,
Returns a reference to the clone via its reference object,
The object cache construction method according to claim 1, wherein the clone is accessed using the reference.
その被参照オブジェクトが参照している他のオブジェクトへの参照情報を、
当該クローンが参照する参照先オブジェクトを特定する情報として当該クローンに保持させる
ことを特徴とする請求項2に記載のオブジェクトキャッシュ構築方法。 When receiving an access request for a referenced object stored in the cache area and generating a clone of the referenced object,
Reference information to other objects referenced by the referenced object
The object cache construction method according to claim 2, wherein the clone is held as information for specifying a reference destination object referred to by the clone.
その要求に基づき前記変更を前記キャッシュ領域に反映する変更確定ステップと、
を有し、
前記変更確定ステップでは、
変更に係るクローンの元となった被参照オブジェクトに向けた参照情報を保持する参照オブジェクトの当該参照情報を、
変更に係るクローンに向けた参照情報に書き換えることにより、
前記クローンに対して行った変更を前記キャッシュ領域に反映する
ことを特徴とする請求項2または請求項3に記載のオブジェクトキャッシュ構築方法。 Receiving a request to reflect changes made to the clone in the cache area;
A change confirmation step for reflecting the change in the cache area based on the request;
Have
In the change confirmation step,
The reference information of the reference object that holds the reference information for the referenced object that is the source of the clone related to the change,
By rewriting the reference information for the clone to be changed,
The object cache construction method according to claim 2 or 3, wherein a change made to the clone is reflected in the cache area.
その被参照オブジェクトに関連付けた新たなキャッシュ対象オブジェクトを前記キャッシュ領域に格納すべき旨の要求を受け付けるステップと、
その要求に基づき新たなキャッシュ対象オブジェクトを前記キャッシュ領域に格納するとともに先に格納されている被参照オブジェクトと関連付ける関連追加確定ステップと、
を有し、
前記関連追加確定ステップでは、
先に前記キャッシュ領域に格納されている被参照オブジェクトのクローンを生成し、
そのクローンと新たなキャッシュ対象オブジェクトを関連付けて前記キャッシュ領域に格納する
ことを特徴とする請求項2ないし請求項4のいずれかに記載のオブジェクトキャッシュ構築方法。 In the case where the referenced object is stored in the cache area,
Receiving a request to store a new cache target object associated with the referenced object in the cache area;
An association addition confirmation step for storing a new cache target object in the cache area based on the request and associating the new cache target object with the previously-referenced object;
Have
In the association addition confirmation step,
Generate a clone of the referenced object stored in the cache area first,
The object cache construction method according to any one of claims 2 to 4, wherein the clone and a new cache target object are associated with each other and stored in the cache area.
先に前記キャッシュ領域に格納されている被参照オブジェクトと新たなキャッシュ対象オブジェクトの関連付け情報を保持する関連オブジェクトを生成し、
新たなキャッシュ対象オブジェクトと前記関連オブジェクトを前記キャッシュ領域に格納する
ことを特徴とする請求項5に記載のオブジェクトキャッシュ構築方法。 In the association addition confirmation step,
Generating a related object that retains association information between the referenced object previously stored in the cache area and the new cache target object;
6. The object cache construction method according to claim 5, wherein a new cache target object and the related object are stored in the cache area.
先に前記キャッシュ領域に格納されている被参照オブジェクトに、前記関連オブジェクトに対応する参照オブジェクトに向けた参照情報を保持させるとともに、
新たなキャッシュ対象オブジェクトに、前記関連オブジェクトに対応する参照オブジェクトに向けた参照情報を保持させる
ことを特徴とする請求項6に記載のオブジェクトキャッシュ構築方法。 In the association addition confirmation step,
The referenced object stored in the cache area first holds the reference information for the reference object corresponding to the related object, and
The object cache construction method according to claim 6, further comprising: causing a new cache target object to hold reference information directed to a reference object corresponding to the related object.
前記キャッシュ領域に格納した前記関連オブジェクトに、
先に前記キャッシュ領域に格納されている被参照オブジェクトに対応した参照オブジェクトに向けた参照情報を保持させるとともに、
新たなキャッシュ対象オブジェクトに対応した参照オブジェクトに向けた参照情報を保持させる
ことを特徴とする請求項6または請求項7に記載のオブジェクトキャッシュ構築方法。 In the association addition confirmation step,
In the related object stored in the cache area,
While holding the reference information for the reference object corresponding to the referenced object previously stored in the cache area,
The object cache construction method according to claim 6 or 7, wherein reference information for a reference object corresponding to a new cache target object is held.
その処理を行っている旨を表すフラグ情報を、先に前記キャッシュ領域に格納されている被参照オブジェクトに対応する参照オブジェクトに保持させておき、
この参照オブジェクトに対するアクセス要求を受け付けると、前記フラグ情報を返す
ことを特徴とする請求項5ないし請求項8のいずれかに記載のオブジェクトキャッシュ構築方法。 In the association addition confirmation step,
Flag information indicating that the process is being performed is held in a reference object corresponding to the referenced object previously stored in the cache area,
The object cache construction method according to any one of claims 5 to 8, wherein the flag information is returned when an access request for the reference object is received.
前記関連オブジェクトにより関連付けられている被参照オブジェクトを前記キャッシュ領域から削除すべき旨の要求を受け付けるステップと、
その要求に基づきその被参照オブジェクトを前記キャッシュ領域から削除する削除確定ステップと、
を有し、
前記削除確定ステップでは、
前記関連オブジェクトのクローンを生成するとともに、
そのクローンに向けた参照情報を保持する参照オブジェクトを生成し、
その参照オブジェクトを介して、
前記関連オブジェクトにより関連付けられている被参照オブジェクトと、
前記関連オブジェクトとの関連付けを削除する
ことを特徴とする請求項6ないし請求項9のいずれかに記載のオブジェクトキャッシュ構築方法。 In the case where the referenced object and the related object are stored in the cache area,
Receiving a request to delete the referenced object associated by the related object from the cache area;
A deletion confirmation step of deleting the referenced object from the cache area based on the request;
Have
In the deletion confirmation step,
Creating a clone of the related object;
Create a reference object that holds the reference information for the clone,
Via its reference object
A referenced object associated with the associated object;
The object cache construction method according to claim 6, wherein the association with the related object is deleted.
前記関連オブジェクトに向けた参照情報を保持する参照オブジェクトの当該参照情報を、前記関連オブジェクトのクローンに向けた参照情報に書き換えるとともに、
前記関連オブジェクトにより関連付けられている被参照オブジェクトが保持している、
前記関連オブジェクトに対応する参照オブジェクトに向けた関連付けを削除することにより、
前記関連オブジェクトと関連付けられているオブジェクトの参照情報を削除する
ことを特徴とする請求項10に記載のオブジェクトキャッシュ構築方法。 In the deletion confirmation step,
Rewriting the reference information of the reference object that holds the reference information for the related object, with reference information for the clone of the related object,
Held by the referenced object associated by the related object,
By deleting the association towards the reference object corresponding to the related object,
The object cache construction method according to claim 10, wherein reference information of an object associated with the related object is deleted.
その処理を行っている旨を表すフラグ情報を、前記関連オブジェクトに対応する参照オブジェクトに保持させておき、
この参照オブジェクトに対するアクセス要求を受け付けると、前記フラグ情報を返す
ことを特徴とする請求項10または請求項11に記載のオブジェクトキャッシュ構築方法。 In the deletion confirmation step,
Flag information indicating that the processing is being performed is held in a reference object corresponding to the related object,
The object cache construction method according to claim 10 or 11, wherein the flag information is returned when an access request for the reference object is received.
そのオブジェクトが参照し、またはそのオブジェクトを参照している周辺のオブジェクトに対する変更を禁止する
ことを特徴とする請求項4ないし請求項12のいずれかに記載のオブジェクトキャッシュ構築方法。 When confirming changes to be made to each object stored in the cache area,
The object cache construction method according to any one of claims 4 to 12, wherein the object refers to or changes to surrounding objects that refer to the object are prohibited.
その要求を受け取る際に、
一括取得を実行するエージェントオブジェクトを併せて受け取り、
前記被参照オブジェクトのクローンを生成することなく、
そのエージェントオブジェクトに、
前記キャッシュ領域に格納されている複数の被参照オブジェクトが保持する属性値を、前記参照情報を用いて直接取得させる
ことを特徴とする請求項1ないし請求項13のいずれかに記載のオブジェクトキャッシュ構築方法。 Receiving a request to collectively acquire a plurality of referenced objects stored in the cache area;
Upon receiving that request,
Receives agent objects that execute batch acquisition,
Without creating a clone of the referenced object,
In that agent object,
The object cache construction according to any one of claims 1 to 13, wherein attribute values held by a plurality of referenced objects stored in the cache area are directly obtained using the reference information. Method.
ことを特徴とするオブジェクトキャッシュ構築プログラム。 An object cache construction program that causes the computer to execute the object cache construction method according to any one of claims 1 to 14.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007337505A JP5511134B2 (en) | 2007-12-27 | 2007-12-27 | Object cache construction method, object cache construction program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007337505A JP5511134B2 (en) | 2007-12-27 | 2007-12-27 | Object cache construction method, object cache construction program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009157805A true JP2009157805A (en) | 2009-07-16 |
JP5511134B2 JP5511134B2 (en) | 2014-06-04 |
Family
ID=40961732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007337505A Expired - Fee Related JP5511134B2 (en) | 2007-12-27 | 2007-12-27 | Object cache construction method, object cache construction program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5511134B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013046360A1 (en) * | 2011-09-28 | 2013-04-04 | 株式会社日立製作所 | Object management device and object management method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962689A (en) * | 1995-08-21 | 1997-03-07 | Matsushita Electric Ind Co Ltd | Multimedia compound document management system |
JP2003248616A (en) * | 2003-02-17 | 2003-09-05 | Fuji Xerox Co Ltd | Object-oriented database system and its object managing method |
JP2005190221A (en) * | 2003-12-25 | 2005-07-14 | Sap Ag | Cache control unit, its method, and computer program |
JP2006185325A (en) * | 2004-12-28 | 2006-07-13 | Internatl Business Mach Corp <Ibm> | Method for reusing application object |
-
2007
- 2007-12-27 JP JP2007337505A patent/JP5511134B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962689A (en) * | 1995-08-21 | 1997-03-07 | Matsushita Electric Ind Co Ltd | Multimedia compound document management system |
JP2003248616A (en) * | 2003-02-17 | 2003-09-05 | Fuji Xerox Co Ltd | Object-oriented database system and its object managing method |
JP2005190221A (en) * | 2003-12-25 | 2005-07-14 | Sap Ag | Cache control unit, its method, and computer program |
JP2006185325A (en) * | 2004-12-28 | 2006-07-13 | Internatl Business Mach Corp <Ibm> | Method for reusing application object |
Non-Patent Citations (2)
Title |
---|
CSNG199800373020; 渡辺美樹 他: '"Javaのためのデータベース・エンジンの設計課題"' 電子情報通信学会技術研究報告 Vol.97,No.160, 19970714, p.125-130 * |
JPN6012061472; 渡辺美樹 他: '"Javaのためのデータベース・エンジンの設計課題"' 電子情報通信学会技術研究報告 Vol.97,No.160, 19970714, p.125-130 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013046360A1 (en) * | 2011-09-28 | 2013-04-04 | 株式会社日立製作所 | Object management device and object management method |
JP5668146B2 (en) * | 2011-09-28 | 2015-02-12 | 株式会社日立製作所 | Object management apparatus and object management method |
Also Published As
Publication number | Publication date |
---|---|
JP5511134B2 (en) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5812130A (en) | Data management system and method for concurrent engineering | |
KR101573965B1 (en) | Atomic multiple modification of data in a distributed storage system | |
US9292573B2 (en) | Extended database engine providing versioning and embedded analytics | |
JP2863805B2 (en) | Version management method | |
KR20200093561A (en) | Remote tree update for client synchronization service | |
JP2007299063A (en) | Information processor and information processing method | |
US11698893B2 (en) | System and method for use of lock-less techniques with a multidimensional database | |
US6941309B2 (en) | Object integrated management system | |
US20230401241A1 (en) | System for lightweight objects | |
CN112162846B (en) | Transaction processing method, device and computer readable storage medium | |
CN107977446A (en) | A kind of memory grid data load method based on data partition | |
US20200250136A1 (en) | Domains-based snapshots for efficient membership retrieval and governance | |
KR100313844B1 (en) | Locking tool data objects in a framework environment | |
US8140493B2 (en) | Changing metadata without invalidating cursors | |
US11200198B2 (en) | Excluding directory trees from data service operations | |
JP5511134B2 (en) | Object cache construction method, object cache construction program | |
JP2000347921A (en) | Data managing method and device for executing the method | |
US9009731B2 (en) | Conversion of lightweight object to a heavyweight object | |
US20070112771A1 (en) | Directory entry locks | |
CN114610687A (en) | Metadata storage method and distributed file system | |
WO2021004295A1 (en) | Metadata processing method and apparatus, and computer-readable storage medium | |
CN113901018A (en) | Method and device for identifying file to be migrated, computer equipment and storage medium | |
US20190213081A1 (en) | Multi-Role Application Orchestration In A Distributed Storage System | |
CN116821058B (en) | Metadata access method, device, equipment and storage medium | |
US11514080B1 (en) | Cross domain transactions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101210 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121127 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130402 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130515 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130917 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131004 |
|
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: 20140304 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140325 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5511134 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |