JP4842279B2 - データベースサーバによるファイル操作を実行するためのインフラストラクチャ - Google Patents

データベースサーバによるファイル操作を実行するためのインフラストラクチャ Download PDF

Info

Publication number
JP4842279B2
JP4842279B2 JP2007546744A JP2007546744A JP4842279B2 JP 4842279 B2 JP4842279 B2 JP 4842279B2 JP 2007546744 A JP2007546744 A JP 2007546744A JP 2007546744 A JP2007546744 A JP 2007546744A JP 4842279 B2 JP4842279 B2 JP 4842279B2
Authority
JP
Japan
Prior art keywords
file
request
requester
resource
state
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.)
Active
Application number
JP2007546744A
Other languages
English (en)
Other versions
JP2008524707A (ja
JP2008524707A5 (ja
Inventor
ジェーン,ナミット
アガルワル,ニプン
セドラー,エリック
イディキュラ,サム
パンナラ,シャム
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2008524707A publication Critical patent/JP2008524707A/ja
Publication of JP2008524707A5 publication Critical patent/JP2008524707A5/ja
Application granted granted Critical
Publication of JP4842279B2 publication Critical patent/JP4842279B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • 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/99938Concurrency, e.g. lock management in shared database
    • 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/99939Privileged access

Description

発明の分野
この発明は、データベース管理システムにおけるファイル操作の実行に関する。
背景
データは、データベースおよびファイルサーバなどの多くのタイプの格納機構に格納され得る。各々の格納機構は典型的にはその独自のアクセス手段を有する。たとえば、データベース上で操作を実行するためにSQLプロトコルが典型的に使用され、ファイルシステム上で操作を実行するためにNFSプロトコルが典型的に使用される。SQLプロトコルは、データベースに格納されたデータにアクセスし、そのデータを操作するためのANSI規格である。NFSプロトコルは、ネットワーク全体にわたってファイル上でのファイル操作の実行をサポートする分散型ファイルシステムプロトコルである。NFSは、UNIX(登録商標)ホスト間でファイルを共有するための周知の規格である。NFSプロトコルでは、ファイルシステム操作は、特定のファイルを識別する識別子であるファイルハンドルを使用してファイル上で実行される。RFC3010に指定されるNFSの現行バージョン、すなわちバージョン4は、バージョン3以上に、セキュリティの向上および状態保持操作の実行などのさらなる機能性をサポートする。
現在のところ、データベース管理システムは、NFSプロトコルを使用したデータベース内のデータアイテムへのアクセスをサポートしていない。したがって、ユーザがデータにアクセスしたいときには、ユーザは、データにアクセスする適切な態様について判断するためにどのタイプの格納機構がデータを格納しているかを確かめなければならない。たとえば、NFSプロトコルを使用できるかどうかを判断するために、ユーザは、データがデータベースにまたはファイルシステムにリレーショナルに格納されているかどうかを判断しなければならない。多くの状況において、どの格納機構にデータが実際に格納されているかを判断することはユーザにとって厄介なことであろう。
さらに、さまざまな理由のために、できる限り多くの種類のデータを単一の格納機構に格納することが望ましい。たとえば、データを格納するために使用される異なるタイプの格納機構の数を最小限にすることは、格納機構を維持するために必要なリソースの量を低減する傾向がある。さらに、多くの種類のデータをデータベースなどの中心の位置に格納することによって、使い勝手のよさおよびセキュリティが促進する。なぜなら、データが複数の機構に格納されない場合には各々が異なったセキュリティが実現される可能性があるためである。
その結果、データベース管理システム内でファイルシステム操作を実行するためのアプローチが望ましい。このセクションに記載されるアプローチは、追求され得るであろうアプローチであるが、必ずしも以前に考えられたまたは追求されたアプローチではない。したがって、特に指示がない限り、このセクションに記載されるアプローチはいずれもこのセクションにそれらを包含することによってのみ先行技術としての資格を得ると想定されるべきではない。
この発明の実施例は限定としてではなく一例として添付の図面の図に示されており、図
中、同様の参照数字は同様の要素を指す。
詳細な説明
以下の説明では、説明の目的で、この発明の実施例の完全な理解をもたらすために多数の具体的な詳細について説明する。しかしながら、この発明の実施例はこれらの具体的な詳細がない状態で実施され得ることは明白である。他の例では、本明細書に記載されるこの発明の実施例を不必要に曖昧にすることを回避するために、周知の構造および装置はブロック図の形態で示される。
機能の概要
データベースに格納されたデータ上で、状態保持ファイルシステム操作などの状態保持操作を実行するための要求をデータベースサーバが処理できるフレームワークが提示される。「状態保持操作(stateful operation)」とは、(1)セッション内で要求される操作、および(2)そのセッションにおいて以前に実行された動作であったことを何らかの態様で考慮に入れる操作である。ある特定の操作の実行は、状態保持操作の実行に影響を及ぼす可能性がある。たとえば、データベース操作を実行した結果が、状態保持操作をうまく実行するために必要であるかもしれない。NFSを使用して実行された大半のファイルシステム操作は、状態保持操作である。状態保持ファイルシステム操作は、データベースサーバによって実行されると、1つ以上のデータベーストランザクションに及ぶ可能性がある。
実施例では、要求がデータベースシステムにおいて受取られる。この要求はたとえば、NFSプロトコルを使用して状態保持操作を実行するための要求であってもよい。この要求は状態識別データを含む可能性があり、状態識別データは、要求に関連付けられる状態情報を識別するデータである。以下でさらに詳細に記載される状態情報は、任意のセッションにおいてリクエスタによってリソース上で以前に実行されたいかなる動作も記述する情報である。たとえば、いくつかの状態保持操作が異なるセッションにおいてリクエスタによってリソース上で実行される場合、そのリソースについての状態情報は、実行された状態保持操作を反映するリソースの状態を記述するであろう。
状態保持操作がリソース上で実行されると、状態保持操作の実行が以前に実行された他の状態保持操作を反映するように、リソースに関連付けられる状態情報が検索される。要求に関連付けられる状態情報は、要求内に含まれる状態識別データに基づいてデータベースシステム内で検索される。要求は次いで、少なくとも一部には状態情報に基づいて処理される。
この発明の実施例は有利に、ファイル、リレーショナルデータおよびオブジェクト−リレーショナルデータなどのデータベース管理システムによって維持されるいかなるデータにもアクセスするためにデータベース管理システムにおいてファイルシステム操作を処理することを提供する。本明細書に記載されるフレームワークによって、有利に、NFSなどの状態保持プロトコルに一致する要求がデータベースサーバにおいて処理されることができる。この発明の実施例は主にNFSプロトコルを使用して実現される要求の処理に関して説明されるが、任意の状態保持プロトコルまたは状態不保持(stateless)プロトコルを処理するためにフレームワークが使用されてもよい。この発明の実施例は、バージョン4または以後に開発された任意のバージョンを含むNFSプロトコルに一致する要求を処理するために使用され得る。
アーキテクチャの概要
図1は、この発明の実施例に従ってファイルシステム操作を実行するための要求を処理
できるシステム100のブロック図である。システム100は、クライアント110と、データベース管理システム(database management system)(DBMS)120と、通信リンク130とを含む。クライアント110のユーザは、1つ以上のファイルシステム操作の実行を指定する要求をDBMS120に発行できる。説明の目的で、要求がバージョン4などのNFSのバージョンに一致する例が与えられるものとする。
クライアント110は、DBMS120に要求を発行できる任意の媒体または機構によって実現されてもよい。クライアント110は状態保持要求をDBMS120に発行できる。本明細書において使用されるように、「状態保持要求」とは、状態保持操作の実行のための要求である。典型的には、状態保持要求はNFSなどの状態保持プロトコルを使用して発行される。クライアント110の非限定的な例示的な例は、通信リンク130にアクセス可能な装置で実行するアプリケーションを含む。説明を容易にするために図1では1つのクライアントしか示されていないが、システム100は、各々が通信リンク130によってDBMS120と通信する任意の数のクライアント110を含んでもよい。
クライアント110は、複数の要求を同時に発行できる媒体または機構によって実現されてもよい。たとえば、クライアント110は装置で実行するアプリケーションに対応してもよく、このアプリケーションは、各々がDBMS120に要求を伝送できる複数のプロセスで構成されてもよい。したがって、混乱を回避するために、「リクエスタ」という用語はDBMS120に要求を発行する任意の主体(entity)を指すように本明細書において使用される。このように、リクエスタは、クライアント110、クライアント110で実行するプロセス、またはクライアント110によって生成されるプロセスに対応し得る。
DBMS120は、電子データの格納および検索を容易にするソフトウェアシステムである。DBMS120はデータベースサーバ122と、データベース124とからなる。データベースサーバ122は、データベース124に維持されるファイル上で、ファイル操作を実行するための要求などの任意の状態保持要求をデータベースサーバ122が処理できるようにするフレームワークを使用して実現される。
データベースサーバ122は、マルチプロセスのシングルスレッド環境において実現されてもよく、マルチスレッドサーバとしてエミュレートされる。各々が作業を実行できるプロセスのプールがデータベースサーバ122にある。データベースサーバ122が要求を受取ると、データベースサーバ122は、受取られた要求を処理するためにプロセスのプールにおける任意のプロセスを割当てることができる。マルチプロセスのシングルスレッド環境においてデータベースサーバ122を実現することによって、データベースサーバ122は多数のクライアント110をサポートするように大きさを決めることが可能である。
通信リンク130は、クライアント110とDBMS120との間のデータの交換をもたらす任意の媒体または機構によって実現されてもよい。通信リンク130の例は、ローカルエリアネットワーク(Local Area Network)(LAN)、広域ネットワーク(Wide Area Network)(WAN)、イーサネット(登録商標)もしくはインターネットなどのネットワーク、または1つ以上の地上波リンク、衛星リンクまたは無線リンクを含むが、これらに限定されない。
フレームワーク
図2は、この発明の実施例に従うデータベースサーバ122の機能コンポーネントのブロック図である。上で説明したように、データベースサーバ122は、データベース124に維持されるファイル上で状態保持要求をデータベースサーバ122が処理できるよう
にするフレームワーク200を使用して実現される。さらに、同一のフレームワーク200によって、データベースサーバ122はデータベース124に維持されるデータ上で、HTTPまたはFTPプロトコルで実現される要求などの状態不保持要求を処理することが可能であろう。さらに、以下で説明するように、フレームワーク200は、新しい状態不保持プロトコルまたは状態保持プロトコルをサポートするためまたはフレームワーク200によってサポートされる既存のプロトコルに新しい機能性を追加するために、さらなるコンポーネントを含むように構成されてもよい。
データベースサーバ122のフレームワーク200における各コンポーネントについて以下で説明し、その後、「フレームワークを使用したファイル操作の処理」と題されるセクションにおいて、フレームワーク200を使用した例示的な状態保持要求の処理について説明するものとする。
フレームワーク200は、状態保持要求または状態不保持要求が必要とする追加の機能性をもたらす、図2に示されないさらなるコンポーネントで実現されてもよい。たとえば、拡張部234は、フレームワーク200にプラグインされ得るコンポーネントを参照させ、このコンポーネントによって、フレームワーク200は新しい状態不保持プロトコルまたは状態保持プロトコルをサポートでき、またはフレームワーク200によってサポートされる既存のプロトコルに新しい機能性を追加できる。拡張コンポーネント234をフレームワーク200にプラグインするために、適切なときに適切な情報を用いて拡張コンポーネント234を呼び出すようにプロトコルインタープリタ210が構成される。
プロトコルインタープリタ
プロトコルインタープリタ210は、通信リンク130によってDBMS120に送られたパケットを受取る。プロトコルインタープリタ210は、以下に記載するように、通信リンク130によってクライアント110からパケットを受取ることができ、そのパケットを処理できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。プロトコルインタープリタ210は、パケットを受取ると、そのパケットに関連付けられるパケットタイプを識別し、そのパケットタイプのパケットを読取るように構成されるコンポーネントにパケットを送る。たとえば、パケットのヘッダを調べることによって、パケットがNFS要求を含むことをプロトコルインタープリタ210が判断する場合、プロトコルインタープリタ210はパケットをNFSパケットリーダ224に送る。NFS要求を含むパケットがNFSパケットリーダ224によって読取られた後、NFSパケットリーダ224は、パケット内に指定される個々のファイルシステム操作についての情報をプロトコルインタープリタ210に送り返し、さらに処理する。
プロトコルインタープリタ210はルックアップ機構212を含む。ルックアップ機構212は、DBMS120のリクエスタについての状態情報を格納できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。ルックアップ機構は、揮発性記憶装置に状態情報を格納する場合もあれば、状態情報の検索を容易にするB−ツリーおよびハッシュテーブルなどの任意の機構を使用して実現される場合もある。ルックアップ機構212の例示的な実施例は、「状態情報の維持」と題されるセクションにおいて以下でさらに詳細に提示される。
プロトコルインタープリタ210は、プロトコルインタープリタ210によって受取られたパケットによって要求される操作を処理するように構成される。プロトコルインタープリタ210は、受取られたパケットによって要求される操作を実行するように構成される場合もあれば、以下でさらに詳細に説明するように、プロトコルインタープリタ210は、プロトコルインタープリタ210によって受取られたパケットによって要求される操作を実行するためにフレームワーク200の1つ以上のコンポーネントと通信する場合も
ある。
エクスポータ
エクスポータ220は、エクスポート操作を実行できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。エクスポートによって、まるでディレクトリツリーがサーバにある代わりにディレクトリツリーがリクエスタにあるかのようにリクエスタがディレクトリツリーの一部を見ることが可能である。
実施例では、フレームワーク200がエクスポート操作をうまく実行した後、フレームワーク200は、(a)どのディレクトリフォルダがリクエスタにエクスポートされるかを識別する情報、ならびに(b)エクスポートされたディレクトリフォルダへの読取アクセスおよび/または書込アクセスをリクエスタが有しているかどうかを識別する情報をエクスポート操作のリクエスタに伝送する。リクエスタがエクスポート操作を介してディレクトリフォルダへのアクセスを受取ると、リクエスタは、リクエスタがアクセスを有するディレクトリフォルダの、任意の子ディレクトリフォルダを含むすべての内容を見ることができる。
実施例では、エクスポータ220は、(a)どのリクエスタがエクスポートされたディレクトリフォルダであったか、および(b)いずれのエクスポートされたディレクトリフォルダにも関連付けられるアクセス許可についての情報を維持できる。ディレクトリフォルダは、特定のクライアント110にエクスポートされる(たとえば、ディレクトリフォルダを特定のIPアドレスまたはドメイン名にエクスポートする)場合もあれば、1つ以上のクライアントにエクスポートされる場合もあり、たとえばディレクトリフォルダは、ディレクトリフォルダをIPマスクにエクスポートすることによって関連する装置の群にエクスポートされてもよい。
リソースロッカー
リソースロッカー222は、リソースをロックできる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。実施例では、リソースロッカー222は、データベース124に格納されたファイル上でバイト範囲ロッキングを実行するように構成される。
リソース上で実行されるのにロックが必要であるとき、リソースロッカー222はロックを実行する。ファイルベースのロックを付与するための要求が実行される際、リソースロッカー222はルックアップ機構212によって維持される情報を更新できる。ファイルベースのロックについて以下でさらに詳細に説明する。
たとえば、一実施例の場合、プロトコルインタープリタ210は、ファイル上でファイルベースのロックの付与を要求するファイルシステム操作を実行するようにリソースロッカー222に指示してもよい。リソースロッカー222は、ファイルベースのロックが付与され得るかどうか、および要求されたファイルベースのロックが付与され得るかどうかを最初に判断するためにB−ツリーにアクセスでき、次いでリソースロッカー222は、ファイルベースのロックがファイル上に付与されたことを反映するために1つ以上のB−ツリーを更新できる。リソースロッカー222がアクセスし得るまたは更新し得る特定のB−ツリーについて以下でさらに詳細に説明する。
パケットリーダ
フレームワーク200はいくつかのパケットリーダを含む。各パケットリーダは、特定のプロトコルに一致するパケットから情報を読取るように設計される。たとえば、フレームワーク200は、NFSパケットリーダ224と、FTPパケットリーダ226と、H
TTPパケットリーダ228とを含む。
NFSパケットリーダ224は、NFSプロトコルに一致するパケットを読取ることができ、そのパケットを解釈できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。このようなパケットは、1つの操作または多くの操作を要求する場合がある。2つ以上のファイルシステム操作を要求するパケットは、「複合要求」と称される。NFSパケットリーダ224は、パケットに指定された第1の操作を読取り、その操作を識別するデータをプロトコルインタープリタ210に戻すように構成される。プロトコルインタープリタ210はその後、一旦以前の操作が処理されるとNFSパケットリーダ224に別の操作をパケットから読取らせることができる。
FTPパケットリーダ226は、FTP要求を含むパケットを読取ることができ、そのパケットを解釈できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。FTPパケットリーダ226は、FTPパケット内に含まれるFTP操作情報を読取り、そのFTP操作情報を解釈するように構成され、その後、処理のためにFTP操作情報をプロトコルインタープリタ210に通信するように構成される。
HTTPパケットリーダ228は、HTTP要求を含むパケットを読取ることができ、そのパケットを解釈できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。HTTPパケットリーダ226は、HTTPパケット内に含まれるHTTP操作情報を読取り、そのHTTP操作情報を解釈するように構成され、その後、処理のためにHTTP操作情報をプロトコルインタープリタ210に通信するように構成される。
図2は3つの異なるタイプのパケットタイプ、すなわちNFS、FTPおよびHTTPパケットのためのパケットリーダを示しているが、他の実施例はさらなるタイプのパケットのためのさらなるパケットリーダを含んでもよい。この態様では、フレームワークは任意の状態不保持プロトコルまたは状態保持プロトコルを読取ることができるコンポーネントを含んでもよい。
特権ベリファイヤ
特権ベリファイヤ230は、特定のリクエスタが特定のファイルシステム操作を実行するのに十分な許可レベルを有しているかどうかを検証できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。プロトコルインタープリタ210は、プロトコルインタープリタ210がファイルシステム操作を実行するたびに特定のリクエスタが特定のファイルシステム操作を実行するのに十分な許可レベルを有しているかどうかを判断するように特権ベリファイヤ230に指示できる。特定のユーザが特定のファイルシステム操作を実行するのに十分な許可レベルを有しているかどうかの判断について、図3のステップ318を参照して以下でさらに詳細に説明する。
オーソライザ
オーソライザ232は、プロトコルインタープリタ210によって受取られた特定の要求を発行したリクエスタが実際に特定の要求において識別される同一のリクエスタであるかどうかを判断できる任意のソフトウェアまたはハードウェアコンポーネントを使用して実現されてもよい。このように、リクエスタの識別は、要求に指定された任意の操作を実行する前にオーソライザ232によって検証され得る。プロトコルインタープリタ210は、プロトコルインタープリタ210が要求を受取るたびに、プロトコルインタープリタ210によって受取られた特定の要求を発行したリクエスタが実際に特定の要求において識別される同一のリクエスタであるかどうかを判断するようにオーソライザ232に指示できる。特定の要求が特定のクライアント110によって発行されたかどうかの判断につ
いて、ステップ316を参照して以下でさらに詳細に説明する。
状態情報の維持
NFSプロトコルでは、ファイルシステム操作は、「開かれた」がまだ「閉じられていない」ファイル上で実行される。リクエスタは、リクエスタがファイル上で他のファイルシステム操作を実行し得る前に、OPENファイルシステム操作の実行を要求して、ファイルを開く。リクエスタがファイル上ですべての所望のファイルシステム操作を実行した後、リクエスタはCLOSEファイルシステム操作の実行を要求して、ファイルを閉じる。
データベースサーバによって実行されるファイルシステム操作は、1つ以上のデータベーストランザクションに及ぶ可能性がある。その結果、各々がファイルの状態を変更する1つ以上のデータベーストランザクションが、ファイルを開くときとファイルを閉じるときとの間にファイル上で実行され得る。
NFSが状態保持プロトコルであるので、状態保持要求を処理するときにフレームワーク200が状態情報を維持する必要がある。状態情報は、任意のセッションにおいてリクエスタによってリソース上で以前に実行されたいずれの動作も記述する情報である。一実施例によれば、状態情報は、リクエスタが開いた各ファイルごとに維持される。たとえば、リクエスタがファイルAおよびファイルBを開く場合、リクエスタはファイルAについての状態情報の第1の組とファイルBについての状態情報の第2の組に関連付けられるであろう。
状態情報は、リクエスタが(a)ファイルを開くもしくは閉じるとき、または(b)開いたファイル上で新しいロックを得るときにいつでも割当てられるまたは更新される。したがって、リクエスタが(a)ファイルを開くもしくは閉じる、または(b)開いたファイル上で新しいロックを得るときはいつも、ファイル上で実行される状態保持操作を反映するように状態情報が更新される。
リクエスタに関連付けられる状態情報は、ファイルが開かれて以来リクエスタによってファイル上で実行されたすべての状態保持操作を反映する。たとえば、リクエスタが最初にファイルを開くときに、状態情報Aが割当てられてもよい。その後、同一のリクエスタがファイル上でロックを得る場合、状態情報Aは無効になり、新しい状態情報Bが割当てられる。状態情報Bが両方のロックを反映していることおよびファイルがリクエスタによって開かれるという事実に注目されたい。その後、同一のリクエスタがファイル上で第2のロックを得る場合、状態情報Bは無効になり、新しい状態情報Cが割当てられる。状態情報Cが両方のロックを反映していることおよびファイルがリクエスタによって開かれるという事実に注目されたい。リクエスタがファイルを閉じるとき、そのリクエスタについて、すなわちそのファイルについての状態情報はもはや維持される必要がない。
リクエスタ−ファイル間の関係の状態の追跡
状態識別データは、通信の際に参照されるファイルの現在の状態を参照するために、クライアント110とデータベースサーバ122との間で交換される通信に付随し得る。リクエスタがファイルを開くとき、状態識別データがフレームワーク200によって作成される。状態識別データは、リクエスタが開いた特定のファイルに関して特定のリクエスタに関連付けられる状態情報を識別する。
開いたファイルの状態を追跡するために、新しく作成された状態識別データがリクエスタに戻される。たとえば、リクエスタXYZがファイルABCを開くための要求を発行すると想定されたい。フレームワーク200は新しく開かれるファイルABCに関連付けら
れる状態情報を記述する状態識別データを生成し、この状態識別データをリクエスタXYZに戻す。
開いたファイル上でファイルシステム操作を実行するための要求をリクエスタがデータベースサーバ122に伝送するとき、この要求はリクエスタに以前に伝送された任意の状態識別データを含む。たとえば、状態識別データは、ファイルが開かれることに応答してリクエスタに以前に伝送されたかもしれない。この態様で、要求はファイルに関連付けられる状態情報を識別する。たとえば、リクエスタXYZがファイルABC上でロックのための要求を伝送する場合、この要求は、データベースサーバ122がファイルABC上でOPENファイルシステム操作を実行することに応答してリクエスタXYZに以前に送られた状態識別情報を含むことになる。フレームワーク200は、ルックアップ機構212を使用して対応する状態情報を検索するために、要求に含まれる状態識別を使用してもよい。
したがって、上述のように、フレームワーク200はある特定の状態保持ファイルシステム操作の実行に応答して状態識別データを生成し、生成された状態識別データはファイルシステム操作のリクエスタに伝送される。その後、リクエスタは、要求の中に状態識別データを含むことによって同一ファイル上で追加の状態保持ファイルシステム操作を実行でき、これによって、フレームワーク200は状態識別データを使用してファイルについての状態情報を検索することが可能である。
ファイルシステム操作が開いたファイル上で実行されると、ファイルに関連付けられる状態情報はファイルの新しい操作状態を反映するように更新される。更新された状態情報を参照するために新しい状態識別データが作成される。その後、フレームワーク200はこの新しい状態識別データをリクエスタに伝送する。このように、状態識別データの1つの組だけがリクエスタとフレームワーク200との間で交換される。フレームワーク200から伝送された状態識別データは、フレームワークが状態保持ファイルシステム操作をうまく実行した後、状態保持ファイルシステム操作の対象であったリソースに関連付けられる最も最近の状態情報を識別する。
次のセクションにおいて説明するように、フレームワーク200は、ルックアップ機構212に状態情報を格納でき、状態識別データを使用して、ルックアップ機構212に格納された状態情報を検索できる。
状態情報の維持
一実施例によれば、状態情報はルックアップ機構212を使用して維持される。一実施例では、ルックアップ機構212は複数のB−ツリーを使用して実現される。複数のB−ツリーは、状態保持ファイルシステム操作の要求を処理する際に使用される状態情報を格納する。たとえば、複数のB−ツリーはリクエスタデータ、ファイルデータおよびロックデータを格納してもよい。リクエスタデータとは、ファイルシステム操作を発行するために登録されるリクエスタを識別するデータである。ファイルデータとは、どのファイルがどのリクエスタによって開かれたかを識別するデータである。ロックデータとは、どのファイル上のどのロックがどのリクエスタに付与されたかを識別するデータである。
一実施例では、複数のB−ツリーは、「client B−ツリー」と、「client_exists B−ツリー」と、「requestor B−ツリー」と、「open_files B−ツリー」と、「opens B−ツリー」と、「locks_requestor B−ツリー」と、「granted_locks B−ツリー」とを含む。これらのB−ツリーの各々は、状態情報を格納でき、以下でさらに詳細に説明するものとする。
この発明の他の実施例は、B−ツリーの異なる組を使用してルックアップ機構212を実現してもよい。たとえば、上述のいくつかのB−ツリー、たとえばclient_exists B−ツリーは、他のB−ツリーにも格納される情報を格納するため、上述のすべてのB−ツリーがルックアップ機構212のある特定の実現例に必要ではないかもしれない。しかしながら、第1の状況では第1のキーを使用してより効率的に情報にアクセスでき、第2の状況では第2のキーを使用してより効率的に情報にアクセスできるので、2つ以上のB−ツリーに同一のまたは同様の情報を格納することが有利であろう。
この発明の他の実施例では、ルックアップ機構212は複数のB−ツリーの代わりに複数のハッシュテーブルを使用して実現されてもよい。ルックアップ機構212を実現する複数のハッシュテーブルは、以下に記載されるものと同様の情報を格納する。ルックアップ機構212を実現するために他の機構もこの発明の他の実施例によって利用されてもよい。
client B−ツリー
client B−ツリーとは、クライアントについての情報を維持するB−ツリーである。フレームワーク200に登録した各クライアント110は、client B−ツリー内での検索項目に反映されることになる。以下でさらに詳細に説明するように、クライアント110はクライアント識別子を確立するための要求を発行することによってフレームワーク200に登録する。client B−ツリーのキーは、データベースサーバによってクライアントに以前に割当てられたクライアント識別子である。クライアント識別子は、フレームワーク200に登録された特定のクライアント110を一意に識別する。client B−ツリーの各ノードは、クライアント識別子およびクライアントのネットワークアドレスなどのクライアントによって与えられる識別子を含む特定のクライアントについての情報を格納する。
client_exists B−ツリー
client B−ツリーと同様に、client_exists B−ツリーはクライアントについての情報を維持する。client B−ツリーおよびclient_exists B−ツリーは両方、クライアントについての情報を維持するが、client−exists B−ツリーのキーはクライアントによって与えられる識別子である。クライアントによって与えられる識別子はたとえばクライアントのネットワークアドレスであってもよい。
client_exists B−ツリーは、クライアントによって与えられる識別子に基づいて、特定のクライアント110がフレームワーク200に登録したかどうかを判断するために使用され得る。client_exists B−ツリーの各検索項目も、クライアント識別子およびクライアントによって与えられる識別子を含む特定のクライアントについての情報を格納する。
requestor B−ツリー
requestor B−ツリーとは、リクエスタについての情報を維持するB−ツリーである。requestor B−ツリーのキーは、リクエスタに関連付けられるクライアント識別子、およびリクエスタを一意に識別するリクエスタ識別子の両方を反映する。requestor B−ツリーは、特定のクライアント110に関連付けられるすべてのリクエスタを判断するために使用されることができ、OPENファイルシステム操作の処理中または操作不能になったクライアントを回復させるときに必要とされるかもしれない。
requestor B−ツリーの各検索項目はリクエスタについての情報を格納する。たとえば、特定のリクエスタに対応するrequestor B−ツリーの検索項目は、どのクライアントがリクエスタに関連付けられるか、いつリクエスタからの最後の通信が受取られたか、どの
ファイルをリクエスタが開いたか、およびどのような状態情報がリクエスタに関連付けられるかについての情報を格納してもよい。
open_files B−ツリー
open_files B−ツリーとは、開かれたファイルについての情報を維持するB−ツリーである。open_files B−ツリーのキーはファイルのファイルハンドルである。open_files B−ツリーは、特定のファイル上でファイルシステム操作を実行することが可能であるかどうかを判断するために使用され得る。open_files B−ツリーの各検索項目は開いたファイルについての情報を格納できる。このような情報はたとえば、開いたファイル上のファイルベースのロックの数、開いたファイル上のファイルベースのロックのタイプ、どのような状態識別データが、開いたファイルに関連付けられる状態情報を識別するか、開いたファイルについてのオブジェクト識別子を含んでもよい。
opens B−ツリー
opens B−ツリーとは、開かれたファイルについての情報を維持するB−ツリーである。opens B−ツリーのキーは状態識別データである。opens B−ツリーを横断することによって、opens B−ツリーへのキーとして使用される状態識別データによって識別された状態情報に関連付けられる、開いたファイルについての情報を位置付けることができる。
たとえば、クライアントが特定のファイルを開いたと想定されたい。クライアントについて維持される状態情報は、クライアントが特定のファイルを開いたことを示すことになる。状態情報は状態識別データの組に割当てられることになる。状態識別データは、opens B−ツリーを横断して、特定のファイルが開いていることを示す検索項目を見つけるために使用され得る。
opens B−ツリーの各検索項目は、開いたファイルに関連付けられる状態情報を識別する状態識別データ、開いているファイルを開いたリクエスタ、ファイルが読取または書込のために開かれたのかどうか、開いたファイルが修正されたかどうか、および開いているファイルを開いたリクエスタ以外の他のリクエスタに対して読取または書込が拒否されたかどうかなどの開いたファイルについての情報を格納する。
ファイルを開くために、状態識別データが生成されて、開いたファイルを識別する。状態識別データは、(a)ファイルを開くように要求したリクエスタに伝送され、(b)ファイルが開かれたことを反映するように項目をopens B−ツリーに追加するために使用される。
locks_requestor B−ツリー
locks_requestor B−ツリーとは、ロックリクエスタについての情報を維持するB−ツリーである。locks_requestors B−ツリーへのキーは状態識別データである。locks B−ツリーの各検索項目は、クライアント識別子、リクエスタ識別子およびロックオーナー識別子などのロックのリクエスタについての情報を含む。ロックオーナー識別子は、ロックを付与される特定のリクエスタを一意に識別する。クライアント識別子およびリクエスタ識別子はフレームワーク200によって割当てられ、ロックオーナー識別子はリクエスタによって供給される。
granted_locks B−ツリー
granted_locks B−ツリーとは、付与されたロックについての情報を維持するB−ツリーである。granted_locks B−ツリーへのキーはファイルハンドルである。granted_locks B−ツリーは、どのファイルベースのロックが、もしあれば、特定のファイル上に付与されたかをすばやく判断するために使用され得る。
プロトコルインタープリタ210が特定のロックの付与を要求するファイルシステム操作を実行するようにリソースロッカー222に指示すると、リソースロッカー222はルックアップ機構212の1つ以上のB−ツリーにアクセスし得る。例示するために、プロトコルインタープリタ210がファイル上に特定のロックを付与するための要求を受取り、その後、プロトコルインタープリタ210がファイルシステム操作を処理するようにリソースロッカー222に指示すると想定されたい。リソースロッカー222は最初に、granted locks B−ツリーにアクセスすることによって矛盾するロックが既にファイル上に付与されたかどうかを判断できる。リソースロッカー222は、ファイルシステム操作によって識別されるファイルのファイルハンドルを使用して、granted locks B−ツリーを横断できる。granted locks B−ツリーにおける項目がファイルハンドルのために存在する場合、その項目を考査することによって、リソースロッカー222は矛盾するロックが既にファイル上に付与されたかどうかを知らされることになる。
矛盾するロックがまだファイル上に付与されていないことをリソースロッカー222が判断する場合、リソースロッカー222は、(a)リソースの新しい状態を識別するために新しい状態識別データを生成でき、(b)要求されたロックの付与を反映するように項目をgranted_locks B−ツリーに追加できる。リソースロッカー222は、リソースについての新しく生成された新しい状態識別データを使用して新しい項目をgranted_locks B−ツリーに追加でき、その後、以前の状態識別データが参照したlocks B−ツリーにおける以前の項目を削除できる。locks B−ツリーにおける新しい項目はリソース上で実行されたすべての以前の状態保持操作への参照を含むので、以前の状態識別データが参照した項目を格納する必要がない。
フレームワークを使用したファイル操作の処理
図3は、この発明の実施例に従うファイルシステム操作を処理するためのステップを示すフローチャートである。図3のステップを実行することによって、状態保持NFS操作などの状態保持操作がDBMS120によって実行されることができる。
概して、フレームワークはフレームワークが実行する操作についての状態情報を維持する。状態保持操作を実行すると、フレームワークは操作の状態に対応する状態識別データを渡してリクエスタに戻す。状態保持操作のための後続の要求の際に、リクエスタは状態識別データをフレームワークに送り返す。フレームワークは次いで、状態識別データをキーとして使用して、その後続の要求の際に操作に該当する状態情報を識別する。
フレームワークによって生成されるクライアント識別子の獲得
を参照して、最初にステップ310において、リクエスタのためのクライアント識別子を確立するための第1の要求がデータベースサーバにおいて受取られる。ステップ310は、通信リンク130によってクライアント110によって送られた、第1の要求を含むパケットを受取るプロトコルインタープリタ210によって実行され得る。
プロトコルインタープリタ210は、さまざまなパケットタイプのパケットを受取ることができる。プロトコルインタープリタ210は受取られたパケットのパケットタイプを識別するように構成されるが、プロトコルインタープリタ210は各々のパケットタイプを読取るように構成される必要はない。プロトコルインタープリタ210は、たとえばパケットのヘッダ内に含まれる情報を調べることによって、受取られたパケットのパケットタイプを判断できる。一旦プロトコルインタープリタ210が受取られたパケットのパケットタイプを判断すると、プロトコルインタープリタ210はそのパケットタイプのパケットの読取を担当するコンポーネントにパケットを送る。
説明の目的で、ステップ310において受取られたパケットはリクエスタのためのクライアント識別子を確立するための要求を含むNFSパケットであると想定される。クライアント識別子の確立はNFS操作である。これらの状況下で、プロトコルインタープリタはNFSパケットリーダ224にパケットを送り、パケットを読取ることになる。NFSパケットリーダ224はパケットを読取り、そのパケットを解釈し、要求されるファイルシステム操作を識別する(すなわち、クライアント識別子を確立する)データをプロトコルインタープリタ210に送り返す。
ファイルシステム操作を識別するデータを受取った後、プロトコルインタープリタ210はファイルシステム操作を処理する。この例では、プロトコルインタープリタ210はクライアント識別子を確立するための要求を処理する。要求の処理の一部として、プロトコルインタープリタ210はたとえば、(a)クライアント識別子がリクエスタのためにまだ確立されているかどうかを判断するため、および(b)クライアント識別子がリクエスタのためにまだ確立されていない場合には、どのようなクライアント識別子がリクエスタに関連付けられるべきであるかを判断するためにルックアップ機構212を調べてもよい。
実施例では、データベースサーバは、クライアント識別子が特定のリクエスタのために確立されたどうかを判断するために、(クライアントのネットワークアドレスなどの)クライアントによって与えられる識別子に基づいてclient_exists B−ツリーを横断できる。クライアント識別子がリクエスタのために確立されていない場合、データベースサーバはクライアントのためのクライアント識別子を生成できる。クライアントのためのクライアント識別子を生成した後、データベースサーバは、リクエスタに割当てられた新しいクライアント識別子についての情報を格納するために検索項目をclient B−ツリーおよびclient_exists B−ツリーに追加できる。
ステップ310を実行した後、処理はステップ312に進む。ステップ312では、ステップ310において上で確立されたクライアント識別子がリクエスタに伝送される。ステップ312は、クライアント識別子を含む通信を通信リンク130によってリクエスタに伝送するプロトコルインタープリタ210によって実行され得る。実施例では、リクエスタは、クライアント識別子を検証するためにデータベースサーバ122とさらなる通信を交換することによって、受取られたクライアント識別子をデータベースサーバ122を用いて検証し得る。ステップ312を実行した後、処理はステップ314に進む。
複合要求の受取り
ステップ314では、ファイルシステム操作を実行するための第2の要求が受取られる。ステップ314は、通信リンク130によってクライアント110によって送られた、第2の要求を含むパケットを受取るプロトコルインタープリタ210によって実行され得る。第2の要求はクライアント識別子を含む。
複合要求の処理を示すために、ステップ314において受取られた第2の要求が2つ以上のファイルシステム操作を含む複合要求であると想定されたい。複合要求に指定されたファイルシステム操作は、フレームワーク200によってシーケンシャルに処理される。
状態保持ファイルシステム操作要求の処理を示すために、第2の要求に指定された第1のファイルシステム操作が、リクエスタによって以前に開かれたファイル上のファイルベースのロックのための要求であるとさらに想定されたい。フレームワーク200がファイルを開いた後、フレームワーク200は、(a)開かれたファイルに関連付けられる状態情報を識別する状態識別データを生成し、(b)その状態識別データをリクエスタに伝送する。したがって、ステップ314において受取られた要求が開いたファイル上でファイ
ルシステム操作を実行するための要求である場合、ステップ314において受取られた要求は、リクエスタに以前に送られた状態識別データを含む。この例では、状態識別データによって、フレームワーク200はファイルベースのロックのための要求の対象である、ファイルに関連付けられる状態情報を参照できることになる。
ステップ314の要求がファイルシステム操作要求を含むことをプロトコルインタープリタ210が判断した後、プロトコルインタープリタ210は、パケットを読取るために、ステップ314の要求を含むパケットをNFSパケットリーダ224に送ることができる。その後、NFSパケットリーダ224は、パケットに指定された(以下で「現在の」ファイルシステム操作と称される)第1の未処理のファイルシステム操作についての情報をプロトコルインタープリタ210に伝送する。以下でさらに詳細に記載するように、現在のファイルシステム操作が処理された後、フレームワーク200はパケットに指定されたさらなる未処理のファイルシステム操作を処理することになる。
要求の、セッションへの割当て
一旦プロトコルインタープリタ210が複合要求に指定された現在のファイルシステム操作についての情報をNFSパケットリーダ224から受取ると、プロトコルインタープリタ210は現在のファイルシステム操作をデータベースセッションに割当てる。データベースセッションのプールから選択され得る割当てられたデータベースセッションは、複合要求内に含まれるファイルシステム操作をデータベースサーバが処理することになるセッションである。状態情報がセッションとは別個に維持される(上で説明したように、状態情報はルックアップ機構212に維持される)ので、現在のファイルシステム操作をサービスするために任意のセッションがデータベースセッションのプールから選択されてもよい。ステップ314を実行した後、処理はステップ316に進む。
クライアントの認証
ステップ316では、ステップ314において受取られた要求が、要求内に含まれるクライアント識別子によって識別されたクライアントによって発行されたかどうかについて判断がなされる。実施例では、要求が受取られるたびに、リクエスタの識別を確認するために要求を認証する。ステップ316は、オーソライザ232に要求を認証させるためにオーソライザ232と通信するプロトコルインタープリタ210によって実行され得る。オーソライザ232は、要求内に含まれるクライアント識別子を認証プロセスの際に使用できる。オーソライザ232がステップ314において受取られた要求を認証した後、オーソライザ232は認証プロセスの結果をプロトコルインタープリタ210に通信する。オーソライザ232は、ケルベロス(Kerberos)、LIPKEYおよびSPKM−3を含む標準的な認証ライブラリならびにプロトコルを使用してリクエスタを認証してもよい。
ステップ314において受取られた要求がオーソライザ232によって認証されない場合、プロトコルインタープリタ210は、(ステップ314において受取られた)第2の要求を送ったリクエスタに通信を送って、第2の要求が認証されなかったことをリクエスタに知らせる。一旦第2の要求が認証されると、処理はステップ318に進む。
要求された操作が許可されるかどうかの判断
ステップ318において、リクエスタが現在のファイルシステム操作を実行するのに十分な許可レベルを有しているかどうかについて判断がなされる。ステップ318は、リクエスタが現在のファイルシステム操作を実行するのに十分な許可レベルを有しているかどうかを特権ベリファイヤ230に検証させるために特権ベリファイヤ230と通信するプロトコルインタープリタ210によって実行され得る。
実施例では、リクエスタが各リクエスタごとにアクセス制御リストを使用して指定され
たファイルシステム操作を実行するのに十分な許可レベルを有しているかどうかを特権ベリファイヤ230が判断する。特権ベリファイヤ230は、各リクエスタごとにアクセス制御リストを維持する。各々のアクセス制御リストは、アクセス制御項目(access control entries)(ACEs)のリストを含む。各ACEは、リクエスタが特定の特権を付与されるか、または拒否されるかを識別する。
例示するために、リクエスタ1234が特権Aおよび特権Bを必要とするファイルシステム操作を実行するための要求を発行したと想定されたい。特権ベリファイヤ230は、リクエスタ1234のためのACEのリストを維持する。特権ベリファイヤ230は、アクセス制御リストに指定されたACEをシーケンシャルに処理する。リクエスタ1234のためのアクセス制御リストが、リクエスタ1234が許可Aを付与されたことを示した第1のACEと、リクエスタ1234が許可Bを付与されたことを示した第2のACEと、リクエスタ1234が許可Aを拒否されたことを示した第3のACEとを含んでいた場合、特権ベリファイヤ230は、リクエスタ1234が要求されたファイルシステム操作を実行するのに十分な許可レベルを有していると判断することになる。なぜなら、判断がなされ得るまで特権ベリファイヤ230はアクセス制御リストにおけるACEをシーケンシャルに処理することになるためである。したがって、一旦特権ベリファイヤ230がリクエスタ1234のためのアクセス制御リストにおける第2のACEを読取ると、特権ベリファイヤ230は、リクエスタ1234が要求されたファイルシステム操作を実行するのに十分な許可レベルを有しているかどうかについて判断でき、特権ベリファイヤ230はアクセス制御リストの残りを読取ることはない。ステップ318を実行した後、処理はステップ320に進む。
適切な状態情報の位置付け
ステップ320では、現在のファイルシステム操作の実行が状態情報を必要とする場合、第2の要求内に含まれる状態識別データに基づいて適切な状態情報が検索される。状態識別データは以前に割当てられ、リクエスタに通信された可能性がある。たとえば、リクエスタは以前にファイルを開いたかもしれず、または以前にファイル上にロックを付与したかもしれない。ステップ320において検索される状態情報は、要求が複合要求である場合、現在のファイルシステム操作に関連付けられてもよい。ステップ320は、ルックアップ機構212を使用して状態情報を検索するプロトコルインタープリタ210によって実行され得る。ステップ320において検索された状態情報は、現在のファイルシステム操作を実行するのに必要な任意の状態情報を含む。ステップ320を処理した後、処理はステップ322に進む。
要求されたファイルシステム操作の実行
ステップ322では、現在のファイルシステム操作が、適切な状態情報に基づいて、選択されたデータベースセッション内で処理される。一実施例では、ステップ322はプロトコルインタープリタ210自体によって実行されてもよい。別の実施例では、プロトコルインタープリタ210は、フレームワーク200の他のコンポーネントに現在のファイルシステム操作を実行させるために他のコンポーネントと通信してもよい。現在のファイルシステム操作が処理された後、処理はステップ324に進む。
状態情報の更新
ステップ322では、ファイルシステム操作がセッションにおいて実行される。セッションによって使用される状態は、ファイルシステム操作の実行によって変わる。この例では、そのセッションの状態を表わす状態情報は「更新された状態情報」と称されるものとする。更新された状態情報は、現在のファイルシステム操作の処理から生じた状態の変更を反映する。たとえば、更新された状態情報は、ファイルシステム操作の対象であるファイルが開かれたかどうか、およびファイル上に任意のロックが付与されたかどうかを反映
する。したがって、現在のファイルシステム操作がファイルに対して実行された後、更新された状態情報はファイルの現在の状態を反映する。
ステップ324では、現在のファイルシステム操作に関連付けられる、更新された状態情報を反映するように、ルックアップ機構212内に格納された情報が更新される。実施例では、ルックアップ機構212を構成する1つ以上のB−ツリーがセッションの新しい状態を示すように更新される。ルックアップ機構212を構成するB−ツリーは、(a)更新された状態情報を識別するために新しい状態識別データを生成することによって、および(b)更新された状態情報を反映するように項目をルックアップ機構212の適切なB−ツリーに更新または追加することによって更新され得る。
たとえば、ステップ322では、ステップ322において処理された現在のファイルシステム操作が特定のファイルの最初の100バイト上でファイルベースのロックを実行するための操作であったと想定されたい。リソースロッカー222は最初に、granted locks B−ツリーにアクセスすることによって矛盾するロックがファイル上に既に付与されたかどうかを判断できる。リソースロッカー222は、現在のファイルシステム操作において識別されたファイルのファイルハンドルを使用して、granted locks B−ツリーを横断できる。granted locks B−ツリーにおける項目がファイルハンドルのために存在する場合、その項目を考査することによって、リソースロッカー222は矛盾するロックがファイル上に既に付与されたかどうかを知らされることになる。
矛盾するロックがファイル上にまだ付与されていないことをリソースロッカー222が判断する場合、リソースロッカー222は、(a)リソースの新しい状態を識別するために新しい状態識別データを生成し、(b)要求されたロックの付与を反映するように項目をgranted locks B−ツリーに追加する。具体的には、リソースロッカー222は、リソースのための新しく生成された新しい状態識別データを使用して新しい項目をgranted_locks B−ツリーに追加でき、その後、以前の状態識別データが参照したlocks B−ツリーにおける以前の項目を削除できる。granted_locks B−ツリーにおける新しい項目は、リソース上に付与された任意の以前のロックに加えて、ファイルの最初の100バイト上に付与されたファイルベースのロックへの参照を含むので、以前の状態識別データが参照した項目を格納する必要がない。
ステップ324を実行した後、処理はステップ326に進む。
複合要求に指定された操作を介する反復
各要求は、実行されるべき1つ以上のファイルシステム操作を指定する複合要求であってもよい。ステップ326では、ステップ314において受取られた要求が複合要求であり、複合要求に指定されたさらなる未処理のファイルシステム操作がある場合、処理はステップ318に進み、ステップ314の第2の要求に指定された次の未処理のファイルシステム操作が「現在のファイルシステム操作」になる。この態様で、複合要求に指定された各々のファイルシステム操作はフレームワーク200によってシーケンシャルに処理される。
ステップ314の第2の要求に指定されたすべてのファイルシステム操作が処理された後、処理はステップ328に進む。
結果および改訂された状態識別子の、リクエスタへの提供
ステップ328では、ステップ314の要求に指定されたすべてのファイルシステム操作を実行した結果が通信でリクエスタに伝送される。通信は、うまく実行されたファイルシステム操作の対象である特定のリソースに割当てられた状態情報を識別する任意の状態識別データを含んでもよい。ステップ328の実行は、状態保持ファイルシステム操作の
実行に応答して生成される任意の状態識別データとともに、複合要求の各々のファイルシステム操作を処理した結果をリクエスタに送るプロトコルインタープリタ210によって実行され得る。たとえば、リクエスタが以前に開いたファイル上の特定の範囲のバイトに読取−書込ロックが付与されることをリクエスタが要求した場合、プロトコルインタープリタ210は、リソースの新しい状態を識別する新しい状態識別データを含む、すなわち、特定のファイル上の特定の範囲のバイトに読取−書込ロックが付与された通信をリクエスタに送ることによってステップ328を実行してもよい。なお、新しい状態識別情報は、状態不保持ファイルシステム操作のうまくいった処理に応答するのではなく、状態保持ファイルシステム操作のうまくいった処理に応答してリクエスタに伝送される。
NFSプロトコルでは、複合要求に指定された複数のファイルシステム操作を処理した結果が単一の通信でリクエスタに伝送され得る。したがって、ステップ328においてリクエスタに伝送された状態識別データは、複合要求に指定された各々のうまく実行された状態保持ファイルシステム操作ごとに状態識別情報を含む通信によって単一の通信で送られることができる。
フレームワーク200が複合要求における特定のファイルシステム操作を処理できない場合、単一の通信がリクエスタに伝送される。通信は、(a)任意の新しい状態識別情報を含む、処理された複合要求に指定されたファイルシステム操作を処理した結果、および(b)どのファイルシステム操作が実行できない可能性があるかを示す情報を記述する情報を含む。
フレームワークを使用した状態不保持トランザクションの処理
フレームワーク200は、状態不保持ファイルシステム操作または状態不保持プロトコルに一致する要求などの状態不保持要求も処理できる。プロトコルインタープリタ210が状態不保持要求を含むパケットを受取ると、プロトコルインタープリタ210はパケットを読取りかつ解釈するためにパケットをコンポーネントに伝送できる。たとえば、プロトコルインタープリタ210はFTP要求を含むパケットをFTPパケットリーダ226に送り、プロトコルインタープリタ210はHTTP要求を含むパケットをHTTPパケットリーダ228に送る。
状態不保持要求を読取りかつ解釈した後、FTPパケットリーダ226およびHTTPパケットリーダ228は、状態不保持要求を識別する情報をプロトコルインタープリタ210に伝送する。プロトコルインタープリタ210は、次に、状態不保持要求を実行する場合もあれば、状態不保持要求を実行するためにフレームワーク210の別のコンポーネントと通信する場合もあり、たとえばリソースをロックするのにリソースロッカー222が必要であるかもしれない。要求が状態不保持であるので、一旦要求がうまく実行されると、状態情報を要求に割当てる必要がない。
ファイルシステム操作とデータベーストランザクションとの間の関係
クライアントがファイルに書込みたいとき、クライアントはOPENファイルシステム操作、次いで複数の書込ファイルシステム操作、次いでCLOSEファイルシステム操作の実行を要求し得る。このセクションの目的のために、単一のファイルシステム操作とは、OPENファイルシステム操作から始まって対応するCLOSEファイルシステム操作までの複数のNFS操作を指す。単一のファイルシステム操作を実行するために、1つ以上のデータベーストランザクションが実行されるようにするのにデータベースサーバ122が必要であるかもしれない。1つ以上のデータベーストランザクションの各々は、ファイルシステム操作が実行される前にコミットされる。したがって、特定のデータベーストランザクションによってデータベース124に加えられる変更は、ファイルシステム操作の実行がうまくいくものであるかどうかがわかる前にコミットされる。
したがって、次のいくつかのセクションにおいて以下でさらに詳細に説明するように、リソースを見たいリクエスタは、(a)任意のコミットされたデータベーストランザクションを現在のところ反映しているリソースのバージョン、または(b)完了したファイルシステム操作のみを反映し、まだ完了していないファイルシステム操作に対応する任意のコミットされたデータベーストランザクションを反映しないリソースのバージョンのいずれかを見ることを予期するであろう。
オープンコミットされた変更
リクエスタは同一のリソース上で独立してOPENコマンドおよびCLOSEコマンドを発行できる。したがって、たとえCLOSEコマンドが1つのリクエスタに対してファイルを閉じる場合であっても、ファイルはすべてのリクエスタに対して依然として閉じられない可能性がある。「最後のクローズ」という用語は、結果的にすべてのリクエスタに対してファイルが閉じられることになるCLOSEファイルシステム操作を指す。したがって、1つ以上のリクエスタによって現在開かれているいずれのリソースも最後のクローズをリソース上で実行させていない。
各々がファイルの状態を変更する複数のデータベーストランザクションは、ファイルが開かれたときと最後のクローズのときとの間に実行され得る。ファイル上で実行される変更は、ファイル上での最後のクローズが実行される前にコミットされ得る。(1)データベースにおいてコミットされたが、(2)最後のクローズをもたなかったファイルを伴う変更が、本明細書において「オープンコミットされた変更」と称される。
一貫性のないクライアント
最後のクローズがリソース上で実行されておらず、リクエスタがリソースを得るための要求を送るとき、リクエスタが受取るべきリソースの状態は、リクエスタに関連付けられるクライアントのタイプに依存する。「一貫性のないクライアント」とは、リソースの「現在の状態」を見ることを予期するクライアントである。この文脈では、リソースの現在の状態は、リソースに加えられる任意のオープンコミットされた変更を含むが、リソースに加えられる任意のコミットされない変更を含まない。
たとえば、リソースが最初に開かれて以来2つのデータベースのコミットされたトランザクションがリソースの状態を変更しており、最後のクローズがリソース上で実行されていない場合、リソースのための要求を発行する一貫性のないクライアントは、2つのデータベーストランザクションによって加えられる変更を反映するリソースの状態を見ることを予期する。NFS、FTPまたはHTTPプロトコルを使用してDBMS120にアクセスするクライアントは、一貫性のないクライアントの一例である。一貫性のないクライアントに関連付けられるリクエスタは一貫性のないリクエスタであり、すなわち、リクエスタはリソースの現在の状態を見ることを予期することになる。
一貫性のあるクライアント
一貫性のあるクライアントとは、任意のオープンコミットされた変更を見ることを許されないクライアントである。むしろ、一貫性のあるクライアントは、(a)リソースが開かれたが閉じられていない場合にリソースが開かれる前、または(b)最後のクローズがリソース上で実行された後のいずれかにリソースに加えられたコミットされた変更のみを見る。たとえば、リソースが開かれたが、最後のクローズがリソース上で実行されていないと想定されたい。リソースへのアクセスを要求する一貫性のあるクライアントは、OPEN操作の実行の直前にリソースの状態を見ることを予期する。
したがって、リソースが開かれ、最後のクローズが実行されていないとき以来2つのコ
ミットされたデータベーストランザクションがリソースの状態を変更した場合、リソースのための要求を発行する一貫性のあるクライアントは、2つのトランザクションによって加えられる変更を反映しないリソースの状態を見ることを予期する。説明を容易にするために、一貫性のあるクライアントが見なければならないリソースの状態は、リソースの「クローズコミットされた」バージョンと称されるものとする。
SQLプロトコルを使用してDBMS120にアクセスするクライアントは、一貫性のあるクライアントの一例である。一貫性のあるクライアントに関連付けられるいずれのリクエスタも一貫性のあるリクエスタであり、すなわち、リクエスタはクローズコミットされた状態でリソースの状態を見ることを予期することになる。
さらに例示するために、以下のファイルシステム操作および時点が以下の順序で起こる。
(1) 時間t1
(2) リクエスタ1がファイルf1を開く
(3) リクエスタ1が変更をファイルf1にコミットする
(4) 時間t2
(5) リクエスタ2がファイルf1を開く
(6) リクエスタ2が変更をファイルf1にコミットする
(7) 時間t3
(8) リクエスタ1がファイルf1を閉じる
(9) 時間t4
(10) リクエスタ2がファイルf1を閉じる
(11) 時間t5
時間t3において、ファイルf1の一貫性のあるバージョンは時間t1におけるファイルであり、ファイルの一貫性のないバージョンは時間t3におけるファイルである。時間t4において、ファイルf1の一貫性のあるバージョンは時間t1におけるファイルであり、ファイルの一貫性のないバージョンは時間t4におけるファイルである。時間t5において、ファイルf1の一貫性のあるバージョンは時間t5におけるファイルであり、ファイルの一貫性のないバージョンは時間t5におけるファイルである。一貫性のあるクライアントがリソースの以前の状態を見ることを予期するので、その状態は最後のクローズがリソース上で実行されるまで保存されなければならない。
クローズコミットされたバージョンの再構築
フレームワーク200が一貫性のあるリクエスタおよび一貫性のないリクエスタをサポートするために、フレームワーク200は異なるタイプのロック、すなわちデータベースロックおよびファイルベースのロックを利用する。データベースロックとはデータベース操作の実行に応答して得られるロックであり、データベース操作がうまく完了した(コミットした)ときにデータベースロックは解除される。ファイルベースのロックとはOPENファイルシステム操作の実行に応答して得られるロックであり、CLOSEファイルシステム操作が実行されるときにファイルベースのロックは解除される。
図4は、この発明の実施例に従うデータベースロックおよびファイルベースのロックを使用する機能ステップを示すフローチャートである。ステップ410では、リクエスタは特定のリソースを伴う操作を要求する。ステップ410は、通信リンク130によってデータベースサーバ122に要求を送るクライアント110によって実行され得る。ステップ410を実行した後、処理はステップ412に進む。
ステップ412では、リクエスタのリクエスタタイプについて判断がなされる。ステッ
プ412はデータベースサーバ122によって実行され得る。リクエスタタイプに基づいて、データベースサーバ122は特定のリソースのどのバージョンをリクエスタに送るかを判断する。リクエスタが一貫性のないリクエスタである場合、データベースサーバ122は特定のリソースの現在のバージョンを送る。しかしながら、リクエスタが一貫性のあるリクエスタである場合には、データベースサーバ122は特定のリソースのより古いバージョン、すなわちリソースのクローズコミットされたバージョンを送る。
リクエスタタイプの判断は、要求が一致するプロトコルのタイプに基づいて実行されてもよい。要求がSQLプロトコルに一致する場合、リクエスタは一貫性のあるリクエスタである。しかしながら、要求がNFS、FTPまたはHTTPプロトコルに一致する場合、リクエスタは一貫性のないリクエスタである。ステップ412を実行した後、処理はステップ414に進む。
ステップ414では、要求された操作を実行するために、特定のリソース上の第1のロックが得られる。第1のロックは、ファイルベースのロックなどの第1のタイプのロックである。ステップ414を実行した後、処理はステップ416に進む。
ステップ416では、要求された操作が必要とする各々のデータベース操作を実行するために、第2のロックが得られる。第2のロックは、データベースロックなどの第2のタイプのロックである。
実施例では、特定のリソースの状態を変更する任意のデータベース操作を実行する前に、リソースの一時的なコピーがデータベース124に格納される。ファイルベースのロックが特定のリソース上に付与されたとき、特定のリソースに対する変更は、実際のリソース自体ではなくリソースの一時的なコピーに反映される。リソースの元のバージョンが修正されないままであるので、元のバージョンは一貫性のあるリクエスタをサービスする際にデータベースサーバ122によって使用されることができる。コミットされたデータベース操作によってリソースに加えられたすべての変更を一時的なコピーが反映するので、データベースサーバ122は一貫性のないリクエスタをサービスする際にリソースの一時的なコピーを使用できる。ステップ416を実行した後、処理はステップ418に進む。
ステップ418では、データベースロックは対応するデータベース操作がうまく完了したことに応答して解除される。操作がデータベースシステムによって実行されるとき、データベースシステムは、操作を実行するために使用されるトランザクションをコミットし、操作中に修正されたすべてのリソース上に保持されるデータベースロックを解除する。要求された操作が必要とするすべてのデータベース操作が実行された後、処理はステップ420に進む。
ステップ420では、ファイルシステム操作がうまく完了したことに応答して、ファイルベースのロックが解除される。具体的には、最後のクローズがリソース上で実行されるときに、リソース上のファイルベースのロックが解除され、リソースの一時的なコピーがリソースの現在のバージョンとして確立されることができる。一時的なコピーは、たとえば一時的なコピーを元のコピーの上にコピーし、次いで一時的なコピーを削除することによって、現在のバージョンとして確立されることができる。
ファイルシステム操作が実行された後、リソースの一貫性のないバージョンおよびリソースのクローズコミットされたバージョンは同一のものである。その結果、一貫性のあるリクエスタおよび一貫性のないリクエスタは両方、リソースが再び開かれるまでリソースの元のバージョンを使用してサービスされることができる。
図4のステップを実行することによって、データベースサーバ122が一貫性のあるリクエスタおよび一貫性のないリクエスタの両方をサービスできるようにするためにファイルベースのロックおよびデータベースロックが使用され得る。ファイルベースのロックがリソース上で維持されるとき、OPENファイルシステム操作の実行の前のリソースの状態が維持され、このようにして、データベースサーバ122が一貫性のあるリクエスタをサービスすることが可能になる。
同時アクセスの管理
複数のリクエスタが同一のリソースを伴う操作を実行しているとき、ファイルベースのロックの使用は等しく有利である。たとえば、複数のリクエスタは各々が同一ファイル上でファイルシステム操作を実行するための要求を発行してもよい。2つ以上のリクエスタがファイルを開いてもよく、2つ以上のリクエスタがリソースの状態に変更を加えてもよい。
例示するために、第1のリクエスタがファイルを開き、かつファイルに変更を加えたと想定されたい。第2のリクエスタが同一ファイルのバージョンのための要求をデータベースサーバ122に送るとき、データベースサーバ122は第2のリクエスタのリクエスタタイプを判断する。第2のリクエスタが一貫性のあるリクエスタである場合、データベースサーバ122は、ファイルが開かれて以来第1のリクエスタによってファイルに加えられたいかなる変更も反映しないファイルのバージョンをもたらす。第2のリクエスタが一貫性のないリクエスタである場合、データベースサーバ122は、ファイルが開かれて以来第1のリクエスタによってファイルに加えられた変更を反映するファイルのバージョンをもたらす。
リソースがファイルベースのロックの対象でありながらいかにデータベースサーバがリソースの状態を維持できるかについてのさらなる情報が、「トランザクションセマンティックスの実行」と題されるセクションにおいて以下に記載される。
トランザクションセマンティックスの実行
リソースがOPENファイルシステム操作の対象であった時点でリソースの以前のバージョンについての情報を維持することが有利である多数の理由が存在する。第1に、上で説明したように、リソースがOPENファイルシステム操作の対象であったが、最後のクローズの対象ではなかった時点でリソースの以前のバージョンを維持することによって、データベースサーバ122は一貫性のあるリクエスタからリソースのための要求をサービスすることが可能である。第2に、リソースの以前のバージョンを維持することによって、データベースサーバは以前のバージョンにリソースを戻すことが可能である。(a)リクエスタがリソースの誤ったバージョンを作成するとき、(b)リクエスタがスキーマと互換性のないスキーマベースのリソースのバージョンを作成するとき、または(c)複数のリクエスタによってリソース上で実行された変更が互いに互換性がないときなどのさまざまな状況において、以前のバージョンにリソースを戻すことが必要である場合がある。
重要なことに、以前の状態にリソースを戻すためにリソースから除去される必要がある変更は、コミットされた変更を含み得る。その結果、コミットされないトランザクションによって加えられる変更を除去するためにデータベースシステムによって使用される従来のアンドゥ機構は、必要な戻しを実行するのに十分ではない。
たとえ以前の状態からリソースの状態を変更した、コミットされたデータベーストランザクションが実行されたとしても、この発明の実施例によって、有利に、リソースは以前の状態に戻されることが可能である。この発明の実施例によれば、コミットされたデータベーストランザクションによって1つ以上の変更がリソースに加えられる。コミットされ
たデータベーストランザクションがリソースの状態を変更した後、コミットされたデータベーストランザクションによって変更が加えられる前の状態にリソースを戻すための要求が受取られる。たとえば、クライアント110は、ファイルのクローズコミットされたバージョンなどの特定の時点より前の状態に特定のファイルを戻すための要求をデータベースサーバ122に発行してもよい。
要求の受取に応答して、ファイルが開かれた時点などの特定の時点より前の状態にリソースが戻される。リソースを戻す際に、リソースの現在の状態は、コミットされたデータベーストランザクションによってファイルに加えられた変更を反映することを中止する。以前の状態にリソースを戻すための技術について次のセクションにおいてさらに詳細に説明する。
リソース戻し技術
特定の時点より前の状態にリソースを戻すためにさまざまな技術が使用され得る。使用される特定の技術は、たとえばリソースがスキーマベースのリソースであるかまたはスキーマベースでないリソースであるかに依存するかもしれない。スキーマベースのリソースとは、定義されたスキーマに一致するリソースである。たとえば、所与のスキーマに一致する購入発注文書はスキーマベースのリソースの一例である。スキーマベースでないリソースとは、スキーマベースのリソースではないあらゆるリソースである。
分解された形態でのリソースの格納
スキーマベースのリソースは、リソース全体を一緒に格納することによって、たとえばデータベーステーブルのlob列にXML文書を格納することによって、構築された形態で格納されることができる。代替的には、スキーマベースのリソースを含む要素を別個に格納することによって、分解された形態でスキーマベースのリソースを格納することが有利であろう。たとえば、XML文書の個々のXMLタグおよびそれらの関連付けられるデータを記述するデータは、データベーステーブルの列に格納されてもよい。スキーマベースのリソースの要素が別個に格納されるので、スキーマベースのリソースの要素は、スキーマベースのリソースが読取られる前に再構築される必要があるかもしれない。
図5は、分解された形態でスキーマベースのリソースを格納するための機構を示すリソーステーブルを示す。図5のテーブルは参照列504を含む。スキーマベースのリソースを記述するデータは、リソーステーブルに格納される場合もあれば、リソーステーブルによって参照される場合もある。たとえば、リソーステーブルの参照列504は、スキーマベースのリソースに関するデータが格納される別のテーブル、すなわちXMLタイプテーブル510を識別するポインタ506を含む。XMLタイプテーブル510はそれ自体が、スキーマベースのリソースの他のデータ要素を格納する1つ以上の他のテーブルを参照できる。たとえば、XMLタイプテーブル510は、入れ子テーブル520への参照512とともに示される。
XMLタイプテーブル510および任意の入れ子テーブル502は、スキーマベースのリソースの要素についてのデータを格納する。リクエスタがスキーマベースのリソースの最初の100バイトを読取りたいときには、リソースはその要求をサービスするために再構築されなければならない。なぜなら、XMLタイプテーブル510は、スキーマベースのリソースの各データ要素がどのバイトに現われるかを記述する情報を格納しないためである。その結果、データがスキーマベースのリソースから読取られるとき、スキーマベースのリソースは再構築されなければならず、XML lob列502に格納されなければならない。リクエスタがスキーマベースのリソースの最初の100バイトを読取りたい場合、このような要求は、XML lob列502に格納された、再構築されたリソースの最初の100バイトを読取ることによってデータベースサーバ122によって容易に実行されるこ
とができる。
以下でさらに詳細に説明するように、後続の操作はXML lob列502に格納されたリソースの再構築されたコピー上で実行されることができ、XMLタイプテーブル510および任意の入れ子テーブル520に格納されたリソースの分解された要素をそのままの状態にする。
スキーマベースのリソースの戻し
一実施例によれば、スキーマベースのリソースは「以前のバージョン情報」に基づいて戻される。図5は、この発明の実施例に従うスキーマベースのリソースについての以前のバージョン情報を格納するシステムのブロック図である。以前のバージョン情報はXMLタイプテーブル510および任意の入れ子テーブル520に維持されることができるのに対して、スキーマベースのリソースに加えられる変更は、最後のクローズがスキーマベースのリソース上で実行されるまで、XML lob列502に格納されたリソースの再構築されたコピー上で実行されることができる。
この発明の実施例では、ファイルベースのロックがリソース上に付与されると、リソースの状態を変更し得るデータベース操作を実行する直前に、スキーマベースのリソースの構築されたコピーが作成される。たとえば、スキーマベースのリソースの構築されたコピーはXML lob列502において作成および格納されてもよい。
その後、リソースの構築されたコピー(XML lob列502に格納されたリソースのコピー)はリソースの現在のバージョンとして扱われ、データベース操作が必要とする変更がリソースの構築されたコピー(XML lob列502に格納されたリソースのコピー)に加えられる。事実上、XML lob列502におけるリソースのコピーは、リソースの不正なバージョンのキャッシュになる。なお、スキーマベースのリソースの分解されたバージョンは依然としてXMLタイプテーブル510に維持される。
リソースの分解されたコピーにスキーマベースのリソースを戻すために、XML lob列502に格納されたリソースのコピーが削除される。その後、XMLタイプテーブル510および任意の入れ子テーブル520に格納されたリソースの分解されたバージョンが、XMLタイプテーブル510に格納された、構築されたコピーの代わりにリソースの現在のバージョンとして扱われる。
CLOSEファイルシステム操作がリソース上で実行されるとき、XMLタイプテーブル510に格納されたリソースの分解されたコピーに加えられる変更は、XML lob列502に格納されたリソースの構築されたコピーを反映するように、XMLタイプテーブル510および任意の入れ子テーブル520に格納されたリソースの分解されたバージョンを変更することによって永久的なものにされることができる。
スキーマベースでないリソースを戻すためのスナップショット時間の使用
図6Aおよび図6Bは、この発明の実施例に従うスキーマベースでないリソースについての以前のバージョン情報を格納するブロック図である。図6Aおよび図6Bは、スキーマベースでないリソースについての以前のバージョン情報を格納するための3つの異なるアプローチを説明するために使用するものとする。
第1のアプローチによれば、図6Aに示されるように、リソーステーブル600はLOB列602にスキーマベースでないリソースを格納する。このアプローチでは、OPENファイルシステム操作がリソース上で実行されるとき、スナップショット時間がリソーステーブル600の列604に格納される。スナップショット時間は、OPENファイルシ
ステム操作がリソース上で実行される直前の論理的な時間を示す。
1つ以上のデータベーストランザクションが変更をリソースにコミットした後、データベーストランザクションは「アンドゥ」されないかもしれないが、リソースはスナップショット時間以来リソースに関連付けられるアンドゥ情報を使用してスナップショット時間時点の状態に戻されることができる。アンドゥ情報とは、実行されたが、コミットされていないデータベーストランザクションを「巻き戻す(roll back)」またはアンドゥするために使用され得る、DBMS120によって維持される情報を指す。
スナップショット時間およびアンドゥ情報は、リソースの状態を変更させて、スナップショット時間時のリソースの状態を反映するようにリソースに変更の組を適用するために使用される。一旦リソースがスナップショット時間時のリソースの状態を反映するように戻されると、スナップショット時間はリソーステーブル600の列604から除去される。
実施例では、リソースの状態を変更させて、スナップショット時間時のリソースの状態を反映するようにリソースに変更の組を適用するために「フラッシュバッククエリー」が使用されてもよい。フラッシュバッククエリーを実行するための技術は、2003年4月30日に出願された「フラッシュバックデータベース(Flashback Database)」と題される米国特許出願連続番号第10/427,511号に記載され、これはまるで本明細書に十分に説明されているかのように全文が引用によって援用される。
スキーマベースでないリソースを戻すためのキャッシュ列の使用
第2のアプローチによれば、図6Bに示されるように、リソーステーブル650はLOB列652にスキーマベースでないリソースを格納する。このアプローチでは、OPENファイルシステム操作がリソース上で実行されると、リソースのコピーはリソーステーブル650の列654に格納される。列654は「キャッシュ列」として使用される。具体的には、列654に格納されるリソースのコピーは、リソースの現在のバージョンとして扱われる。データベーストランザクションがリソースに変更を引起こすとき、その変更は列652に格納された元のリソースの代わりに列654に格納されたリソースのコピーに加えられる。
CLOSEファイルシステム操作がリソース上で実行される場合には、654に格納されたリソースのコピーが列652に格納され得るので、元のリソースはコミットされたデータベース操作によってリソースに加えられるいかなる変更も反映することになる。CLOSEファイルシステム操作が実行されるまで、列652に格納されたリソースの現在の値はOPENファイルシステム操作の実行の直前のリソースの状態を反映する。したがって、OPENファイルシステム操作の実行の直前のリソースの状態にリソースを戻す必要がある場合、生じる必要があるリソーステーブル650に対する唯一の変更は、列654に格納されたリソースのコピーを除去することである。最後のクローズがリソース上で実行される前に、一貫性のないリクエスタは列654におけるリソースのコピーを見ることができ、一貫性のあるリクエスタは列652に格納されたリソースを見ることができる。
ハイブリッドアプローチ
格納空間の制約のために、ある特定の時間よりも古いアンドゥ情報は典型的には、より新しいアンドゥ情報によって上書きされる。その結果、スナップショット時間を使用して戻しを実行すること(すなわち第1のアプローチ)は必ずしも実現可能ではない。しかしながら、アンドゥ情報が利用可能であるときには、スナップショット時間ベースの戻しがキャッシュ列の戻し(すなわち第2の戻し)よりも好ましいであろう。
その結果、第3の(ハイブリッド)アプローチでは、リソースが戻される必要があるかもしれないときにリソースについてのアンドゥ情報が利用可能でないかもしれないということをデータベースサーバ122が判断しない限り、上述のスナップショットベースのアプローチが実行される。リソースが戻される必要があるかもしれないときにリソースについてのアンドゥ情報が利用可能でないかもしれないということをデータベースサーバ122が判断する場合、上述のキャッシュ列アプローチが次いで実行される。
データベースサーバ122は、データベースサーバ122によってアンドゥ情報を維持する時間の量が時間の構成可能な量未満である場合に、リソースが戻される必要があるかもしれないときにリソースについてのアンドゥ情報が利用可能でないかもしれないということを判断できる。
一貫性のチェック
一実施例によれば、ファイルが閉じられるときに修正されたファイルの一貫性がチェックされ、それ以上の待ち状態のOPENファイルシステム操作はない。たとえば、スキーマベースのリソースが確実にスキーマの規則に一致するようにするためにスキーマベースのリソースがチェックされ得る。スキーマベースのリソースが対応するスキーマに一致しない場合には、リソースは開かれたときにリソースの状態に戻され得る。
上述のように、リソースが付与されたファイルベースのロックの対象であり、リクエスタが前の状態にリソースを戻すための要求を発行するか、またはリソースが一貫性のチェックの役に立たない場合に、リソースは上述のように前の状態に戻され得る。ファイルベースのロックのさらなる詳細および利点について以下に提示するものとする。
ファイルベースのロック
ファイルベースのロックによって、データベースサーバ122はデータベース124に維持されるファイル上でファイルシステム操作を実行できる。リソースロッカー222は、データベース124に格納されたリソース上でファイルシステムロックを管理できる。ファイルベースのロックの挙動は、3つの重要な局面において、HTTPなどの状態不保持プロトコルのために使用される他のロックとは異なる。
第1に、ファイルベースのロックは、単にリソース全体の代わりにリソースの一部上に付与されてもよい。特に、ファイルベースのロックはリソース上のバイトの範囲に付与されてもよい。したがって、単一のファイルは複数のファイルベースのロックの対象であってもよく、各々のファイルベースのロックはファイルの異なるバイト範囲をカバーする。
第2に、ファイルベースのロックはリースベースであり、これは、一旦特定のファイルベースのロックがリクエスタに付与されると、特定のロックは第1の期間付与され、第1の期間が切れた後、その特定のロックは期限切れになることを意味する。しかしながら、リクエスタによって受取られる通信はいずれも、第2の期間に特定のロックを新しくする。したがって、ファイルシステムロックが期限切れになる前にリクエスタがデータベースサーバ122と通信する限り、リクエスタは絶えずファイルベースのロックを新しくすることができる。
一旦特定のファイルシステムロックが期限切れになると、特定のロックがもはや付与されないことを反映するようにルックアップ機構212が更新される。ルックアップ機構212内に維持されるデータは、リクエスタによって要求される各々のロックが確実にまだ有効であるようにするために周期的にチェックされることができる。
特定のリクエスタが以前に付与された別のロックと矛盾するロックを要求するときには
、以前に付与されたロックが確実にまだ有効であるようにするために、以前に付与されたロックをチェックできる。以前に付与されたロックがもはや有効でない場合には、ロックが無効であることを反映するように、ルックアップ機構212に格納された情報が更新される(たとえば、ロックについての情報が削除され得る)。さらに、特定のクライアントに付与されたすべてのロックは、特定のクライアントが期限切れになったときに解除される。実施例では、クライアントが最後にフレームワーク200と通信して以来構成可能な量の時間が経過した後、クライアントは期限切れになる可能性がある。したがって、以前に付与されたロックが、付与されるように要求されるロックと矛盾する場合に、クライアントがまだ有効であることを検証するために、以前に付与されたロックに関連付けられるクライアントをチェックできる。クライアントが有効でない場合には、以前に付与されたロックが解除され、付与されるように要求されるロックが実行され得る。この発明の実施例では、特定のクライアントが期限切れになったかどうかの判断はclient B−ツリーをチェックすることによって実行されることができる。
状態不保持プロトコルロックと比較したファイルベースのロックの第3の相違点は、読取アクセスのみを提供するファイルベースのロックがないことである。その代わりに、ファイルベースのロックが読取アクセスを付与する程度に、ファイルベースのロックは読取−書込アクセスも付与する。
この発明の実施例では、ファイルベースのロックは、リソース全体をカバーする第1の組と、リソースのバイトの範囲などのリソースの一部をカバーする第2の組とを含む。図7は、この発明の実施例に従うさまざまなタイプのファイルベースのロックおよびそれらの互換性を示すテーブルである。図7に示されるさまざまなファイルベースのロックの各々について以下で簡単に説明することにする。
バイト−読取−書込ファイルベースのロックは、リソースの一部上のロックである。バイト−読取−書込ファイルベースのロックは、リソース上のバイトの範囲への読取アクセスおよび書込アクセスを付与するために使用されることができる。
バイト−書込ファイルベースのロックは、リソースの一部上のロックである。バイト−書込ファイルベースのロックは、リソース上のバイトの範囲への書込アクセスを付与するために使用されることができる。
拒否−読取ファイルベースのロックは、リソース全体上のロックである。拒否−読取ファイルベースのロックは、拒否−読取ロックを付与したリクエスタ以外の任意のリクエスタに対してリソースへの読取アクセスを拒否するために使用されることができる。
拒否−書込ファイルベースのロックは、リソース全体上のロックである。拒否−書込ファイルベースのロックは、拒否−書込ロックを付与したリクエスタ以外の任意のリクエスタに対してリソースへの書込アクセスを拒否するために使用されることができる。
ファイルベースのロックは、WebDAVロックなどのロック共有ロックまたはロック排他的ロックと互換性がない。図7は、さまざまなファイルベースのロックの互換性を記載する。特定のファイルベースのロックが以前に付与された別のロックと互換性がないときには、ファイルベースのロックは付与されないことになる。したがって、バイト−読取−書込ロックおよびバイト−書込ロックの範囲が矛盾しない場合に、既にバイト−書込ロックをリソース上に付与させたリソース上にバイト−読取−書込ロックを付与できる。しかしながら、既にバイト−書込ロックをリソース上に付与させたリソース上に拒否−読取ロックを付与することはできない。
リアルアプリケーションクラスタにおけるファイルベースのロック
データベース122は、オラクル・コーポレイションのRAC 10gオプションを使用するなど、リアルアプリケーションクラスタ(Real Application Cluster)(RAC)において実現されてもよい。RAC環境では、ファイルベースのロックがリソース上に付与されるとき、どのデータベースサーバがリソース上でファイルベースのロックを付与したかを記述するデータがデータベース124に格納されなければならない。
たとえば、データベースに格納されたリソースは、(a)ファイルベースのロックがリソース上に付与されたことを示すフラグおよび(b)リソース上でファイルベースのロックを付与したデータベースサーバを識別する情報に関連付けられてもよい。ルックアップ機構212は、付与されたファイルベースのロックについてのデータをメモリに維持する。付与されたファイルベースのロックについての情報がRACインスタンスにおける他のノードの目に見える場合には、メモリに格納された情報は、永続的に格納されなければならないか、またはデータの一貫性を維持する態様でRACの他のノードに運ぶことができなければならない。ルックアップ機構212に格納された情報が、RACがあるデータベースサーバ以外のRACの他のデータベースサーバの目に見えない場合には、第1のデータベースサーバによって付与された任意のファイルベースのロックは第2のデータベースサーバのファイルベースのロックと矛盾する可能性があるだろう。
データベースサーバ122によって利用される上述のファイルベースのロックによって、データベースサーバ122はデータベース124によって維持されるファイル上で、要求されるNFS操作などの状態保持要求を処理することが可能である。その結果、データベース122が上述のファイルシステム操作のロックを利用できるときに、データの一貫性を保つ態様でNFSプロトコルを使用して、データベース124に格納されたファイルにアクセスできる。
機構の実現
クライアント110、データベースサーバ122およびデータベース124は各々が実施例に従ってコンピュータシステム上で実現されてもよい。図8は、この発明の実施例が実現され得るコンピュータシステム800を示すブロック図である。コンピュータシステム800は、情報を通信するためのバス802または他の通信機構と、バス802に結合されて情報を処理するためのプロセッサ804とを含む。コンピュータシステム800は、バス802に結合されて、プロセッサ804によって実行されるべき情報および命令を格納するための、ランダムアクセスメモリ(random access memory)(RAM)または他の動的記憶装置などのメインメモリ806も含む。メインメモリ806は、プロセッサ804によって実行されるべき命令の実行中に一時的な変数または他の中間情報を格納するためにも使用されることができる。コンピュータシステム800はさらに、バス802に結合されて、プロセッサ804についての静的な情報および命令を格納するためのリードオンリーメモリ(read only memory)(ROM)808または他の静的記憶装置を含む。磁気ディスクまたは光学ディスクなどの記憶装置810は、情報および命令を格納するために設けられ、バス802に結合される。
コンピュータシステム800は、情報をコンピュータユーザに表示するための、陰極線管(cathode ray tube)(CRT)などのディスプレイ812にバス802を介して結合されてもよい。英数字キーおよび他のキーを含む入力装置814は、バス802に結合されて、情報およびコマンド選択をプロセッサ804に通信するためのものである。別のタイプのユーザ入力装置は、方向情報およびコマンド選択をプロセッサ804に通信するため、およびディスプレイ812上でカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御装置816である。この入力装置は典型的には2つの軸、すなわち第1の軸(たとえばx)および第2の軸(たとえばy)にお
いて2自由度を有し、これによって、この装置は平面において位置を指定することが可能である。
この発明は、本明細書に記載される技術を実現するためのコンピュータシステム800の使用に関連する。この発明の一実施例によれば、それらの技術は、プロセッサ804がメインメモリ806に含まれる1つ以上の命令の1つ以上のシーケンスを実行することに応答してコンピュータシステム800によって実行される。このような命令は、記憶装置810などの別の装置可読媒体からメインメモリ806に読取られてもよい。メインメモリ806に含まれる命令のシーケンスの実行は、本明細書に記載されるプロセスステップをプロセッサ804に実行させる。代替的な実施例では、この発明を実現するためにソフトウェア命令の代わりにまたはソフトウェア命令と組合せられてハードワイヤード回路が使用されてもよい。したがって、この発明の実施例はハードウェア回路およびソフトウェアの任意の特定の組合せに限定されない。
本明細書において使用される「装置可読媒体」という用語は、具体的な態様で装置に動作させるデータの提供に参画する任意の媒体を指す。コンピュータシステム800を使用して実現される実施例では、さまざまな装置可読媒体はたとえばプロセッサ804に命令を与えて実行することに関与する。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むがこれらに限定されない多くの形態を取り得る。不揮発性媒体はたとえば、記憶装置810などの光学ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ806などの動的メモリを含む。伝送媒体は、バス802を構成するワイヤを含む同軸ケーブル、銅製ワイヤおよび光ファイバを含む。伝送媒体は、電波および赤外線データ通信中に発生するものなどの音波または光波の形態も取り得る。
装置可読媒体の一般的な形態はたとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープもしくは他の磁気媒体、CD−ROM、他の光学媒体、パンチカード、紙テープ、穴のパターンを有する他の物理的な媒体、RAM、PROMおよびEPROM、FLASH−EPROM、他のメモリチップもしくはカートリッジ、以下に記載される搬送波、またはコンピュータが読取ることができる他の媒体を含む。
装置可読媒体のさまざまな形態は、1つ以上の命令の1つ以上のシーケンスをプロセッサ804に搬送して実行することに関与し得る。たとえば、命令は最初にリモートコンピュータの磁気ディスクに搬送されてもよい。リモートコンピュータは命令をその動的メモリにロードでき、モデムを使用して電話線によって命令を送ることができる。コンピュータシステム800にローカルなモデムは、電話線に沿ってデータを受取ることができ、データを赤外線信号に変換するために赤外線送信機を使用できる。赤外線検出器は赤外線信号で搬送されたデータを受取ることができ、適切な回路はデータをバス802に置くことができる。バス802はデータをメインメモリ806に搬送し、メインメモリ806から、プロセッサ804は命令を検索および実行する。メインメモリ806によって受取られた命令は、プロセッサ804による実行の前または後に、任意に記憶装置810に格納されてもよい。
コンピュータシステム800は、バス802に結合された通信インターフェイス818も含む。通信インターフェイス818は、ローカルネットワーク822に接続されたネットワークリンク820に結合して2方向のデータ通信をもたらす。たとえば、通信インターフェイス818は、対応するタイプの電話線にデータ通信接続をもたらすための総合デジタル通信網(integrated services digital network)(ISDN)カードまたはモデムであってもよい。別の例として、通信インターフェイス818は、互換性のあるLANにデータ通信接続をもたらすためのローカルエリアネットワーク(LAN)カードであっ
てもよい。無線リンクも実現されてもよい。いかなるこのような実現例においても、通信インターフェイス818は、さまざまなタイプの情報を表わすデジタルデータストリームを搬送する電気信号、電磁気信号または光信号を送受信する。
ネットワークリンク820は典型的には、1つ以上のネットワークを介するデータ通信を他のデータ装置にもたらす。たとえば、ネットワークリンク820はローカルネットワーク822を介する接続をホストコンピュータ824にもたらす場合もあれば、インターネットサービスプロバイダ(Internet Service Provider)(ISP)826によって操作されるデータ装置にもたらす場合もある。ISP826は次に、現在一般的に「インターネット」828と称される世界的なパケットデータ通信ネットワークを介してデータ通信サービスをもたらす。ローカルネットワーク822およびインターネット828は両方、デジタルデータストリームを搬送する電気信号、電磁気信号または光信号を使用する。デジタルデータをコンピュータシステム800におよびコンピュータシステム800から搬送する、さまざまなネットワークを介する信号およびネットワークリンク820に沿って通信インターフェイス818を介する信号は、情報を運ぶ搬送波の例示的な形態である。
コンピュータシステム800は、ネットワーク、ネットワークリンク820および通信インターフェイス818を介して、メッセージを送ることができ、プログラムコードを含むデータを受取ることができる。インターネットの例では、サーバ830が、インターネット828、ISP826、ローカルネットワーク822および通信インターフェイス818を介して、アプリケーションプログラムのための要求されたコードを伝送するかもしれない。
受取られたコードは、受取られたときにプロセッサ804によって実行されてもよく、および/または以後の実行のために記憶装置810または他の不揮発性記憶装置に格納されてもよい。この態様で、コンピュータシステム800は搬送波の形態でアプリケーションコードを得ることができる。
先の明細書では、この発明の実施例は実現例ごとに異なる可能性がある多数の具体的な詳細を参照しながら記載されてきた。したがって、何がこの発明であるかおよび何がこの発明であるように出願人によって意図されるかを単におよび排他的に指示するものは一組の特許請求の範囲である。一組の特許請求の範囲は、このような特許請求の範囲が生じる具体的な形態でこの出願に由来し、いかなるその後の訂正も含む。このような特許請求の範囲に含まれる用語について本明細書において明らかに説明する定義はいずれも、特許請求の範囲において使用されるような用語の意味を決定するものとする。それ故に、特許請求の範囲に明らかに記載されない限定、要素、特性、特徴、利点または属性は決してこのような特許請求の範囲を限定すべきではない。したがって、明細書および図面は限定的な意味ではなく例示的な意味で考えられるべきである。
この発明の実施例に従って状態保持プロトコルの状態で実現される要求を処理できるシステムのブロック図である。 この発明の実施例に従うデータベースサーバの機能コンポーネントのブロック図である。 この発明の実施例に従うファイル操作を処理する機能ステップを示すフローチャートである。 この発明の実施例に従うデータベースロックおよびファイルベースのロックを使用する機能ステップを示すフローチャートである。 この発明の実施例に従うスキーマベースのリソースについての以前のバージョン情報を格納するブロック図である。 この発明の実施例に従うスキーマベースでないリソースについての以前のバージョン情報を格納するブロック図である。 この発明の実施例に従うスキーマベースでないリソースについての以前のバージョン情報を格納するブロック図である。 この発明の実施例に従うさまざまなタイプのファイルベースのロックおよびそれらの互換性を示すテーブルである。 この発明の実施例が実現され得るコンピュータシステムを示すブロック図である。

Claims (13)

  1. 装置によって実現される方法であって、
    リソース上のファイルシステムプロトコルによって規定されるファイルシステム操作の実行を要求するための要求をリクエスタからデータベースサーバが受取るステップを備え、前記要求は、前記要求に関連付けられる状態情報を識別する状態識別データを含み、前記方法はさらに、
    前記要求に関連付けられ、リクエスタによって前記リソース上で以前に実行された状態保持操作を指定する状態情報を、前記データベースサーバにおけるルックアップ機構を使用して、前記データベースサーバが検索するステップを備え
    記ルックアップ機構は、前記状態識別データを前記状態情報に関連付ける特定のデータを備え、
    前記ルックアップ機構を使用することは、前記特定のデータと前記状態識別データとを使用して前記状態情報をルックアップすることを備え、前記方法はさらに、
    少なくとも一部には前記状態情報に基づいて、ファイルシステム操作の実行を要求する前記要求を前記データベースサーバが処理するステップと、
    前記要求の処理に応答して、ファイルシステム操作がリソース上で実行された後リソースの状態を指定するようにルックアップ機構における状態情報を更新し、更新された状態情報を識別しかつリクエスタに関連付けられる第2の状態識別データを作成するステップとを備え、更新された状態情報も、リクエスタによって前記リソース上で以前に実行された状態保持操作を指定し、前記方法はさらに、
    前記リクエスタに前記第2の状態識別データを伝送するステップを備える、方法。
  2. 前記要求に関連付けられる前記状態情報を検索する前記ステップは、
    前記状態情報を検索するために前記ルックアップ機構においてキーの値として前記状態識別データを使用することを備える、請求項1に記載の方法。
  3. 前記ルックアップ機構は、b−ツリーおよびハッシュテーブルからなる群から選択される1つのメンバーである、請求項2に記載の方法。
  4. 前記第2の状態情報は、前記要求の処理に応答して前記リクエスタによって開かれたファイルを指定する、請求項1に記載の方法。
  5. 前記第2の状態情報は、前記要求の処理に応答して前記リクエスタに付与されたファイル上の新しいロックを指定し、前記第2の状態情報は、前記リクエスタに以前に付与されたいずれのロックも指定する、請求項1に記載の方法。
  6. 前記新しいロックは、前記ファイルの指定されたバイト範囲をカバーし、前記指定されたバイト範囲は前記ファイルのすべてには及ばない、請求項5に記載の方法。
  7. 前記要求は第2の要求であって、前記方法はさらに、
    前記第2の要求を受取る前に、リクエスタのためのクライアント識別子を確立するための第1の要求を前記データベースサーバにおいて受取るステップと、
    前記リクエスタに前記クライアント識別子を伝送するステップとを備え、
    前記第2の要求は前記クライアント識別子を含む、請求項1に記載の方法。
  8. 前記要求は特定のリクエスタを識別し、前記方法はさらに、
    前記要求に関連付けられる前記状態情報を検索する前記ステップの前に、要求を発行したリクエスタが実際に要求において識別される特定のリクエスタであるかどうかを判断するステップを備える、請求項1に記載の方法。
  9. 前記要求はリクエスタによって発行され、前記方法はさらに、
    前記要求によって要求された特定の操作を実行する前に、前記リクエスタが前記特定の操作を実行するのに十分な許可レベルを有しているかどうかを判断するステップを備える、請求項1に記載の方法。
  10. 前記要求はリクエスタによって発行され、前記要求を処理する前記ステップはさらに、
    前記リクエスタを指定するように、前記データベースサーバに維持されるリクエスタデータを更新するステップを備え、前記リクエスタデータはファイルシステム操作を発行するために登録されるリクエスタを識別する、請求項1に記載の方法。
  11. 前記要求はリクエスタによって発行され、前記ファイルシステム操作はファイルを開くための操作であって、前記要求を処理する前記ステップはさらに、
    前記リクエスタが前記ファイルを開いたことを反映するように、前記データベースサーバに維持されるファイルデータを更新するステップを備える、請求項1に記載の方法。
  12. 前記要求はリクエスタによって発行され、前記ファイルシステム操作はファイルの一部をロックするための操作であって、前記要求を処理する前記ステップはさらに、
    前記リクエスタがロックした前記ファイルの前記一部を反映するように、前記データベースサーバに維持されるロックデータを更新するステップを備える、請求項1に記載の方法。
  13. 1つ以上のプロセッサによって実行されるときに、請求項1から12のいずれかに記載の方法を1つ以上のプロセッサに実行させる、命令の1つ以上のシーケンスを記憶するコンピュータ可読記憶媒体。
JP2007546744A 2004-12-16 2005-12-06 データベースサーバによるファイル操作を実行するためのインフラストラクチャ Active JP4842279B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/014,354 2004-12-16
US11/014,354 US7627574B2 (en) 2004-12-16 2004-12-16 Infrastructure for performing file operations by a database server
PCT/US2005/044134 WO2006065587A1 (en) 2004-12-16 2005-12-06 Infrastructure for performing file operations by a database server

Publications (3)

Publication Number Publication Date
JP2008524707A JP2008524707A (ja) 2008-07-10
JP2008524707A5 JP2008524707A5 (ja) 2009-01-29
JP4842279B2 true JP4842279B2 (ja) 2011-12-21

Family

ID=36013304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007546744A Active JP4842279B2 (ja) 2004-12-16 2005-12-06 データベースサーバによるファイル操作を実行するためのインフラストラクチャ

Country Status (7)

Country Link
US (1) US7627574B2 (ja)
EP (1) EP1825409B1 (ja)
JP (1) JP4842279B2 (ja)
CN (1) CN100527129C (ja)
AU (1) AU2005316812B2 (ja)
CA (1) CA2587529C (ja)
WO (1) WO2006065587A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11496552B2 (en) * 2021-03-30 2022-11-08 Dropbox, Inc. Intent tracking for asynchronous operations

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136508A1 (en) * 2004-12-16 2006-06-22 Sam Idicula Techniques for providing locks for file operations in a database management system
US7809848B1 (en) * 2005-03-15 2010-10-05 Oracle America, Inc. System and method for aggregating NFS requests
US7809675B2 (en) * 2005-06-29 2010-10-05 Oracle International Corporation Sharing state information among a plurality of file operation servers
US8224837B2 (en) * 2005-06-29 2012-07-17 Oracle International Corporation Method and mechanism for supporting virtual content in performing file operations at a RDBMS
US7610304B2 (en) * 2005-12-05 2009-10-27 Oracle International Corporation Techniques for performing file operations involving a link at a database management system
US7392335B2 (en) * 2006-02-10 2008-06-24 Oracle International Corporation Anticipatory changes to resources managed by locks
US7600063B2 (en) * 2006-09-15 2009-10-06 Oracle International Corporation Techniques for improved read-write concurrency
US7664781B2 (en) * 2006-12-11 2010-02-16 Simdesk Technologies File operations with persistent file locking techniques
US8433693B2 (en) * 2007-04-02 2013-04-30 Microsoft Corporation Locking semantics for a storage system based on file types
US20080243847A1 (en) * 2007-04-02 2008-10-02 Microsoft Corporation Separating central locking services from distributed data fulfillment services in a storage system
US8943087B2 (en) * 2008-07-25 2015-01-27 International Business Machines Corporation Processing data from diverse databases
US8972463B2 (en) * 2008-07-25 2015-03-03 International Business Machines Corporation Method and apparatus for functional integration of metadata
US9110970B2 (en) * 2008-07-25 2015-08-18 International Business Machines Corporation Destructuring and restructuring relational data
US8843460B2 (en) 2009-02-17 2014-09-23 Amadeus S.A.S. Method allowing validation of large volume of updates in a large production database of new entered data prior to their release
EP2221733A1 (en) * 2009-02-17 2010-08-25 AMADEUS sas Method allowing validation in a production database of new entered data prior to their release
US20110307490A1 (en) * 2010-06-15 2011-12-15 Usm China/Hong Kong Limited Context Level Protocols And Interfaces
US9015136B2 (en) * 2010-01-22 2015-04-21 Microsoft Technology Licensing, Llc Storing temporary state data in separate containers
US8626713B2 (en) * 2010-12-08 2014-01-07 International Business Machines Corporation Multiple contexts in a redirect on write file system
DE112012004099T5 (de) * 2011-09-30 2014-07-17 International Business Machines Corp. Transaktionsverarbeitungssystem, Verfahren und Programm
US20140164477A1 (en) * 2012-12-06 2014-06-12 Gary M. Springer System and method for providing horizontal scaling of stateful applications
US20170031881A1 (en) * 2015-07-31 2017-02-02 Cheng Shiu University Method for creating web program and corresponding table interface according to column comment
WO2017173828A1 (en) * 2016-04-06 2017-10-12 Huawei Technologies Co., Ltd. System and method for multi-master synchronous replication optimization
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
EP3794805A1 (en) * 2018-05-15 2021-03-24 Telefonaktiebolaget Lm Ericsson (Publ) Concurrent id allocation in a service-based architecture
EP3821588A1 (en) * 2018-07-12 2021-05-19 Telefonaktiebolaget Lm Ericsson (Publ) Detecting and addressing clashing transactions in a service-based architecture
CN111324573B (zh) * 2020-02-13 2022-08-12 苏州浪潮智能科技有限公司 一种网络文件系统状态管理方法与系统
US11422716B2 (en) 2020-04-08 2022-08-23 Samsung Electronics Co., Ltd. Systems and method for distributed read/write locking with network key values for storage devices
CN111260341B (zh) * 2020-05-06 2020-07-28 武汉中科通达高新技术股份有限公司 一种交通违法数据审核方法、计算机设备及可读存储介质
JP7072275B2 (ja) * 2020-09-02 2022-05-20 株式会社ビジュアル・プロセッシング・ジャパン ファイルシステムとデータベース間でデータを伝達する、プログラム及び情報処理装置で用いる方法
US11698884B2 (en) * 2020-10-29 2023-07-11 EMC IP Holding Company LLC File level incremental continuous data protection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004097680A1 (en) * 2003-03-27 2004-11-11 Microsoft Corporation File system for displaying items of different types and from different physical locations

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0398495B1 (en) 1989-05-15 1997-01-22 International Business Machines Corporation File lock management in a distributed data processing system
CA2067633C (en) * 1991-07-24 1996-10-01 Eric Jonathan Bauer Method and apparatus for accessing a computer-based file system
GB2269920A (en) 1992-08-18 1994-02-23 Clairmont Maintaining database integrity
JPH0798669A (ja) 1993-08-05 1995-04-11 Hitachi Ltd 分散データベース管理システム
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US6029160A (en) * 1995-05-24 2000-02-22 International Business Machines Corporation Method and means for linking a database system with a system for filing data
US5956712A (en) * 1995-06-07 1999-09-21 International Business Machines Corporation Byte range locking in a distributed environment
WO1997016956A1 (en) 1995-11-06 1997-05-15 Chang Kyu Whang A sprinkler for exterminating vermin of crops
US5737523A (en) * 1996-03-04 1998-04-07 Sun Microsystems, Inc. Methods and apparatus for providing dynamic network file system client authentication
US5768532A (en) * 1996-06-17 1998-06-16 International Business Machines Corporation Method and distributed database file system for implementing self-describing distributed file objects
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US5937406A (en) 1997-01-31 1999-08-10 Informix Software, Inc. File system interface to a database
US6032216A (en) * 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
US6493804B1 (en) * 1997-10-01 2002-12-10 Regents Of The University Of Minnesota Global file system and data storage device locks
NZ503682A (en) 1997-10-21 2001-09-28 British Telecomm Information management system with data storage and retrieval, and control to input data set to data retrieval tool
US6799298B2 (en) * 1998-03-11 2004-09-28 Overture Services, Inc. Technique for locating an item of interest within a stored representation of data
US6088694A (en) * 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6973455B1 (en) * 1999-03-03 2005-12-06 Emc Corporation File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator
US6321219B1 (en) * 1998-08-14 2001-11-20 Microsoft Corporation Dynamic symbolic links for computer file systems
US6487469B1 (en) 1998-11-13 2002-11-26 Texas Instruments Incorporated System and method for integrating schedule and design environments
US6393456B1 (en) * 1998-11-30 2002-05-21 Microsoft Corporation System, method, and computer program product for workflow processing using internet interoperable electronic messaging with mime multiple content type
US6532488B1 (en) 1999-01-25 2003-03-11 John J. Ciarlante Method and system for hosting applications
US6922708B1 (en) * 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US7366708B2 (en) * 1999-02-18 2008-04-29 Oracle Corporation Mechanism to efficiently index structured data that provides hierarchical access in a relational database system
JP3763992B2 (ja) * 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US6304873B1 (en) * 1999-07-06 2001-10-16 Compaq Computer Corporation System and method for performing database operations and for skipping over tuples locked in an incompatible mode
US6453313B1 (en) * 1999-07-06 2002-09-17 Compaq Information Technologies Group, L.P. Database management system and method for dequeuing rows published to a database table
US7280995B1 (en) * 1999-08-05 2007-10-09 Oracle International Corporation On-the-fly format conversion
US8335775B1 (en) * 1999-08-05 2012-12-18 Oracle International Corporation Versioning in internet file system
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US6393435B1 (en) * 1999-09-22 2002-05-21 International Business Machines, Corporation Method and means for evaluating the performance of a database system referencing files external to the database system
JP2001101044A (ja) * 1999-09-29 2001-04-13 Toshiba Corp トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム
US6389420B1 (en) * 1999-09-30 2002-05-14 Emc Corporation File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration
US6496944B1 (en) * 1999-10-06 2002-12-17 International Business Machines Corporation Method for database assisted file system restore
US6493742B1 (en) 1999-12-13 2002-12-10 Weddingchannel.Com, Inc. System and method for providing internet accessible registries
US6564215B1 (en) * 1999-12-16 2003-05-13 International Business Machines Corporation Update support in database content management
US6587873B1 (en) 2000-01-26 2003-07-01 Viaclix, Inc. System server for channel-based internet network
US6877095B1 (en) * 2000-03-09 2005-04-05 Microsoft Corporation Session-state manager
JP3992263B2 (ja) * 2000-03-30 2007-10-17 株式会社日立製作所 データベース−ファイル連携方法
US7421541B2 (en) * 2000-05-12 2008-09-02 Oracle International Corporation Version management of cached permissions metadata
US7043472B2 (en) * 2000-06-05 2006-05-09 International Business Machines Corporation File system with access and retrieval of XML documents
US8090811B2 (en) * 2000-06-06 2012-01-03 Panasonic Electric Works Co., Ltd. Service provider for embedded devices using a message store
US7788335B2 (en) * 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US7383288B2 (en) * 2001-01-11 2008-06-03 Attune Systems, Inc. Metadata based file switch and switched file system
US6636878B1 (en) * 2001-01-16 2003-10-21 Sun Microsystems, Inc. Mechanism for replicating and maintaining files in a spaced-efficient manner
US6959416B2 (en) * 2001-01-30 2005-10-25 International Business Machines Corporation Method, system, program, and data structures for managing structured documents in a database
US6850938B1 (en) * 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
US6625604B2 (en) * 2001-03-09 2003-09-23 Hewlett-Packard Development Company, L.P. Namespace service in a distributed file system using a database management system
US7177866B2 (en) * 2001-03-16 2007-02-13 Gravic, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
US6772155B1 (en) * 2001-04-04 2004-08-03 Ncr Corporation Looking data in a database system
WO2002082312A2 (en) * 2001-04-06 2002-10-17 International Business Machines Corporation A method for standardized file-based access to databases, enterprise java beans and content management systems
US7107319B2 (en) * 2001-05-31 2006-09-12 Oracle Corporation Method and apparatus for reducing latency and message traffic during data and lock transfer in a multi-node system
US6782396B2 (en) * 2001-05-31 2004-08-24 International Business Machines Corporation Aligning learning capabilities with teaching capabilities
US7117216B2 (en) * 2001-06-07 2006-10-03 Sun Microsystems, Inc. Method and apparatus for runtime merging of hierarchical trees
US7293028B2 (en) 2001-06-08 2007-11-06 Sap Ag Cache-conscious concurrency control scheme for database systems
US6728709B1 (en) * 2001-06-22 2004-04-27 Unisys Corporation Locking partitioned database tables
US6718327B1 (en) * 2001-08-31 2004-04-06 Openwave Systems Inc. Fault-tolerant queue with autonomous client operation
US6799188B2 (en) * 2001-08-31 2004-09-28 Borland Software Corporation Transaction processing system providing improved methodology for two-phase commit decision
US6874001B2 (en) * 2001-10-05 2005-03-29 International Business Machines Corporation Method of maintaining data consistency in a loose transaction model
US6948039B2 (en) * 2001-12-14 2005-09-20 Voom Technologies, Inc. Data backup and restoration using dynamic virtual storage
US7433948B2 (en) * 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US6904431B2 (en) * 2002-01-25 2005-06-07 Openwave Systems Inc. Algorithm for dynamic selection of data locking granularity
US7085785B2 (en) * 2002-02-15 2006-08-01 International Business Machines Corporation Writable file system snapshot with ditto address feature
US7313557B1 (en) * 2002-03-15 2007-12-25 Network Appliance, Inc. Multi-protocol lock manager
US6857001B2 (en) * 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7007027B2 (en) * 2002-12-02 2006-02-28 Microsoft Corporation Algorithm for tree traversals using left links
US7475142B2 (en) * 2002-12-06 2009-01-06 Cisco Technology, Inc. CIFS for scalable NAS architecture
US7254578B2 (en) * 2002-12-10 2007-08-07 International Business Machines Corporation Concurrency classes for shared file systems
WO2004055675A1 (ja) * 2002-12-18 2004-07-01 Fujitsu Limited ファイル管理装置、ファイル管理プログラム、ファイル管理方法およびファイルシステム
US7668541B2 (en) * 2003-01-31 2010-02-23 Qualcomm Incorporated Enhanced techniques for using core based nodes for state transfer
US7325130B2 (en) * 2003-03-21 2008-01-29 International Business Machines Corporation Method for guaranteeing freshness of results for queries against a non-secure data store
US7281050B2 (en) * 2003-04-08 2007-10-09 Sun Microsystems, Inc. Distributed token manager with transactional properties
US7139781B2 (en) * 2003-04-29 2006-11-21 International Business Machines Corporation Managing filesystem versions
US7571354B2 (en) * 2003-05-09 2009-08-04 Sun Microsystems, Inc. System and method for request routing
US20040230896A1 (en) * 2003-05-16 2004-11-18 Dethe Elza Method and system for enabling collaborative authoring of hierarchical documents with unique node identifications
US6959313B2 (en) * 2003-07-08 2005-10-25 Pillar Data Systems, Inc. Snapshots of file systems in data storage systems
US20050039049A1 (en) * 2003-08-14 2005-02-17 International Business Machines Corporation Method and apparatus for a multiple concurrent writer file system
US7401104B2 (en) * 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US7349913B2 (en) * 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US20050086384A1 (en) 2003-09-04 2005-04-21 Johannes Ernst System and method for replicating, integrating and synchronizing distributed information
US7441041B2 (en) * 2003-11-29 2008-10-21 Microsoft Corporation Network download regulation method and system
US20050203903A1 (en) * 2004-03-10 2005-09-15 Rajan Rajeev B. System and method for locking and isolation in a storage platform
US7376642B2 (en) * 2004-03-30 2008-05-20 Microsoft Corporation Integrated full text search system and method
US7143120B2 (en) * 2004-05-03 2006-11-28 Microsoft Corporation Systems and methods for automated maintenance and repair of database and file systems
US7366740B2 (en) * 2004-05-03 2008-04-29 Microsoft Corporation Systems and methods for automatic maintenance and repair of enitites in a data model
JP4581500B2 (ja) * 2004-06-17 2010-11-17 株式会社日立製作所 ディザスタリカバリシステム、プログラム及びデータベースのリカバリ方法
US20050289143A1 (en) * 2004-06-23 2005-12-29 Exanet Ltd. Method for managing lock resources in a distributed storage system
US20060041719A1 (en) * 2004-08-18 2006-02-23 Chui Jimmy P F Multi-tier data storage system
US8495266B2 (en) * 2004-12-10 2013-07-23 Hewlett-Packard Development Company, L.P. Distributed lock
US7506009B2 (en) * 2005-01-28 2009-03-17 Dell Products Lp Systems and methods for accessing a shared storage network using multiple system nodes configured as server nodes

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004097680A1 (en) * 2003-03-27 2004-11-11 Microsoft Corporation File system for displaying items of different types and from different physical locations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11496552B2 (en) * 2021-03-30 2022-11-08 Dropbox, Inc. Intent tracking for asynchronous operations

Also Published As

Publication number Publication date
CA2587529A1 (en) 2006-06-22
US20060136376A1 (en) 2006-06-22
CN100527129C (zh) 2009-08-12
EP1825409B1 (en) 2019-02-20
EP1825409A1 (en) 2007-08-29
CA2587529C (en) 2011-07-12
US7627574B2 (en) 2009-12-01
AU2005316812B2 (en) 2010-08-19
JP2008524707A (ja) 2008-07-10
AU2005316812A1 (en) 2006-06-22
CN101080714A (zh) 2007-11-28
WO2006065587A1 (en) 2006-06-22

Similar Documents

Publication Publication Date Title
JP4842279B2 (ja) データベースサーバによるファイル操作を実行するためのインフラストラクチャ
JP4759570B2 (ja) データベース管理システムにおけるファイル操作のためのロックを提供するための手法
US7548918B2 (en) Techniques for maintaining consistency for different requestors of files in a database management system
US7809675B2 (en) Sharing state information among a plurality of file operation servers
RU2686594C2 (ru) Файловая служба, использующая интерфейс совместного файлового доступа и передачи состояния представления
US7925751B1 (en) Mechanism for controlled sharing of files in a clustered application environment
US11574070B2 (en) Application specific schema extensions for a hierarchical data structure
US7120631B1 (en) File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator
US6453354B1 (en) File server system using connection-oriented protocol and sharing data sets among data movers
US6973455B1 (en) File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator
US6205466B1 (en) Infrastructure for an open digital services marketplace
US5649185A (en) Method and means for providing access to a library of digitized documents and images
US20050187983A1 (en) Method of maintaining data consistency in a loose transaction model
US6611848B1 (en) Methods for maintaining data and attribute coherency in instances of sharable files
US8224837B2 (en) Method and mechanism for supporting virtual content in performing file operations at a RDBMS
US6687716B1 (en) File consistency protocols and methods for carrying out the protocols
JP2007528555A (ja) ストレージ・プラットフォームにおけるロッキングとアイソレーションのためのシステムおよび方法
US6633870B1 (en) Protocols for locking sharable files and methods for carrying out the protocols
US20050108237A1 (en) File system
US7716260B2 (en) Techniques for transaction semantics for a database server performing file operations
US7024434B2 (en) Method and system for modifying schema definitions
Pfaff Rfc 7047: The open vswitch database management protocol

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081202

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110830

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111005

R150 Certificate of patent or registration of utility model

Ref document number: 4842279

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141014

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250