JP2004227569A - 永続フレームワーク用単一キャッシュによる事象駆動型トランザクション状態の管理 - Google Patents

永続フレームワーク用単一キャッシュによる事象駆動型トランザクション状態の管理 Download PDF

Info

Publication number
JP2004227569A
JP2004227569A JP2004004126A JP2004004126A JP2004227569A JP 2004227569 A JP2004227569 A JP 2004227569A JP 2004004126 A JP2004004126 A JP 2004004126A JP 2004004126 A JP2004004126 A JP 2004004126A JP 2004227569 A JP2004227569 A JP 2004227569A
Authority
JP
Japan
Prior art keywords
persistent
persistent object
event
event queue
cache
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.)
Withdrawn
Application number
JP2004004126A
Other languages
English (en)
Other versions
JP2004227569A5 (ja
Inventor
Jason Harris
ハリス ジェースン
Chia-Hsin Li
リー チャシン
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of JP2004227569A publication Critical patent/JP2004227569A/ja
Publication of JP2004227569A5 publication Critical patent/JP2004227569A5/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】永続フレームワーク用単一キャッシュによる事象駆動型トランザクション状態の管理。
【解決手段】マルチスレッド環境で永続フレームワークと関連付けられたトランザクションを管理するための方法を提供する。この方法は、各スレッドを一つのイベントキューと関連付けることから始まる。次に、各スレッドと関連付けられた第1のイベントキューに一つの事象が追加される。その事象は一つの永続オブジェクトと関連付けられる。次に、そのスレッド以外のスレッドからその永続オブジェクトに書き込みアクセスできないようにする。次に、その永続オブジェクトと関連付けられた第1のイベントキューに入っている事象が実行される。永続オブジェクトのトランザクション状態を管理可能なコンピュータ可読メディア及びシステムも提供する。
【選択図】 図6

Description

本発明は、一般的には、情報の記憶及び検索システムに関し、より具体的には、情報及び検索システムで処理されるデータを管理するための方法及びシステムに関する発明である。
電子コマース時代の到来とコンピュータネットワークの進展により、データ管理をこのようなネットワークと関連付けたデータベースにより処理する機会が増えてきている。例えば、リレーショナルデータベース、オブジェクトデータベース、階層型データベース、単層ファイルといった従来からあるデータベースを使用して、アプリケーションに必要な情報を検索することができる。このようなデータベースは、アプリケーションとは関係なくデータを保持することができる、永続ストレージの機能を有する。オブジェクト指向のソフトウェアにおいては、ストレージシステムを介して発生するトランザクションを管理するソフトウェアは、全ての永続オブジェクトのトランザクション状態を維持していなければならない。
図1は、永続フレームワークの概要図である。データベース100は、データベーステーブル102のような表形式でデータを保有している。データベーステーブル102には色々なフィールドがある。例えば、販売用のアプリケーションであれば、データベーステーブル102のフィールドとして、識別番号、製品番号、製品説明などがある。そして、顧客が製品を発注したり、永続フレームワークに保存されているオーダーを変更したりするかもしれないので、トランザクションはきちんと管理されなければならない。テーブル104は説明のためであって、当業者であれば、アプリケーションが使用するデータの基になっているのはそのアプリケーションによって作成された永続オブジェクトであることが分かる。オブジェクト106a〜106nは、データベーステーブル102のある行と対応している。例えば、クライアント108は、以前にオーダーしたアイテムを修正109により変更することができる。この修正は、対応する永続オブジェクト、この場合はオブジェクト1(106a)に取り込まれる。オブジェクト1(106a)によって取り込まれた修正は、データベーステーブル102に対してコミットされ、データベーステーブルの対応する順番が更新される。
ある時点においては、データベース100に保持されているデータと、アプリケーション上のデータ(テーブル104)との間に差違が生ずる。永続ストレージに保持されているデータとアプリケーション上のデータとの差異を管理する一般的な方法の一つは、キャッシュとトランザクション状態がそれぞれ一対一で対応するような、キャッシュとトランザクション状態を複数個用いる方法である。すなわち、各キャッシュは、ある特定のトランザクション状態のオブジェクトや属性と対応する永続オブジェクトを保持する。例えば、旧ダーティ(old-dirty)状態のオブジェクト全てが一つのキャッシュに保持され、旧クリーン(old-clean)状態のオブジェクトが別のキャッシュに保持されるといった具合に。
マルチキャッシュ法の一つの欠点は、マルチスレッド、マルチユーザなどをサポートできないことである。例えば、あるスレッドによりなされた変更を保存しようとすると、そのスレッドに対応するオブジェクトが複数のキャッシュに分散されるため、そのスレッドでなされた変更を保存することができない。さらに、永続オブジェクトが修正されたり作成された順番を保存することもできない。マルチキャッシュ法のもう一つの欠点は、ある特定のオブジェクトの探索するに、複数のキャッシュを探索しなければならないことである。そのために、特定のオブジェクトの探索が困難で複雑なものになる。
アプリケーション上のデータと永続ストレージに保持された対応するデータ間の差異を管理する別の方法としては、一つの大容量のキャッシュを使用する方法がある。各永続オブジェクトには、現在のトランザクション状態を保持するために追加の属性が与えられる。先に述べた方法では、同じトランザクション状態に属する永続オブジェクトのセット毎に一つの個別のキャッシュが用いられる。マルチキャッシュ法と同様に、ある特定のスレッドの変更を保存するのは単一の大型キャッシュでも無理である。さらに、コミットやロールバックの際、どのような処理をすればよいかを判断するためには、キャッシュ全体をスキャンしなければならない。
それゆえに、永続フレームワークにおけるトランザクションを効率よく管理する方法並びにシステムを提供するために先行技術の問題を解決する必要がある。
米国特許出願公開第2002/0103814号明細書 米国特許出願公開第2002/0103815号明細書
大まかに言えば、本発明は、マルチユーザ環境で永続オブジェクトの修正を管理するための方法を提供することで、こうした要求に応えるものである。本発明は、プロセスとして、システムとして、あるいはデバイスとしてなど、様々な方法で実現することができる。本発明の実施例を以下にいくつか説明する。
本発明は、マルチスレッド環境において、永続フレームワークと関連付けられたトランザクションを管理するための方法を提供する。この方法は、個々のスレッドをそれぞれ事象の待ち行列と関連付けることから始まる。事象は、一つの永続オブジェクトと関連付けられる。次に、その特定のスレッド以外のスレッドから永続オブジェクトに書き込みアクセスができないようにする。次に、その永続オブジェクトと関連付けられた第1のイベントキューに入っている事象が実行される。
本発明は、マルチユーザ環境において、永続オブジェクトのトランザクション状態を維持するための方法を提供する。この方法は、メインキャッシュに記憶されている一つの永続オブジェクトを修正する要求を受け取ることから始まる。次に、その永続オブジェクトが、メインキャッシュから、その要求と関連付けられたイベントキューにコピーされる。次に、一つの修正された永続オブジェクト及び一つの対応するトランザクション状態がその永続オブジェクトと共にイベントキューに保持される。次に、修正後の永続オブジェクトがメインキャッシュ及び一つの永続ストレージに書き込まれる。そして、その永続オブジェクトはメインキャッシュ及び永続ストレージから削除される。
また本発明は、複数のクライアントがアクセス可能な永続オブジェクトのトランザクション状態を維持するための方法を提供する。この方法は、複数のクライアントの中から各クライアントを一つのイベントキューと関連付けることから始まる。各イベントキューは、一つの永続フレームワークの単一キャッシュと関連付けられる。次に、ある永続オブジェクトの修正が要求される。永続オブジェクトは単一キャッシュに保持される。次に、修正後の永続オブジェクト、トランザクション状態インジケータ、永続オブジェクトのコピーが、それぞれのイベントキューに保持されている追加の永続オブジェクトの継続的な修正の順番がわかるように、それぞれのイベントキューに保持される。次に、他のクライアントが、単一キャッシュに保持されている永続オブジェクトに書き込みアクセスできないようにする。次に、それぞれのイベントキューに入っている修正後の永続オブジェクトが単一キャッシュにコミットされる。
さらに本発明は、コンピュータシステムで実行されるように構成されたコンピュータプログラム製品を提供する。コンピュータプログラム製品は、各スレッドを一つのイベントキューと関連付けるためのプログラム命令を有する。各スレッドと関連付けられた第1のイベントキューに事象を追加するためのプログラム命令も有する。ここでは、事象は一つの永続オブジェクトと関連付けられている。対応するスレッド以外のスレッドからその永続オブジェクトへの書き込みアクセスを禁止するプログラム命令及びその永続オブジェクトと関連付けられた第1のイベントキューに入っている事象を実行するためのプログラム命令を有する。
本発明は、複数のクライアントがアクセス可能な永続オブジェクトのトランザクション状態を維持するためのプログラム命令を有するコンピュータ可読メディアを提供する。このコンピュータ可読メディアは、複数のクライアントの各々を一つのイベントキューと関連付けるためのプログラム命令を有し、各イベントキューは一つの永続フレームワークのの単一キャッシュと関連付けられる。永続オブジェクトの修正を要求するためのプログラム命令を提供する。永続オブジェクトはその単一キャッシュに保持される。修正後の永続オブジェクト、トランザクション状態インジケータ、永続オブジェクトのコピーを、それぞれのイベントキューに保持されている追加の永続オブジェクトの連続した修正の順番が分かるように、それぞれのイベントキューに保持するためのプログラム命令を有する。他のクライアントが、単一キャッシュに保持された永続オブジェクトに書き込みアクセスできなくするためのプログラム命令を提供する。それぞれのイベントキューに入っている修正後の永続オブジェクトを単一キャッシュにコミットするためのプログラム命令も提供する。
また本発明は、永続オブジェクトのトランザクション状態を維持可能なシステムを提供する。このシステムは、永続ストレージ装置を有する。永続ストレージ装置と通信しているサーバもこのシステムの一部である。このサーバは、少なくとも一つの中央処理装置(CPU)を有する。CPUは、永続オブジェクトを保持するように構成されたメインキャッシュを有する。メインキャッシュは、複数のイベントキューと関連付けられ、各イベントキューは、個別のスレッドと関連付けられる。各イベントキューは、さらにデータを保持するように構成され、データは、メインキャッシュからの永続オブジェクト各々のコピー、永続オブジェクトのそれぞれのコピーに対応する修正、及び永続オブジェクトのコピー各々に対応するトランザクション状態を含む。イベントキューは、保持されている修正の少なくも部分集合の実行を許可できる。
発明のその他の態様並びに効果は、添付の図面と共に、発明の原理を例を挙げて説明している以下の詳細な説明から明白になる。
以下、本発明の実施形態を図面に基づいて説明する。
発明を、永続ストレージ装置フレームワークの永続オブジェクトを管理するためのシステム及び方法として説明する。但し、これらの具体的な詳細を全て又は部分的に知らなくても本発明を実施できることは当業者なら容易に分かるであろう。その他の場合には、公知のプロセスの操作については、本発明を不要に不明瞭にしないために、細かく説明していない。図1については、「背景技術」の項で説明している。本明細書で用いている「約」とは、言及している値の+/−10%のことである。
本発明の実施例は、マルチスレッド環境において、複数のユーザが永続オブジェクトを修正、例えば、変更したり、追加したり、削除したりすることができる永続ストレージ装置を管理するための方法及び装置を提供するものである。この管理方法では、メインキャッシュと呼ばれる一つのキャッシュに、永続ストレージ装置から読み出された永続オブジェクトを保持する。例えば、MRU(一番最近使用された:most recently used)法を用いて、前述の一つのキャッシュに保持する永続オブジェクトの数を管理する。すなわち、単一キャッシュがその記憶容量の限度に近づくと、一番最近使用された永続オブジェクトが単一キャッシュに保存され、古くなった永続オブジェクトは永続ストレージ装置に移される。典型的な永続ストレージ装置としては、リレーショナルデータベース、オブジェクトデータベース、階層型データベース、単層ファイルなどがある。そして、イベントキューに、各永続オブジェクトのトランザクション状態や永続オブジェクトが追加されたり、削除されたり、変更された順番が保持される。マルチスレッド環境においては、セッションと呼ばれる各スレッドが、永続オブジェクトに対する修正を実行し、各スレッドは個別のイベントキューと対応付けられる。従って、トランザクション状態は、イベントキューを使用することによって、キャッシュから切り離すことができる。
また、この管理方法は、修正されるオブジェクトへの書き込みアクセスを禁止することができる。例えば、あるセッションが永続オブジェクトを追加したり、変更したり、削除したりすると、その都度、メインキャッシュ又は永続ストレージ装置に保持されている永続オブジェクトにロックがかけられる。したがって、永続オブジェクトにロックをかけたセッションだけがその永続オブジェクトに対して読み書きのアクセスが可能となり、他のセッションには読み取りのみのアクセス権が与えられる。言うまでもなく、メインキャッシュでロックされている永続オブジェクトは、それをロックしたセッションがコミット又はロールバックの操作を実行するまではメインキャッシュに保持される。コミット又はロールバックの操作後、永続オブジェクトのロックが外され、他のセッションがそのオブジェクトに対する修正を実行できるようになる。なお、本明細書で使用しているセッション、スレッド、クライアントという言葉は、互いに置き換えて用いることができることは言うまでもない。
図2は、本発明の一実施例における、永続オブジェクトを管理するように構成されたシステムの概略図である。クライアント1(110a)〜クライアントn(110n)は、インターネットなどの分散型ネットワーク112を介してサーバ114と通信している。サーバ114は中央処理装置(CPU)116を有する。例えば、サーバ114は複数のCPUを有する。CPU116は、本明細書で説明する永続オブジェクトの管理方法を実行するように構成されている。サーバ114はデータベース118と通信している。データベース118は永続オブジェクトを保存する永続ストレージ装置を提供する。例えば、データベース118は、リレーショナルデータベース、オブジェクトデータベース、階層型データベース、単層ファイルなどでいい。なお、図2で説明しているシステムには、会社組織における販売、財務、経理システム、人的資源計画やその他の機能といった、永続フレームワークを使用する企業資源計画(ERP)システムが含まれていて構わない。
例えば、クライアント1〜n(110a〜110n)は、オーダーをサーバ114に伝送するように構成されている。従って、ある時点においては、データベース118に保持されているデータと、サーバ114のアプリケーション上で処理されているデータとの間には違いが生ずる。例えば、ある顧客のオーダーがデータベース118にあるとする。そのオーダーされた商品の納品前に、顧客が商品の発注数を増やそうとしたとする。すると、オリジナルのオーダーは、サーバ114上のアプリケーションによって変更されるが、その変更がデータベースにコミットされるまでは、オリジナルのオーダーの修正はデータベース118に取り込まれない。なお、図の説明で販売用アプリケーションという表現は、説明のためであって、この管理スキームは任意の適切なアプリケーションに適用可能で、販売アプリケーションへの限定を意味するものではない。
図3Aは、図2の永続オブジェクトを管理するように構成されたシステムのサーバの詳細を示した図である。クライアント1〜n(110a〜110n)はネットワーク112を介してサーバ114に販売データを送信する。一例として、クライアント2(110b)はサーバ114にオーダーAを送信する。オーダーAはイベントキュー2(126b)及びメインキャッシュ124に保持される。例えば、イベントキュー2(126b)はスタックで構成される。クライアント2により、オーダーAの追加という事象がコミットされると、オーダーAのコピーがデータベース118に保持される。なお、クライアント1〜n(110a〜110n)は、各々イベントキュー126a〜126nと対応付けられる。すなわち、各クライアントは個別のイベントキューと関連付けられるので、イベントキューとクライアントとは一対一で対応する。
図3Bは、本発明の一実施例に基づき、永続オブジェクトの修正を管理するための方法を示した概略図である。図3Bでは、図3Aにおける追加のオーダーAが修正される。クライアント110aはデータを送信して、オーダーAをオーダーA’に修正する。例えば、オーダーAの発注者は、オーダーした商品の数量や納品日、あるいはその他の販売データと関係するデータを変更するかもしれない。修正データ(オーダーA’)は、イベントキュー126aのブロック128に保持される。ここで、対応するデータをイベントキュー126aに受け取る際、メインキャッシュ124に入っているオーダーAにロックがかけられ、オーダーA’がメインキャッシュにコピーされて、オーダーAを置き換える。ここで、オーダーAが古い永続オブジェクトでかつMRUによりメインキャッシュ124を管理する場合は、オーダーAは、メインキャッシュ124ではなく、データベース118等からなる永続ストレージ装置に保持される。オーダーAがメインキャッシュ124に保持されない場合は、オーダーAのコピーがデータベース118からメインキャッシュ124に入れられる。例えば、オーダーAがメインキャッシュ124にコピーされると、オーダーAにロックがかけられる。イベントキュー126aのブロック128のデータがコミットされると、オーダーAのロックが解除され、メインキャッシュ124及び/又はデータベース118のオーダーAがオーダーA’に置き換えられる。なお、各イベントキューは、そのイベントキューに保持されている事象を時系列に提供する。例えば、事象の順番を維持するために、次の修正がイベントキュー126a〜126nの一番下に追加される。従って、時間的にもっと前に追加された事象がイベントキューの上の方に位置するのに対し、後から追加された事象はイベントキューの下のほうに位置する。
図4Aは、本発明の実施例に基づいて、新しい値が追加された時に、イベントキューのあるブロック内に保持されているデータについて説明したブロック図である。ブロック130には、オーダーAを新しい事象として識別するためのトランザクション状態インジケータと、オーダーAの値、つまり、図3AにおいてオーダーAに対応するデータとが含まれている。なお、トランザクション状態インジケータをデータとを一緒にして、各クライアントを個別のイベントキューと対応付けることにより、本発明の管理方法が永続オブジェクトを効率的に、規則正しく管理できるというのは特筆すべきことである。すなわち、トランザクション状態はメインキャッシュに保持されるのではなく、それぞれのイベントキューに保持され、ある特定のクライアントと関連付けられる。さらに、一旦クライアントがトランザクションをコミットするか又はロールバックしたら、そのクライアントと関連付けられたイベントキューだけがスキャンされ、メインキャッシュ及び永続ストレージが更新される。従って、コミット又はロールバックの際にアップロードすべきデータ量が大幅に削減される。
図4Bは、本発明の実施例に基づいて、既存の値を修正するためにイベントキューのあるブロックに保持されたデータを説明した図である。ブロック128は、図3Bに関するトランザクション状態及びオーダーA’のデータ、オーダーAのデータを含む。オーダーAはオーダーA’で置き換えられる。当業者であれば、トランザクション状態は、例えば、追加、変更、削除のトランザクションなど、どの様なタイプのトランザクションにも対応可能に構成できることが分かるであろう。典型的なトランザクション状態としては、新クリーン(New Clean)、新ダーティ(New Dirty)、新デリート(New Delete)、旧クリーン(Old Clean)、旧ダーティ(Old Dirty)、旧デリート(Old Delete)、またはその他トランザクションの状態を識別する任意の適切な標識がある。トランザクション状態とは、コミット又はロールバックで要求されるアクションを示したものである。図4Bに示すように、初めのオーダーA及び修正後のオーダーA’の両方のデータが含まれているため、ロールバック際には、必要であれば、初めのオーダーAのデータをいつでも利用することができる。さらに、このように構成にすることにより、サーチが簡単になる。
図5A〜図5Hは、本発明の一実施例に基づいて、永続フレームワークの永続オブジェクトに対する修正を行なう管理方法を説明した図である。図5Aは、メインキャッシュ144を有すると共にイベントキュー1(142a)〜イベントキューn(142n)を有する永続フレームワーク146を有する。イベントキュー1(142a)はセッション1(140a)に対応し、イベントキューn(142n)はセッションn(140n)に対応する。ここで、セッション1(140a)〜セッションn(140n)は、スレッド又はクライアントを表わすと考えることができる。従って、永続フレームワーク146がサーバを表わすのに対し、セッション1(140a)〜セッションn(140n)はクライアントを表わす。当業者であれば、クライアントはネットワークを介してサーバと通信していることは明らかである。さらに、セッション1(140a)〜セッションn(140n)を、図2のクライアント1(110a)〜クライアントn(110n)と各々対応付けることができる。図示されているように、各セッションは一つのイベントキューと対応付けられる。永続ストレージ148も永続フレームワーク146に含まれている。先に述べたように、永続ストレージ148は、リレーショナルデータベース、階層型データベース、オブジェクトデータベースなどのデータベースとして構成することができる。
図5Bは、新たな永続オブジェクトが追加された時の概略図である。すなわち、永続ストレージ148にない永続オブジェクトがここで追加されている。ここでは、セッション1(140a)により、事象オブジェクトAがイベントキュー1(142a)に追加される。新規の永続オブジェクトAが追加されるとき、そのオブジェクトはメインキャッシュ144に入れられる。例えば、追加事象が発生した時に対応するイベントキューが一杯だった場合には、一番古い事象が永続ストレージに保存され、イベントキューから削除される。もしくは、一番最近行なわれた変更が放棄される。図5Cは、オブジェクトAを削除する時の永続フレームワークの状態を示した図である。ここで、図5Cは、事象の削除を行なう前の永続フレームワークの状態を表わしている。セッション1(140a)により、削除する事象がイベントキュー1(142a)に受け取られる。ここで、削除する事象に削除されたオブジェクト、つまり、オブジェクトAのコピーが含まれていることは特筆すべきことである。さらに、対応するオブジェクト(オブジェクトA)にはロックがかけられ、他のセッションが削除する事象と対応するメインキャッシュ内のオブジェクトに書き込みアクセスすることを禁止する。なお、コミット操作後に、オブジェクトAがメインキャッシュ及びイベントキュー1(142a)から削除されるのは言うまでもない。
図5Dは、オブジェクトをアップデートしたがそのアップデートがまだコミットされていない状態の永続フレームワークの概略図である。ここでは、セッション1(140a)が、永続ストレージ148内のオブジェクトAをアップデートする。従って、更新される事象がイベントキュー1(142a)に追加され、イベントキュー1(142a)はオブジェクトA、オブジェクトA’及び対応するトランザクション状態を保持する。一例として、修正されたオブジェクトの値はメインキャッシュ内でアップデートされる。また別の例では、オブジェクトがメインキャッシュに存在していない場合は、その新しい値がメインキャッシュに追加される。当業者であれば、接続スピードやメモリ容量などに応じて、永続オブジェクトを永続記ストレージ148又はメインキャッシュ144から読み出せることが分かるであろう。本発明の一実施例によれば、対応するイベントキューの最後に事象を追加することで、更新された事象の順番を維持する。従って、イベントキュー1(142a)用に更新された事象は、本実施例ではイベントキューの終わりに追加される。なお、イベントキュー1(142a)は永続オブジェクトの古い値と更新された値とを含む。当業者であれば、イベントキューの中に古い値と更新された値とを有することにより、ロールバックとコミットの両方に対応できるようになることが分かるであろう。例えば、イベントキュー142とメインキャッシュ144の両方にオブジェクトが入っている時はいつでも、メインキャッシュ内のそれぞれのオブジェクトにロックがかけられる。
図5Eは、本発明の一実施例に基づき、セッション1(140a)のセッションコミットの前の永続フレームワークの状態を説明した図である。イベントキュー1(142a)は、セッション1(140a)に対応するもので、メインキャッシュ144や永続ストレージ148にある永続オブジェクトに対して行なわれる様々の修正を含んでいる。ここでは、イベントキュー1(142a)には、事象オブジェクトAの追加、事象オブジェクトA’の更新、オブジェクトBの削除、といった修正が含まれている。永続オブジェクトA’、B、C及びDは全てメインキャッシュ144に保持され、永続オブジェクトB及びDは永続ストレージ148に保持される。例えば、事象オブジェクトAを追加する修正及び事象オブジェクトA’を更新する修正は、メモリを節約するために、ブロック150に示すように、イベントキュー1(142a)で一つにまとめてもよい。なお、各永続オブジェクトと対応する状態を維持するために、メインキャッシュ144内の永続オブジェクトをロックしてもよいことは言うまでもない。例えば、イベントキューの修正がまだコミットされていないといったような、永続フレームワークのイベントキューの中に対応するアクションが存在している場合は、メインキャッシュ144の永続オブジェクトはロックされる。図5Fは、図5Eのセッション1のセッションコミット後の状態を説明した図である。一例として、セッションコミットは、対応する永続オブジェクトに対してスレッドが行なった全ての変更を保存する。以下に説明するように、セッションコミットを、部分コミット又はロールバックとして構成することもできる。すなわち、ある特定の状態に対するトランザクション又はイベントキューのオブジェクトだけがコミットもしくはロールバックされる。例えば、セッションコミットの処理は、イベントキューの一番初めからイベントキュー全体に対して行なわれ、その変更を永続ストレージ装置に書き込む。ここで、一旦事象が書き込まれたら、対応するイベントキューから削除される。さらに、その事象に対応する永続オブジェクトへのロックが全て解除される。従って、図5Fにおいて、オブジェクトA’はメインキャッシュ144に残るが、セッション1のセッションコミットの後ではオブジェクトBはメインキャッシュ144及び永続ストレージ装置148から削除される。したがって、イベントキュー1(142a)からは、セッションコミット前に存在していた事象が各々クリアされる。
図5Gは、本発明の一実施例に基づいて、セッション1のセッションロールバック前の永続フレームワークの状態を説明した図である。ここで、イベントキュー1(142a)には、事象オブジェクトAの追加、事象オブジェクトE’の更新、事象オブジェクトBの削除という修正が含まれている。図5Hは、セッション1のセッションロールバック完了時点での図5Gの永続フレームワークを説明した図である。なお、セッションロールバックは、永続オブジェクトに対する全変更を棄却し、永続ストレージ装置に保持されている永続オブジェクトの値に戻るものである。セッションコミットの操作と同様に、セッションロールバックは、終わりから始まってイベントキュー全体に対して実行され、各事象オブジェクトを調べる。従って、事象が削除の場合には、事象オブジェクトがイベントキューから単に除去される。但し、事象が更新の場合には、対応する永続オブジェクトの古い値がメインキャッシュに保持される。さらに、事象が追加の場合には、事象オブジェクトがイベントキュー及びメインキャッシュの両方から除去される。従って、図5Hでは、オブジェクトAが、オブジェクトE’と共にメインキャッシュ144から除去される。オブジェクトE’の更新はロールバックされるため、オブジェクトEがメインキャッシュ144に復元される。イベントキュー1(142a)に以前入っていたオブジェクトBの削除の事象はイベントキュー1から除去されている。
図6は、本発明の実施例に基づいて、マルチスレッド環境で永続フレームワークと関連付けられたトランザクションを管理する方法を示したフローチャートである。この方法は、個々のスレッドが一つのイベントキューと関連付けられるオペレーション160から始まる。図3A及び図3Bで説明したように、各イベントキューは個々のスレッドと関連付けられる。さらに、イベントキューは、各クライアントから事象を受け取った順番を維持するように構成される。一例として、イベントキューはメモリに維持されたスタックである。次に、オペレーション162に進み、ある事象が、スレッドと対応する第1のイベントキューに追加される。ここで、事象は、本明細書で説明した修正、追加、又は削除であっていい。事象は、インターネットなどの分散型ネットワークを介して、クライアントからイベントキューに伝送される。なお、ここでいう事象とはトランザクションのことである。その事象が関係する永続オブジェクトに対応するトランザクション状態は、前述した事象の伝送に含まれる。また、その事象が永続オブジェクトの修正や削除である場合は、オリジナルの永続オブジェクトもその伝送に含まれる。一例として、ある特定のイベントキューに対する継続的な事象は、その事象の順番を維持するために、そのイベントキューの一番下に追加される。
図6の方法は次にオペレーション164に進み、第1のイベントキューに対応するスレッド以外のスレッドから、その事象と関係する永続オブジェクトへの書き込みアクセスを禁止する。対応する永続オブジェクトにロックをかけ、他のスレッドからこの永続オブジェクトに対して読み取りアクセスはできるが書き込みアクセスはできないようにする。従って、上述のように売り上げオブジェクトを修正する場合、修正を行なうクライアントのみが対応する永続オブジェクトに対して読み書きのアクセスをすることができる。しかしながら、他のクライアントに対しては、永続オブジェクトへのロックにより書き込みアクセスは禁止され、読み取りアクセスのみが可能となる。
図6の方法は、次にオペレーション166に進み、永続オブジェクトと関連付けられた事象が実行される。すなわち、図5A〜5Hで説明した、追加、修正、削除などの事象が実行される。例えば、コミット操作が事象の実行を開始する。コミット操作は、各スレッドのイベントキューに入っている全ての事象を実行するように構成することができる。あるいは、各スレッドのイベントキューに入っている事象を部分的に実行するようにコミット操作を構成することもできる。例えば、ある特定のトランザクション状態又はある特定の永続オブジェクトと関連付けられた事象がコミットされる。また別の例としては、ある永続オブジェクトに対する全ての変更を放棄し、永続ストレージ装置に保持されているその永続オブジェクトの値に戻るロールバック操作が実行される。ここでも、ロールバック操作をイベントキューに入っている事象の一部又は全てをロールバックする構成であってもよい。
図7は、本発明の一実施例に基づき、複数のクライアントがアクセス可能な永続オブジェクトのトランザクションを維持する方法を示したフローチャートである。この方法はオペレーション170から始まり、各クライアントが、個別のイベントキューと関連付けられる。従って、図5A〜5Hで説明したように、各イベントキューとクライアントとの間に一対一の対応ができる。一例として、イベントキューはある特定のクライアントに割り当てられたスタックであり、クライアントのトランザクションはそのトランザクションの順番が維持されるようにスタックに記録される。この方法は次にオペレーション172に進み、そこで永続オブジェクトの修正を要求する。例えば、上述のごとく、クライアントは前に入力された発注の増加を要求することができる。ここで、その要求は、図2、3A、3Bで説明したように、ネットワークを介してサーバに伝送される。
図7の方法は次にオペレーション174に進み、修正された永続オブジェクト、トランザクション状態インジケータ、永続オブジェクトのコピーが対応するイベントキューに保持される。上述のごとく、データは、イベントキューに保持されているオブジェクトの修正の順番が分かるように保持される。例えば、修正は都度イベントキューの一番下に入れられる。なお、トランザクション状態インジケータとは、その永続オブジェクトが永続ストレージ装置から最近読み出され、修正されたかどうかを示すものである。この方法は次にオペレーション176に進み、キャッシュ又は永続ストレージ装置に保持されている永続オブジェクトへの書き込みアクセスを禁止する。一例として、永続オブジェクトへの読み取りアクセスのみが許可されるように、キャッシュ又は永続ストレージ装置内の永続オブジェクトにロックがかけられる。従って、ロックされている永続オブジェクトへのアクセスを要求する他のクライアント、スレッド、セッションなどには、データの読み取りアクセス権が与えられ、書き込みアクセス権は与えられない。別の例では、永続オブジェクトがロックされている場合には、そのオブジェクトをロックしているセッションがコミット又はロールバックを実行するまでは、そのオブジェクトはメインキャッシュに保持される。コミット又はロールバックの操作後に、ロックが解除され、他のセッションはそのオブジェクトへの修正を実行することができる。
引き続き図7において、この方法はオペレーション178に進み、それぞれのイベントキューに入っている修正された永続オブジェクトがメインキャッシュにコミットされる。ここで、オリジナルのオブジェクトが変更されたら、その変更されたオブジェクトがキャッシュに保持され、オリジナルのオブジェクトはキャッシュから削除される。オリジナルのオブジェクトを削除する修正の場合には、オリジナルのオブジェクトがキャッシュから除去される。言うまでもなく、新たなオブジェクトを追加する修正の場合には、その新たなオブジェクトがキャッシュに入れられる。なお、コミットに代わる操作がロールバックで、図5A〜5Hで説明したように、ロールバック操作は基本的にそれぞれのイベントキューと関連付けられたオブジェクトを修正前の元の状態に戻す。なお、オリジナルのオブジェクトと修正後のオブジェクトを同じイベントキューに保持すると、必要なデータが一つのイベントキューの中にあるため、ロールバック操作の実行が容易になることは特筆すべきことである。さらに、イベントキュー全体を実行するように、つまり、アトミックプロセスを実行するように、コミット操作及びロールバック操作を構成してもいい。また別の方法として、イベントキューの一部だけを実行するように、つまり、部分的コミット又は部分的ロールバックを実行するように、コミット操作及びロールバック操作を構成してもよい。部分的コミットやロールバックは、一つのトランザクション状態か、例えば、全てが旧ダーティ状態など、トランザクション状態同士の組合せ、又はある特定のオブジェクトかオブジェクトの組合せに基づくことができる。
要約すれば、上述の本発明は、永続フレームワークと関連付けられたマルチユーザ環境で永続オブジェクトの修正を管理するための方法及びシステムを提供する。各クライアントは個別のイベントキューと関連付けられるため、永続フレームワークで一つのキャッシュで実行可能となる。また、キャッシュが一つしかないから、永続オブジェクトの探索が簡単になる。さらに、イベントキューと関連付けられた永続オブジェクトにロックがかかるため、永続オブジェクトの修正版は一つのイベントキューにしか存在せず、永続オブジェクトに対する修正の探索が簡単になる。
トランザクション状態インジケータ及びオリジナル永続オブジェクト、修正された永続オブジェクトが一つのイベントキューに保持するため、全ての必要なデータが一つのイベントキューの単一ブロックの中に存在し、コミット及びロールバックが容易になる。これにより、本書で説明した管理方法では個別のスレッドのコミット及びロールバックが可能となる。各イベントキューにおける修正、もしくは事象といってもよいが、その修正の順番が保存されるため、その順番に基づいて、最初のx個の修正、最後のy個の修正といった具合に、部分的なコミットやロールバックが可能になる。当業者であれば、上述の機能を提供するために論理ゲートや有限ステートマシンを含んだ半導体チップを設計できることが分かるであろう。例えば、ファームウェアと本明細書で説明した必要な機能を提供するための論理ゲートのレイアウトとを合成するのにハードウェア記述言語(HDL)を用いることができる。
上記の実施例を念頭に入れて、発明は、コンピュータシステムに保持されているデータが係わる様々なコンピュータで実現される操作を採用できることを理解すべきである。これらの操作は、物理的数量の物理的操作を要するものである。必ずしもそうとは限らないが、普通、これらの数量は、保持、転送、組合せ、比較や、その他の操作が可能な電気信号又は磁気信号の形をとる。さらに、実行される操作は、生成、識別、判定、又は比較といったような用語で言及されることが多い。
発明は、コンピュータ可読媒体に入ったコンピュータ可読コードとしての実施も可能である。コンピュータ可読媒体は、データを保持してそれを後からコンピュータシステムで判読できれば、どんなデータ記憶装置でも構わない。コンピュータコードを含んだ電磁搬送波もコンピュータ可読媒体の一つである。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続型ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、及びその他の光学式又は非光学式データ記憶装置が挙げられる。コンピュータ可読媒体は、コンピュータ可読データが分散して保持及び実行されるようにネットワークにつながったコンピュータシステム上に分散されることもできる。
はっきり理解できるように、上記の発明をある程度詳細に説明してきたが、添付されている特許請求の範囲内で、変更及び修正が可能なことは明白である。従って、本願の実施例は説明のためであって制限するためではないと考えられるべきで、また、発明は本明細書で述べた詳細に限定されるものではなく、添付の請求の範囲及びそれと同等の範囲内で変更可能である。
既存の永続フレームワークの簡約概要図。 本発明による、永続オブジェクトを管理するシステムの概略図。 図2におけるシステムのサーバの詳細図。 図3Aで追加された永続オブジェクトの修正を管理する方法を説明した図。 本発明において、新しい値が追加された時のイベントキューのブロック内に保有されるデータを説明した図。 本発明において、ある既存値を修正するイベントキューのブロック内に保有されているデータを説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、永続フレームワークの永続オブジェクトに対する修正を処理する方法を説明した図。 本発明において、マルチスレッド環境で永続フレームワークと対応するトランザクションを管理する方法のフローチャート。 本発明において、複数のクライアントがアクセス可能な永続オブジェクトのトランザクション状態を維持する方法フローチャート。
符号の説明
100、118 データベース
102 データベーステーブル
106 オブジェクト
108、110 クライアント
112 ネットワーク
114 サーバ
116 CPU
140 セッション
142 イベントキュー
144 メインキャッシュ
146 永続フレームワーク
148 永続ストレージ

Claims (31)

  1. マルチスレッド環境で永続フレームワークと関連付けられるトランザクションを管理する方法であって、
    個々のスレッドをイベントキューと関連付け、
    各スレッドと関連付けられた第1のイベントキューに永続オブジェクトと関連付けられた事象を追加し、
    当該スレッド以外のスレッドが前記永続オブジェクトに書き込みアクセスするのを禁止し、
    前記永続オブジェクトと関連付けられた前記第の1イベントキューに追加された前記事象を実行することを特徴とする方法。
  2. 前記事象は、前記永続オブジェクトの削除、変更又は追加からなるグループから選択されることを特徴とする請求項1に記載の方法。
  3. 各スレッドと関連付けられた第1のイベントキューに、永続オブジェクトと関連付けられた事象を追加する前記方法は、
    前記第1のイベントキューにおける前記事象の順番を保存することを特徴とする請求項1に記載の方法。
  4. 前記当該スレッド以外のスレッドが前記永続オブジェクトに書き込みアクセスするのを禁止する方法は、
    前期イベントキューと関連付けられたキャッシュに入っている前記永続オブジェクトとロックを関連付けることを特徴とする請求項1に記載の方法。
  5. 複数の事象を前記第の1イベントキューに追加し、
    前記複数の事象の一部分を実行する、ことを特徴とする請求項1に記載の方法。
  6. マルチユーザ環境で永続オブジェクトのトランザクション状態を維持するための方法で、
    メインキャッシュに保持されている永続オブジェクトを修正する要求を受け取り、
    前記要求と関連付けられたイベントキューに前記メインキャッシュから前記永続オブジェクトをコピーし、
    修正された永続オブジェクト及び対応するトランザクションを前記永続オブジェクトと一緒に前記イベントキューに保持し、
    前記修正された永続オブジェクトを前記メインキャッシュ及び永続ストレージ装置に書き込み、
    前記メインキャッシュ及び前記永続ストレージ装置から前記永続オブジェクトを削除する、ことを特徴とする方法。
  7. 前記永続オブジェクトが前記メインキャッシュから前記イベントキューにコピーされると、前記メインキャッシュに保持されている前記永続オブジェクトへの書き込みアクセスを禁止する、ことを特徴とする請求項6に記載の方法。
  8. 前記マルチユーザ環境の各ユーザは個別のイベントキューと関連付けられることを特徴とする請求項6に記載の方法。
  9. 前記イベントキューと関連付けられた継続的な要求を前記イベントキューの一番下に追加することにより前記永続オブジェクトを修正する要求の受け取り順番を保存する、ことを特徴とする請求項6に記載の方法。
  10. 前記イベントキューは、前記マルチユーザ環境の単一ユーザに対応することを特徴とする請求項6に記載の方法。
  11. 複数のクライアントがアクセス可能な永続オブジェクトのトランザクション状態を維持するための方法であって、
    複数のクライアントの各々を永続フレームワークの単一キャッシュと関連付けられた一つのイベントキューと関連付け、
    永続オブジェクトを修正された永続オブジェクトに修正する要求を受け取ると共に前記永続オブジェクトを前記単一キャッシュに保持し、
    前記修正された永続オブジェクトと、トランザクション状態インジケータ、及び前記永続オブジェクトのコピーをそれぞれのイベントキューに、該それぞれのイベントキューに保持された追加永続オブジェクトの継続的な修正の順番が分かるように保持し、
    前記複数のクライアントのうち、当該クライアント以外のクライアントが前記単一キャッシュに保持されている前記永続オブジェクトに書き込みアクセスするのを禁止し、
    前記それぞれのイベントキューに入っている前記修正された永続オブジェクトを前記単一キャッシュにコミットすること、からなることを特徴とする方法。
  12. 前記それぞれのイベントキューに保持されている前記追加永続オブジェクトの継続的な修正の一部分が、前記修正永続オブジェクトと共に前記単一キャッシュにコミットされることを特徴とする請求項11に記載の方法。
  13. 前記一部分は、共通のトランザクション状態インジケータにより識別されることを特徴とする請求項12に記載の方法。
  14. 前記それぞれのイベントキューに入っている前記修正永続オブジェクトが他のイベントキューに一切保持されないようにすることを特徴とする請求項11に記載の方法。
  15. 前記永続オブジェクトをコミットした後、前記修正永続オブジェクト及び前記永続オブジェクトを前記それぞれのイベントキューから削除し、
    前記単一キャッシュに入っている前記永続オブジェクトを前記修正永続オブジェクトで置き換え、前記修正永続オブジェクトは前記複数のクライアントによる書き込み及び読み取りアクセスが可能である、ことを特徴とする請求項11に記載の方法。
  16. コンピュータシステムで実行されるように構成されたコンピュータプログラム製品で、
    各スレッドを一つのイベントキューと関連付けるためのプログラム命令と、
    各スレッドと関連付けられた第1のイベントキューに、ある永続オブジェクトと関連付けられた事象を追加するプログラム命令と、
    当該スレッド以外のスレッドが前記永続オブジェクトに書き込みアクセスするのを禁止するためのプログラム命令と、
    前記永続オブジェクトと関連付けられた前記第1のイベントキューに入っている事象を実行するためのプログラム命令とを有することを特徴とするコンピュータプログラム製品。
  17. 前記事象は、前記永続オブジェクトの削除、変更、又は追加からなるグループから選択されることを特徴とする請求項16に記載のコンピュータプログラム製品。
  18. スレッドと関連付けられた第1のイベントキューに、永続オブジェクトと関連付けられた事象を追加するプログラム命令は、
    前記第1のイベントキューにおける前記事象の順番を保存するためのプログラム命令を有することを特徴とする請求項16に記載のコンピュータプログラム製品。
  19. 当該スレッド以外のスレッドが前記永続オブジェクトに書き込みアクセスするのを禁止するプログラム命令は、
    ロックを、各イベントキューと関連付けられたキャッシュに入っている前記永続オブジェクトと関連付けるためのプログラム命令を有することを特徴とする請求項16に記載のコンピュータプログラム製品。
  20. 複数の事象を前記第1のイベントキューに追加するためのプログラム命令と、
    前記複数の事象の一部分を実行するためのプログラム命令と、
    をさらに有することを特徴とする請求項16に記載のコンピュータプログラム製品。
  21. 複数のクライアントがアクセス可能な永続オブジェクトのトランザクション状態を維持するためのプログラム命令を有するコンピュータ可読メディアであって、
    複数のクライアントの各々を永続フレームワークの単一キャッシュと関連付けられた一つのイベントキューと関連付けるプログラム命令と、
    前記単一キャッシュに保持される永続オブジェクトを、修正された永続オブジェクトを変更する修正を要求するプログラム命令と、
    前記修正された永続オブジェクト、トランザクション状態インジケータ、及び前記永続オブジェクトのコピーを、それぞれのイベントキューに、前記それぞれのイベントキューに保持された追加永続オブジェクトの継続的な修正の順番がわかるように保持するプログラム命令と、
    前記単一キャッシュに保持された前記永続オブジェクトへの書き込みアクセスを禁止するためのプログラム命令と、
    前記それぞれのイベントキューに入っている前記修正永続オブジェクトを前記単一キャッシュにコミットするためのプログラム命令とを有することを特徴とするコンピュータ可読メディア。
  22. 前記それぞれのイベントキューに保持された前記追加永続オブジェクトの継続的な修正の一部分を、前記修正永続オブジェクトと共に前記単一キャッシュにコミットするためのプログラム命令を有することを特徴とする請求項21に記載のコンピュータ可読メディア。
  23. 前記一部分は、共通のトランザクション状態インジケータにより識別されることを特徴とする請求項22に記載のコンピュータ可読メディア。
  24. 前記それぞれのイベントキューに入っている前記修正永続オブジェクトが他のイベントキューに保持されないようにするためのプログラム命令を有することを特徴とする請求項21に記載のコンピュータ可読メディア。
  25. 前記修正永続オブジェクトをコミットした後、前記それぞれのイベントキューから前記修正永続オブジェクト及び前記永続オブジェクトを削除するためのプログラム命令と、
    前記単一キャッシュに入っている前記永続オブジェクトを前記修正永続オブジェクトで置き換えるためのプログラム命令とを有し、前記修正永続オブジェクトは前記複数のクライアントによる書き込み及び読み出しアクセスが可能であることを特徴とする請求項21に記載のコンピュータ可読メディア。
  26. 永続オブジェクトのトランザクション状態を維持可能なシステムであって、
    永続ストレージ装置を有し、
    前記永続ストレージ装置と通信するサーバを有し、前記サーバは少なくとも一つの中央処理ユニット(CPU)を有し、前記少なくとも一つのCPUは永続オブジェクトを保持するメインキャッシュを有し、前記メインキャッシュは複数のイベントキューと関連付けられ、前記複数のイベントキューは各々一つのスレッドと関連付けられ、前記複数のイベントキューは各データを保持し、前記データは前記メインキャッシュからの前記永続オブジェクトのコピーと、前記永続オブジェクトのコピーに対応する修正と、前記永続オブジェクトの前記コピーの各々に対応するトランザクション状態とを含んでおり、単一イベントキューはそこに保持されている修正の少なくとも一つの部分集合の実行を許可できることを特徴とするシステム。
  27. 各スレッドは一つのクライアントと関連付けられることを特徴とする請求項26に記載のシステム。
  28. 前記永続ストレージ装置は、リレーショナルデータベースと、階層型データベース、及びオブジェクトデータベースからなるグループから選択されたデータベースであることを特徴とする請求項26に記載のシステム。
  29. 前記メインキャッシュは、前記永続オブジェクトの一つが前記複数のイベントキューの一つにコピーされると、前記永続オブジェクトのその一つに書き込みアクセスできないようにすることを特徴とする請求項26に記載のシステム。
  30. 書き込みアクセスを防止するために、前記永続オブジェクトの一つにロックがかけられることを特徴とする請求項26に記載のシステム。
  31. 前記イベントキュー内に保持されている前記修正の少なくとも前記部分集合は、あるトランザクション状態及びある特定の永続オブジェクトのうちの一つに基づいていることを特徴とする請求項26に記載のシステム。
JP2004004126A 2003-01-27 2004-01-09 永続フレームワーク用単一キャッシュによる事象駆動型トランザクション状態の管理 Withdrawn JP2004227569A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/352,322 US7111001B2 (en) 2003-01-27 2003-01-27 Event driven transaction state management with single cache for persistent framework

Publications (2)

Publication Number Publication Date
JP2004227569A true JP2004227569A (ja) 2004-08-12
JP2004227569A5 JP2004227569A5 (ja) 2007-02-15

Family

ID=32735941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004004126A Withdrawn JP2004227569A (ja) 2003-01-27 2004-01-09 永続フレームワーク用単一キャッシュによる事象駆動型トランザクション状態の管理

Country Status (3)

Country Link
US (2) US7111001B2 (ja)
JP (1) JP2004227569A (ja)
CN (1) CN1293501C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8140503B2 (en) 2007-10-18 2012-03-20 Nec Corporation Information processing apparatus having process units operable in parallel
JP2013164713A (ja) * 2012-02-10 2013-08-22 Nippon Telegr & Teleph Corp <Ntt> イベント駆動型処理実行装置およびその動作方法
KR101848277B1 (ko) * 2016-08-22 2018-05-28 한양대학교 에리카산학협력단 캐시 데이터 제어 장치 및 방법

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447852B1 (en) 2003-08-07 2008-11-04 Crossroads Systems, Inc. System and method for message and error reporting for multiple concurrent extended copy commands to a single destination device
US7251708B1 (en) * 2003-08-07 2007-07-31 Crossroads Systems, Inc. System and method for maintaining and reporting a log of multi-threaded backups
US7552294B1 (en) 2003-08-07 2009-06-23 Crossroads Systems, Inc. System and method for processing multiple concurrent extended copy commands to a single destination device
US10635723B2 (en) 2004-02-15 2020-04-28 Google Llc Search engines and systems with handheld document data capture devices
US20110295842A1 (en) * 2004-08-18 2011-12-01 Google Inc. Applying Scanned Information to Identify Content
US7634517B1 (en) * 2006-02-10 2009-12-15 Google Inc. System and method for dynamically updating a document repository without interrupting concurrent querying
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US7814243B2 (en) * 2007-06-01 2010-10-12 Sonics, Inc. Shared storage for multi-threaded ordered queues in an interconnect
US9021503B2 (en) * 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
US8719841B2 (en) * 2007-11-16 2014-05-06 Microsoft Corporation Dispatch mechanism for coordinating application and communication medium state
US8505030B2 (en) * 2007-11-16 2013-08-06 Microsoft Corporation Coordinating resources using a volatile network intermediary
WO2009097586A1 (en) 2008-01-31 2009-08-06 Bea Systems, Inc. System and method for transactional cache
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US9542708B2 (en) * 2008-05-20 2017-01-10 Oracle International Corporation Event server using caching
US7818370B2 (en) * 2008-05-20 2010-10-19 Bea Systems, Inc. Event server using clustering
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
CN104932946B (zh) * 2009-07-28 2022-01-25 瑞典爱立信有限公司 用于处理电信网络中的事件的设备和方法
CN102117308B (zh) * 2010-01-06 2012-11-14 卓望数码技术(深圳)有限公司 一种数据处理方法和数据处理系统
US8726147B1 (en) * 2010-03-12 2014-05-13 Symantec Corporation Systems and methods for restoring web parts in content management systems
US8549538B2 (en) 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8868487B2 (en) * 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8677055B2 (en) 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8250234B2 (en) 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US10089711B2 (en) * 2010-09-03 2018-10-02 Adobe Systems Incorporated Reconstructable digital image cache
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8880485B2 (en) * 2011-03-30 2014-11-04 Sap Se Systems and methods to facilitate multi-threaded data retrieval
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US8694961B2 (en) 2012-04-03 2014-04-08 Microsoft Corporation Thread-agile execution of dynamic programming language programs
CN103514112B (zh) * 2012-06-29 2016-11-02 浙江大华技术股份有限公司 一种数据存储方法及系统
CN103197958B (zh) * 2013-04-01 2016-08-10 天脉聚源(北京)传媒科技有限公司 一种数据传输方法及系统与转发器设备
US9892177B2 (en) * 2013-07-11 2018-02-13 Salesforce.Com, Inc. Systems and methods for interacting with external content objects
US9524246B2 (en) * 2014-09-10 2016-12-20 International Business Machines Corporation Resetting memory locks in a transactional memory system
CN106155794B (zh) * 2016-07-21 2019-11-19 浙江大华技术股份有限公司 一种应用于多线程系统中的事件分配方法及装置
US10592307B2 (en) * 2016-12-13 2020-03-17 Salesforce.Com, Inc. Multi user threaded executor
CN107562891A (zh) * 2017-09-05 2018-01-09 荷花科技(北京)有限公司 数据库操作方法及装置
CN107678856B (zh) * 2017-09-20 2022-04-05 苏宁易购集团股份有限公司 一种处理业务实体中增量信息的方法及装置
CN110532067A (zh) * 2018-05-25 2019-12-03 杭州海康威视数字技术股份有限公司 事件处理方法、装置、设备及存储介质
US10445322B1 (en) * 2018-11-29 2019-10-15 Capital One Services, Llc Real-time processing of event-based streaming with NoSQL
CN110109936B (zh) * 2019-05-13 2020-12-25 四川新网银行股份有限公司 一种规避数据库锁等待以及事务合并提交的方法
CN111752911A (zh) * 2020-06-29 2020-10-09 苏州浪潮智能科技有限公司 一种基于Flume的数据传输方法、系统、终端及存储介质
CN112347107B (zh) * 2020-11-11 2024-07-26 Oppo(重庆)智能科技有限公司 数据持久化方法、移动终端及计算机可读存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5632032A (en) * 1994-02-07 1997-05-20 International Business Machines Corporation Cross address space thread control in a multithreaded environment
US5727203A (en) 1995-03-31 1998-03-10 Sun Microsystems, Inc. Methods and apparatus for managing a database in a distributed object operating environment using persistent and transient cache
US5893077A (en) 1995-08-23 1999-04-06 Microsoft Corporation Method and apparatus for generating and collecting a billing event object within an on-line network
US6000011A (en) * 1996-12-09 1999-12-07 International Business Machines Corporation Multi-entry fully associative transition cache
US6049807A (en) * 1997-09-03 2000-04-11 International Business Machines Corporation Technique for maintaining object integrity during modification of a persistent store of objects
US6263404B1 (en) * 1997-11-21 2001-07-17 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6256637B1 (en) 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6499048B1 (en) * 1998-06-30 2002-12-24 Sun Microsystems, Inc. Control of multiple computer processes using a mutual exclusion primitive ordering mechanism
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
US6240479B1 (en) * 1998-07-31 2001-05-29 Motorola, Inc. Method and apparatus for transferring data on a split bus in a data processing system
US6377939B1 (en) 1999-05-04 2002-04-23 Metratech Pipelined method and apparatus for processing communication metering data
JP2001035063A (ja) * 1999-07-15 2001-02-09 Kenwood Corp リジューム機能付きの再生装置
US7188344B1 (en) * 1999-12-21 2007-03-06 Unisys Corporation Architecture for a read/write thread lock
US7007279B2 (en) 2000-04-28 2006-02-28 Fujitsu Limited Apparatus for switching an object managing method and a method thereof
IL139628A0 (en) 2000-11-12 2002-02-10 Eci Telecom Ltd Data mirroring restoration in a distributed system
US20020103815A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation High speed data updates implemented in an information storage and retrieval system
US20020103814A1 (en) 2000-12-12 2002-08-01 Edouard Duvillier High speed, non-log based database recovery technique
US20020073110A1 (en) 2000-12-12 2002-06-13 Edouard Duvillier Version collection technique implemented on an intrinsic versioning information storage and retrieval system
US20020073082A1 (en) 2000-12-12 2002-06-13 Edouard Duvillier System modification processing technique implemented on an information storage and retrieval system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US6567905B2 (en) 2001-01-23 2003-05-20 Gemstone Systems, Inc. Generational garbage collector with persistent object cache

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8140503B2 (en) 2007-10-18 2012-03-20 Nec Corporation Information processing apparatus having process units operable in parallel
JP2013164713A (ja) * 2012-02-10 2013-08-22 Nippon Telegr & Teleph Corp <Ntt> イベント駆動型処理実行装置およびその動作方法
KR101848277B1 (ko) * 2016-08-22 2018-05-28 한양대학교 에리카산학협력단 캐시 데이터 제어 장치 및 방법

Also Published As

Publication number Publication date
US7444329B2 (en) 2008-10-28
CN1517917A (zh) 2004-08-04
US20060265432A1 (en) 2006-11-23
US20040148283A1 (en) 2004-07-29
US7111001B2 (en) 2006-09-19
CN1293501C (zh) 2007-01-03

Similar Documents

Publication Publication Date Title
JP2004227569A (ja) 永続フレームワーク用単一キャッシュによる事象駆動型トランザクション状態の管理
US5414840A (en) Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory
US10803047B2 (en) Accessing data entities
US5574902A (en) Efficient destaging of updated local cache pages for a transaction in a multisystem and multiprocess database management system with a high-speed shared electronic store
US8762333B2 (en) Apparatus and method for read optimized bulk data storage
US7962693B1 (en) Cache management system providing improved page latching methodology
US7254578B2 (en) Concurrency classes for shared file systems
JP3606542B2 (ja) 基礎データの変更がオブジェクトにどのように影響するかの判定方法およびプログラム記憶装置
US8412887B2 (en) Wait-free parallel data cache
US20090183159A1 (en) Managing concurrent transactions using bloom filters
JPH056297A (ja) トランザクシヨン処理方法およびシステム
US8560496B2 (en) Database query across processes with change notification
US20100115203A1 (en) Mutable object caching
JP4126843B2 (ja) データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体
US7051051B1 (en) Recovering from failed operations in a database system
US7647296B2 (en) Method for estimating a first access time of transactions accessing a database object
US20080077612A1 (en) Working with temporal data
JP6402537B2 (ja) 更新処理プログラム、装置、及び方法
JP4289834B2 (ja) データベース管理システム、データベース管理プログラムおよび記録媒体
JP4245282B2 (ja) 書き込み遅延データベース管理方法、装置、プログラム、及び記録媒体
US8688662B2 (en) Copy on access to locked objects
Speer et al. Solving the golden transaction problem for ARIES-based multi-level recovery

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061222

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090804

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090826