(57)【特許請求の範囲】
【請求項１】
データを記憶する方法であって、
複数のサイトのうちの第１のサイトで、トランザクションを処理するステップと、
前記処理されたトランザクションを反映するやり直し情報を揮発性メモリ内に生成するステップと、
（ａ）前記処理されたトランザクションに関連付けられたデータ・ブロックが永続的に記憶されず、かつ、（ｂ）前記データ・ブロックが前記複数のサイトのうちの別のサイトに転送されない限り、前記やり直し情報を不揮発記憶装置に記憶することを遅らせるステップと、
（１）前記データ・ブロックが永続的に記憶されようとしていること、あるいは（２）前記データ・ブロックが前記複数のサイトのうちの別のサイトに転送されようとしていることの検出に応答して、前記やり直し情報を永続的に記憶するステップとを含み、
前記データ・ブロックは、第１のデータ・ブロックであり、前記トランザクションは、第１のトランザクションであり、前記やり直し情報は、第１のやり直し情報であり、前記方法は、
前記第１のサイトで、第２のトランザクションを処理するステップと、
前記処理された第２のトランザクションを反映する第２のやり直し情報を揮発性メモリ内に生成するステップと、
（ａ）前記処理された第２のトランザクションに関連付けられた第１のデータ・ブロックおよび第２のデータ・ブロックが永続的に記憶されず、かつ、（ｂ）前記第１のデータ・ブロックおよび前記第２のデータ・ブロックが前記複数のサイトのうちの別のサイトに転送されない限り、前記第１のやり直し情報および前記第２のやり直し情報を記憶することを遅らせるステップと、
（１）前記第１のデータ・ブロックまたは前記第２のデータ・ブロックが永続的に記憶されようとしていること、あるいは、（２）前記第１のデータ・ブロックまたは前記第２のデータ・ブロックが前記複数のサイトのうちの別のサイトに転送されようとしていることの検出に応答して、バッチ処理を使用して前記第１のやり直し情報および前記第２のやり直し情報を永続的に記憶するステップとをさらに含む、方法。
【請求項２】
前記バッチ処理が、前記第１のやり直し情報および前記第２のやり直し情報を永続的に
記憶することを完了したか否かを判断するステップをさらに含む、請求項１に記載の方法。
【請求項３】
第１のサイトを含む複数のサイト間でデータをミラーリングする方法であって、
前記第１のサイトで、データ・ブロックを、前記データ・ブロックに加えられた変更に関するやり直し情報を永続的に記憶する前に、永続的に記憶するステップと、
前記第１のサイトで、前記変更が前記複数のサイトのうちの他のサイトに複製された後に、前記やり直し情報を永続的に記憶するステップとを含み、
前記データ・ブロックは、複数のデータ・ブロック内に存在し、前記複数のデータ・ブロックに加えられた変更は、複数のプロセスによって発行されたトランザクションによって実行され、
前記変更が前記複数のサイトのうちの他のサイトにいつ複製されたかを判断するステップをさらに含む、方法。
【請求項４】
前記データ・ブロックは、複数のデータ・ブロック内に存在し、前記複数のデータ・ブロックに加えられた変更は、単一のプロセスによって発行されたトランザクションによって実行され、
前記単一のプロセスによって発行された１組のトランザクションが完了したか否かを判断するステップをさらに含み、前記１組のトランザクションは前記複数のデータ・ブロックに前記変更を加える、請求項３に記載の方法。
【請求項５】
前記複数のサイトのうちの特定のサイトが動作不能になった場合に、前記特定のサイトから前記複数のサイトのうちの他のサイトのそれぞれに送信されたすべてのメッセージが、それらの宛て先で受信されていると判断した後で、前記特定のサイトの回復を開始するステップをさらに含む、請求項３に記載の方法。
【請求項６】
前記複数のサイトのうちの各サイトで、データ構造は前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきか否かを判断するステップと、
前記データ構造は前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきでないと判断されない限り、前記複数のサイトのうちの他のサイトのそれぞれに前記データ構造を複製するステップとをさらに含む、請求項３に記載の方法。
【請求項７】
データを記憶するための１つ以上の命令シーケンスを担持する機械読み取り可能な媒体であって、１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに、
複数のサイトのうちの第１のサイトで、トランザクションを処理するステップと、
前記処理されたトランザクションを反映するやり直し情報を揮発性メモリに生成するステップと、
（ａ）前記処理されたトランザクションに関連付けられたデータ・ブロックが永続的に記憶されず、かつ、（ｂ）前記データ・ブロックが前記複数のサイトのうちの別のサイトに転送されない限り、前記やり直し情報を不揮発記憶装置に記憶することを遅らせるステップと、
（１）前記データ・ブロックが永続的に記憶されようとしていること、あるいは（２）前記データ・ブロックが前記複数のサイトのうちの別のサイトに転送されるようとしていることの検出に応答して、前記やり直し情報を永続的に記憶するステップとを実行させ、
前記データ・ブロックは、第１のデータ・ブロックであり、前記トランザクションは、第１のトランザクションであり、前記やり直し情報は、第１のやり直し情報であり、前記１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに、
前記第１のサイトで、第２のトランザクションを処理するステップと、
前記処理された第２のトランザクションを反映する第２のやり直し情報を揮発性メモリに生成するステップと、
（ａ）前記処理された第２のトランザクションに関連付けられた第１のデータ・ブロックおよび第２のデータ・ブロックが永続的に記憶されず、かつ、（ｂ）前記第１のデータ・ブロックおよび前記第２のデータ・ブロックが前記複数のサイトのうちの別のサイトに転送されない限り、前記第１のやり直し情報および前記第２のやり直し情報を記憶することを遅らせるステップと、
（１）前記第１のデータ・ブロックまたは前記第２のデータ・ブロックが永続的に記憶されようとしていること、あるいは、（２）前記第１のデータ・ブロックまたは前記第２のデータ・ブロックが前記複数のサイトのうちの別のサイトに転送されようとしていることの検出に応答して、バッチ処理を使用して前記第１のやり直し情報および前記第２のやり直し情報を永続的に記憶するステップと、をさらに実行させる、機械読み取り可能な媒体。
【請求項８】
前記１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに、
前記バッチ処理が前記第１のやり直し情報および前記第２のやり直し情報を永続的に記憶することを完了したか否かを判断するステップをさらに実行させる、請求項７に記載の機械読み取り可能な媒体。
【請求項９】
複数のサイト間でデータをミラーリングする１つ以上の命令シーケンスを担持する機械読み取り可能な媒体であって、前記複数のサイトは、第１のサイトを含んでおり、１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに、
前記第１のサイトで、データ・ブロックに加えられた変更に関するやり直し情報を永続的に記憶するのに先立って、前記データ・ブロックを永続的に記憶するステップと、
前記第１のサイトで、前記変更が前記複数のサイトのうちの他のサイトに複製された後で、前記やり直し情報を永続的に記憶するステップとを実行させ、
前記データ・ブロックは、複数のデータ・ブロック内に存在し、前記複数のデータ・ブロックに加えられた変更は、複数のプロセスによって発行されたトランザクションによって実行され、前記１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに、
前記変更が前記複数のサイトのうちの他のサイトにいつ複製されたかを判断するステップをさらに実行させる、媒体。
【請求項１０】
前記データ・ブロックは、複数のデータ・ブロック内に存在し、前記複数のデータ・ブロックに加えられた変更は、単一のプロセスによって発行されたトランザクションによって実行され、前記１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに、
前記単一のプロセスによって発行された、前記複数のデータ・ブロックに変更を加える１組のトランザクションが完了したか否かを判断するステップをさらに実行させる、請求項９に記載の機械読み取り可能な媒体。
【請求項１１】
前記１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに、
前記複数のサイトのうちの特定のサイトが動作不能になった場合に、前記特定のサイト
から前記複数のサイトのうちの他のサイトのそれぞれに送信されたすべてのメッセージがそれらの宛て先で受信されていると判断した後で、前記特定のサイトの回復を開始するステップをさらに実行させる、請求項９に記載の機械読み取り可能な媒体。
【請求項１２】
前記１つ以上のプロセッサによる命令の前記１つ以上のシーケンスの実行は、前記１つ以上のプロセッサに、
前記複数のサイトのうちの各サイトで、データ構造が前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきであるか否かを判断するステップと、
前記データ構造が前記複数のサイトうちの他のサイトのそれぞれに複製されるべきでないと判断されない限り、前記複数のサイトうちの他のサイトのそれぞれに前記データ構造を複製するステップとをさらに実行させる、請求項９に記載の機械読み取り可能な媒体。
【請求項１３】
請求項１〜６のいずれかに記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は複数のサイト間におけるデータのミラーリングに関する。
【背景技術】
【０００２】
発明の背景
データ・ミラーリングは、データが、第１の位置に記憶されるときに、同時に、そのデータが第１の位置から１つ以上の第２の位置にコピーされる手法である。第１の位置から１つ以上の位置にコピーされたデータは、第１の位置に記憶されたデータの正確なコピーである。したがって、データ・ミラーリングは、ミラーリング・データのバックアップを提供すること、および、災害の後で適時にデータを回復することの両方に有用である。データ・ミラーリングは、データがミラーリングされる位置から地理的に近い、あるいは遠い位置にコピーされるかに依存しない。
【０００３】
図１は、データ・ミラーリングに対する第１のアプローチを利用するシステム１００を示すブロック図であり、サイトＡに記憶されたデータは、サイトＢにミラーリングされる。ファイルサーバ１３０は、データベース１４０に記憶されたデータをデータベース１４２に同期して複製する。ファイルサーバ１３０が、データベース１４０内のデータ・ブロックに変更を加えるデータベースサーバ１２０によって発行されたトランザクションを処理するごとに、ファイルサーバ１３０は、ファイルサーバ１３２への変更を反映するメッセージを送信する。メッセージを受信する際、ファイルサーバ１３２は、データベース１４０に加えられた変更を反映するために、データベース１４２に記憶されたデータを更新する。データベース１４２は、データベース１４０上で実行されたのと同じトランザクションをデータベース１４２に実行する、あるいはデータベース１４０に記憶されたデータの現在の状態を反映するためにデータベース１４２の不揮発性メモリを更新するなど、様々な手法を使用して更新することができる。
【０００４】
クライアント１１０およびクライアント１１２などのクライアントは、データベース内のデータを読み書きするために、データベースサーバにＩ／Ｏ要求を発行することが可能である。データベース１４０および１４２の一貫性を保証するために、システム１００におけるすべてのクライアントは、サイトＡでデータベースサーバ１２０を通じてすべてのＩ／Ｏ要求を発行し、それによって、クライアントが関連付けられたサイトに拘わらず、すべてのクライアントが、ミラーリングされるデータの同じ表示を有することを保証する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図１に示されたデータ・ミラーリングのためのアプローチは、幾つかの問題点を有する。まず、クライアント１１２などのサイトＡに関連付けられないクライアントからのすべてのＩ／Ｏ要求は、それらのクライアントが、異なるサイトでデータベースサーバにそれらのＩ／Ｏ要求を送信しなければならないので、性能に不利な条件に遭遇することがある。クライアントからのすべてのＩ／Ｏ要求が、要求しているクライアントから地理的に離れている場合がある単一のデータベースサーバを通じて送られるので、遠隔に位置するそれらのクライアントは、Ｉ／Ｏ要求について大幅な伝送遅延に直面することがある。さらに、単一のデータベースサーバは、システム１００でのクライアントからのすべてのＩ／Ｏ要求に対してボトルネックとして作用する。
【０００６】
第２に、サイトＡが動作不能になった場合（たとえば、ファイルサーバ１３０がクラッシュした場合、あるいは、利用不可能になった場合）、データベースサーバ１２０およびデータベースサーバ１２０に接続するシステム１００内のすべてのクライアントは、サイトＡの故障したシステムと交換するサイトＢなどのバックアップ・システムが使用可能になるまで、サービスの一時的損失に遭遇する。
【０００７】
第３に、恐らく動作不能になるファイルサーバ１３０とファイルサーバ１３２との間の通信リンクによって、ファイルサーバ１３０がファイルサーバ１３２への書き込み動作を複製することができない場合には、１つ以上の書き込み動作を複製することができないので、データベース１４０および１４２がもはや相互に同期しないときには、データベース１４０あるいはデータベース１４２が、遭遇した問題から回復するためのバックアップ・システムとして使用されるべきか否かを判断する際に注意が必要である。データベースがバックアップ・システムとして選択され、選択されたデータベースが、システムにおけるいずれかのデータベース上で実行されたすべての書き込み動作を反映しない場合には、データベースに加えられた変更は失われる。
【０００８】
図２は、データ・ミラーリングのための第２のアプローチを示すブロック図である。図２が示すように、各サイトで記憶されたデータベースは、それぞれ、複数のパーティションに分割される。たとえば、データベース２４０は、パーティションＡおよびＢ’を有し、データベース２４２は、パーティションＡ’およびＢを有する。データベース２４０内のパーティションＡに記憶されたデータは、データベース２４２内のパーティションＡ’にミラーリングされ、そして、データベース２４２内のパーティションＢに記憶されたデータは、データベース２４０内のパーティションＢ’にミラーリングされる。データベース２４０は、パーティションＡのための一次サイトとされ、データベース２４２は、パーティションＢのための一次サイトとされている。
【０００９】
要求がそのサイトにミラーリングされるパーティションに記憶されたデータにみに関する（つまり、その要求を発行するクライアント、およびその要求を提供するデータベースは、両方とも同じサイトにある）場合、かつその場合に限って、クライアントからのデータ書き込みまたは読み出し要求は、ローカルで実行することができる。たとえば、クライアント２１０がパーティションＡ内のデータ・ブロックに書き込み、あるいは読み出し要求を発行する場合には、その要求は、データベース２４０でローカルに実行されることが可能である。しかしながら、クライアント２１０がパーティションＢ内のデータ・ブロックへの書き込み、あるいは読み出し要求を発行する場合には、データベースサーバ２２０は、その要求がデータベース２４２で実行されることができるように、ファイルサーバ２３２にその要求を送るであろう。このようにデータをパーティションで区切ることは、一次サイトがローカル・サイトであるパーティション内で、データに対してトランザクションを処理することの実行遅れを低減する一助となる。しかしながら、この手法は、一次サイトがリモート・サイトであるパーティション内でデータに対してトランザクションを処理することの実行遅れを低減しない。
【００１０】
しかし、このアプローチは、サイト間でデータを複製することができない場合には、あるいは特定のサイトが動作不能になった場合に、問題がある。第１のサイト（一次サイト）上のパーティションから第２のサイト（二次サイト）上の対応するパーティションにデータを複製することができないときには、一次サイトでのデータベースには、複製が成功しなかったことは、通知されない。その結果、二次サイトに複製されたデータを記憶しているパーティションは、陳腐化し、古くなることがある。その後、一次サイトが動作不能になった場合には、そこに記憶されたデータが古いので、二次サイトに複製されたデータを記憶するパーティションは、一次サイトの動作不能状態から回復するのに使用されることはできない。古いデータの使用は、データベースの一貫性原則に違反する。
【００１１】
したがって、上述されたアプローチに関連する問題を回避しつつ、データをミラーリングする技術において対処されていない要求が存在する。
【課題を解決するための手段】
【００１２】
この項に記述されたアプローチは、追求することができたアプローチではあるが、必ずしも以前に着想あるいは追求されたアプローチである必要はない。したがって、もし他の方法で示されなければ、この項に記述されたアプローチのうちのいずれも単にこの項へのそれらの包含による先行技術としての資格を有すると仮定されるべきではない。
【図面の簡単な説明】
【００１３】
【図１】データ・ミラーリングの第１のアプローチを示すブロック図である。
【図２】データ・ミラーリングの別のアプローチを示すブロック図である。
【図３】本発明の実施形態にかかるデータ・ミラーリング・システムを示すブロック・ネットワーク図である。
【図４】実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。
【図５】本発明の実施形態にかかるメンバーシップ投票動作を開始する機能ステップを示すフローチャートである。
【図６】本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。
【図７】本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。
【図８】本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。
【図９】本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。
【図１０】本発明の実施形態が実施されることが可能なコンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【００１４】
本発明は、添付の図面の図において、限定としてではなく実施例として示されており、同じ参照番号は類似の要素を示す。
【００１５】
発明の詳細な説明
複数のサイト間でデータをミラーリングする方法およびシステムが記述される。次の記述では、説明の目的のために、多数の特定の詳細が本発明についての完全な理解を提供するために説明される。しかしながら、本発明は、これらの特定の詳細なしに実施されてもよいことは明らかである。他の例では、よく知られている構造および装置が、本発明を不必要に不明瞭にしないようにするためにブロック図の形態で示されている。
【００１６】
（アーキテクチャー概要）
図３は、本発明の実施形態にかかるデータ・ミラーリング・システム３００を示すブロック・ネットワーク図である。データ・ミラーリング・システム３００は、データ・ミラーリング・システム３００における各サイト間でデータを双方向に複製するのに使用されることが可能である。さらに、ここで記述されるように、他の利点が、データ・ミラーリング・システム３００を使用して達成されることが可能である。図３のデータ・ミラーリング・システム３００は、サイト３１０およびサイト３１２、クライアント３２０およびクライアント３２２、データベースサーバ３３０およびデータベースサーバ３３２、ファイルサーバ３４０およびファイルサーバ３４２、データベース３５０およびデータベース３５２、定足数装置３６０、通信リンク３７０、３７２、３７４、および３７６を備えている。
【００１７】
サイトは、ここで広く使用されているように、データ・ミラーリング・システム３００における物理的な要素の論理的な集合体を表わしている。データは、データ・ミラーリング・システム３００において、第１のサイトから第２のサイトに複製されることが可能である。データ・ミラーリング・システム３００の多数の要素は、１つのサイトで記憶されることが可能である。たとえば、１つのサイトは、１つ以上のクライアント、１つ以上のデータベースサーバ、１つ以上のファイルサーバ、１つ以上のデータベース、および、１つ以上の定足数装置を備えることが可能である。サイトにおける物理的な要素の論理的な集合体は、サイズが変化する領域に物理的に配置されることがある。たとえば、サイトは、特定の建物、建物の特定の階、あるいは建物の特定の部屋に相当する場合がある。さらに、サイトは、相互に物理的に近いか、あるいは離れていることがある。説明の容易さのために、図３は、単に２つのサイトを示している。しかしながら、実施形態は、単一のサイトを含む、任意の数のサイトを有することが可能である。
【００１８】
クライアントは、ここでは広く使用されているように、サービスの要求を発行することができる任意のソフトウェアまたはハードウェアの要素を表わしている。たとえば、データベースサーバへの要求を発行することができる要素は、典型的には、データベース・クライアントと呼ばれる。説明の容易さのために、各サイトは、図３において単一のクライアントで図示されている。しかしながら、サイトは、任意の数のクライアントを含むことが可能である。クライアント３２０および３２２のようなクライアントの限定的でない説明的な実施例は、ソフトウェア・アプリケーション、パーソナル・コンピュータ、データベースサーバに要求を発行することができるマシン、およびデータベースサーバを含んでいる。
【００１９】
データベースサーバ３３０およびデータベースサーバ３３２のようなデータベースサーバは、データの管理のために使用される１つ以上のソフトウェアおよび／またはハードウェア要素である。データベース管理の他の機能の中で、データベースサーバは、典型的には、データベースへのアクセス、およびデータベースにアクセスするデータベース・クライアントによる処理要求を管理し、容易にする。２つのデータベースサーバ（すなわち、データベースサーバ３３０およびデータベースサーバ３３２）だけが図３に示されているが、任意の数のデータベースサーバがデータ・ミラーリング・システム３００内で利用されることが可能である。
【００２０】
ファイルサーバは、ここで広く使用されているように、ファイルのハンドリングおよび記憶機能を実行することができる任意のハードウェアまたはソフトウェア要素を表わしている。ファイルサーバ３４０およびファイルサーバ３４２のようなファイルサーバは、データベースサーバから受信され、データベース上で実行される動作を読み書きする。ファイルサーバは、データベース管理システム、あるいはデータベース管理システム内のモジュールから個別に、および無関係に実行するシステムを含むことが可能であるため、用語「ファイルサーバ」が、ここでは広く使用されていることに留意するべきである。
【００２１】
データベース３５０およびデータベース３５２のようなデータベースは、電子情報の永続的な記憶装置である。データベースの限定的でない説明的な実施例は、リレーショナル・データベース、オブジェクト指向型データベース、多次元データベース、コンピュータの分散したクラスタ中のデータベース、およびサーバ・ブレードのグリッド内のデータベースを含んでいる。データベースサーバの分散したクラスタは、米国特許第６，３５３，８３６号にさらに詳細に説明されており、参照することによってその全体がここに取り込まれる。１組のデータベースサーバが動作するグリッドは、その全体が参照によってここに組み込まれる米国仮特許出願第６０／５００，０５０号にさらに詳細に説明されている。
【００２２】
定足数装置は、ここで広く使用されているように、メンバーシップ投票動作を実行することができるソフトウェア要素の任意のハードウェアを表わしている。本実施形態においては、メンバーシップ投票動作は、どのデータベースサーバが複製メンバーシップから除去されるべきかを判断している。定足数装置３６０のような定足数装置の動作は、「双方向複製」と表題をつけられた項目中でさらに詳細に以降に説明される。説明の容易さのために、１つの定足数装置だけが図３に示されている。しかしながら、データ・ミラーリング・システム３００の実施形態は、任意の数の定足数装置を含むことが可能である。
【００２３】
通信リンク３７０および３７２は、データベースサーバ（たとえば、データベースサーバ３３０またはデータベースサーバ３３２、および定足数装置３６０）間でのデータの交換を提供する任意の媒体あるいは機構によって実現されることが可能である。通信リンク３７４および３７６は、ファイルサーバ（たとえばファイルサーバ３４０、ファイルサーバ３４２）間でデータの交換を提供する任意の媒体あるいは機構によって実施されることが可能である。通信リンク３７０、３７２、３７４、および３７６の実施例は、非限定的に、ローカル・エリア・ネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ））、ワイド・エリア・ネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ））、イーサネット（登録商標）またはインターネット、または一もしくは複数の地上、衛星もしくは無線リンクのようなネットワークを含んでいる。
【００２４】
（ミラーリング環境におけるエラー・ハンドリング  −  概要）
方法および機構が、複数のサイト間でデータをミラーリングするために示されている。１つの手法によれば、複製関係は、第１のサイトおよび第２のサイトを含む複数のサイト間で確立される。本実施形態においては、複製関係は、複数のサイトのうちの任意のサイトでなされた少なくとも幾つかの変更が、複数のサイトのうちの他のサイトのそれぞれで複製されることを提供する。
【００２５】
複製関係の第１のサイトに関連付けられた第１のデータベースサーバは、書き込み動作の実行を要求する。その後、書き込み動作が、第１のサイトで実行される。メッセージは、書き込み動作が複製関係の第２のサイトにミラーリングされることを要求するように送信される。
【００２６】
説明の目的で、第２のサイトが書き込み動作をうまく実行することができなかったと仮定する。したがって、第１のデータベースサーバは、書き込み動作が第２のサイトでうまく実行できなかったという印を受信する。これに応じて、第１のデータベースサーバは、第２のサイトに関連付けられた第１のデータベースサーバあるいは第２のデータベースサーバが複製メンバーシップから除去されるべきか否かを判断するために、メンバーシップ投票動作を開始する。
【００２７】
一実施形態においては、第１のデータベースサーバは、定足数装置と通信することによってメンバーシップ投票動作を開始する。定足数装置は、メンバーシップ投票動作を実行することができるハードウェアまたはソフトウェア要素である。定足数装置は、どのデータベースサーバがより重要か、あるいは、より信頼できるかのような、多くの要因に基づいた複製メンバーシップから、どのデータベースサーバが除去されるべきかを判断することが可能である。定足数装置は、メンバーシップを判断するために、様々なメンバーシップ投票プロトコルを利用することが可能である。
【００２８】
第２のサイトに関連付けられた第２のデータベースサーバが複製メンバーシップから除去されるべきであると判断した場合には、第１のデータベースサーバは、書き込み動作が第２のサイトでもはや複製されることがないことを示すメッセージを第１のサイトのファイルサーバに送信することが可能である。追加の実施形態が、さらに詳細に以下に記述される。
【００２９】
（優先度に基づく確定ハンドリング  −  概要）
本手法も、トランザクションに関連付けられた優先度値に基づくトランザクションの確定を取り扱うために提供されている。１つの手法によれば、データは、複数のサイト間でミラーリングされる。複数のサイトのうちの第１のサイトでは、第１のレコードが維持されている。第１のレコードは、第１のサイトで実行されたどのトランザクションが複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しているかを識別する。やり直し情報は、ここで広く使用されているように、トランザクションについて記述する情報を表わしている。さらに、第１のサイトでは、第２のレコードが維持されている。第２のレコードは、第１のサイトで実行されたどのトランザクションが第１のサイトで固定記憶域にログを取られたそれらのやり直し情報を有しているかを識別する。
【００３０】
第１のサイトで実行されるトランザクションに関連付けられた優先度値が判断される。そのトランザクションは、データ・ブロックへの修正を特定する。やり直し情報は、典型的には、やり直しログ・ファイルに記憶される。ほとんどの実施では、やり直しログ・ファイルは、トランザクションが確定する順に連続してやり直し情報を記憶する。したがって、優先度の高いトランザクション（それが発行されたサイトが動作不能になった場合に、トランザクションが失われるべきではないことを示す優先度値を備えたトランザクション）に関連付けられたやり直し情報が複製されたことを保証することは、優先度の高いトランザクションが既に複製される前に、優先度の低いトランザクション（それが発行されたサイトが動作不能になった場合に、トランザクションが失われることがあることを示す優先度値を備えたトランザクション）に関連付けられたやり直し情報が確定されたことを保証する。
【００３１】
優先度値が、第１のサイトが動作不能になった場合にトランザクションが失われるべきではないことを示すときには、トランザクションは、第１のレコードがすべての他のトランザクションが確定されたことを示した後であって、第１のサイトでのトランザクションが複数のサイトのうちの他のサイト複製されたそれらの対応するやり直し情報を有する前にのみ、確定される。
【００３２】
しかしながら、一実施形態においては、優先度値が、第１のサイトが動作不能になった場合にトランザクションが失われる場合があることを示すときには、トランザクションは、第１のサイトでのトランザクションが複数のサイトのうちの他のサイトに複製されたそれらの対応するやり直し情報を有する前であって、第１のレコードが、確定されたすべての他のトランザクションが確定されることを示す前に確定される。他の実施形態においては、優先度値が、第１のサイトが動作不能になった場合にトランザクションが失われる場合があることを示すときには、トランザクションは、第１のサイトでのトランザクションが第１のサイトで固定記憶域に記憶されたそれらの対応するやり直し情報を有する前であって、第２のレコードが、確定されたすべての他のトランザクションが確定されることを示した後で確定される。
【００３３】
追加の実施形態は、さらに詳細に以下に記述される。
（双方向複製）
さらに詳細に以下に説明されるように、実施形態は、システム３００の各サイトでの、同時の、ローカル読み取り動作およびローカル書き込み動作をサポートしている。書き込み動作は、システム３００内のサイト相互に同期あるいは非同期に複製されることが可能である。一実施形態においては、書き込み動作の性能は、別のサイトへの書き込み動作の複製の延期によって強化されることが可能である。たとえば、別のサイトへの書き込み動作の複製は、優先度の高いトランザクションが確定する必要があるまで、あるいは、先書きログまたは後書きログが保存される必要がある時点へ延期されることが可能である。書き込み動作の延期は、書き込み動作の複製が効率的にバッチ処理されることを可能にする。
【００３４】
図４は、実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャート４００である。最初に、ステップ４１０において、複製関係が複数のサイト間で確立される。本実施形態においては、複製関係は、データ・ミラーリング・システム３００内の各サイトに対して確立される。たとえば、複製関係は、図３のサイト３１０およびサイト３１２に対して確立される。一実施形態においては、複製関係は、データ・ミラーリング・システム３００内のいずれかのサイトに加えられた少なくとも幾つかの変更が、データ・ミラーリング・システム３００内の他のサイトのそれぞれに複製されることを提供する。ステップ４１０の実行後、処理は、ステップ４２０に進む。
【００３５】
ステップ４２０において、複数のサイトのうちの第１のサイトに関連付けられた第１のデータベースサーバは、書き込み動作の実行を要求する。本実施形態においては、ステップ４２０は、サイト３１０で、データベースサーバ３３０によって実行され、書き込み動作の実行を要求することが可能である。書き込み動作は、データベース３５０のような、第１のサイトにあるデータベースにデータを書き込む動作であることが可能である。ステップ４２０の実行の後で、処理は、ステップ４３０に進む。
【００３６】
ステップ４３０において、ステップ４２０で要求された書き込み動作は、第１のサイトで実行される。一実施形態においては、書き込み動作は、データベース３５０で書き込み動作を実行するようにファイルサーバ３４０に指示するデータベースサーバ３３０によってサイト３１０で実行されることが可能であり、その後、ファイルサーバ３４０は、データベース３５０で書き込み動作を実行する。さらに、ステップ４３０において、書き込み動作が第２のサイトにミラーリングされることを要求するメッセージが送信される。一実施形態においては、ファイルサーバ３４０は、サイト３１２でファイルサーバ３４２に書き込み動作をミラーリングする要求を送信することが可能である。ステップ４３０の実行の後で、処理は、ステップ４４０に進む。
【００３７】
各サイトでの各データベース・サーバは、１つ以下の書き込み動作が、ディスク上に同時に永続的に記憶された同じデータ・ブロックを変更することがあることを保証する機構を使用するので、書き込み動作は、システム内の各サイトで実行されることが可能であることを注記しておく。そのような機構は、様々な手法を使用して実施されることができる。それは、グローバル・ロック・マネージメント（共有ディスク・クラスタ）あるいはディスクの分割（非共有クラスタ）の形態を含むことが可能である。
【００３８】
ステップ４４０において、第１のデータベースサーバは、第２のサイトで書き込み動作をうまく実行することができないという印を受信する。たとえば、データベースサーバ３３０は、サイト３１２で書き込み動作をうまく実行することができないという印を受信する。一実施形態においては、その印は、メンバーシップ投票動作が実行されるべきであることを示す入力／出力エラーである。入力／出力エラーは、データベースサーバ３３０によってメッセージで受信される固有のエラー・コードを使用して表現されることが可能である。サイト３１０で受信された印は、サイト３１２で書き込み動作を複製することができないと識別する入力／出力エラーであることが可能である。一実施形態においては、その印は、データ・ミラーリング・システム３００内の１つのサイトがデータ・ミラーリング・システム３００内の別のサイトで実行された書き込み動作を反映しないときに、ステップ４４０でのみ、受信される。したがって、データベースサーバ３３２が故障した場合には、ステップ４４０の印は、サイト３１０によって受信されない。一実施形態においては、ファイルサーバ３４２が故障したか、データベース３５２が故障したか、通信リンク３７４が故障したか、あるいは、通信リンク３７６が故障した場合には、サイト３１０は、ステップ４４０の印を受信する。ステップ４４０の実行の後で、処理は、ステップ４５０に進む。
【００３９】
ステップ４５０において、第１のデータベースサーバは、第１のデータベースサーバあるいは、第２のサイトに関連付けられた第２のデータベースサーバが、複製メンバーシップから除去されるべきか否かを判断するために、メンバーシップ投票動作を開始する。たとえば、ステップ４５０は、データベースサーバ３３０あるいはデータベースサーバ３３２が、複製メンバーシップから除去されるべきか否かを判断するために、メンバーシップ投票動作を開始するデータベースサーバ３３０によって実行されることが可能である。
【００４０】
一実施形態においては、第１のデータベースサーバは、定足数装置と通信することによって、メンバーシップ投票動作を開始する。たとえば、データベースサーバ３３０は、定足数装置３６０と通信リンク３７０を通じて通信することによって、メンバーシップ投票動作を開始する。
【００４１】
図５は、本発明の実施形態にかかるメンバーシップ投票動作を開始する機能ステップを示すフローチャートである。ステップ５１０において、定足数装置は、書き込み動作をうまく実行することができないことを通知される。たとえば、ステップ５１０は、サイト３１２で書き込み動作をうまく実行することができなかったことを通信リンク３７０を通じて定足数装置３６０に通知するデータベースサーバ３３０によって実行されることが可能である。ステップ５１０の実行の後で、処理は、ステップ５２０に進む。
【００４２】
ステップ５２０において、ステップ５１０で通知された定足数装置は、どのデータベースサーバが複製メンバーシップから除去されるべきかを判断する。たとえば、ステップ５２０は、どのデータベースサーバが複製関係から除去されるべきかを判断する定足数装置３６０によって実行されることが可能である。本実施形態においては、どのデータベースサーバが複製関係から除去されるべきかの判断は、どのデータベースサーバが、より重要かあるいはより信頼できるかを判断することを含んでいる。データ・ミラーリング・システム３００内のすべてのデータベースサーバが等しく重要あるいは信頼できる場合には、デフォルト・データベース・サーバは、定足数装置によって選択されることが可能である。
【００４３】
一実施形態においては、データベースサーバ３３２が複製メンバーシップから除去されるべきであると定足数装置３６０が判断した場合には、データベースサーバ３３０は、サイト３１０で実行された書き込み動作がもはやサイト３１２で複製することができないことを示すメッセージを、ファイルサーバ３４０に送信する。これに代えて、サイト３１０が複製メンバーシップから除去されるべきであると定足数装置３６０が判断した場合には、データベースサーバ３３２は、もはやサイト３１０でデータが複製されることがないことをファイルサーバ３４２に通知する。ファイルサーバは、もはや異なるサイトに書き込み動作が複製されなくても、依然として、ローカルで読み書き動作を処理することができる。
【００４４】
一実施形態においては、定足数装置３６０は、複数のミラーリング装置で構成され、ステップ５１０は、一次ファイルサーバによって実行される。一次ファイルサーバは、複数のサイトのうちの１つに関連付けられたファイル・サーバであり、それを通じて、複数のサイトのうちの他のサイトに関連付けられたすべての他のファイルサーバが、定足数装置と通信する。たとえば、データベースサーバ３３０は、一次ファイル・サーバであることが可能である。したがって、データベースサーバ３３２は、データベースサーバ３３０を通じて定足数装置３６０と通信する。
【００４５】
他の実施形態においては、定足数装置３６０は、データ・ミラーリング・システム３００内のいずれの他のサイトとも異なる故障領域に関連付けられた別のサイトに位置している。この実施形態においては、データ・ミラーリング・システム３００内の各データベース・サーバは、定足数装置３６０と直接接触することが可能である。しかしながら、定足数装置３６０が故障した場合には、データ・ミラーリング・システム３００内の各サイトは故障する。なぜならば、たとえそれらのサイトが、さもなければ正常で、相互にネットワークおよび入力／出力接続を有していても、各サイトが定足数装置３６０と通信することができないからである。
【００４６】
一実施形態においては、サイトは、そのサイトでデータベースサーバが複製メンバーシップから除去されるべきであると定足数装置が判断した後で、複製関係を復帰させることが可能である。たとえば、もしサイト３１２が複製関係から除去された場合であっても、サイト３１２は、複製関係を復帰させることが可能である。複製関係を復帰させるサイト３１２に応じて、サイト３１２のデータは、サイト３１０のデータと再同期され、データベース３５２は、再び組み込まれる。
【００４７】
（やり直し情報書き込みの性能改善）
書き込み動作の同期複製は、書き込み動作の待ち時間およびコストを増加させる。さらに、ファイルサーバは、非同期に書き込み動作を複製してもよいが、まだ複製されていない他の場所で開始された書き込み動作、およびこれから発行される書き込み動作を調整するための注意が払われなければならない。非同期複製を有利に利用する多数の実施形態が下に説明される。
【００４８】
非同期複製を通じてやり直し情報を書き込む性能を改善する幾つかの実施形態が以下に説明される。やり直し情報は、ここで広く使用されているように、トランザクションについて記述する情報を表わしている。本実施形態においては、やり直し情報は、確定されているか、あるいはこれから確定されるトランザクションについて記述している。本実施形態においては、やり直し情報は、やり直しログ・ファイルに記録されることが可能である。やり直し情報は、確定されているトランザクションを巻き戻す、あるいは「取消す」ことに使用されることが可能である。
【００４９】
図６は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図６において示されたステップは、複数のサイト間でやり直し情報をミラーリングするのに使用されることが可能である。最初に、ステップ６１０において、第１のレコードが複数のサイトのうちの第１のサイトに維持されている。第１のレコードは、第１のサイトで実行されたどのトランザクションが複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しているかを識別する。ステップ６１０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。本実施形態においては、ステップ６１０は、やり直しログ・ファイルの一部を識別することによって実行されることが可能である。ステップ６１０のやり直しログ・ファイルの識別された部分に反映されたすべてのトランザクションは、複数のサイトのうちの他のサイトに複製されている。
【００５０】
たとえば、ステップ６１０において識別されたやり直しログ・ファイルの部分は、やり直しログ・ファイルに反映された特定のトランザクションを識別するレコードを維持することによって識別されることが可能である。そのやり直しログ・ファイルは、複数のサイトのうちの他のサイトに複製されたその対応するやり直し情報を有しており、最大ログ連続番号（Ｌｏｇ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ（ＬＳＮ））に関連付けられている。特定のトランザクションに関連付けられたＬＳＮ以下であるＬＳＮを有したやり直しログ・ファイル中のすべてのトランザクションは、複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有するやり直しログ・ファイルの識別された部分に存在する。ステップ６１０の実行の後で、処理は、ステップ６２０に進む。
【００５１】
ステップ６２０において、第２のレコードは、複数のサイトのうちの第１のサイトで維持される。第２のレコードは、第１のサイトで実行されたどのトランザクションが、第１のサイトで固定記憶域にログを取られたそれらのやり直し情報を有しているかを識別する。ステップ６２０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。本実施形態においては、ステップ６２０は、やり直しログ・ファイルの一部を識別することによって実行されることが可能である。ステップ６２０のやり直しログ・ファイルの識別された部分に反映されたすべてのトランザクションは、第１のサイトで固定記憶域に記録されている。
【００５２】
たとえば、ステップ６２０で識別されたやり直しログ・ファイルの部分は、第１のサイトで固定記憶域にログを取られたその対応するやり直し情報を有しており、最大ログ連続番号（ＬＳＮ）に関連付けられたやり直しログ・ファイルに反映された特定のトランザクションを識別するレコードを維持することによって識別されることが可能である。特定のトランザクションに関連付けられたＬＳＮ以下であるＬＳＮを有したやり直しログ・ファイル中のすべてのトランザクションは、第１のサイトで固定記憶域にログを取られたそれらのやり直し情報を有しているやり直しログ・ファイルの識別された部分に存在する。ステップ６２０の実行の後で、処理は、ステップ６３０に進む。
【００５３】
ステップ６３０において、トランザクションに関連付けられた優先度値が判断される。優先度値は、トランザクションがいつ確定するのかを、そのトランザクションの重要性に基づいて判断するのに使用されることが可能である。たとえば、第１のサイトが動作不能になった場合に特定のトランザクションが失われなければ、そのトランザクションは、第１のサイトが動作不能になった場合に失い得るトランザクションよりも優先度の高い値を与えられることが可能である。
【００５４】
一実施形態においては、ステップ６３０の優先度値に関連付けられたトランザクションは、第１のサイトで実行される。一実施形態においては、そのトランザクションは、修正が少なくとも１つのデータ・ブロックに加えられることを特定する。トランザクションによって修正されたデータ・ブロックは、サイト３１０のデータベース３５０内に存在することがある。説明の容易さのために、トランザクションは、１つのデータ・ブロックを修正するように説明されるが、トランザクションは、複数のデータ・ブロックを修正するものであってもよい。ステップ６３０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。ステップ６３０の実行の後で、処理は、ステップ６４０に進む。
【００５５】
ステップ６４０において、判断は、第１のサイトが動作不能になった場合にトランザクションが失われるべきではないことを、先の値が示すか否かに関してなされる。ステップ６４０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。
【００５６】
ステップ６４０の判断が肯定的な場合（優先度値が、第１のサイトが動作不能になった場合にトランザクションが失われるべきではないことを示す）、処理は、ステップ６５０に進む。ステップ６５０において、トランザクションは、トランザクションに関連付けられたやり直し情報がデータ・ミラーリング・システム３００内の他のサイトのそれぞれに複製されたことを第１のレコードが示した後でのみ確定される。ステップ６５０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。
【００５７】
一実施形態においては、トランザクションに関連付けられたやり直し情報が複数のサイトのうちの他のサイトに複製されているか否かのステップ６５０でなされた判断は、トランザクションに関連付けられた確定レコードを第１のレコードと比較することによって実行される。
【００５８】
ステップ６４０の判断が否定的な場合（優先度値が、第１のサイトが動作不能になった場合にトランザクションが失われることがあることを示す）、処理は、ステップ６６０に進む。ステップ６６０において、トランザクションは、当該トランザクションに関連付けられたやり直し情報が第１のサイトで固定記憶域に記憶されたことを第２のレコードが示した後でのみ確定される。ステップ６６０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。
【００５９】
一実施形態においては、トランザクションに関連付けられたやり直し情報が固定記憶域に記憶されたか否かについてのステップ６６０でなされた判断は、トランザクションに関連付けられた確定レコードを第２のレコードと比較することによって実行される。
【００６０】
代替的な実施形態（図６において示さず）においては、ステップ６６０は、トランザクションに関連付けられたやり直し情報が複数のサイトのうちの他のサイトに複製されていることを第１のレコードが示す前に、トランザクションを確定することによって実行されることが可能である。一実施形態においては、サイト３１０のデータベースサーバ３３０は、トランザクションに関連付けられたやり直し情報が複数のサイトのうちの他のサイトに複製されていることを第１のレコードが示す前に、トランザクションを確定する。トランザクションによって生成されたやり直し情報は、トランザクションに関連付けられたと見なされる。
【００６１】
上述された実施形態は、トランザクションの重要性に基づいてトランザクションをいつ確定すべきかの判断を有利に可能にする。たとえば、特定のトランザクションが非常に重要なトランザクションである場合（任意の状況下でも失われてはならない）、そのトランザクションの前に確定されたすべての他のトランザクションが他のサイトに複製された対応するやり直し情報を有していることを第１のレコードが示した後でのみ、トランザクションが確定される。しかしながら、さほど重要でないトランザクションは、そのトランザクションの前に確定されたすべての他のトランザクションが第１のサイトで固定記憶域に記憶されたそれらの対応するやり直し情報を有していることを第２のレコードが示した後で、確定されることが可能である。この方法においては、さほど重要でないトランザクションは、非常に重要なトランザクションよりも早く確定されることがあるが、確定された重要でないトランザクションは、確定されたトランザクションに関連付けられた変更が複数のサイトのうちの他のサイトにミラーリングされる前に第１のサイトが動作不能になった場合に、失われることがある。
【００６２】
複製段階の書き込み動作が遅れ、その書き込み動作を出した特定のサイトが動作不能になった場合には、生き残ったサイトは、動作不能なサイトの回復を開始する前に、複数のサイトのうちの他のサイトのそれぞれで受信される動作不能なサイトから送信されたすべてのメッセージを待たなければならない。この履行は、そのサイトが動作不能になるのに先立って動作不能なサイトから送信され、そして、まだ受信されていないメッセージが、回復を開始したかあるいは動作不能なサイトの回復を完了した後で生き残ったサイトによって、処理されないことを保証する。これに代えて、生き残ったサイトは、１つ以上の生き残ったサイトが動作不能なサイトの回復を開始したかあるいは完了した後で、動作不能なサイトから送信された任意のメッセージを無視することも可能である。
【００６３】
図７は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図７において示されたステップは、やり直しログへの書き込み動作の複製を有利に遅らせるために使用されることが可能である。データベースサーバがやり直しログにデータを書き込む待ち時間を低減することは有利である。データベースサーバは、直前に確定されたトランザクションの損失をサイト故障の事態に許容することができることを提供された、やり直しログへの書き込みの複製を遅らせることができる。以下に説明される本発明の実施形態は、永続的に記憶されていない変更を反映するデータ・ブロックが、永続的に記憶されるかあるいは別のサイトに転送されるまで、やり直しログへの書き込みの複製を有利に遅らせる。
【００６４】
最初に、ステップ７１０において、トランザクションは、複数のサイトのうちの第１のサイトで処理される。ステップ７１０は、書き込み動作のようなトランザクションを処理するサイト３１０のデータベースサーバ３３０によって実行されることが可能である。
【００６５】
ステップ７２０において、情報が、処理されたトランザクションを反映するように生成される。その情報は、揮発性メモリ内に生成されることが可能である。情報は、処理されたトランザクションに関するやり直し情報を含むことが可能である。ステップ７２０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。処理されたトランザクションを反映する情報が生成された後で、処理は、ステップ７３０に進む。
【００６６】
ステップ７３０において、判断は、処理されたトランザクションに関連付けられたデータ・ブロックが、永続的に記憶されるかあるいはそのデータ・ブロックが別のサイトに転送される前に、ステップ７２０で生成された情報が永続的に記憶されたか否かに関してなされる。ステップ７３０は、サイト３１０のデータベースサーバ３３０によって実行されることが可能である。
【００６７】
ステップ７３０の判断が肯定的な場合（処理されたトランザクションに関連付けられたデータ・ブロックが、永続的に記憶されるかあるいはデータ・ブロックが別のサイトに転送される前に、ステップ７２０で生成された情報が永続的に記憶される）、処理は、ステップ７４０に進む。ステップ７４０において、データ・ブロックが永続的に記憶されるか、データ・ブロックが複数のサイトのうちの別のサイトに転送される前に、ステップ７２０で生成された情報は、永続的に記憶される。
【００６８】
一実施形態においては、ステップ７４０は、複数のトランザクションに関する情報が永続的に記憶されるように実行されることが可能である。たとえば、第１のサイトで、第２のトランザクションが処理され、情報が、処理された第２のトランザクションを反映する第１のサイトで揮発性メモリ内に生成されることが可能である。ステップ７２０で生成された情報（以下、「第１の情報」）および第２のトランザクションを反映する情報（以下、「第２の情報」）が、処理された第２のトランザクションに関連付けられた第２のデータ・ブロックが永続的に記憶されるか、あるいは、第２のデータ・ブロックが複数のサイトのうちの別のサイトに転送される前に永続的に記憶されない場合には、第１の情報および第２の情報は、第２のデータ・ブロックが永続的に記憶されるか、または第２のデータ・ブロックが複数のサイトのうちの別のサイトに転送される前にバッチ処理を使用して永続的に記憶されることが可能である。一実施形態においては、データベースサーバ３３０は、バッチ処理を使用する第１の情報および第２の情報を永続的に記憶している。一実施形態においては、バッチ処理は、非同期であることが可能である。非同期バッチ処理の結果は、入力／出力結果ディスクリプタ（たとえば、ＵＮＩＸ（登録商標）のａｉｏ＿ｒｅｓｕｌｔ＿ｔ）を使用して判断されることが可能である。非同期入出力結果ディスクリプタは、バッチ処理が処理をいつ完了したかを判断するのに使用されることが可能である。
【００６９】
ステップ７３０の判断が否定的な場合（処理されたトランザクションに関連付けられたデータ・ブロックが永続的に記憶されるか、あるいは、データ・ブロックが別のサイトに転送される前に、ステップ７２０において生成された情報が永続的に記憶されていない）、処理は、ステップ７５０に進む。ステップ７５０において、処理されたトランザクションに関連付けられたデータ・ブロックは、永続的に記憶されるか、あるいは、転送される。
【００７０】
（データベース・ファイル書き込みの性能の改善）
非同期複製を通じたデータベース・ファイルへの書き込み性能を改善する幾つかの実施形態が下に説明されている。図８は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図８において示されているステップは、先書きログ・スキームを使用してデータベース・ファイルに書き込むのに使用されることが可能である。
【００７１】
最初に、ステップ８１０において、第１のレコードは、複数のサイトのうちの第１のサイトで維持される。第１のレコードは、第１のサイトで記憶された１つ以上のデータ・ブロックに加えられたどの変更が複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有しているかを識別するものである。第１のサイトは、先書きログ・スキームを実施する。先書きログ・スキームにおいては、永続的に記憶されない変更を反映するバッファ・キャッシュ内のデータ・ブロック（「汚い」データ・ブロック）は、または複数のデータ・ブロックに関連付けられたやり直し情報が永続的に記憶された後でのみ、永続的に記憶される。一実施形態においては、第１のサイトは、トランザクションの実行に対して、複数のサイトのうちの他のサイトにトランザクションを非同期に複製する。ステップ８１０は、サイト３１０でデータベース３５０に記憶された１つ以上のデータ・ブロックに加えられたどの変更がサイト３１２に複製された、関連付けられたやり直し情報を有しているかを識別する第１のレコードを維持するサイト３１０のデータベースサーバ３３０によって実行されることが可能である。複数のサイトのうちの他のサイトに複製されたやり直し情報を関連付けられた１つ以上のデータ・ブロックに加えられた変更は、各変更をやり直しログ内のログ連続番号（ＬＳＮ）に割り当て、複製されている直前の変更のログ連続番号を記憶することによって追跡されることが可能である。さらに、特定のデータ・ブロックに加えられた最後の変更に関連付けられたＬＳＮは、特定のデータ・ブロックのヘッダに記憶される。ステップ８１０の実行の後で、処理は、ステップ８２０に進む。
【００７２】
ステップ８２０において、第２のレコードは、複数のサイトのうちの第１のサイトで維持される。第２のレコードは、第１のサイトで記憶された１つ以上のデータ・ブロックに加えられたどの変更が、複数のサイトのうちの第１のサイトで固定記憶域にログを取られた、関連付けられたやり直し情報を有しているかを識別する。複数のサイトのうちの第１のサイトで固定記憶域にログを取られたやり直し情報を関連付けた１つ以上のデータ・ブロックに加えられた変更は、やり直しログ内のログ連続番号（ＬＳＮ）に各変化を割り当て、固定記憶域にログを取られた直前の変更のログ連続番号を記憶することによって追跡されることが可能である。ステップ８２０は、第２のレコードを維持するサイト３１０のデータベースサーバ３３０によって実行されることが可能である。第２のレコードは、サイト３１０でデータベース３５０に記憶された１つ以上のデータ・ブロックに加えられたどの変更が、サイト３１０で固定記憶域にログを取られた、関連付けられたやり直し情報を有しているかを識別する。ステップ８２０の実行の後で、処理は、ステップ８３０に進む。
【００７３】
ステップ８３０において、判断は、第１のサイトが、書き込みトランザクションが第１のサイトで発行されたのと同じ順に、書き込みトランザクションが複製されたか否かに関してなされる。サイト３１０のデータベースサーバ３３０は、ステップ８３０を実行することが可能である。
【００７４】
ステップ８３０の判断が肯定的な場合（第１のサイトが、書き込みトランザクションが第１のサイトで完了されたのと同じ順に、書き込みトランザクションを複製する）、処理は、ステップ８４０に進む。ステップ８４０において、第１のサイトで記憶された１つ以上のデータ・ブロックに加えられたいずれの変更も、固定記憶域にログを取られたやり直し情報を有していることを第２のレコードが示した後で、データ・ブロックは永続的に記憶される。１つ以上のデータ・ブロックに加えられた変更は、１つ以上のトランザクションによって実行されることが可能である。ステップ８４０は、サイト３１０でデータベース３５０に記憶された１つ以上のデータ・ブロックに加えられたいずれの変更も、サイト３１０で固定記憶域にログを取られた、関連付けられたやり直し情報を有していることを第２のレコードが示した後で、データベース３５０に特定のデータ・ブロックを永続的に記憶することによって実行されることが可能である。
【００７５】
ステップ８３０の判断が否定的な場合（第１のサイトが、書き込みトランザクションが第１のサイトで完了されたのと同じ順には、書き込みトランザクションを複製しない）、処理は、ステップ８５０に進む。ステップ８５０において、第１のサイトで記憶された１つ以上のデータ・ブロックに加えられたいずれの変更も、複数のサイトのうちの他のサイト複製されたやり直し情報を有していることを第１のレコードが示した後で、データ・ブロックは永続的に記憶される。１つ以上のデータ・ブロックに加えられた変更は、１つ以上のトランザクションによって実行されることが可能である。ステップ８５０は、サイト３１０でデータベース３５０に記憶された１つ以上のデータ・ブロックに加えられたいずれの変更が、複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有していることを第１のレコードが示した後で、サイト３１０のデータベース３５０に特定のデータ・ブロックを永続的に記憶することによって実行されることが可能である。特定のデータ・ブロックに加えられた変更が複数のサイトのうちの他のサイトに複製されたことを第１のレコードが示した後で、データ・ブロックに関連付けられたロックは、解除されることが可能である。具体的には、共有ディスクあるいは共有キャッシュ・クラスタ・データベースにおいては、データ・ブロックへの同時アクセスは、グローバル・ロック・マネージメントを使用して調整される。データ・ブロックに関連付けられたロックは、データ・ブロックに加えられた変更に関連付けられたやり直し情報が、複数のサイトのうちの他のサイトに複製されていることを、第１のレコードが示した後でのみ、解除されることが可能である。これは、データ・ブロックに加えられた先の変更に関連付けられた先のすべてのやり直し情報が、サイトのローカル固定記憶域において利用可能でない限り、リモート・サイトからデータ・ブロックを受信するいずれのサイトも、データ・ブロックを読み書きしないことを保証する。
【００７６】
図８において示された実施形態を使用して、異なるファイルへの書き込み動作が、該書き込み動作が発行された順に複製される場合には、特定のデータ・ブロックは、第２のレコードが特定のデータ・ブロックを更新したすべてのトランザクションを反映するとすぐに、永続的に記憶されることが可能である。このように、１つ以上のトランザクションによって特定のデータ・ブロックに加えられた変更に関連付けられたやり直し情報が複製された後でのみ、特定のデータ・ブロックの複製が生じるであろう。
【００７７】
本発明の実施形態は、後書きログ・スキームを使用して、データベース・ファイルへの書き込み性能を改善する。後書きログ・スキームにおいて、データ・ブロックは、データ・ブロックのためのやり直し情報が生成される前に、永続的に記憶される。図９は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図９において示されたステップは、後書きログ・スキームを使用して、データベース・ファイルに書き込むために使用されることが可能である。最初に、ステップ９１０において、複数のサイトのうちの第１のサイトでは、データ・ブロックが、データ・ブロックに加えられた変更に関するやり直し情報を永続的に記憶するのに先立って、永続的に記憶される。ステップ９１０は、データ・ブロックに加えられた変更に関するやり直し情報を永続的に記憶するのに先立って、データベース３５０にデータ・ブロックを永続的に記憶するサイト３１０のデータベースサーバ３３０によって実行されることが可能である。ステップ９１０の実行の後で、処理は、ステップ９２０に進む。
【００７８】
ステップ９２０において、第１のサイトでは、データ・ブロックに加えられた変更を反映するやり直し情報が、その変更が複数のサイトのうちの他のサイトに複製された後で、永続的に記憶される。ステップ９２０は、変更がサイト３１２に複製された後で、データ・ブロックに加えられた変更を反映するやり直し情報を永続的に記憶するサイト３１０のデータベースサーバ３３０によって実行されることが可能である。
【００７９】
一実施形態においては、ステップ９２０において、判断は、データ・ブロックに加えられた変更が、いつ複数のサイトのうちの他のサイトに複製されているかに関してなされる。本実施形態においては、サイト３１０のデータベースサーバ３３０は、データ・ブロックに加えられた変更が、いつサイト３１２に複製されているかに関して判断をする。
【００８０】
一実施形態においては、単一のプロセスは、データ・ブロックにそれぞれ変更を加える１つ以上のトランザクションを発行することが可能である。別の実施形態においては、１つ以上のトランザクションは、複数のプロセスによって発行されることが可能である。データベースサーバ３３０は、１つ以上のデータ・ブロックに変更を加える１つ以上のトランザクションがいつ完了したかを判断することが可能である。１つ以上のデータ・ブロックに変更を加える１つ以上のトランザクションが完了した後で、ステップ９１０に記述されるように、１つ以上のデータ・ブロックは、永続的に記憶されることが可能である。
【００８１】
図９において示されたステップを使用して、ファイルサーバが、書き込み動作のためにやり直し情報を永続的に記憶する前に、永続的に記憶されているデータ・ブロックへのすべての書き込み動作の複製を完了するまで、データベースサーバは待機することができる。たとえば、データベースサーバ３３０が、データベース３５０に書き込み動作のためのやり直し情報を永続的に記憶する前に、サイト３１０で永続的に記憶されているデータ・ブロックへのすべての書き込み動作をサイト３１２に複製するのを完了するまで、サイト３１０のデータベースサーバ３３０は待機することができる。
【００８２】
（サイト回復）
一実施形態においては、データ・ミラーリング・システム３００内の特定のサイトが動作不能になった場合には、特定のサイトからデータ・ミラーリング・システム３００内の他のサイトのそれぞれに送信されたすべてのメッセージがそれらの宛て先で受信されていると判断した後で、特定のサイトの回復が開始される。たとえば、図３において示された本実施形態においては、サイト３１０がその後動作不能になった場合に、サイト３１０の回復は、サイト３１０からサイト３１２に送信されたすべてのメッセージがサイト３１２で受信されていると判断した後まで、開始されない。これに代えて、生き残ったサイトは、一又は複数の生き残ったサイトが、動作不能なサイトの回復を開始したかあるいは完了した後で、動作不能なサイトから送信されたいかなるメッセージも無視することが可能である。
【００８３】
（一時ファイル書き込みの性能改善）
一時ファイルは、ソートおよびハッシュ結合のようなデータベース動作で、データベースサーバによって使用されることが可能である。一時ファイルは、限定的持続時間、データを保持するために、メモ帳のように使用される。幾つかの容易さにおいて、一時的結束の空間割付けに関するメタデータ変更は、複製される必要がある。しかしながら、一時ファイルが複数のサイトのうちの他のサイトによって必要でない場合には、一時ファイルは複製される必要がない。
【００８４】
一実施形態においては、判断は、一時ファイルのようなデータ構造が複数のサイトのうちの他のサイトのそれぞれに複製されるべきか否かに関して、複数のサイトのうちの第１のサイトでデータベースサーバによってなされる。第１のサイトのデータ構造は、データ構造が複数のサイトのうちの他のサイトのそれぞれに複製されるべきでないと判断しない限り、複数のサイトのうちの他のサイトのそれぞれに複製される。たとえば、図３において示された本実施形態においては、サイト３１０のデータベースサーバ３３０は、特定の一時ファイルがサイト３１２に複製される必要はないと判断することが可能である。したがって、データベースサーバ３３０は、サイト３１２に一時ファイルを複製しない。
【００８５】
（機構の実施）
図１０は、本発明の実施形態が実行され得るコンピュータ・システム１０００を示すブロック図である。コンピュータ・システム１０００は、バス１００２あるいは情報を通信する他の通信機構と、情報を処理するためにバス１００２と結合されたプロセッサ１００４とを備えている。さらに、コンピュータ・システム１０００は、ランダム・アクセス・メモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ））あるいは他の動的記憶装置のような、情報およびプロセッサ１００４によって実行される命令を記憶するためにバス１００２に結合されたメイン・メモリ１００６を備えている。また、メイン・メモリ１００６は、プロセッサ１００４によって命令が実行される間、一時的変数あるいは他の中間情報を記憶するのに使用されることも可能である。さらに、コンピュータ・システム１０００は、静的情報およびプロセッサ１００４のための命令を記憶するためにバス１００２で結合された読み出し専用メモリ（（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ））１００８あるいは他の静的記憶装置を備えている。磁気ディスクまたは光ディスクのような記憶装置１０１０は、情報および命令を記憶するためにバス１００２に設けられ、結合されている。
【００８６】
コンピュータ・システム１０００は、コンピュータ・ユーザへの情報の表示のために、陰極線管（Ｃａｔｈｏｄｅ  Ｒｕｙ  Ｔｕｂｅ（ＣＲＴ））のようなディスプレイ１０１２にバス１００２を通じて結合されることが可能である。英数字および他のキーを含む入力装置１０１４は、プロセッサ１００４と情報およびコマンド選択を通信するためにバス１００２に結合されている。別の種類のユーザ入力装置は、マウス、トラックボール、あるいは、プロセッサ１００４と方向情報およびコマンド選択を通信するため、ならびにディスプレイ１０１２上のカーソル移動を制御するためのカーソル方向キーのようなカーソル制御機器１０１６である。この入力装置は、典型的には、装置に空間内の位置を特定させることを可能にする、第１の軸（たとえば、ｘ）および第２の軸（たとえば、ｙ）の２軸の２自由度を有している。
【００８７】
本発明は、ここで記述された手法を実施するためのコンピュータ・システム１０００の使用に関する。本発明の１つの実施形態によれば、それらの手法は、メイン・メモリ１００６に含まれた１つ以上の命令の１つ以上のシーケンスをプロセッサ１００４が実行するに応じて、コンピュータ・システム１０００によって実行される。そのような命令は、記憶装置１０１０のような別のコンピュータ読み取り可能な媒体からメイン・メモリ１００６に読み込まれることが可能である。メイン・メモリ１００６に含まれた命令シーケンスの実行は、ここで記述された処理ステップをプロセッサ１００４に実行させる。代替の実施形態においては、配線回路が、本発明を実施するソフトウェア命令の代わりに、あるいはその命令と組み合わせて使用されることが可能である。したがって、本発明の実施形態は、ハードウェア回路およびフトウェアの任意の特定の組み合わせに限定されない。
【００８８】
用語「コンピュータ読み取り可能な媒体」はここでは、実行用プロセッサ１００４への命令の提供に関係する任意の媒体を表わしている。そのような媒体は、不揮発性媒体、揮発性媒体、および通信媒体を含む多くの形態をとることが可能であるが、これらに限定されるものではない。不揮発性媒体は、たとえば、記憶装置１０１０のような光学あるいは磁気ディスクを含んでいる。揮発性媒体は、メイン・メモリ１００６のようなダイナミック・メモリを含んでいる。通信媒体は、バス１００２を備えたワイヤを含む同軸ケーブル、銅線、および光ファイバを含んでいる。さらに、通信媒体は、電波および赤外線データ通信中に生成されるもののような、音響あるいは光波の形態をとることができる。
【００８９】
コンピュータ読み取り可能な媒体の一般的な形態は、たとえば、フロッピー・ディスク（登録商標）、フレキシブル・ディスク、ハードディスク、磁気テープ、あるいは、任意の他の磁気媒体、ＣＤ−ＲＯＭ、任意の他の光学媒体、パンチカード、紙テープ、穴パターンを備えた任意の他の物理的媒体、ＲＡＭ、ＰＲＯＭ、および、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、任意の他の記憶素子あるいはカートリッジ、以下に記述されるように搬送波、あるいは、そこからコンピュータが読むことができる任意の他の媒体を含んでいる。
【００９０】
コンピュータ読み取り可能な媒体の様々な形態は、実行用プロセッサ１００４への１つ以上の命令の１つ以上のシーケンスを伝えることを伴う場合がある。たとえば、命令は、最初に、リモート・コンピュータの磁気ディスク上に担持されることが可能である。リモート・コンピュータは、そのダイナミック・メモリに命令をロードし、モデムを使用して電話線を通じて命令を送信することができる。コンピュータ・システム１０００に対してローカルなモデムは、電話線を通じてデータを受信し、データを赤外線信号に変換するために赤外線送信機を使用することができる。赤外線検知器は、赤外線信号で伝えられるデータを受信し、適切な回路は、バス１００２上にデータを配置することができる。バス１００２は、メイン・メモリ１００６にデータを伝える。プロセッサ１００４は、メイン・メモリ１００６から命令を取り出し、実行する。メイン・メモリ１００６によって受信された命令は、プロセッサ１００４による実行の前後に、記憶装置１０１０上に随意に記憶されることが可能である。
【００９１】
コンピュータ・システム１０００は、バス１００２に結合された通信インタフェース１０１８を備えることも可能である。通信インタフェース１０１８は、ローカル・ネットワーク１０２２に接続されるネットワーク・リンク１０２０に２方向データ通信結合を提供する。たとえば、通信インタフェース１０１８は、対応する種類の電話線にデータ通信接続を提供する統合サービス・デジタル網（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ（ＩＳＤＮ））カードあるいはモデムであることが可能である。別の実施例として、通信インタフェース１０１８は、互換性をもつＬＡＮへのデータ通信接続を提供するローカル・エリア・ネットワーク（ＬＡＮ）カードであることが可能である。無線リンクが実施されることも可能である。任意のそのような実施では、通信インタフェース１０１８は、様々な種類の情報を表わすデジタル・データ・ストリームを搬送する電気的、電磁気的、あるいは光学的信号を送信および受信する。
【００９２】
ネットワーク・リンク１０２０は、典型的には、１つ以上のネットワークを通じて他のデータ装置にデータ通信を提供する。たとえば、ネットワーク・リンク１０２０は、インターネット・サービス・プロバイダ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ（ＩＳＰ））１０２６によって運営されるホスト・コンピュータ１０２４あるいはデータ設備へのローカル・ネットワーク１０２２を通じた接続を提供することが可能である。ＩＳＰ  １０２６は、代わりに、「インターネット」１０２８と現在一般的に呼ばれるワールド・ワイド・パケット・データ通信ネットワークを通じたデータ通信サービスを提供する。ローカル・ネットワーク１０２２およびインターネット１０２８は、両方とも、デジタル・データ・ストリームを搬送する電気的、電磁気的、あるいは光学的信号を使用する。様々なネットワークを通じた信号、およびネットワーク・リンク上１０２０および通信インタフェース１０１８を通じた信号は、コンピュータ・システム１０００から、そしてコンピュータ・システム１０００へデジタル・データを伝え、情報を搬送する獲得波（ｅａｒｎｅｒ  ｗａｖｅｓ）の典型的な形態である。
【００９３】
コンピュータ・システム１０００は、ネットワーク、ネットワーク・リンク１０２０、および通信インタフェース１０１８を通じて、プログラム・コードを含むメッセージを送信し、データを受信することができる。インターネットの実施例において、サーバ１０３０は、インターネット１０２８、ＩＳＰ  １０２６、ローカル・ネットワーク１０２２、および通信インタフェース１０１８を通じてアプリケーション・プログラムのために要求されたコードを送信することが可能である。
【００９４】
受信したコードは、それが受信され、および／または、記憶装置１０１０もしくは後の実行のために他の不揮発性記憶装置に記憶されるように、プロセッサ１００４によって実行されることが可能である。このように、コンピュータ・システム１０００は、獲得波の形態でアプリケーションコードを得ることが可能である。
【００９５】
前述の明細書においては、本発明の実施形態は、実施から実施へと変化する多数の特定の詳細に関して記述されている。したがって、何が本発明であるかという、また、出願人によって本発明であると意図された単独且つ排他的な指標は、この出願から与えられる１組の請求項であり、該１組の請求項は、そのような請求項の論点における特定の形態であって、任意のその後の修正を含んでいる。そのような請求項に含まれた用語のためにここで明らかに述べられたいずれの定義も、請求項において使用されるような用語の意味に適用されるものとする。したがって、請求項で明らかに記述されない限定、要素、特性、特徴、長所、あるいは特質も、そのような請求項の範囲をいかなる方法であっても限定すべきではない。したがって、明細書および図面は、限定的な意味ではなく、例示と見なされるべきである。
【図１】
0005559821.tif 000002
【図２】
0005559821.tif 000003
【図３】
0005559821.tif 000004
【図４】
0005559821.tif 000005
【図５】
0005559821.tif 000006
【図６】
0005559821.tif 000007
【図７】
0005559821.tif 000008
【図８】
0005559821.tif 000009
【図９】
0005559821.tif 000010
【図１０】
0005559821.tif 000011