"メモリを備えるハイブリッドOLTP及びOLAPデータベースシステムを維持する方法であって、1つ又は複数のOLTPトランザクションを実行するステップと、1つ又は複数の仮想メモリスナップショットを作成するステップと、前記仮想メモリスナップショットのうちの1つ又は複数を使用して1つ又は複数のOLAP照会を実行するステップと、を含む方法。前記方法は、データオブジェクトに対する更新に応答して、前記データオブジェクトが格納される仮想メモリページを複製するステップ、をさらに含み、その後で更新後データオブジェクトがOLTPトランザクションにとってアクセス可能となると共に、非更新データオブジェクトが、OLAP照会のために依然としてアクセス可能である、請求項1に記載の方法。前記OLTPトランザクションが第1アドレス空間内で実行され、前記仮想メモリスナップショットを作成するステップが、前記第1アドレス空間のコピーを表す第2アドレス空間を用意するサブステップを含み、前記OLAP照会が第2アドレス空間内で実行され、前記仮想メモリスナップショットを作成するステップが、OLTPプロセスを複製して、OLAP照会の実行のための子プロセスを作成するサブステップを含む、請求項1に記載の方法。前記データベースが、パーティション内にプライベートデータを格納し、共有データを格納し、前記パーティションが、異なるデータ処理システム上に常駐することができ、前記方法が、前記プライベートデータに対する読取り及び/又は更新アクセス、又は前記共有データに対する読取りアクセスを含むOLTPトランザクションを並列に実行するステップ、前記パーティションにわたる読取りアクセス、又は前記共有データへの更新アクセスを含むOLTPトランザクションを順次実行するステップ、及び、前記パーティションのうちの1つ又は複数及び前記共有データにわたる1つ又は複数のOLAP照会を実行するステップ、のうち1つ以上を含む、請求項1~3のいずれか一項に記載の方法。前記仮想メモリスナップショットがトランザクション整合である、請求項1~4のいずれか一項に記載の方法。OLTPトランザクションがアクティブではないとき、前記仮想メモリスナップショットを作成するステップ、をさらに含む請求項5に記載の方法。1つ又は複数のOLTPトランザクションがアクティブであるとき、前記仮想メモリスナップショットを作成するステップと、アンドゥーログ機構を使用して、前記1つ又は複数のアクティブなOLTPトランザクションが開始される前に、前記データベースの状態を表すように前記仮想メモリスナップショットを適応させるステップと、をさらに含む請求項5に記載の方法。前記仮想メモリスナップショットのうちの1つを使用して複数のOLAP照会を並列に実行するステップ、をさらに含む、請求項1~7のいずれか一項に記載の方法。それぞれの並列OLAP照会について複数の仮想メモリスナップショットを作成するステップ、をさらに含む請求項1~5のいずれか一項に記載の方法。周期的に又は要求時に新しい仮想メモリスナップショットを作成するステップ、をさらに含む請求項1~9のいずれか一項に記載の方法。既存のハードウェアサポートメモリ整合性制御機構を使用して、前記データベース内のデータオブジェクトが更新されるときを識別し、対応するページの新しい物理コピーの作成をトリガするステップ、をさらに含む請求項1~9のいずれか一項に記載の方法。対応するOLAP照会の完了後に前記仮想メモリスナップショットを削除するステップ、をさらに含む請求項1~11のいずれか一項に記載の方法。前記仮想メモリスナップショットを使用して、前記データベースのトランザクション整合バックアップを用意するステップ、をさらに含む請求項1~12のいずれか一項に記載の方法。前記トランザクション整合バックアップ及びリドゥーログ機構を使用して、前記データベースを復元するステップ、をさらに含む請求項13に記載の方法。1次サーバを維持して、前記OLTPトランザクションを実行するステップと、2次サーバを維持して、前記1次サーバによって実行される前記OLTPトランザクションのうちの少なくとも一部も、特にデータに対する更新アクセスを含むすべてのOLTPトランザクションを実行し、前記OLAP照会のうちの少なくとも一部を実行するステップと、をさらに含む請求項1~14のいずれか一項に記載の方法。メモリに格納されたデータベースと、プロセッサと、前記プロセッサに結合され、実行されたときに、前記請求項のいずれか一項に記載の方法を前記プロセッサに実行させる命令を格納するストレージと、を備える、ハイブリッドOLTP及びOLAPデータベースシステム。前記データベースがメインメモリデータベースである、請求項16に記載のハイブリッドOLTP及びOLAPデータベースシステム。請求項1~15のいずれか一項に記載の方法をプロセッサベースのシステムに実行させる命令を格納する媒体、を備える物品。添付の図面を参照して上記で説明された方法。本発明の一実施形態によるトランザクション処理のためのメインメモリアーキテクチャを図2に示す。この実施形態では、単一スレッディング手法が採用され、すべてのOLTPトランザクションが順次実行される。このアーキテクチャは、アクティブな更新トランザクションのみがデータベース全体を所有するので、コストのかかるデータオブジェクト又は索引構造のロッキング及びラッチングの必要をなくす。有利なことに、この順次実行手法は、メインメモリデータベースを通じて実装することができ、他のトランザクションのためにインターリービングにCPUを使用することによって1つのトランザクションの代わりにI/O操作をマスクする必要はない。メインメモリアーキテクチャでは、典型的なビジネストランザクション例えば、注文入力又は支払処理が有する持続時間は、わずか数~10マイクロ秒である。しかし、複雑なOLAP型照会を作業負荷キューに注入することが許可された場合、すべての後続のOLTPトランザクションは、そのような長時間の照会の計算を待機しなければならなくなるので、複雑なOLAP型照会はシステムを詰まらせることになる。そのようなOLAP照会が例えば30ms以内に終了した場合であっても、約1000以上のOLTPトランザクションを完了することのできる持続時間にわたってシステムをロックすることになる。しかし、毎秒数万のレートでOLTPトランザクションを処理すると同時に、トランザクションデータの最新のスナップショットに対してOLAP照会を処理するメインメモリデータベースシステムを提供することが望ましい。この課題を図3に示す。本発明の一実施形態によれば、ハードウェア支援複製機構を使用してトランザクションデータの整合スナップショットを維持することにより、OLTPとOLAPを同時に処理することのできるハイブリッドシステムが提供される。本発明は、OLTPトランザクションのACIDプロパティを保証するメインメモリデータベースシステムによって実装することができる。特に、耐久性及び高速回復のために、ロギング及びバックアップアーカイビング方式を利用することができる。OLTP処理と並列に、同一の任意に最新かつ整合したスナップショットに対してOLAP照会セッション複数の照会を実行することができる。仮想メモリ管理アドレス変換、キャッシング、更新時コピーのためのプロセッサ固有のサポートの利用により、同一のシステムで、かつ同時に、前例のない高トランザクションレート及び超低OLAP照会応答時間が達成される。システムアーキテクチャ本発明の一実施形態によれば、OLTPトランザクション及びOLAP照会は、同一のメインメモリ常駐データベース上で実施することができる。旧式のディスクベースのストレージサーバとは対照的に、任意のデータベース特有のバッファ管理及びページ構造化を省略することができる。データは、仮想メモリ内の単純なメインメモリ最適化データ構造内に常駐する。したがって、どんな追加の間接的方法も用いずにOSJCPU実装アドレス変換をフルスピードで活用することができる。2つの主流のリレーショナルデータベース記憶方式を利用することができる。行格納手法では、関係がレコード全体の配列として維持され、列格納手法では、関係が、属性値のベクトルとして垂直に区分される。仮想メモリは物理メインメモリよりも著しく大きくなることができるとしても、仮想メモリページのOS制御スワッピングを回避するために、データベースは、物理メインメモリのサイズに限定されることが好ましい。或いは、フラッシュメモリや固体ドライブなどの2次ストレージによってメインメモリを補足することもできる。OLTP処理すべてのデータがメインメモリに常駐するので、IOを待つために停止することは決してないことになる。したがって、単一スレッディング手法に依拠することができ、すべてのOLTPトランザクションが順次実行される。このアーキテクチャは、1つの更新トランザクションのみがデータベース全体を所有するので、コストのかかるデータオブジェクトのロッキング及びラッチングの必要をなくす。このシリアル実行手法は、メインメモリデータベース上で実装することができ、他のトランザクションのためにインターリービングにCPUを使用することによって1つのトランザクションの代わりにI/O操作をマスクする必要はない。メインメモリアーキテクチャでは、典型的なビジネストランザクション例えば、注文入力又は支払処理が有する持続時間は、わずか約10マイクロ秒である。これは毎秒数万程度のスループットとなり、大規模なビジネスアプリケーションが必要とするものよりもさえ、ずっと高い。トランザクションが実行を待つためにシリアル化される左側のキューにより、OLTPトランザクションのシリアル実行を図4で例示する。トランザクションは、高水準スクリプト記述言語でストアドプロシージャとして実装される。この言語は、探索キーによってデータベースエントリをルックアップし、オブジェクトのセットを通じて反復し、データレコードを挿入、更新、及び削除する機能などを提供する。次いで、この高水準スクリプト記述コードが、メモリ内データ構造を直接操作する低レベルコードにコンパイルされる。OLTPトランザクションは、キュー内の後続のトランザクションに関する長い待ち時間を回避するために、短い応答時間を有するべきである。このことにより、任意の種類の対話トランザクション、例えばユーザ入力を要求すること、又は外部機関のクレジットカードチェックを同期式に起動することが禁止される。OLAPスナップショット管理複雑なOLAP型の照会をOLTP作業負荷キューに注入することが許可された場合、すべての後続のOLTPトランザクションは、そのような長時間の照会の計算の完了を待機しなければならなくなるので、複雑なOLAP型照会はシステムを詰まらせることになる。そのようなOLAP照会が例えば30ms以内に終了した場合であっても、恐らくは数千のOLTPトランザクションを完了することのできる持続時間にわたってシステムをロックする。毎秒数万のレートでOLTPトランザクションを処理すると同時に、トランザクションデータの最新のスナップショットに対してOLAP照会を処理するメインメモリデータベースシステムを提供する目標を達成するために、新しいプロセスに関する仮想メモリスナップショットを作成するオペレーティングシステム機能が活用される。このことは、OLTPプロセスを複製すること、すなわちOLTPプロセスの子プロセスを作成することによって行われる。例えば、OLTPプロセス複製は、フォーキングUNIX登録商標でのforkシステムコールによって実施することができる。以下では、フォーキングに対する参照は、OLTPプロセス複製の任意の実装を指すものとする。トランザクション整合性を保証するために、トランザクションの中央でフォーキングを実施するのではなく、2つのシリアルトランザクション間のみでフォーキングを実施すべきである。図4でオーバレイされたページフレームパネルによって例示するように、子プロセスは、親プロセスアドレス空間の厳密なコピーを得る。図6に示すように、フォーク操作によって作成される仮想メモリスナップショットが、OLAP照会のセッションを実行するために使用される。スナップショットは、厳密にフォーク操作が行われたときに存在した状態にとどまる。幸いにも、最新式のオペレーティングシステムは、メモリセグメントをすぐに物理的にコピーしない。むしろ、図5に示すように、オペレーティングシステムは、怠惰な更新時コピー戦略を利用する。当初、親プロセスOLTPと子プロセスOLAPは、オブジェクトaに対する両方の仮想アドレスを同一の物理メインメモリ位置に変換することにより、同一の物理メモリセグメントを共有する。図では、点線のフレームにより、メモリセグメントの共有を強調する。点線のフレームは、まだ複製されなかった仮想メモリページを表す。オブジェクト、例えばデータ項目aが更新されるときにのみ、OS及びハードウェアサポートされる更新時コピー機構が、aが常駐する仮想メモリページの複製を開始する。その後で、トランザクションを実行するOLTPプロセスによってアクセス可能な、a’と表す新しい状態と、OLAP照会セッションによってアクセス可能な、aと表す古い状態とがある。図が示唆するのとは異なり、追加のページが、ページ変更を開始したOLTPプロセスについて実際に作成され、OLAPスナップショットは古いページを指す。この詳細は、いくつかのそのようなスナップショットが作成される場合図7参照にスペース消費を推定するために重要である。機能を見る別の直感的方法は以下の通りである。OLTPプロセスはデータベース全体の上で動作し、データベースの一部がOLAPモジュールと共有される。すべてのOLTP変更が、コピーされるシャドーイングshadowされるデータベースページからなる、別々のコピーエリアDeltaに適用される。したがって、OLTPプロセスは、要求時更新後ページのそのワーキングセットを作成する。このことは、ページをバッファプールにスワップすることにいくぶん類似しているが、バッファプール内のページ障害を処理するのに10msかかる代わりに、メインメモリページをコピーするのに2μsしかかからないので、更新後ページの要求時コピーが3~4倍高速である。時々、最新のOLAPセッションに関する新しいプロセスをフォークすることにより、DeltaがOLAPデータベースとマージされる。それによって、Deltaが概念的にメインスナップショットデータベースに再統合される。Deltaをメインデータベースにマージするどんなソフトウェア解決策とも異なり、ハードウェアサポートされる仮想メモリマージフォークを非常に効率的に1秒未満単位で達成することができる。Deltaへの複製が、通常はデフォルトサイズ4KBを有する、ページ全体の細分性で実施される。この例では、a’の状態変化により、aの複製だけでなく、bなどのこのページ上のすべての他のデータ項目の複製も、それが変化していないとしても誘発される。この欠点は、TLBキャッシング及び書込み時コピー実施を介する超効率的VMアドレス変換などの、OS及びプロセッサによる非常に効果的で高速な仮想メモリ管理によって補償される。データベースシステムでの従来のシャドーイング概念は、ページレベルでシャドーコピーを維持し、又は個々のオブジェクトをシャドーイングする純粋なソフトウェア機構に基づく。スナップショットは、親すなわち、OLTP要求実行プロセスによる更新後ページ数に比例したストレージオーバヘッドを招く。スナップショットは、フォーク操作がスナップショットを作成するときのOLTPプロセスのメモリ状態と、OLTPプロセスの現メモリ状態との間のデルタ変更後ページに対応するを複製するOLAPプロセスは、共有ページをほぼ決して変更しない。このことはもちろん、更新時コピー機構のために問題とはならない。しかし、性能を向上させるために、OLAPプロセスは、その一時データ構造を非共有メインメモリエリアに割り振るべきである。メインメモリ容量が不十分である場合、OLAP照会エンジンは2次記憶装置例えばディスクを利用することができ、それによってメインメモリ容量をより長い実行時間と交換する。ディスクベースの規則を作成することによって関係をソートすることは、1つの顕著な例である。OLAP照会キュー内の、卵形線によって示されるすべてのOLAP照会は、データベースの同一の整合スナップショット状態にアクセスする。そのような照会のグループは照会セッションと呼ばれることがあり、ビジネスアナリストが同一の状態を反復的に照会して、例えばさらなる詳細にまで掘り下げ、又はより良好な概要を求めてロールアップすることによってデータの詳細な分析のためにそのようなセッションを使用できることが示される。複数のOLAPセッションこれまでのところ、OLTPに関する1つのプロセスと、OLAPに関する別のプロセスという2つのプロセスを使用するデータベースアーキテクチャを説明した。OLAP照会が読取り専用であるので、同一のアドレス空間を共有する複数のスレッドでOLAP照会を容易に並列に実行することができる。それでもなお、OLAP照会がどんな可変データ構造も共有しないので、任意の同期ロッキング及びラッチングオーバヘッドを回避することができる。通常は10個を超えるコアを有する現代のマルチコアコンピュータは、この照会間並列化を介してかなりの高速化をもたらすことができる。マルチコアサーバを有効に活用する別の可能性は、複数のスナップショットを生成することである。特に、任意の現スナップショットを得ることができる。このことは単に、新しいスナップショットを周期的に又は要求時にフォークし、したがって新しいOLAP照会セッションプロセスを開始することによって達成することができる。このことを、ただ1つのOLTPプロセスの現データベース状態フロントパネルと、3つのアクティブ照会セッションプロセスのスナップショットとを示す図7に例示し、最も古いものは背景にあるものである。連続する状態変化が、データ項目a最も古い状態、a’、a’’、及びa’’’最も若いトランザクション整合状態という4つの異なる状態によって強調される。ETLデータステージングを用いる現在の分離データウェアハウス解決策の場合と同様に、数分又は数時間ではなく、数秒の間隔で最新の照会に関するスナップショットを作成することが予想されるので、明らかに、大部分のデータ項目は、異なるスナップショット間で変化しない。アクティブなスナップショットの数は、原理上は、それぞれがそれ自体のプロセスで限定されない。優先順位を調節することにより、OLTPプロセスが多数であり、及び/又はマルチスレッディングを使用し、したがってコア数を超過する場合であっても、基幹業務のOLTPプロセスに常にコアが割り振られることを確認することができる。セッションの最後の照会が終了した後、スナップショットが削除される。このことは単に、照会セッションを実行中であったプロセスを終了することによって行われる。スナップショットが作成されたのと同じ順序でスナップショットを削除する必要はない。そのようなスナップショットは、例えば詳細なストック取得目的で、より長い持続時間にわたって持続することができる。しかし、スナップショットのメモリオーバヘッドは、このスナップショットの作成から次に若いスナップショットの時間までそれが存在する場合、又は実際の時間までの実行中のトランザクション数に比例する。図7に、中間年齢スナップショットについて物理的に複製され、したがって最も古いスナップショットによって共有され、アクセス可能であるデータ項目cを通じて、このことを示す。直観にはいくぶん反するが、cが常駐するページが、OS/プロセッサにより、物理ページに関連する参照カウンタを介して最も古いスナップショットと共有されるものとして自動的に検出されるので、最も古いスナップショットの前に中間年齢スナップショットを終了することは依然として可能である。したがって、中間年齢スナップショットプロセスの終了時に解放される、a’が常駐するページとは異なり、中間年齢スナップショットの終了を生き残る。最も若いスナップショットは、現OLTPプロセスアドレス空間内に含まれる状態c’にアクセスする。マルチスレッド化OLTP処理既に略述したように、複数のスレッドとしてOLAPプロセスを構成することができ、現代のコンピュータの複数のコアがより良く利用される。このことは、OLTPプロセスについても可能である。1つの単純な拡張は、複数の読取り専用OLTPトランザクションを並列に管理することである。読取り/書込みトランザクションがOLTP作業負荷キューの先頭にあるとすぐに、それ以上の更新トランザクションがキューの先頭でなくなるまで、システムが静止し、順次モードに転送し戻される。現実的アプリケーションでは、通常は、更新トランザクションよりも多くの読取り専用トランザクションがあり、したがって、あるレベルの並列度を得ることを予想することができ、並列度は、OLTP作業負荷キューを注意深く再構成することによって向上させることさえできる。データを区分することが自然である、多くのアプリケーションシナリオがある。これに関する1つの非常に重要なアプリケーションクラスはマルチテナンシーである。異なるデータベースユーザテナントと呼ばれるが、同一又は類似のデータベーススキーマに対して作業するが、そのトランザクションデータを共有しない。むしろ、テナントは、データのそのプライベートパーティションを維持する。いくつかのリードモーストリーread-mostlyデータ例えば、製品カタログ、地理的情報、DunBradstreetのようなビジネス情報カタログが異なるテナント間で共有される。興味深いことに、トランザクション処理用の広く知られている業界標準であるTPC-Cベンチマークwww.tpc.orgは、類似の区分化を示す。データの大部分をそれが属するウェアハウスによって水平に区分することができるからである。唯一の例外は、この共有データパーティションに対応する項目テーブルである。そのような区分アプリケーションシナリオでは、OLTPプロセスを複数のスレッドとして構成し、並列度を介して性能をさらに向上させることができる。このことを図8に示す。トランザクションがそのプライベートパーティションのみにアクセス及び更新し、共有データにアクセスする更新しない限り、そのようなトランザクションを並列に、パーティション当たり1つ実行することができる。図はこのことを示す。パネル内の各卵形トランザクションを表すが、別々のスレッドによって実行される1つのそのようなパーティション制約トランザクションに対応するからである。しかし、パーティションにわたって読み取り、又は共有データパーティションを更新するトランザクションは、同期を必要とする。一実施形態では、クロスパーティショントランザクションが、純粋な順次手法と同様に、システムに対する排他的アクセスを要求する。このことは、すべてのパーティションが1つのノード上に常駐する中央システムで十分に効率的である。しかし、マルチパーティショントランザクションのための2相コミットプロトコルを必然的に伴う計算クラスタにわたってノードが分散する場合、より高度な同期手法が有益である。OLAPスナップショットを前と同様にフォークすることができるトランザクション整合式にこのことを行うことができる前にすべてのスレッドが静止することを除いて。OLAP照会をすべてのパーティション及び共有データにわたって構築することができ、このことは例えば、管理目的のマルチテナンシーアプリケーションで有益である。計算クラスタ内の異なるノードにプライベートパーティションを割り振る分散システムについて、データベースの区分化をさらに活用することができる。リードモーストリー共有パーティションをすべてのノードにわたって複製することができる。次いで、対応するノードにパーティション制約トランザクションを転送し、どんな同期オーバヘッドも伴わずに並列に実行することができる。同期は、パーティションクロストランザクションpartition-crossingtransactions及びすべてのノードにわたる同期スナップショット作成のために必要である。OLAP照会セッションのスナップショット分離スナップショット分離では、トランザクションは、トランザクション整合データベース状態を継続的に確認する。トランザクション整合データベース状態が、トランザクションが開始するより前直前の時点で存在したからである。データベース修正が並列で実行中に、そのようなスナップショットを実装するための異なる可能性がある。ロールバック:この方法は、データベースオブジェクトを定位置で更新する。より古い照会がより古いバージョンのデータ項目を必要とする場合、より古いバージョンのデータ項目が、このオブジェクトに対するすべての更新をアンドゥーすることによって現バージョンから作成される。したがって、オブジェクトのより古いコピーが、いわゆるロールバックセグメントで、すべてのアンドゥーログレコードを必要な時点まで逆に適用することによって作成される。バージョニングversioning:すべてのオブジェクト更新が、オブジェクトの新しいタイムスタンプバージョンを生成する。したがって、照会の代わりの読取りが、そのタイムスタンプが照会の開始時間よりも小さい最も若いバージョン最大のタイムスタンプを取り出す。バージョニングされたオブジェクトは、永続的に維持されタイムトラベリング照会を可能にする、又はアクティブ照会がそれにアクセスする必要がもうなくなるまで一時的に維持される。シャドーイング:元々は、シャドーイングは、すべての変更が最初にシャドーに書き込まれ、次いでトランザクションコミット時間にデータベースにインストールされたときに、アンドゥーロギングの必要をなくすために作成された。しかし、シャドーイング概念は、スナップショットの維持にも適用することができる。仮想メモリスナップショット:本発明の実施形態によるスナップショット機構は、照会セッションと呼ばれる一連の照会に関するスナップショットを明示的に作成する。この点で、照会セッションのすべての照会が、フォークプロセスを介して保持される同一の整合状態に依拠することのできる1つのトランザクションに束ねられる。さらに、不揮発性2次サーバ又はストレージ上のデータベース全体のバックアップアーカイブを作成するためにVMスナップショットを活用することができる。このプロセスを図9に示す。通常、アーカイブは、1~10Gb/sの高帯域幅ネットワークを介して、同一の計算センタ内の専用ストレージサーバに書き込まれる。この転送速度を維持するために、ストレージサーバは、対応する集約帯域幅のためのいくつかの約10枚のディスクを利用しなければならない。OLTPトランザクション同期単一スレッドモードでは、OLTPトランザクションは、データベース全体を所有するので、どんな同期機構も必要としない。マルチスレッドモードでは、2つのタイプのトランザクションが区別される。パーティション制約トランザクションは、それ自体のパーティション内のデータを読み取り、更新することができ、共有パーティション内のデータを読み取ることができる。しかし、更新はそれ自体のパーティションに限定される。パーティションクロストランザクションは、さらに、共有データを更新し、又は別のパーティション内のデータにアクセス読取り又は更新するものである。共有データに対する更新はめったに生じず、トランザクションが通常はそれ自体のデータのみに対して作用するように区分化が導出されるので、後者のクラスのトランザクションのパーティションクロストランザクションは、非常にまれであるはずである。OLTP作業負荷内のストアドプロシージャトランザクションの分類は、その実装コードを分析することに基づいて自動的に行われる。実行中に、トランザクションがパーティション制約と誤って分類されたことが判明した場合、トランザクションがロールバックされ、OLTP作業負荷キューにパーティションクロスとして再挿入される。好ましくは、並列に、パーティション当たり最大1つのパーティション制約トランザクションが許可される。この制約下で、パーティションは非重複データ構造を有し、共有データはアクセス読取り専用であるので、どんな種類のロッキング又はラッチングも必要がない。しかし、パーティションクロストランザクションは、排他的モードで許可されなければならない。本質的には、パーティションクロストランザクションは、許可される前に、データベース全体に対する排他的ロック又はPOSIX用語では、許可される前に、障壁を通過しなければならないを事前主張しなければならない。したがって、パーティションクロストランザクションの実行は、すべての他のトランザクションが終了するまで待機しなければならないので比較的高コストであり、その持続時間中に、他のトランザクションは許可されない。システムに許可されると、パーティションクロストランザクションの排他的許可が、やはり共有データパーティション又はプライベートデータパーティションの任意の種類のロッキング又はラッチング同期を防止するので、トランザクションはフルスピードで実行される。耐久性トランザクションの耐久性は、コミットされるトランザクションのすべての効果を障害後に復元しなければならないことを必要とする。これを達成するために、古典的リドゥーロギングを使用する。図10では、シリアルトランザクションストリームから生じ、不揮発性リドゥーログ記憶装置に至る灰色の卵形によってこのことを強調する。トランザクションを表すストアドプロシージャのパラメータをロギングすることによって論理リドゥーロギングを利用する。従来のデータベースシステムでは、システムクラッシュ後にデータベースがアクション不整合状態となることがあるので、論理ロギングは問題がある。トランザクション整合アーカイブから再始動が実施されるので図9参照、本発明の図示する実施形態では、このことが生じることができない。データベースを正しく回復することができるために、実行される順序でこうした論理ログレコードを書き込むことだけが重要である。単一スレッドOLTP構成では、このことが容易に達成される。マルチスレッドシステムでは、すべてのトランザクションに関して完全に順序付けなければならないのは、パーティションクロストランザクションのログレコードだけであり、パーティション制約トランザクションのログレコードを並列に書き込むことができ、したがってパーティション当たり順次化されるだけである。2次サーバを介する高可用性及びOLAPロードバランシング:リドゥーログストリームを使用して2次サーバを維持することもできる。この2次サーバは単に、1次サーバと同じトランザクションを実行するだけである。1次サーバ障害の場合、トランザクション処理が2次サーバに切り替わる。しかし、安定したストレージへのリドゥーログレコードの書込みを中止せず、耐障害性のためだけに2次サーバに依拠することが好ましい。ソフトウェアエラーは、ワーストケースでは、1次及び2次サーバの同期クラッシュとなることがある。2次サーバは、どんな読取り専用OLTPトランザクションも実行する必要がないので、通常は1次サーバよりも低い負荷であり、したがって1次サーバよりも低いOLTP負荷を有する。このことは、OLAP照会セッションの一部又はすべてを2次サーバに委ねることによって利用することができる。1次サーバ上のOLAPセッションのプロセスをフォークする代わりに、又はそれに加えて、2次サーバも使用することができる。OLTP処理のためのスタンドバイとして、及びアクティブOLAPプロセッサとして働く2次サーバの使用を図11に示す。図には、ストレージサーバのアーカイブに整合スナップショットを書き込むために1次サーバの代わりに2次サーバを使用する可能性を図示していない。それによって、バックアッププロセスが1次サーバからより負荷の少ない2次サーバに委ねられる。ロギングの最適化ライトアヘッドロギングwriteaheadlogging:WAL原理は、トランザクションをコミットする前にログレコードをフラッシュflushすることを必要とするので、性能ボトルネックとなることが判明することがある。このことは、トランザクションが待機しなければならないので、単一スレッド実行では特にコストがかかる。以下2つの一般に利用される戦略が可能である。グループコミット、又は、非同期コミットグループコミットは、例えばIBMのDB2で構成可能である。トランザクションの最終的コミットは、トランザクションの終了直後には実行されない。むしろ、いくつかのトランザクションのログレコードが蓄積され、バッチモードでフラッシュされる。したがって、コミットの確認が遅延する。トランザクションのバッチが完了し、そのログレコードがフラッシュされるのを待機する間、すべてのトランザクションのロックは既に解放されている。このことは早期ログ解放と呼ばれる。現在の非ロッキングシステムでは、このことは、対応するパーティションに関する次のトランザクション複数可を許可することになる。ログバッファがトランザクションのグループについてフラッシュされると、そのコミットがクライアントに対して確認される。別の、安全性のより低い方法は、ログレコードのフラッシュを待機するのを回避することによってWAL原理を緩和する。ログレコードが揮発性ログバッファに書き込まれるとすぐに、トランザクションがコミットされる。このことは非同期コミットと呼ばれる。障害の場合、こうしたログレコードの一部が失われることがあり、したがって回復プロセスが、再始動中に、こうしたコミットされたトランザクションを見落とすことになる。原子性トランザクションの原子性は、失敗したトランザクションの効果をデータベースからなくすことができることを必要とする。明示的に中止したトランザクションだけを考慮する必要があり、R1回復と呼ばれる。データベースが揮発性メモリ内だけにあり、トランザクションのコミットの成功が保証されるときにのみ論理リドゥーログが書き込まれるので、ルーザトランザクションloser-transactionクラッシュ時にアクティブであったものの更新が復元後データベースでアンドゥーされることを要求するいわゆるR3回復は、この実施形態では必要ではない。さらに、回復のための開始点として働くデータベースのアーカイブコピーはトランザクション整合であり、したがって回復中にアンドゥーする必要のあるどんな操作も含まない図9参照。結果として、アンドゥーロギングは、すべてのアクティブトランザクションに関するマルチスレッドモードでのアクティブトランザクションに対して必要なだけであり、揮発性メモリ内だけで維持することができる。このことを図12で、ページフレームパネルの左上のリングバッファによって強調する。トランザクション処理の間、更新後データオブジェクトがあれば、その以前のイメージがこのバッファに記録される。リングバッファがトランザクション当たりの更新数にマルチスレッド操作でのアクティブトランザクション数を掛けたものによって束ねられるので、リングバッファのサイズはかなり小さい。クリーニングアクション整合スナップショットCleaningAction-ConsistentSnapshotアンドゥーロギングを使用して、1つ又は複数のトランザクションがアクティブであった間に作成されたアクション整合VMスナップショットからトランザクション整合スナップショットを作成することもできる。このことは特に、マルチスレッドOLTPシステムがトランザクション処理を完全に静止させる必要を回避するので、マルチスレッドOLTPシステムで有益である。その関連するVMスナップショットを含むOLAPプロセスをフォークした後、アンドゥーログレコードが、逆の発生順にスナップショット状態に適用される。アンドゥーログバッファがフォーク時にアクティブトランザクションのすべての効果を反映するので、そうした、得られるスナップショットのみがトランザクション整合であり、この時点までに完了したすべてのトランザクションを含む、フォーク時に依然としてアクティブであるトランザクションの開始前のデータベースの状態を反映する。システム障害後の回復回復中、メインメモリで復元される、最も若い完全に書かれたアーカイブで始めることが可能である。次いで、リドゥーログが発生順に適用され、アーカイブのスナップショットに関するフォーク後の最初のリドゥーログエントリで開始する。例えば、最大10Gb/sまでの帯域幅ストレージサーバからのネットワークの帯域幅によって限定されるでアーカイブを復元することができ、リドゥーログを毎秒100,000のトランザクションレートで適用することができる場合、典型的な大企業に関するファイルオーバ時間例えば、100GBのデータベース及び毎秒数千の更新トランザクションは、バックアップアーカイブが毎時書き込まれる場合、わずか1~数分程度である。このフェイルオーバ時間を許容することができない場合、複製したサーバに依拠することも可能であり、図11に示すように、一方はアクティブモードであり、他方は例えばリドゥーログスニッフィングsniffingを介して、同一のトランザクションを実施する。障害の場合、単純なスイッチオーバがシステムを復元する。回復プロセスを図13に示す。上述の実施形態は例として説明したに過ぎず、こうした実施形態に対する修正が添付の特許請求の範囲内に含まれることを理解されよう。"