JP2014510985A - キャッシュメモリ構造および方法 - Google Patents

キャッシュメモリ構造および方法 Download PDF

Info

Publication number
JP2014510985A
JP2014510985A JP2014504303A JP2014504303A JP2014510985A JP 2014510985 A JP2014510985 A JP 2014510985A JP 2014504303 A JP2014504303 A JP 2014504303A JP 2014504303 A JP2014504303 A JP 2014504303A JP 2014510985 A JP2014510985 A JP 2014510985A
Authority
JP
Japan
Prior art keywords
version
data
offset
section
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
Application number
JP2014504303A
Other languages
English (en)
Other versions
JP5976779B2 (ja
Inventor
ヴィルジニー・アマール
リュック・カパナクシア
ギローム・トゥフェ
セバスティアン・ペリーズ
グザヴィエ・ルブラン
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.)
Amadeus SAS
Original Assignee
Amadeus SAS
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 Amadeus SAS filed Critical Amadeus SAS
Publication of JP2014510985A publication Critical patent/JP2014510985A/ja
Application granted granted Critical
Publication of JP5976779B2 publication Critical patent/JP5976779B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本発明は、データへのアクセスを制御するためのキャッシュメモリおよび方法に関する。本発明に従い、データ領域(410)から分離して有利に形成された管理領域がキャッシュ内に格納されたデータへのアクセスを制御するために提供され、アプリケーティブプロセスによって読み出される。管理領域はオフセット(442)つきの少なくとも1つのリリース領域(430)と、データバージョン定義セクション(452、454、456)を備える。クライアントサーバアーキテクチャのための共有メモリへ適用される。

Description

本発明は、一般的にはデータ処理の分野に関し、特に、データキャッシュファイルが、マスタデータベースから複数のミドルウェア処理ノードにわたって分散される、分散クライアント/サーバソフトウェアアーキテクチャに関する。より詳細には、本発明は、それらを使用するミドルウェアアプリケーティブプロセス(applicative process)のために、分散されたキャッシュファイルのバージョンを特に管理しつづけるための方法およびシステムに関する。
1980年代後半に登場したクライアント/サーバモデルは、当時一般的であった、集中型、メインフレーム型、タイムシェアリング型コンピューティングと比較して、使いやすさ(usability)、フレキシビリティ(flexibility)、相互運用性(interoperability)、およびスケーラビリティ(scalability)を改善するために考案された、多目的かつモジュール式のソフトウェアアーキテクチャである。クライアント/サーバアーキテクチャは、以来、全ての知性が中央ホストコンピュータの中にあり、ユーザは、ダム端末(dumb terminal)を介してホストと対話する、先のメインフレームソフトウェアアーキテクチャを、徐々に完全に置き換えてきた。メインフレームも未だ使用されてはいるが、様々なクライアント/サーバアーキテクチャ内の強力なサーバとしてのみであり、ダム端末もまた、サーバからのデータ受信およびサーバへのデータ送信を自己で処理することが可能な知性的なグラフィカルユーザインターフェース(GUI)によって置換されている。
現代のデータ処理システムにおいて、クライアント/サーバアーキテクチャは広く使用され、多数のリモートに位置するクライアントがいわゆる3層(3-tier)アーキテクチャをサポートすることが可能である。このようなアーキテクチャの例を図1に示す。データ層100は、おそらく商業的および管理的操作の全てのソートを処理するために、いかなるビジネス組織、会社、または事業体の日々の操作への必要な全てデータの多くのまたは非常に多くのリポジトリ、であるマスタデータベースシステム120の周辺に伝統的に構築される。データベースは、大部分はリレーショナル型、すなわちリレーショナルデータベース管理システムまたはRDBMSの管理下にある。それは典型的には、1つまたはそれ以上のマスタサーバ112を介し、データ処理システムの管理者によって、GUI140から管理される。管理者は、一般的に直接データベースの内容を更新する権限を与えられたシステムの唯一のユーザである。
図1の例示的な3層システムの中位(intermediate)または中間層(middle)は、データ処理システムの所有者である組織の全ての特定のソフトウェアアプリケーション240がそこから実行される、アプリケーション層200である。特定のアプリケーションの集合は、しばしばミドルウェアソフトウェアとしてグローバルに参照され、組織が所有するソフトウェアである。マスタサーバ110を介して、そのデータのリポジトリ120から、組織の全てのリモートクライアントにサービスするのに使用される。リモートクライアントは3層アーキテクチャの第3層を形成する。クライアント層300からのクエリは、中間層200の特定のアプリケーションによって、データ層100からフェッチされたデータに対し、処理され、応答される。
3層アーキテクチャにおいて、より多数のリモートクライアントがサービスを受ける必要がある場合、グローバルな性能を維持するためのシステムのスケーラビリティは、データ処理システムの全体の処理能力を増大させるために、中間層において独立した処理ノードを追加することによって取得される。従って、アプリケーション層200は、一般的に、以下の説明でスレーブノード210として参照されるいくつかの独立した処理ノードから構成される。また、データ層100が、増加するスレーブノードからの過度のデータ要求によって圧倒されることを防止するための一般的なプラクティスは、必要な限り、アプリケーティブプロセス240にマスタデータベースから持ってきて、かつそれぞれのアプリケーションノードに格納された、データを処理させることである。図1に示す例示的なシステムにおいて、これはアプリケーティブプロセス240が必要なときにいつでもマスタサーバを介してマスタデータベースから手に入れるための大きな遅延を受けなければならないことがなく動作可能である、キャッシュファイル250の形式を取る。このようなデータ処理システムにおいて、処理能力とソフトウェアアプリケーションは、以下のように分散、すなわち、システムの全てのリモートクライアント300にサービスを提供するために必要な処理能力のレベルに達するために必要な数のノード210上に複製される。これが分散キャッシュファイル250である。それぞれのノードにおいて、キャッシュファイルは、典型的にはノード上で実行中の全てのアプリケーティブプロセス240の間で共有される。この目的を達成するため、キャッシュファイル250は、全てのアプリケーティブプロセスが、マスタデータベースから来て、それにより処理すべきデータへの高速にアクセスさせるために、共有メモリ230内のメモリマップドファイルとして格納される。
スレーブノードオペレーティングシステムは、メモリマップドファイルが、作成時にそのサイズが与えられることを課している。このため、ファイルサイズは、キャッシュファイルの寿命の間ずっと同じである。図2に示すように、キャッシュファイル250は、メモリマップドファイル10として実装され、2つの部分で構成される。第1の部分は、メモリマップドファイルの全てのアプリケーティブデータコンテンツを格納するデータ領域20であり、第2の部分は、管理データを保持する管理領域(control area)30である。データ領域は、データブロックの2つのリンクリスト(linked list)として編成された2つの部分にさらに分割される。リンクリスト23の1つは前のレベルのデータ、すなわち、非アクティブデータブロック24の形式にある古いデータを保持する。他方のリンクリスト21は、アクティブデータブロック22の現在のレベルのデータを格納する。しかし、アクティブおよび非アクティブのリンクされたデータブロックは、同一のメモリマップドファイル領域、すなわちデータ領域20を共有する。
管理領域30は、どのリンクリストがアクティブデータを含んでいるのかを示す。フリップフロップメカニズムは、管理領域の一部であり、メモリマップドファイルを読み出す、いかなるアプリケーティブプロセスも最新のデータへのアクセスが常に与えられるように、データブロックのリンクリストへのアクティブ31および非アクティブ32ポインタの間をトグルすることを許可する。従って、マスタデータベースからのデータの複製中、非アクティブ部分のデータブロックは、新しく入ってくるデータで満たされるように、最初にクリアされる。新しいデータの挿入が完了すると、管理領域は、上記フリップフロップメカニズムが、メモリ共有されたファイルのデータ領域内のアクティブおよび非アクティブ部分を反転するように編集される。しかし、上記の現在のメカニズムでは、2つの問題が発生する。
第1の問題は、メモリマップドファイルの実際のサイズに対して格納される新しいデータの量を扱う。上記で既に説明したように、メモリマップドファイルのサイズは、格納するデータの増加または減少に追従して、動的に変更されることができない。従って、格納するデータの量が利用可能なサイズを超えて増加した場合、メモリマップドファイルは、現実に更新不可能である。従って、対応するキャッシュファイルの内容は期限切れとなってしまう。このとき手動の作業で、問題を修正することが要求される。メモリマップドファイルのサイズは、複製を再開する前に増加されなければならない。逆に、メモリマップファイルが、オーバーサイズ(over-size)である場合、多くのメモリリソースが浪費される。また、格納するデータの量が減少すると、現在のメカニズムは、メモリマップドファイルのサイズを減少させるという、その利点を得ることができない。
第2の問題は、複製中に、何らかの理由で処理が正常に完了しなかった場合に発生する。アクティブおよび非アクティブデータブロックは、同一のデータ領域を共有しているため、データ領域の非アクティブ領域への書き込みはまた、メモリマップドファイルのアクティブ部分を破損させる可能性もある。複製処理がデータブロックの完全なリストの書き込みに失敗した場合、対応するリンクリストが確かに破損する。アクティブ部分のアドレッシングするブロックが、アクティブ部と非アクティブ部との間のデータ領域分割を破壊するような、予測不可能な結果を生む可能性もある。
上記2つの問題は、発生すると避けられないサービスの停止のきっかけとなるため、クライアントアプリケーションにとって致命的な影響がある。影響を受けたクライアントに通知可能に、かつデータ破損がさらに伝搬するのを防ぐため、複製処理の標準プラクティスは、データを書き込む前にメモリマップドファイルをロックすることに帰着する。複製が正常に終了しない限り、ロックは複製の最後で解除される。ロックメカニズムは、データの破損がさらに伝搬するのを防ぎ、かつ破損ファイルを表示する可能性をクライアントに提供するが、それは自動的な方法で復旧する助けにはならはない。
現在の複製処理は、上記で議論したように、
・メモリマップドファイルのサイズは、手動で設定される必要があり、アプリケーションにとってオーバーサイズである場合、多くのメモリリソースの浪費につながる、スタティックなパラメータであり、
・共有されたデータ領域内のファイルの間のフリップフロップメカニズムは、リンクリストの破損が発生してするのを防ぐことはできず、
・ロックメカニズムは、自動化された方法で復元されない
という復元力の欠如に苦慮しており、手動操作を必要とする。
従って、本発明の一般的な目的は、マスタデータベースからミドルウェア処理ノードの共有メモリ内への、キャッシュファイルの現在の複製メカニズムの上記の欠点および制限の少なくともいくつかの解決をもたらすことである。本発明の特定の目的は、キャッシュファイルの複製が、複製操作が時折失敗または期待通り完了しなかったとしても、既存のキャッシュファイルにとって無条件で破損のない処理となることを達成することである。
本発明の他の目的は、データのバージョンが簡単な方法で管理可能な新しいキャッシュの構造を提供することである。
本発明のさらなる目的、特徴および利点は、添付の図面を参照し、以下の図面を検討することで、当業者に明らかとなるであろう。任意の追加の利点は、本明細書に組み込まれることが意図されている。
データセットの1つのバージョンをそれぞれ格納する複数のキャッシュファイルを有するデータ領域と、
少なくとも1つのリリース領域を備える管理領域であって、リリース領域は、バージョンセクションと同じ数のオフセットである、1つのシングルキャッシュファイルの少なくとも1つのキーアドレッシングデータをそれぞれ格納する複数のバージョンセクションを有する、少なくとも1つのバージョン領域を備え、それぞれのオフセットが1つのバージョンセクションを指し示す管理領域とを備えるキャッシュ構造に関する。
このように、中間構造は、データ領域とは分離して形成されている。
本発明の一態様において、例示的な実施形態は、管理領域がデータ領域と分離したファイルであることを提供し、それにより、データ部分に対する管理部分のより良い保護が提供される。
いくつかの実施形態の別の態様として、3つのオフセットと、3つのバージョンセクションが提供され、従来型のフリップフロップメカニズムと異なる、指し示す(pointing)ステップを有効にする。3つのオフセットの使用は、バージョン間のシフトをより安全にし、更新ステージの間に破損が発生した場合であっても、アプリケーティブプロセスによるデータの可用性を維持する。さらに、3つのオフセットの1つが、たとえ一時的であっても、置換されたバージョンセクションへのアクセスを維持するのに使用されてもよく、その結果、1つ前の、現在の(current)バージョンセクションで動作を開始したアプリケーティブプロセスは、新しいバージョンセクションが導入されたとしても操作を継続可能であり、効果的である(すなわち、現在のバージョンセクションとしてアクセス可能である)。新バージョンへのシフトは、そのバージョンセクションのメモリをリセットすることによって、常に開始される。バージョンセクションを介したキーロケーション値(key location value)へのアクセスは不可分(atomic)(マップキーを発見するように)ではないので、基本的なフリップフロップメカニズムを使用した、2つの高速な成功する連続のバージョンのシフトは、キー読み出しで衝突(conflict)するであろう。3つのオフセットの使用によって提供される一時的なアクセスは、これに対処する。
本発明はまた、更新ステージ中のキャッシュメモリ内に格納されたデータへのアクセスを制御するための方法に関し、
本発明のキャッシュメモリ構造を使用するステップと、
1つの別個のオフセットでそれぞれのバージョンセクションを指し示すステップと、
1つのオフセットを、現在のバージョンセクションとして定義される1つのバージョンセクションを指し示す、現在のオフセットとして定義し、かつ現在のデータとして定義されるデータセットのバージョンをアドレッシングするステップを備える。
本発明は、好ましい実施形態を図示する目的のため、図面を参照して詳細に説明される。
図1は、本発明が実施される、従来技術の3層コンピューティングアーキテクチャを示す図である。 図2は、先行技術のキャッシュファイル構造を示す図である。 図3は、3層コンピューティングアーキテクチャの中間層においてバージョン管理ファイルの補助によって、本発明がどのように実施されるかを示す図である。 図4は、バージョン管理ファイルの基本構造を示す図である。 図5Aは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Bは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Cは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Dは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Eは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Fは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Gは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Hは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図5Iは、共有メモリにおける新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。 図6は、更新処理を最適化し、同時(concurrent)書き込みを扱うためのバージョン管理ファイルの基本構造をもたらす第1の拡張を示す図である。 図7Aは、バージョン管理ファイルの拡張された構造における新しいキーの追加について説明する図である。 図7Bは、バージョン管理ファイルの拡張された構造における新しいキーの追加について説明する図である。 図7Cは、バージョン管理ファイルの拡張された構造における新しいキーの追加について説明する図である。 図7Dは、バージョン管理ファイルの拡張された構造における新しいキーの追加について説明する図である。 図8は、必要に応じてリリース領域のメモリサイズを増やすのを許可するバージョン構造をもたらす第2の拡張について議論する図である。
以下の説明で使用される、いくつかの用語の定義が以下に与えられる。
「データ領域」は、ここでは、データが格納される、キャッシュメモリの部分を意味し、処理によってアクセスされたときの読み出しまたは書き込み操作の対象となっている。好ましい一実施形態では、書き込み操作は管理者のタスクであるのに対し、読み出し操作はアプリケーティブプロセスによってなされる。データが管理者のコンピュータ装置によって更新/置換/作成されると、データが読み出し目的のためのアプリケーティブプロセスに利用可能にされる。好ましい一実施形態において、データは、それぞれがオブジェクトの定義を表す、データセットに編成される。一例として、航空会社のコンピュータシステムのルールまたは運賃定義またはフライトスケジュールデータのリストは、オブジェクトとして用いることができる。オブジェクトはまた、1つのデータフィールドの内容に帰着することが可能である。データセットによって定義されるオブジェクトは、典型的にはデータセットが更新または置換する必要があることを意味し、管理者によってマスタデータベースにおいてなされた変更を通常反映する、修正の対象となる。これはまた、本発明が複数のデータセットのバージョンが同じオブジェクトに対して共存するために、複数のバージョンのオブジェクトを扱わなければならないことに関係する。オブジェクトは、パッケージによってグループ化することが可能である。一例として、フライトスケジュールを扱う異なるルールのリストは、フライトスケジュールパッケージにグループ化することが可能である。しかし、それでもパッケージは単一のオブジェクト、すなわちデータセットとして表示することが可能である。スナップショットという用語もまた、1つのオブジェクト、またはオブジェクトのセットの所与のバージョンを定義するデータセットの1つのバージョンに対応するものとして説明において使用される。1つのキャッシュファイルは、有利に、しかし非限定的にデータセットのそれぞれのスナップショットまたはバージョン専用である。典型的に、データ領域のデータは、少なくとも1つのアプリケーティブプロセス(ここでは、少なくとも1つのコンピュータ装置の少なくとも1つのプロセッサによって実行される、何らかのコンピュータ処理を意味する)によるアクセスのためであり、これらのデータは、その補助となる。アプリケーティブプロセスは、旅行業界のグローバル配信システムで使用される運賃検索エンジンのような、検索エンジンの読み出し処理を備えてもよい。従来のハードウェア手段は、本発明のキャッシュをサポートするために実施することが可能である。データアクセスモードは、共有メモリの現在の技術と、データの物理ストレージおよびこれらのデータのアプリケーティブプロセスビューとの間の対応を可能にする、メモリマップドファイルのコンセプトとに依存可能である。
ここで、「管理領域」は、上述のデータ領域のデータへの処理によるアクセスを制御するために使用されるキャッシュの部分を意味する。管理領域は、好ましくは、データ領域から分離した、1つまたは複数のキャッシュ専用ファイル内に含まれる。上記ファイルは以降、管理ファイル(control file)またはバージョン管理ファイル(version control file)と呼ばれる。管理領域は、エントリポイント領域が実装されている実施形態において、他の制御手段を作用共存してもよいことを後述する。また、複数の管理領域は、有利にはそれぞれ別のファイルで使用可能である。
(管理領域、データ領域、またはエントリポイント領域として使用される)「領域」は、広義にキャッシュメモリの一部として参照され、上記メモリの連続的なセグメントではなくてもよい。
「キー」は、格納されたデータのアドレスを特定する、小さなサイズのデータを表現する。キーの値は、対応する格納されたデータの位置を提供する。キーは、必ずしも同じサイズのデータセットをアドレッシングするわけではなく、キーはより大きなオブジェクトを説明する、データセットにおける特定のフィールドにアクセスするために使用可能である。異なるキーは、オブジェクトのデータの1つデータセットの領域、または複数の領域にアクセスするために使用可能である。他のキーは、オブジェクトの前のスナップショットにアクセスするために使用可能である。キーのセットは、同一のオブジェクトの異なるスナップショットにアクセスするために使用可能である。データ領域におけるそれぞれのデータセットは、キーによって一意に識別される。複数のキーは、キーは、好ましくは小さく維持されているが、任意のサイズを有することが可能である。唯一の制約は、それぞれのデータセットは固有の固定のキーに関連付けられなければならないことである。
バージョン管理領域の目的は、それぞれのキーを、例えばメモリアドレスにリンクすることにより、データセットへアクセスする方法に具現化することである。従って、キーは、本発明の理解のためにアドレスまたはアクセスリンクに相当するとみなされるかもしれない。
図面を参照して、本発明の詳細な好ましい実施形態を説明する前に、いくつかの本発明の付随する特徴が以下で導入され、これらは、代替的にまたは累積的に、使用される。
・バージョンセクションは、キーの追加または削除を許可する、(マップのような)構造を含む。
・データのスナップショットは、ドメインによってグループ化可能である。同じ制御構造がドメインレベルで適用される。
・管理領域は、メインバージョンセクションとともに、メインリリース領域を備え、上記バージョンセクションのそれぞれは、それぞれのドメインに対して、ドメインリリース領域と言われる、専用のリリース領域へのアクセスリンクを含む、ドメイン定義データを含む。
・メインリリース領域は、メインバージョンセクションと同じ数のメインオフセットを備え、それぞれのドメインリリース領域はドメインバージョンセクションと同じ数のドメインオフセットを備える。
・上記は、共有メモリ内に格納される。
・管理領域もまた、リリース領域のコンセプトを使用して管理可能である。エントリポイント管理領域は、以下を備える。
- 複数の管理領域
- それぞれが1つの分離した管理領域へのアクセスリンクを定義する、エントリバージョンセクションを備える、エントリポイントリリース領域
- それぞれのエントリポイント管理領域は、エントリバージョンセクションと同じ数のエントリオフセットを備え、それぞれのエントリオフセットは、1つのエントリバージョンセクションを指し示す。
好ましい実施形態に従えば、本方法は、以下のステップの少なくとも1つを含んでもよい。
・現在のバージョンセクションと異なる、新しい(new)バージョンセクションとして定義される1つのバージョンセクションを指し示す、1つのオフセットを新しいオフセットとして定義するステップ
・新しいバージョンセクションをクリアするステップ
・データ領域のキャッシュファイル内の少なくとも1つのデータセットの新しいバージョンを格納するステップ
・新しいバージョンセクション内の新しいバージョン情報を格納するステップ
・現在のオフセットが新しいバージョンセクションを指し示すようにするステップ
・3つのオフセットと、3つのバージョンセクションとを使用して、リリース領域を提供するステップ
・1つの別個のオフセットで、それぞれのバージョンセクションを指し示すステップ
・現在のバージョンセクションとして定義される、1つのバージョンセクションを指し示す、第1のオフセットを現在のオフセットとして定義するとともに、現在のデータとして定義されるデータセットのバージョンをアドレッシングするステップ
・現在のバージョンセクションと異なる、新しいバージョンセクションとして定義される、1つのバージョンセクションを指し示す、第2のオフセットを、新しいオフセットとして定義するステップ
・古いバージョンセクションとして定義される、1つのバージョンセクションを指し示す、第3のオフセットを、古いオフセットとして定義するステップ
・新しいバージョンセクションをクリアするステップ
・古いオフセットが現在のバージョンセクションを指し示すようにするステップ
・現在のオフセットが新しいバージョンセクションを指し示すようにするステップ
・新しいオフセットが古いバージョンセクションを指し示すようにするステップ
・古いオフセットが現在のバージョンセクションを指し示すようにするステップの後に、アプリケーティブプロセスによって、古いオフセットによって指し示される、バージョンセクションによってアドレッシングされるキャッシュファイルのデータへのアクセスを有効化するステップ
・アクセスを有限時間で有効化するステップ
・キャッシュメモリ構造を使用するステップ
・現在のエントリセクションとして定義される、1つのエントリセクションを指し示す、1つのエントリオフセットを現在のオフセットとして定義するステップ
・現在のエントリオフセットによってアドレッシングされる管理領域へのアプリケーティブプロセスによって、アクセスを有効化するステップ
本発明はまた、本発明はまた、本発明の方法を実行するように構成された命令を含む、コンピュータプログラムを記録したコンピュータプログラム製品に向けられている。プログラムは、任意のコンピュータ読み取り可能なメモリのような、任意の一時的媒体に記録可能である。
図3は、背景技術の欄で説明された3層アーキテクチャ環境において、本発明がバージョン管理ファイルを使用してどのように実施されるかを示す。
その目的を達成するために、本発明は、それぞれの共有メモリ230内で、中間キャッシュファイル220を使用する。このファイルは、「管理ファイル」として参照され、アプリケーティブプロセス240から、共有メモリ内に格納された様々なレベルのキャッシュファイル250への全てのアクセスを管理するのに使用される。図示するように、全てのアプリケーティブプロセス240は、キャッシュファイル250にアクセスするために、バージョン管理ファイル220を介し、破損のない複製メカニズムを実施する。
バージョン管理ファイル220を用いて実施される管理領域は、キーがバージョンづけられた(versioned)データであり、データの所与のバージョンの位置の値であるマップ構造として表示されることが可能である。キャッシュバージョン管理は、以下の方法でアクセス可能である。
読み出しから書き込みへの割合が高いという、本発明の好ましい状況において、書き込みアクセスは、いかなる読み出しアクセスに対しても影響を与えてはならない。言い換えれば、書き込み操作が実行されるいかなる場合でも、全てのキーの値は、読み出しのためにアクセス可能でなければならない。以下の図で説明するように、本発明は、以下の問題を管理して解決する。
・キャッシュメモリへのキーおよび値の書き込みは、不可分な操作であることができない。そうであるにもかかわらず、読み出し操作は、書き込み操作中に保留されない。代わりにキャッシュファイルへの書き込み操作は、割り込み可能である。不完全な書き込み操作は、読み出しの完了で再開することが可能となる。
・いったんキャッシュのバージョン管理が初期化されると、有限量のキーを含む。この有限量に達したとき、新しいキーを追加する必要がある場合はいつでも、本発明は、共有メモリ内の新しい領域を割り当てるようにする。
・同時書き込みは、書き込み操作に排他的なアクセス権を付与することにより処理される。
図4は、管理ファイル220に対応する管理領域の基本的な構造を示す図である。
いくつかの書き込み操作のグループの最小単位(atomicity)は、書き込みに対する読み出し専用(read-only)操作の優先順位を維持しながら、すなわち、読み出しサービスを中断することなく、バージョン管理を以下で説明するように体系づけ、共有メモリにおいて獲得される。
・データ領域410という名称の共有メモリのデータのパーティションが、任意の時点で受信されたデータの全てのスナップショットを格納するために充てられる。
・それぞれのデータのスナップショットは、共有メモリのそれ自身の専用領域420内に格納され、そのような専用領域420は、好ましくは図3に示す1つのキャッシュファイル250である。
・リリース領域430という名称の共有メモリの領域は、受信したデータのスナップショットのバージョンを管理する、すなわち、データのスナップショットが現在のものであるかを示すことを目的とする。
・新しいデータのスナップショットの追加は、不可分な方法で実行される。本発明は、共有メモリ内のオフセット、すなわち整数値の更新は不可分な操作であるものと仮定する。
共有メモリのデータ領域420は、予め決められたサイズでなければならないわけではない。サイズは、共有メモリを使用してソフトウェアアプリケーションの要求を満たすために構築時間で計算される。一方、共有メモリのリリース領域は、以下のような4つのサブ領域に分割され、固定のサイズを有する。
・領域440はバージョン領域450内に含まれる3つのバージョンセクションをアドレッシングするためのオフセット442を含む。3つのバージョンセクションは、以下からなる。
・それぞれのデータセットの現在のスナップショットのアドレス(言い換えれば、キー)を含む、現在のバージョンセクション454
・データセットの新しい、または最新のデータのスナップショットのアドレスを含む、新しいバージョンセクション456
・以前に現在のものであると識別されたそれぞれのデータのスナップショットのアドレスを含む、古いバージョンセクション452
それぞれのバージョンセクションは固定のサイズを有し、有限の最大数のスナップショットのみを扱うことができる。これは、スナップショットをアドレッシングする有限の数のキーを扱うことが可能であることを意味する。
図5Aから図5Iは、共有メモリ内の新しいデータのスナップショットを不可分な方法で追加するための方法のステップを示す図である。
図5Aに示すように、領域440におけるオフセットの正当性をチェックし、必要に応じて修正を適用した後、以下に説明する予備的なステップである、第1の後続するステップまたはステップ2は、新しいバージョンセクション456をクリアする、すなわち全てのビットを0に設定する(457)ステップからなる。次に、新しいバージョンセクション456が初期化される(458)、すなわち、<キー、ロケーション値>の組を含む内部構造が次のステップ3で生成される。この後半のステップは図5Bで示される。
図5cで示される次のステップ4は、データ領域410の新しい領域内に、新しいデータのスナップショットを格納するステップからなる。これは、完全に新しいデータのスナップショットを格納することにより、または、最初に現在のデータのスナップショットを取り出して、それに更新を適用することによって行われる。しかし、両方の場合において、スナップショットは新しいデータ領域420に有利に格納される。
次に、ステップ5で、現在のバージョンセクション454の内容が、新しいバージョンセクション456にコピーされ、キーリンク455は、現在のバージョンセクション454のスナップショットと同じデータのスナップショットをアドレッシングする。これは、図5Dに示される。図5Eに示す次のステップ6で、新しいバージョンセクション456は、新しいデータのスナップショットを含むデータ領域420の代わりに、(リンク459を)アドレッシングするように変更される。
その後、ステップ7で、データ領域440のオフセット442は、以下のように変更される。
・ステップ71で、古いオフセットが現在のセクション454をアドレッシングする
・ステップ72で、現在のオフセットが新しいセクション456をアドレッシングする
・ステップ73で、新しいオフセットが古いセクション452をアドレッシングする
上述の予備的なステップ、またはステップ1は、領域440におけるオフセット442の正当性がチェックされる間、領域440内の書き込み操作中に発生する可能性がある、故障のケースを取り扱うことを目的とする。
図5Gに示すように、2つのオフセットは、故障の発生後、同じバージョンセクションをアドレッシングする(参照符号451を参照)。この場合、領域440の新しい、または古いオフセットは、この手当をするために単に修正されることが可能である。修正は、現在のセクションもまたターゲットにする、新しいまたは古いオフセットのうちの1つに単に適用される。
更新処理がステップ2から6の実行の間に失敗した場合、新しいデータのスナップショットの追加は、変更されたバージョンセクションが新しいセクション456だけであるためにキャンセルされる。このセクションは読み出し操作によってアクセスされない。読み出し操作は、現在のバージョンセクションに使用されるだけである。従って、上述のように、共有メモリを更新しようとする試みの失敗は、次の書き込み時に、新しいバージョンセクションが消去され、最初から(scratch)初期化されるため、副作用がない。新しいデータ領域420もまた、リリース領域430によってまだ参照されていないため、再利用される。
ステップ71および72の実行中に処理が失敗した場合、読み出し操作が未だ現在のバージョンセクションをターゲットとしているため、スナップショットの追加もまたキャンセルされる。上記の失敗は、上述のように、新しいデータのスナップショットを追加するための次の試み時に、新しいバージョンセクションが消去され、最初から初期化されるため、副作用を有さない。現在のバージョンセクションをアドレッシングする、古いオフセットを有することは問題とはならない。正当性および正確なオフセッを確認する予備的なステップは、これを考慮している。図5Gは、データ領域410内の新しいデータのスナップショット420を追加しようとする試みの間に、失敗がデータ領域440を破損後、リリース領域430が残される状態の例を示す図である。オフセット442が復元された後の状況は、図5Eに示されるものと等価である。
ステップ72および73の間に処理が失敗した場合、スナップショットの追加はキャンセルされず、正常に完了したものとみなされる。確かに、読み出し操作は、ちょうど新しく作られたバージョンセクション456である、現在のバージョンセクションをターゲットとすることが可能である。しかし、更新操作は、正常に完了していないため、領域440の新しいオフセットは、現在のバージョンセクション456をアドレッシングする(453を参照のこと)。次の書き込み操作のステップ1が、新しく作られたバージョンセクションを消去するのを防ぐため、このセクションもまた現在のセクションであることに基づくと、オフセットの正当性がチェックされなければならず、修正がステップ1で適用される。オフセットの非正当性は、新しいオフセットと現在のオフセットとが同じバージョンセクション456をアドレッシングする(453)ため、容易に検出可能である。これは失敗がステップ72のちょうど後で発生したことを示している。失敗から完全に復元するために、新しいオフセットは、前の古いバージョンセクション、すなわち、どのオフセットによってもアドレッシングされていない残りのバージョンセクション、この例では452をアドレッシングするように設定される。
図5Hは、新しいスナップショット422を追加する処理が、ステップ72の後に失敗する例を示す。ステップ1が実行されたオフセットの復元の後、リリース領域の状態は、図5Iに示される。新しい管理セクションは、正しいバージョンセクション、すなわちこの例では452をアドレッシングする(455を参照)ように修正される。ステップ73の後に処理が失敗した場合、不可分なスナップショットの追加が既に完了しているため、これは不利益な結果にならないことに注目すべきである。
図4および図5で上述された、バージョン管理ファイルの基本的な構造とその操作のモードは、以下の問題に対処するためのバリエーションの対象となることが可能である。
・グローバルなロックメカニズムが使用されているため、同時書き込みはサポートされていない
・リリース領域のサイズは固定である
以下の図は、上記の残る問題に対処するための基本的なバージョン管理ファイルにもたらされる拡張について図示し、議論する。
図6は更新処理を最適化し、同時書き込みを扱うための第1の拡張を示す。
本発明は、新しいキー挿入の数が、特定のキーの値の更新の数と比較して、通常小さい環境で操作する。この状況において、図4および図5で上述された、バージョン管理の基本的な構造の操作は、1つの制限に苦慮する。ステップ4で上述したように、毎回キーの値は、リリース領域430のセクション452、454、および456で変更されなければならず、全体のバージョンマップ(すなわち、全てのキーのデータ)は、少なくとも1回最初にコピーされなければならない。この欠点を克服するため、本発明は、挿入されたキーの値を特別に扱う、メインリリース領域436および、複数のリリース領域432、434を生成するのに上述のキャッシュ管理構造を拡張し、メインリリース領域436は、ドメインリリース領域という名称の、これらのリリース領域にアクセスするための、ドメインキーの定義を保持する。
本実施形態に従い、データ領域のデータ(または少なくともそれらの一部)は、様々なドメインに分散される。ドメインは、通常、同一のサイズでなく、それぞれがデータセットのグループに対応し、その性質は、いくつかの共通点を共有する。例として、ドメインは、1つの航空会社のためのルールに割り当てられることが可能であり、他のドメインは、他の航空会社のためのルールに割り当てられることが可能である。
図6は、リリース領域の基本的な構造がどのように拡張されるかの例を示す。先に議論したリリース領域430は、ここで、本例において、それぞれが自身のバージョンである、2つのドメインキー、すなわち1A−POSおよびAF−MKTを保持するメインリリース領域436と一緒に使用される、リリース領域432、434によって置き換えられる。この拡張された構造において、メインリリース領域436は、この例においてそれぞれ434、432である、自身のリリース領域に関連付けられた、格納されたキーを参照するために単に使用される。値リリース領域のへのリンクは、610を参照して示される。この拡張された構造に基づいて、1つのドメインキーを追加(これは特に、新しいオブジェクトがキャッシュ内に追加されるときに発生する可能性がある)し、キーの値を変更する処理は、以下に説明される。
図7A〜7Dは、図6の拡張された構造における、新しいドメインキーの追加を説明する。メインリリース領域436およびリリース領域432において、どのように新しいドメインキー定義データおよび値がそれぞれ追加されるかが示される。
管理ファイル220を生成するとき、メインリリース領域436および432、434のようなある一定数の値のリリース領域が事前に作成される。メモリを管理する最も効果的な方法は、リリース領域の数がメインリリース領域436の最大の容量とマッチするように割り当てることである。
図7Aは、メインリリース領域436が、1つのドメインキー、すなわち1A−POSだけを保持する処理の最初のステップ、すなわちステップ10を示す図である。この拡張された構造において、メインリリース領域436は、それぞれがこの依存するドメインリリース領域の古い、現在の、および新しいドメインバージョン領域である、1A−POSバージョン2、3、および4という名称のオブジェクト1A−POSの様々なスナップショットのバージョンのロケーション/キーを保持する、ドメインリリース領域「1A−POSリリース領域」434をアドレッシングする、メイン管理セクションA、B、Cを備える。特定のリンク612は、メインリリース領域、および依存するリリース領域434との間で作成される。ドメインリリース領域434は、本発明の第1の実施形態を参照して上述されたように、オフセットを備える。これはまた、メインリリース領域436の場合もそうである。図6および図7は、メインリリース領域436もまた、ここではメインオフセットと呼ばれるオフセットを含むことを示している。例において、メインリリース領域436およびリリース領域432、434の構造は同様であるが、オフセットの数と、メインオフセットは異なっていてもよい。しかし、本例では、両方の場合において、3つのオフセットを使用する。
以下のステップ11が図7Bに示され、ここで新しいドメインキー、すなわちAF−MKTがメインリリース領域内に追加され、対応する値リリース領域432が属性づけられる(attributed)。この目的を達成するため、この新しいドメインキーの定義データは、依存したドメインリリース領域432をアドレッシングする、特定のリンク614を提供するために、メインリリース領域436内に定義される。
次に、図7Cに示されるステップ12で、図5で説明された処理が適用される。オフセットは変更され、依存するドメインリリース領域432内の新しい挿入されたドメインキーAF−MKT V1が現在のキー(620)となる。
同様に、メインリリース領域の436のメインオフセットは、630において現在のキーのパスとなるように、キーメインバージョンセクションCを指定するように変更される。これはステップ13で行われ、結果は図7Dに示される。このステップの完了で、書き込み操作、すなわち新しいドメインキーの追加は、成功して完了する。
オブジェクトの更新は、図5において説明されたように行われる。次にドメインリリース領域432、434のレベルのみで、これらの値の操作を要求する、特定の値だけが更新される必要がある。その結果、この操作の間メインリリース領域436のセクション全体のコピーが回避される。
バージョン管理の拡張された構造において、更新された領域が共有メモリ内で完全に隔離されているため、同時書き込みが可能になる。また、以下の操作を同時に実行することが可能となる。
・メインリリース領域436内に、1つのドメインキーを追加すること
・異なるドメインリリース領域の値/オブジェクトを更新すること
従って、同時書き込みを特徴とする実施において、1つのミューテックス(mutex)、すなわち、処理によって共通の資源の同時使用を回避するために考案されたコードの部分は、値による書き込みアクセスおよびメインリリース領域のために1つ、権限を生成する。上述した処理は、書き込み操作の最初で関連するミューテックスを取得することで再入可能(re-entrant)となる。
図8は、メモリが固定サイズであることの上述した問題を解決するために、リリース領域のメモリサイズが増加することを許可するバージョン構造にもたらされる、第2の拡張を議論する。
割り当てる空間が十分であるときに、新しいデータの追加が簡単である場合、新しいデータセットおよびその管理手段が割り当てられなければならないときは、事案がより複雑になる。本発明は、間接的なレベルを追加することによって、この問題を回避するように管理する。この目的を達成するため、キャッシュのメモリセグメントであることが可能な、エントリポイント領域710が使用される。エントリポイント領域710の役割は、それぞれ有利に管理データを保持する管理ファイル220からなる、いくつかの管理領域を参照することである。エントリポイント領域710は、それ自身がエントリセクション715、716、および717を備えるエントリポイントリリース領域を含む、好ましくは別のキャッシュファイルである。エントリセクションは、図によって上述した1つのバージョン管理領域構造、すなわち本例における720および730を実際に保持する、1つの管理ファイルの位置および最大容量712をそれぞれ含む。エントリポイント領域710は、リリース領域と同じグローバル構造を好ましくは有し、ここではエントリオフセットと呼ばれるオフセットもまた有する。
キーを追加するとき、書き込み処理は以下のステップを実行する。
1.現在の管理領域に十分なメモリ空間が残っているかどうかを確認する。十分な空間が残っている場合、書き込みは上述のように発生する。しかし、残りの空間が十分でない場合、
2.新しい管理領域が増加したサイズで作成される。例えば、図8において、730のようなファイルが作成される。
3.現在の管理領域からのデータが新しい管理領域へコピーされる。付随的に、古い値を回収する必要がある場合、キャッシュの値の内容全体がコピーされ、そうでない場合、現在の値だけがコピーされる。
4.キーが新しい管理領域730に追加される。
5.現在のエントリオフセット719が作成された管理領域730を指し示すエントリセクション(717)へ切り替えられる。
6.データの非推奨(deprecated)バージョンは、資源の節約のために消去される。
エントリポイント領域710は、図4および図5で説明された構造を使用し、読み出しアクセスを妨げることなく現在の管理領域が切り替えられるのを許可する。
エントリポイントが固定サイズの構造を含む必要だけがあるため、新しい割り当てを要求せず、固定のエントリポイントとして動作することが可能である。
新しい管理領域の容量を計算するためのポリシーは、自由に適用されてよく、この処理が適用される必要がある回数と、全体のメモリ空間のとの間の折衷案の結果となるべきである。
読み出しアクセスは、現在の管理領域を回収するために、エントリポイント領域を最初に読み出す。後者は、メインリリース領域で、現在のメインバージョンセクションを特定する、現在のメインオフセットに達する。現在のメインバージョンセクションは、正しいドメインリリース領域に到達するために、キーリンクを提供する。このレベルで、ドメインリリース領域の現在のオフセットは、アクセスされるデータ領域420をアドレッシングする、ドメインバージョンセクションを指し示す。
本発明の例示した実施形態は、添付の図面を参照して詳細に説明されてきたが、本発明は、これらの正確な実施形態に限定されて理解されるべきものではなく、かつ変更および改良が本発明の範囲および精神から逸脱することなく、当業者によって行われてもよいことが理解されるであろう。
10 メモリマップドファイル
20 データ領域
21 リンクリスト
22 アクティブデータブロック
23 リンクリスト
24 非アクティブデータブロック
30 管理領域
31 アクティブポインタ
32 非アクティブポインタ
100 データ層
110 マスタサーバ
120 マスタデータベースシステム
200 アプリケーション層
210 スレーブノード
220 バージョン管理ファイル
230 共有メモリ
240 アプリケーティブプロセス
250 キャッシュファイル
300 クライアント層
410 データ領域
430、432、434 リリース領域
436 メインリリース領域
440 領域
442 オフセット
450 バージョン領域
452、454、456 バージョンセクション
710 エントリポイント領域

Claims (17)

  1. それぞれのキャッシュファイル(250)が同一のデータセットの1つのバージョンを格納する、複数のキャッシュファイル(250)を有するデータ領域(410)と、
    どのバージョンのデータセットが現在のデータとして定義されるかを示すように構成されるとともに、少なくとも1つのリリース領域(430)を備える管理領域とを備え、
    前記リリース領域(430、432、434)は、
    1つのシングルキャッシュファイル(250)のうちの少なくとも1つのキーアドレッシングデータをそれぞれが格納する、複数のバージョンセクション(452、454、456)を有する少なくとも1つのバージョン領域(450)と、
    それぞれのオフセット(442)が1つのバージョンセクション(452、454、456)を指し示す、バージョンセクション(452、454、456)と同じ数のオフセット(442)と
    を備える、キャッシュメモリ構造。
  2. 前記管理領域は、データ領域(410)と分離した少なくとも1つのファイル(220)内にある、請求項1に記載のキャッシュメモリ構造。
  3. 3つのオフセット(422)と、3つのバージョンセクション(452、454、456)を備える、請求項1または2に記載のキャッシュメモリ構造。
  4. それぞれのバージョンセクション(452、454、456)が、前記キーに割り当てられたデータセットの1つのバージョンを格納する1つのキャッシュファイル(250)にアクセスするために、1つのシングルキーに関連付けられた値を格納し、
    前記データセットは、複数のドメイン内に分散され、
    前記管理領域は、メインバージョンセクション(620、630、640)を有するメインリリース領域(436)を備え、前記メインバージョンセクション(620、630、640)のそれぞれは、それぞれのドメインに対して前記ドメインに関連付けられたリリース領域(432、434)へのアクセスリンク(610)を備える、請求項1から3のいずれか一項に記載のキャッシュメモリ構造。
  5. 前記管理領域は、メインバージョンセクション(620、630、640)と同じ数のメインオフセット(605)を備え、それぞれのメインオフセット(605)は、メインリリース領域(436)の1つのメインバージョンセクション(620、630、640)を指し示す、請求項1から4のいずれか一項に記載のキャッシュメモリ構造。
  6. 前記管理領域は、3つのメインオフセット(605)と、3つのメインバージョンセクション(620、630、640)と、それぞれのドメインリリース領域(432、434)に対して、3つのドメインオフセットと3つのドメインバージョンセクションと、を備える、請求項1から5のいずれか一項に記載のキャッシュメモリ構造。
  7. 請求項1から6のいずれか一項に記載のキャッシュメモリ構造は、共有メモリ内(230)に存在する、キャッシュメモリ構造。
  8. 複数の管理領域(720、730)と、
    1つの分離した管理領域(720、730)へのアクセスリンクをそれぞれ定義するエントリセクション(715、716、717)を備えるエントリポイント領域(710)とを備える、請求項1から7のいずれか一項に記載のキャッシュメモリ構造。
  9. 前記管理領域は、それぞれのエントリオフセット(719)が1つのエントリセクション(715、716、717)を指し示す、エントリセクション(715、716、717)と同じ数のエントリオフセット(719)を備える、請求項1から8のいずれか一項に記載のキャッシュメモリ構造。
  10. 請求項1から9のいずれか一項に記載のキャッシュメモリ構造を使用してステージを更新する間、キャッシュメモリに格納されたデータへのアクセスを制御する方法。
  11. 1つの別個のオフセット(442)でそれぞれのバージョンセクション(452、454、456)を指し示すステップと、
    現在のバージョンセクションとして定義される1つのバージョンセクション(454)を指し示す、1つのオフセット(442)を現在のオフセットとして定義するとともに、現在のデータとして定義されるデータセットの少なくとも1つのバージョンでアドレッシングするステップと、
    前記現在のオフセットによって指し示される前記バージョンセクションによってアドレッシングされるキャッシュファイル(250)のデータへのアプリケーティブプロセスによってアクセスを有効化するステップと
    を備える、請求項10に記載の方法。
  12. 前記現在のバージョンセクションと異なる、新しいバージョンセクションとして定義される1つのバージョンセクション(456)を指し示す、1つのオフセット(442)を新しいオフセットとして定義するステップと、
    前記新しいバージョンセクションをクリアするステップと、
    前記データ領域のキャッシュファイル(250)内の少なくとも1つのデータセットの新しいバージョンを格納するステップと、
    前記新しいバージョンセクション内の新しいデータバージョン定義情報を格納するステップと、
    前記現在のオフセット(442)が前記新しいバージョンセクションを指し示すようにするステップと
    を備える、請求項10または11に記載の方法。
  13. 3つのオフセット(442)と、3つのバージョンセクションとを使用して、リリース領域を提供するステップと、
    1つの別個のオフセット(442)で、それぞれのバージョンセクション(452、454、456)を指し示すステップと、
    現在のバージョンセクションとして定義される、1つのバージョンセクション(454)を指し示す、第1のオフセット(442)を現在のオフセットとして定義するとともに、現在のデータとして定義される少なくとも1つのデータセットの少なくとも1つのバージョンでアドレッシングするステップと、
    前記現在のバージョンセクションと異なる、新しいバージョンセクションとして定義される、1つのバージョンセクション(456)を指し示す、第2のオフセットを新しいオフセットとして定義するステップと、
    古いバージョンセクションとして定義される、1つのバージョンセクション(452)を指し示す、第3のオフセットを、古いオフセットとして定義するステップと、
    前記新しいバージョンセクションをクリアするステップと、
    前記データ領域のキャッシュファイル(250)内の少なくとも1つのデータセットの新しいバージョンを格納するステップと、
    前記新しいバージョンセクション内の新しいデータバージョン定義情報を格納するステップと、
    前記古いオフセットが現在のバージョンセクションを指し示すようにするステップと、
    前記現在のオフセット(442)が前記新しいバージョンセクションを指し示すようにするステップと、
    前記新しいオフセット(442)が前記古いバージョンセクションを指し示すようにするステップと
    をさらに備える、請求項10から12のいずれか一項に記載の方法。
  14. 前記古いオフセットが前記現在のバージョンセクションを指し示すようにするステップの後に、アプリケーティブプロセスによって、前記古いオフセットによって指し示される、前記バージョンセクションによってアドレッシングされるキャッシュファイル(250)のデータへのアクセスを有効化するステップを備える、請求項13に記載の方法。
  15. 前記アクセスを有効化するステップは、有限時間である、請求項10から14のいずれか一項に記載の方法。
  16. 請求項9に従うキャッシュメモリ構造を使用するステップと、
    現在のエントリセクションとして定義される、1つのエントリセクション(715、716、717)を指し示す、1つのエントリオフセットを現在のオフセットとして定義するステップと、
    前記現在のオフセットによってアドレッシングされる前記管理領域へのアプリケーティブプロセスによって、アクセスを有効化するステップと
    を備える、請求項10から15のいずれか一項に記載の方法。
  17. コンピュータ読み取り可能なメモリ媒体に格納され、請求項10から16のいずれか一項に記載の方法を実行するための命令を備えるコンピュータプログラム製品。
JP2014504303A 2011-04-12 2012-04-11 キャッシュメモリ構造および方法 Active JP5976779B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP11305430A EP2511835A1 (en) 2011-04-12 2011-04-12 Cache memory structure and method
EP11305430.8 2011-04-12
US13/068,143 2011-05-03
US13/068,143 US8539157B2 (en) 2011-04-12 2011-05-03 Cache memory structure and method
PCT/EP2012/056594 WO2012140093A1 (en) 2011-04-12 2012-04-11 Cache memory structure and method

Publications (2)

Publication Number Publication Date
JP2014510985A true JP2014510985A (ja) 2014-05-01
JP5976779B2 JP5976779B2 (ja) 2016-08-24

Family

ID=44318446

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014504303A Active JP5976779B2 (ja) 2011-04-12 2012-04-11 キャッシュメモリ構造および方法

Country Status (12)

Country Link
US (1) US8539157B2 (ja)
EP (2) EP2511835A1 (ja)
JP (1) JP5976779B2 (ja)
KR (1) KR101623631B1 (ja)
CN (1) CN103562915B (ja)
AU (1) AU2012241870B2 (ja)
BR (1) BR112013026279A2 (ja)
CA (1) CA2832799C (ja)
ES (1) ES2824782T3 (ja)
SG (1) SG194482A1 (ja)
WO (1) WO2012140093A1 (ja)
ZA (1) ZA201307607B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019513269A (ja) * 2016-03-31 2019-05-23 ベリタス テクノロジーズ エルエルシー 異種ストレージシステム間の複製

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140136247A1 (en) * 2012-11-15 2014-05-15 Amadeus S.A.S. Use of group materialization rate to release inventory space
CN105426483B (zh) * 2015-11-19 2019-01-11 华为技术有限公司 一种基于分布式系统的文件读取方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03265951A (ja) * 1990-03-15 1991-11-27 Nec Corp 故障回復型計算機
US20040010663A1 (en) * 2002-07-12 2004-01-15 Prabhu Manohar K. Method for conducting checkpointing within a writeback cache

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US7296151B2 (en) * 2003-11-20 2007-11-13 International Business Machines Corporation Apparatus, system, and method for sharing a cached security profile in a database environment
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7353242B2 (en) 2004-07-09 2008-04-01 Hitachi, Ltd. File server for long term data archive
US7257689B1 (en) * 2004-10-15 2007-08-14 Veritas Operating Corporation System and method for loosely coupled temporal storage management
US7548918B2 (en) * 2004-12-16 2009-06-16 Oracle International Corporation Techniques for maintaining consistency for different requestors of files in a database management system
US9171161B2 (en) * 2006-11-09 2015-10-27 International Business Machines Corporation Trusted device having virtualized registers
US8176282B2 (en) * 2009-03-11 2012-05-08 Applied Micro Circuits Corporation Multi-domain management of a cache in a processor system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03265951A (ja) * 1990-03-15 1991-11-27 Nec Corp 故障回復型計算機
US20040010663A1 (en) * 2002-07-12 2004-01-15 Prabhu Manohar K. Method for conducting checkpointing within a writeback cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019513269A (ja) * 2016-03-31 2019-05-23 ベリタス テクノロジーズ エルエルシー 異種ストレージシステム間の複製

Also Published As

Publication number Publication date
CA2832799A1 (en) 2012-10-18
US8539157B2 (en) 2013-09-17
EP3467671A1 (en) 2019-04-10
EP2511835A1 (en) 2012-10-17
CA2832799C (en) 2017-07-04
KR101623631B1 (ko) 2016-05-23
AU2012241870A1 (en) 2013-05-09
KR20140031260A (ko) 2014-03-12
BR112013026279A2 (pt) 2019-09-24
ES2824782T3 (es) 2021-05-13
SG194482A1 (en) 2013-12-30
US20120265939A1 (en) 2012-10-18
AU2012241870B2 (en) 2015-03-26
JP5976779B2 (ja) 2016-08-24
CN103562915A (zh) 2014-02-05
CN103562915B (zh) 2017-05-24
WO2012140093A1 (en) 2012-10-18
EP3467671B1 (en) 2020-07-15
ZA201307607B (en) 2015-12-23

Similar Documents

Publication Publication Date Title
JP5259404B2 (ja) データベースフラグメントのクローン化および管理
US10599535B2 (en) Restoring distributed shared memory data consistency within a recovery process from a cluster node failure
US11132350B2 (en) Replicable differential store data structure
CN108021338B (zh) 用于实现两层提交协议的系统和方法
US8380660B2 (en) Database system, database update method, database, and database update program
JP5976779B2 (ja) キャッシュメモリ構造および方法
US11429311B1 (en) Method and system for managing requests in a distributed system
US10942912B1 (en) Chain logging using key-value data storage
US20200042534A1 (en) Moving replicated data in a cloud environment
US11200253B2 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
WO2022003911A1 (ja) ワークフロー整合性確保装置、ワークフロー整合性確保方法、および、ワークフロー整合性確保プログラム
US9607006B2 (en) Temporary distributed file persistence
US20220309050A1 (en) Method and system for managing cross data source data access requests
US20240036883A1 (en) Client update of data modification tracking structure
Horvat-Petrescu An optimal dynamic distribution model în a distributed database

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160601

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: 20160627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160720

R150 Certificate of patent or registration of utility model

Ref document number: 5976779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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