(57)【特許請求の範囲】
【請求項１】
データベースシステムにおけるオンライン分析処理のためのデータを維持する方法であって、
前記データベースシステム内で動作するとともにオンライントランザクション処理を実行するメインプロセスによって変更されたページを、オペレーティング・システム・カーネルによって追跡するステップと、
前記オペレーティング・システム・カーネルによって、前記変更されたページを、前記データベースシステム内で動作するとともにオンライン分析処理を実行する子プロセスに同期するステップと、
を含み、前記子プロセスのページ・テーブル・エントリ（PTE）は、前記変更されたページの最新の物理アドレスと同期される方法。
【請求項２】
前記変更されたページは、コピーオンライト・ページである、請求項1に記載の方法。
【請求項３】
追跡されるべきメモリのアドレス範囲を格納するステップをさらに含み、
データを前記変更されたページに書き込むことがページフォールトという結果になり、且つ、前記変更されたページを追跡するステップは、前記変更されたページの物理ページアドレスが前記アドレス範囲内にあるとき、前記物理ページアドレスを第1のデータ構造内に格納するステップを含む、
請求項1または2に記載の方法。
【請求項４】
前記変更されたページを前記子プロセスに同期するステップは、
前記メインプロセスから前記格納された物理ページアドレスを取得するステップと、
前記子プロセス内で、前記格納された物理ページアドレスを指す仮想ページアドレスについて問い合わせるステップと、
前記仮想ページアドレスが存在するとき、前記仮想ページアドレスのページ・テーブル・エントリを前記格納された物理ページアドレスで更新し、前記仮想ページアドレスが存在しないとき、新しい仮想ページアドレスを前記格納された物理ページアドレスにマッピングする新しいページ・テーブル・エントリを作成するステップと、
共有ページ数をインクリメントして、前記格納された物理ページアドレスに対応するページフラグを書き込み可能に設定するステップと、
を含む、請求項3に記載の方法。
【請求項５】
前記変更されたページを前記子プロセスに同期するステップは、事前に決定された同期時点で、前記変更されたページを前記子プロセスに同期するステップを含む、請求項1乃至4のいずれか1項に記載の方法。
【請求項６】
前記メインプロセスに対する子である前記子プロセスをフォークするステップをさらに含む、請求項1乃至5のいずれか1項に記載の方法。
【請求項７】
前記子プロセスをフォークするステップは、前記メインプロセスに対する子である中間プロセスをフォークするステップと、前記中間プロセスに対する子である前記子プロセスをフォークするステップとを含み、
前記変更されたページを前記子プロセスに同期するステップは、
前記変更されたページを前記中間プロセスに同期するステップと、
前記子プロセスを前記中間プロセスと同期するステップと、
を含む、請求項6に記載の方法。
【請求項８】
複数の子プロセスが存在するとともに、前記変更されたページを前記子プロセスに同期するステップは、前記変更されたページを前記複数の子プロセスのうちの少なくとも1つの子プロセスに同期するステップと、前記複数の子プロセスの他の子プロセスを前記変更されたページが同期された前記少なくとも1つの子プロセスと同期するステップとを含む、請求項1乃至7のいずれか1項に記載の方法。
【請求項９】
同期時点に達したとき、前記オンライントランザクション処理を前記子プロセスが同期されるまでブロックするステップと、前記変更されたページを前記子プロセスから共有されるように、且つ書き込み可能に設定するステップとをさらに含む、請求項1乃至8のいずれか1項に記載の方法。
【請求項１０】
同期時点に達したとき、前記変更されたページを書き込み可能に設定し、前記子プロセスを、前記第1のデータ構造に従って、前記変更されたページと同期するステップと、新たな変更されたページを追跡するとともに前記新たな変更されたページのページアドレスを第2のデータ構造内に格納するステップとをさらに含む、請求項3に記載の方法。
【請求項１１】
オンライン分析処理のためのデータを維持する装置であって、
データベースシステム内で動作するとともにオンライントランザクション処理を実行するメインプロセスによって変更されたページを追跡するように構成される追跡ユニットと、
前記変更されたページを、前記データベースシステム内で動作するとともにオンライン分析処理を実行する子プロセスに同期するように構成される同期ユニットと、
を含み、前記子プロセスのページ・テーブル・エントリ（PTE）は、前記変更されたページの最新の物理アドレスと同期される装置。
【請求項１２】
前記変更されたページは、コピーオンライト・ページである、請求項11に記載の装置。
【請求項１３】
追跡されるべきメモリのアドレス範囲を格納するように構成される第1の格納ユニットと、
前記変更されたページの物理ページアドレスを格納するように構成される第2の格納ユニットと、
をさらに含み、データを前記変更されたページに書き込むことがページフォールトという結果になり、前記追跡ユニットは、前記変更されたページの物理ページアドレスが前記アドレス範囲内にあるとき、前記変更されたページの前記物理ページアドレスを前記第2の格納ユニット内に格納するように構成される、請求項11または12に記載の装置。
【請求項１４】
前記同期ユニットは、
前記第2の格納ユニットから前記物理ページアドレスを取得し、
前記子プロセス内で、前記物理ページアドレスを指す仮想ページアドレスについて問い合わせ、
前記仮想ページアドレスが存在するとき、前記仮想ページアドレスのページ・テーブル・エントリを、前記物理ページアドレスで更新し、前記仮想ページアドレスが存在しないとき、前記子プロセス内の新しい仮想ページアドレスを、前記第2の格納ユニットから取得された前記物理ページアドレスにマッピングする新しいページ・テーブル・エントリを作成し、
共有ページ数をインクリメントして、前記取得された物理ページアドレスに対応するページフラグを書き込み可能に設定するように構成される、請求項13に記載の装置。
【請求項１５】
前記データベースシステムによって要求されるメモリが割り当てられたとき、前記オンライン分析処理のための前記子プロセスをフォークするように構成されるフォークユニットをさらに含む、請求項11乃至14のいずれか1項に記載の装置。
【請求項１６】
前記同期ユニットは、事前に決定された同期時点で、前記変更されたページを前記子プロセスに同期するように構成される、請求項11乃至15のいずれか1項に記載の装置。
【請求項１７】
前記フォークユニットは、中間プロセスおよび前記子プロセスをフォークするように構成され、前記中間プロセスは前記メインプロセスに対する子であるとともに、前記子プロセスは前記中間プロセスに対する子であり、
前記同期ユニットは、前記変更されたページを前記中間プロセスに同期し、且つ、前記子プロセスを前記中間プロセスと同期するように構成される、請求項15に記載の装置。
【請求項１８】
複数の子プロセスが存在するとともに、前記同期ユニットは、前記変更されたページを前記複数の子プロセスのうちの少なくとも1つの子プロセスに同期し、且つ、前記複数の子プロセスの他の子プロセスを、前記変更されたページが同期された前記少なくとも1つの子プロセスと同期するように構成される、請求項11乃至17のいずれか1項に記載の装置。
【請求項１９】
オンライン分析処理のためのデータを維持する装置であって、
データベースを格納するためのメモリと、
プロセッサと、
前記プロセッサに接続され、実行されるとき、前記プロセッサに請求項1乃至10のいずれか1項に記載の方法を実行させる命令を格納するストレージとを含む、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術の分野に関し、詳細には、オンライン分析処理のためのデータを維持する方法および装置に関する。
【背景技術】
【０００２】
オンライントランザクション処理（OLTP）およびオンライン分析処理（OLAP）は、2つのタイプのデータベースシステムである。OLTPシステムは、トランザクションを管理および処理するために使用される。そのようなトランザクション処理システムの典型的な例は、販売注文エントリまたは銀行取引処理システムである。OLAPシステムは、データを分析して、ビジネスアナリストのためのレポートを生成するために使用される。典型的なレポートは、地理的領域によって、または製品カテゴリによって、または顧客類別によって等で分類される集計販売統計を含む。
【０００３】
オペレーショナルOLTPデータベースに対してOLAPクエリを実行する最初の試みは、OLAPクエリ処理がリソース競合をもたらしたとともに、ミッションクリティカルなトランザクション処理を深刻に害したため、却下された。従って、トランザクション処理が専用OLTPデータベースシステム上で実行される、データステージング・アーキテクチャが考え出された。加えて、OLAPクエリ処理のために個別のデータウェアハウス・システムがインストールされる。周期的に、例えば、夜間に、OLTPデータベースの変更が抽出され、データウェアハウス・スキーマのレイアウトに変換され、データウェアハウスにロードされる。このデータステージングとその関連ETL（抽出-変換-ロード）は、ETLプロセスは周期的にのみ実行されることができるため、データの古さという課題を明らかに招く。
【０００４】
リアルタイム/オペレーショナル・ビジネスインテリジェンスは、トランザクショナルOLTPデータの現在の、最新の状態でOLAPクエリを実行することを要求する。解決手段として、ハードウェア支援型レプリケーション機構を使用することによって、OLTPおよびOLAPの両方を同時に扱い、トランザクショナルデータの一貫性があるスナップショットを維持するために、メインメモリデータベースを有する既存のハイブリッドシステムが提案される。システムは、OLAPクエリセッションを、同じ、任意に現在のおよび一貫性があるスナップショット上で実行する。これらのスナップショットは、OLTPプロセスをフォークし、且つ、それによって、一貫性がある仮想メモリスナップショットを作成することによって作成される。システムは、新しいスナップショットを周期的にフォークし、且つ、従って、新しいOLAPクエリセッションプロセスを開始することによって任意に現在のスナップショットを可能にする。
【０００５】
既存のハイブリッドシステムは有望に見えるが、以下の技術的課題をもたらす。大きなプロセスのフォーキングは、典型的には、ミリ秒オーダーで時間を消費する。これは、多数のページ・テーブル・エントリ（PTE）が複製されなければならないためである。データの1つの基準384Mごとに、約100Kページを含む。従って、周期的なフォーキングは、オンラインデータ処理のパフォーマンスに影響を及ぼす。加えて、フォーキングは、PETの爆発的なコピーを行い、コピーを変更されている可能性がある小さいデルタに最適化しない。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の実施形態は、周期的なフォーキングを回避するとともにオンラインデータ処理のパフォーマンスを向上させるために、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法および装置を提供する。
【０００７】
第1の態様によると、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法は、
データベースシステム内で動作するとともにオンライントランザクションを実行するメインプロセスによって変更されたページを、オペレーティング・システム・カーネルによって追跡するステップと、
オペレーティング・システム・カーネルによって、変更されたページを、データベースシステム内で動作するとともにオンライン分析処理を実行する子プロセスに同期するステップと、
を含む。
【０００８】
第1の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第1の可能な実施形態では、変更されたページを追跡するステップは、コピーオンライト・ページおよび/または新しいページを追跡するステップを含む。
【０００９】
第1の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第2の可能な実施形態では、方法は、追跡されるべきメモリのアドレス範囲を格納するステップをさらに含み、ここで、変更されたページを追跡するステップは、データをページに書き込むことがページフォールトという結果になる場合、ページは変更されたページであると決定し、且つ、変更されたページの物理ページアドレスがアドレス範囲内にある場合、次いで、物理ページアドレスを第1のデータ構造内に格納するステップを含む。
【００１０】
第1の態様の第2の可能な実施形態による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第3の可能な実施形態では、変更されたページを子プロセスに同期するステップは、
メインプロセスから格納された物理ページアドレスを取得するステップと、
子プロセス内で、格納された物理ページアドレスを指す仮想ページアドレスを見つけるステップと、
仮想ページアドレスが存在する場合、仮想ページアドレスのページ・テーブル・エントリを格納された物理ページアドレスで更新し、対応する仮想ページアドレスが存在しない場合、新しい仮想ページアドレスを格納された物理ページアドレスにマッピングする新しいページ・テーブル・エントリが作成される、ステップと、
共有ページ数をインクリメントして、格納された物理ページアドレスに対応するページフラグを書き込み可能に設定するステップと
を含む。
【００１１】
第1の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第4の可能な実施形態では、変更されたページを子プロセスに同期するステップは、事前に決定された同期時点で、変更されたページを子プロセスに同期するステップを含む。
【００１２】
第1の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第5の可能な実施形態では、変更されたページを追跡する前に、方法は、メインプロセスに対する子である子プロセスをフォークするステップをさらに含む。
【００１３】
第1の態様の第5の可能な実施形態による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第6の可能な実施形態では、子プロセスをフォークするステップは、メインプロセスに対する子である中間プロセスをフォークするステップと、中間プロセスに対する子である子プロセスをフォークするステップとを含み、ここで、変更されたページを子プロセスに同期するステップは、変更されたページを中間プロセスに同期するステップと、子プロセスを中間プロセスと同期するステップとを含む。
【００１４】
第1の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第7の可能な実施形態では、複数の子プロセスが存在するとともに、変更されたページは、複数の子プロセスのうちの少なくとも1つの子プロセスに同期され、且つ、複数の子プロセスの他の子プロセスは、変更されたページが同期された少なくとも1つの子プロセスと同期される。
【００１５】
第1の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第8の可能な実施形態では、同期時刻に達したとき、オンライントランザクション処理は、子プロセスが同期されるまでブロックされ、且つ、変更されたページは子プロセスから共有されるように、且つ書き込み可能に設定される。
【００１６】
第1の態様の第2の可能な実施形態による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の第9の可能な実施形態では、同期時刻に達したとき、変更されたページは書き込み可能に設定され、子プロセスは、第1のデータ構造に従って、変更されたページと同期され、新たな変更されたページが追跡されるとともに新たな変更されたページのページアドレスが第2のデータ構造内に格納される。
【００１７】
第2の態様によると、オンライン分析処理のためのデータを維持する装置は、
データベースシステム内で動作するとともにオンライントランザクション処理を実行するメインプロセスによって変更されたページを追跡するように構成される追跡ユニットと、
変更されたページを、データベースシステム内で動作するとともにオンライン分析処理を実行する子プロセスに同期するように構成される同期ユニットと、
を含む。
【００１８】
第2の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の第1の可能な実施形態では、追跡ユニットは、具体的には、コピーオンライト・ページおよび/または新しいページを追跡するように構成される。
【００１９】
第2の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の第2の可能な実施形態では、装置は、追跡されるべきメモリのアドレス範囲を格納するように構成される第1の格納ユニットと、変更されたページの物理ページアドレスを格納するように構成される第2の格納ユニットとをさらに含み、ここで、追跡ユニットは、具体的には、データをページに書き込むことがページフォールトという結果になり、且つ、ページの物理ページアドレスがアドレス範囲内にある場合、物理ページアドレスを第2の格納ユニット内に格納するように構成される。
【００２０】
第2の態様の第2の可能な実施形態による、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の第3の可能な実施形態では、同期ユニットは、具体的には、
第2の格納ユニットから物理ページアドレスを取得し、
子プロセス内で、物理ページアドレスを指す仮想ページアドレスを見つけ、
仮想ページアドレスが存在する場合、仮想ページアドレスのページ・テーブル・エントリを、第2の格納ユニットから取得された物理ページアドレスで更新し、そうでなければ、子プロセス内の新しい仮想ページアドレスを、第2の格納ユニットから取得された物理ページアドレスにマッピングする新しいページ・テーブル・エントリを作成し、
共有ページ数をインクリメントして、取得された物理ページアドレスに対応するページフラグを書き込み可能に設定するように構成される。
【００２１】
第2の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の第4の可能な実施形態では、装置は、データベースシステムによって要求されるメモリが割り当てられたとき、オンライン分析処理のための子プロセスをフォークするように構成されるフォークユニットをさらに含む。
【００２２】
第2の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の第5の可能な実施形態では、同期ユニットは、具体的には、事前に決定された同期時刻で、変更されたページを子プロセスに同期するように構成される。
【００２３】
第2の態様の第4の可能な実施形態による、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の第6の可能な実施形態では、フォークユニットは、具体的には、中間プロセスおよび子プロセスをフォークするように構成され、ここで、中間プロセスはメインプロセスに対する子であるとともに、子プロセスは中間プロセスに対する子であり、同期ユニットは、具体的には、変更されたページを中間プロセスに同期し、且つ、子プロセスを中間プロセスと同期するように構成される。
【００２４】
第2の態様による、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の第7の可能な実施形態では、複数の子プロセスが存在するとともに、同期ユニットは、具体的には、変更されたページを複数の子プロセスのうちの少なくとも1つの子プロセスに同期し、且つ、複数の子プロセスの他の子プロセスを、変更されたページが同期された少なくとも1つの子プロセスと同期するように構成される。
【００２５】
第3の態様によると、オンライン分析処理のためのデータを維持する装置は、
データベースを格納するためのメモリと、
プロセッサと、
プロセッサに接続され、実行されるとき、プロセッサに上述の方法を実行させる命令を格納するストレージとを含む。
【００２６】
データベースにおけるオンライン分析処理のためのデータを維持する方法および装置では、データベースシステム内で動作するとともにオンライントランザクションを実行するメインプロセスによって変更されたページが追跡され、次いで、変更されたページは、データベースシステム内で動作するとともにオンライン分析処理を実行する子プロセスに同期される。トランザクショナルデータの一貫性があるスナップショットを維持するために子プロセスを周期的にフォークする解決手段と比較すると、変更されたページは追跡され、次いで、子プロセスに同期され、従って、周期的なフォーキングが回避され、従来技術における周期的なフォーキングによるフォークのオーバヘッドが取り除かれ、変更されたページのみが同期されるため同期はより高速であり、オンラインデータ処理のパフォーマンスが向上する。
【図面の簡単な説明】
【００２７】
【図１】図1は、本発明の実施形態に係るデータベースシステム・トポロジの概略図である。
【図２】図2は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法のフローチャートである。
【図３】図3は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法のフローチャートである。
【図４】図4は、本発明の実施形態に係る、同期時点を示す概略図である。
【図５】図5は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法における、変更されたページを追跡するプロセスのフローチャートである。
【図６】図6は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法における、変更されたページを子プロセスに同期するプロセスのフローチャートである。
【図７】図7は、本発明の実施形態に係る、データベースシステム・トポロジの概略図である。
【図８】図8は、本発明の別の実施形態に係る、データベースシステム・トポロジの概略図である。
【図９】図9は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の概略ブロック図である。
【図１０】図10は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の概略ブロック図である。
【図１１】図11は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の概略ブロック図である。
【発明を実施するための形態】
【００２８】
本発明の実施形態における技術的解決手段が、添付図面を参照して以下に詳述される。明らかに、以下に説明される実施形態は、本発明の全ての実施形態を包含することなく、例示的な目的のみのためのものである。当業者は、創造的努力を行うことなく、本明細書で与えられる実施形態から他の実施形態を導出することができ、且つ、全てのそのような実施形態は、本発明の保護範囲内に包含される。
【００２９】
本発明は、OLTPの作業負荷およびOLAPの作業負荷を管理するために複数のプロセスを使用するとともに、リアルタイムOLAPデータベースを実現するために協調プロセス同期を使用する。
【００３０】
図1に示されるように、データベースシステム100には、OLTPを担当する、メインプロセス110と称される1つのマルチスレッド・プロセスが存在する。メインプロセス110は、データベースシステム100内の、書き込み可能な唯一のプロセスである。加えて、データベースシステム100は、メインプロセス110に対する子であるとともにOLAPクエリのために使用される、少なくとも1つの読み出し専用マルチスレッド・プロセス120を含む。本発明は、メインプロセス110に対するデルタ変化を追跡すること、およびこれらの変化を周期的なフォーキングなしに子プロセス120に同期することに依存する。
【００３１】
図2は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法のフローチャートを示す。実施形態は、オペレーティングシステム（OS）を用いて、メインプロセスと少なくとも1つの子プロセスとの間の協調によって動作する。協調は、メモリデータの共有およびまた実行制御に関する。方法は、以下のステップを含む。
【００３２】
ステップ201、データベースシステム内で動作するとともにオンライントランザクション処理を実行するメインプロセスによって変更されたページを、OSカーネルによって追跡する。
【００３３】
ステップ202、OSカーネルによって、変更されたページを、データベースシステム内で動作するとともにオンライン分析処理を実行する子プロセスに同期する。
【００３４】
データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の実施形態では、変更されたページが追跡され、次いで、オンライン分析処理のための子プロセスが変更されたページと同期される。トランザクショナルデータの一貫性があるスナップショットを維持するために子プロセスを周期的にフォークする解決手段と比較すると、本実施形態は、変更されたページを既存の子プロセスに同期し、従って、周期的なフォーキングが回避され、周期的なフォーキングによるフォークのオーバヘッドが取り除かれ、変更されたページのみが同期されるため同期はより高速であり、オンラインデータ処理のパフォーマンスが向上する。
【００３５】
図3は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法のフローチャートを示す。方法は以下のステップを含む。
【００３６】
ステップ301、オンライン分析処理のための読み出し専用子プロセスをフォークする。
【００３７】
テーブル空間、制御メモリ等のような、データベースシステムによって要求されるメモリが事前に割り当てられているとき、オンライン分析処理のための子プロセスは一度にフォークされる。実施形態では、メインプロセスは、Linux（登録商標）システムコールfork()を介して子プロセスをフォークするようにOSに通知する。
【００３８】
ステップ302、変更されたページを追跡する。
【００３９】
メインプロセスは、追跡および同期されるべきメモリのアドレス範囲を知っているとともに、変更のために追跡されるべきメモリのアドレス範囲についてOSに通知する。OSはプロセスのアドレス空間内に追跡されるべきアドレス範囲を格納することができる。デルタ変化のこの追跡は、OSカーネルによって行われる。
【００４０】
OSは、ページテーブル内に、仮想アドレスの物理アドレスへのそのマッピングを格納する。各マッピングはまた、ページ・テーブル・エントリ（PTE）として知られている。各PTEは、仮想アドレスおよびその対応する物理アドレスを含む。
【００４１】
実施形態では、全てのコピーオンライト（CoW）・ページおよび新しいページが追跡され、次いで、子プロセスのPTEが変更されたページのちょうど最新の物理アドレスと同期される。
【００４２】
追跡は、データベースデータの関連メモリに対して行われるべきである。メインメモリデータベースについては、全てのデータページおよびトランザクショナルページ、制御ページのような全てのデータベースのメタデータ情報およびデータベース情報を含む全てのグローバルデータ構造が追跡されるべきメモリに包含される。
【００４３】
追跡されるメモリは、ヒープまたはプライベート共有メモリ上に割り当てられることができる。発明は、2つのケース間を区別しない。
【００４４】
ステップ303、変更されたページを子プロセスに同期する。
【００４５】
このステップでは、子プロセスは変更されたページを同期するようにOSに通知する。
【００４６】
実施形態では、同期時点は、メインプロセス内で事前に決定されることができ、次いで、子プロセスは、メインプロセスによって、毎同期時点で同期を実行するように通知される。同期を実行するための信号を受信すると、子プロセスはOSに通知し、且つ、OSカーネルは変更されたページを子プロセスに同期する。
【００４７】
例えば、図4に示されるように、初めに、子プロセス1、子プロセス2および子プロセス3がフォークされ、次いで、同期時点1から5の毎同期時点で、メインプロセスは同期するように子プロセス1、2および3に通知する。同期時点1から5は、メインプロセス内で事前に決定されることができる。メインプロセスはまた、実際のOLTPの状況に基づいて、同期するように子プロセスに通知するときを決定することができる。例えば、同期時点に達したが、最後の同期時点からページが修正されていない場合、そのときメインプロセスは同期するように子プロセスに通知しない。次の同期時点に達しないが、変更されたページ数がある値を超過した場合、そのときメインプロセスは、次の同期時点の前に、同期するように子プロセスに通知してよい。
【００４８】
データベースシステムにおけるオンライン分析処理のためのデータを維持する方法の実施形態では、オンライン分析処理のための子プロセスがフォークされ、変更されたページが追跡され、次いで、子プロセスが変更されたページと同期される。トランザクショナルデータの一貫性があるスナップショットを維持するために子プロセスを周期的にフォークする解決手段と比較すると、本実施形態は、変更されたページを既存の子プロセスに同期し、従って、周期的なフォーキングが回避され、周期的なフォーキングによるフォークのオーバヘッドが取り除かれ、変更されたページのみが同期されるため同期はより高速であり、オンラインデータ処理のパフォーマンスが向上する。
【００４９】
加えて、従来技術における周期的なフォーキング解決手段と比較すると、本発明の実施形態では、多くの他のデータコピーおよびプロセスの設定もまた低減される。子プロセスは、関連ページが変更されなかった場合に変わらないままである、ロードされたキャッシュエントリおよび変換索引バッファ（TLB）エントリを有する。従って、データはホットのままであり、且つ、キャッシュミスが低減され、従って、子プロセスのパフォーマンスもまたより良い。
【００５０】
従来技術における周期的なフォーキング解決手段では、いくつかの時点で、システム内に多くの子プロセスが存在することができ、従って、メモリおよびCPUを消費する。しかしながら、本発明の実施形態では、子プロセスの数は固定且つ制御される。従って、あまりに多くのシステムリソース消費という問題がない。
【００５１】
さらに、多くのメインメモリデータベースは埋め込みモードで使用され、すなわち、アプリケーションからのクエリの実行は、データベースに対するアプリケーション・プログラム・インタフェース（API）のコールを介して行われる。埋め込みモードでは、従来技術における周期的なフォーキング解決手段は、アプリケーションリンクの損失をもたらす。対照的に、本発明の実施形態では、古い子プロセスを周期的に強制終了するとともに新しい子プロセスをフォークする代わりに、子プロセスが最初に作成されるとともに子プロセスは生きたままであるため、埋め込みモードにおけるアプリケーションリンクは保持され、従って、埋め込みモードにおけるアプリケーションリンクの損失は回避される。
【００５２】
図5は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法における、変更されたページを追跡するプロセスのフローチャートを示す。図5に示されるように、変更されたページを追跡するプロセスは以下のステップを含む。
【００５３】
ステップ501、データをページに書き込むことがページフォールト上のコピーオンライト（CoW）という結果になり、次いで、ページは変更されたページであると決定する。
【００５４】
ステップ502、このページの物理ページアドレスが追跡されたアドレス範囲内にあるかどうかチェックし、「はい」の場合、ステップ503を実行する。追跡されるべきアドレス範囲は、プロセスのアドレス空間内に格納されることができる。
【００５５】
ステップ503、物理ページアドレスを格納する。同じように、全てのCoWページアドレスが格納される。物理ページアドレスはいくつかのデータ構造内、例えば、メインプロセスのデータ構造内に格納されることができる。
【００５６】
変更されたページの物理ページアドレスのみが格納されるため、子プロセスは、変更されたページのみと同期される。従って、PETコピーは、変更されている可能性がある小さいデルタに最適化され、且つ、同期はより高速である。
【００５７】
メインプロセスから同期するための信号を受信すると、子プロセスは、同期するようにOSに通知しなければいけない。図6は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法における、変更されたページを子プロセスに同期するプロセスのフローチャートを示し、以下のステップを含む。
【００５８】
ステップ601、格納された物理ページアドレス（1つまたは複数）を取得する。
【００５９】
OSは変更されたページの物理ページアドレスのリストを受け取る。実施形態では、変更されたページの物理ページアドレスがメインプロセス構造内に格納されるとき、OSはメインプロセス構造を受け取るとともに、変更されたページの物理ページアドレスのリストを受け取る。
【００６０】
ステップ602、同期されるべき物理ページアドレスが存在する場合、ステップ603を実行し、そうでなければ、プロセスを終了する。
【００６１】
ステップ603、物理ページアドレスを受け取るとともに、子プロセス内で、物理ページアドレスを指す仮想ページアドレスを見つける。
【００６２】
子プロセス内の格納された物理ページアドレスを指す仮想ページアドレスは、OS特定方法を使用することによって、例えば、関数find_vmaを呼び出すことを介して見つかることができる。
【００６３】
ステップ604、仮想ページアドレスが存在する場合、ステップ605を実行し、そうでなければ、ステップ606を実行する。
【００６４】
ステップ605、仮想ページアドレスのPTEを物理ページアドレスで更新し、ステップ607を実行する。
【００６５】
OSは、ページテーブル内に、仮想アドレスの物理アドレスへのそのマッピングを格納する。各マッピングはまた、ページ・テーブル・エントリ（PTE）として知られている。各PTEは、仮想アドレスおよびその対応する物理アドレスを含む。
【００６６】
ステップ606、新しい仮想ページアドレスを物理ページアドレスにマッピングする新しいPTEを作成する。
【００６７】
ステップ607、共有ページ数をインクリメントして、物理ページアドレスに対応するページフラグを書き込み可能に設定し、次いで、ステップ602に戻る。ページは、CoWをトリガするために、メインプロセスおよび子プロセスの両方に対してMAYWRITEに設定される。共有ページ数は、このページを共有するプロセス数を追跡するためにOSによって維持されるカウンタである。共有ページ数が1より大きい場合、そのときこのページにおけるデータ変更はCoWをトリガする。
【００６８】
実施形態では、関連PTE、すなわちデルタ変化のみが同期される。1％のデータ変更との同期のサンプルケースを取ると、99%のPTEコピーが低減される。従って、同期は周期的なフォーキングよりもはるかに高速である。
【００６９】
同期は、以下の2つの異なるモードで実施されることができる。
【００７０】
同期モード
【００７１】
同期時点に達したとき、メインプロセス上の動作は、全ての子プロセスが同期されるまでブロックされる。メインプロセスは全ての子プロセスに信号を送信するとともに、子プロセスが同期を完了するのを待つ。メインプロセス内の変更されたページは、同期が開始されると、MAYWRITEに設定され、すなわち、変更されたページを全ての子プロセスから共有されるように、且つ書き込み可能に設定する。共有ページ数もまた、CoWをトリガするために各子プロセスによってインクリメントされる。
【００７２】
非同期モード
【００７３】
同期時点に達したとき、メインプロセスは、最初に、CoWをトリガするために全てのその変更されたページをMAYWRITEに設定し、次いで、同期を実行するように子プロセスに通知するとともに、同期が完了するまで待つ代わりに、以下の動作を続ける。このモードでは、任意の新しい変更が追跡されるとともに新しいデータ構造内に格納される。古いデータ構造は、全ての子プロセスが同期を完了した後ドロップされることができる。変更されたページの物理ページアドレスを格納するためのデータ構造は、毎同期時点で切り替えられることができる。例えば、変更されたページの物理ページアドレスを格納するための2つのデータ構造、第1のデータ構造および第2のデータ構造が存在する。初めに、物理ページアドレスは第1のデータ構造内に格納される。同期時点に達したとき、メインプロセスは、第1のデータ構造内に格納された物理ページアドレスに従って同期するように、子プロセスに通知し、且つ、新たな変更されたページのページアドレスが第2のデータ構造内に格納される。そしてその後、次の同期時点に達したとき、2つのデータ構造が切り替えられ、すなわち、第2のデータ構造に従って子プロセスを同期し、且つ、新たな変更されたページの物理ページアドレスが第1のデータ構造内に格納される。
【００７４】
図7は、本発明の別の実施形態に係る、データベースシステム・トポロジの概略図を示す。図1に示されるトポロジと比較すると、このデータベースシステム700は、OLTPのためのメインプロセス710とOLAPのための子プロセス720との間に中間プロセス730を有する。中間プロセス730は、子プロセス720の要求された番号をフォークするとともに子プロセス720を同期することを担当する。メインプロセス710は、中間プロセス730のみを変更されたページと直接同期するとともに、他の子の同期をこの中間プロセス730に委任する。そしてその後、他の子プロセス720は、中間プロセス730と同期する。この実施形態は、メインプロセス上のロードを低減する。このことは、多くの子プロセスが存在するか、または子プロセスが同期するのが遅い場合に役立つ。
【００７５】
図8は、本発明の別の実施形態に係る、データベースシステム・トポロジの概略図を示す。このデータベースシステム800では、子プロセス820-1、820-2および820-3間にピア・ツー・ピアの同期が存在することができる。メインプロセス810は、どれがフリーであるかまたは最小作業負荷を有するかに応じて、子プロセスのいずれか1つを同期する。次いで、他の子プロセスは、ピア同期された子プロセスを使用して同期され、すなわち、メインプロセスから直接同期された子プロセスと同期される。例えば、同期時点に達したとき、メインプロセス810は、子プロセス820-1、820-2および820-3の中で子プロセス820-1がフリーであるかまたは最小作業負荷を有すると決定し、次いで、メインプロセス810は、メインプロセス810と同期するように子プロセス820-1に通知するとともに、子プロセス820-1と同期するように、子プロセス820-2および820-3に通知する。この実施形態は、メインプロセスと子プロセスとの間の同期をより高速にする。
【００７６】
図9は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の概略ブロック図を示す。装置は、追跡ユニット910および同期ユニット920を含む。追跡ユニット910は、データベースシステム内で動作するとともにオンライントランザクション処理を実行するメインプロセスによって変更されたページを追跡するように構成される。同期ユニット920は、変更されたページを、データベースシステム内で動作するとともにオンライン分析処理を実行する子プロセスに同期するように構成される。
【００７７】
データベースシステムにおけるオンライン分析処理のための装置の実施形態では、変更されたページが追跡され、次いで、オンライン分析処理のための子プロセスが変更されたページと同期される。トランザクショナルデータの一貫性があるスナップショットを維持するために子プロセスを周期的にフォークする解決手段と比較すると、本実施形態は、変更されたページを既存の子プロセスに同期し、従って、周期的なフォーキングが回避され、周期的なフォーキングによるフォークのオーバヘッドが取り除かれ、変更されたページのみが同期されるため同期はより高速であり、オンラインデータ処理のパフォーマンスが向上する。
【００７８】
図10は、本発明の実施形態に係る、データベースシステムにおけるオンライン分析処理のためのデータを維持する装置の概略ブロック図を示す。図9に示されるオンライン分析処理の装置と比較すると、図18の装置は、フォークユニット1030、第1の格納ユニット1040および第2の格納ユニット1050をさらに含む。フォークユニット1030は、オンライン分析処理のための子プロセスをフォークするように構成される。データベースシステムによって要求されるメモリが割り当てられたとき、フォークユニット1030は子プロセスを一度にフォークする。第1の格納ユニット1040は、追跡されるべきメモリのアドレス範囲を格納するように構成される。第2の格納ユニット1050は、変更されたページの物理ページアドレスを格納するように構成される。
【００７９】
追跡ユニット1010は、コピーオンライト・ページおよび/または新しいページを追跡する。データをページに書き込むことがページフォールトという結果になるとき、追跡ユニット1010は、ページの物理ページアドレスが第1の格納ユニット1040内に格納されたアドレス範囲内にあるかどうかチェックする。物理ページアドレスがアドレス範囲内にある場合、追跡ユニット1010は、変更されたページの物理ページアドレスを第2の格納ユニット1050内に格納する。変更されたページの物理ページアドレスのみが格納されるため、子プロセスは、変更されたページのみと同期される。従って、PETコピーは、変更されている可能性がある小さいデルタに最適化され、且つ、同期はより高速である。
【００８０】
同期ユニット1020は、第2の格納ユニット1050から物理ページアドレスを取得するとともに、子プロセス内で、取得された物理ページアドレスを指す仮想ページアドレスを見つける。仮想ページアドレスが存在する場合、同期ユニット1020は、仮想ページアドレスのPTEを第2の格納ユニット1050から取得された物理ページアドレスで更新する。仮想ページアドレスが存在しない場合、同期ユニット1020は、子プロセス内の新しい仮想ページアドレスを物理ページアドレスにマッピングする、新しいPTEを作成する。次いで、同期ユニット1020は、共有ページ数をインクリメントして、取得されたページアドレスに対応するページフラグを書き込み可能、すなわちMAYWRITEに設定する。
【００８１】
実施形態では、同期のための時点、すなわち同期時点は事前に決定され、且つ、同期ユニット1020は、事前に決定された同期時点で、変更されたページを子プロセスに同期する。
【００８２】
実施形態では、フォークユニット1030は、具体的には、中間プロセスおよびオンライン分析処理のための子プロセスをフォークするように構成され、ここで、オンライン分析処理のための子プロセスは、中間子プロセスの子である。同期ユニット1020は、具体的には、最初に変更されたページを中間プロセスに同期し、次いで、オンライン分析処理のための子プロセスを中間プロセスと同期するように構成される。
【００８３】
実施形態では、子プロセス間にピア・ツー・ピアの同期が存在することができる。同期ユニット1020は、具体的には、変更されたページを子プロセスのうちの1つに同期し、次いで、他の子プロセスを、メインプロセスから直接同期された子プロセスと同期するように構成される。変更されたページと直接同期された子プロセスは、どれがフリーであるかまたは最小作業負荷を有するかに応じて決定されることができる。
【００８４】
データベースシステムにおけるオンライン分析処理のための装置の実施形態では、オンライン分析処理のための子プロセスがフォークされ、変更されたページが追跡され、次いで、フォークされた子プロセスが変更されたページと同期される。トランザクショナルデータの一貫性があるスナップショットを維持するために子プロセスを周期的にフォークする解決手段と比較すると、実施形態は、変更されたページを既存の子プロセスに同期し、従って、周期的なフォーキングが回避され、周期的なフォーキングによるフォークのオーバヘッドが取り除かれ、変更されたページのみが同期されるため同期はより高速であり、オンラインデータ処理のパフォーマンスが向上する。
【００８５】
加えて、従来技術における周期的なフォーキング解決手段と比較すると、本発明の実施形態では、多くの他のデータコピーおよびプロセスの設定もまた低減される。子プロセスは、関連ページが変更されなかった場合に変わらないままである、ロードされたキャッシュエントリおよびTLBエントリを有する。従って、データはホットのままであり、且つ、キャッシュミスが低減され、従って、子プロセスのパフォーマンスもまたより良い。
【００８６】
従来技術における周期的なフォーキング解決手段では、いくつかの時点で、システム内に多くの子プロセスが存在することができ、従って、メモリおよびCPUを消費する。しかしながら、本発明の実施形態では、子プロセスの数は固定且つ制御される。従って、あまりに多くのシステムリソース消費という問題がない。
【００８７】
さらに、多くのメインメモリデータベースは埋め込みモードで使用され、すなわち、アプリケーションからのクエリの実行は、データベースに対するAPIのコールを介して行われる。埋め込みモードでは、従来技術における周期的なフォーキング解決手段は、アプリケーションリンクの損失をもたらす。対照的に、本発明の実施形態では、古い子プロセスを周期的に強制終了するとともに新しい子プロセスをフォークする代わりに、子プロセスが最初に作成されるとともに子プロセスは生きたままであるため、埋め込みモードにおけるアプリケーションリンクは保持され、従って、埋め込みモードにおけるアプリケーションリンクの損失は回避される。
【００８８】
図11は、本発明の実施形態に係る、オンライン分析処理のためのデータを維持する装置の概略ブロック図を示す。データベースシステムにおけるオンライン分析処理のためのデータを維持する装置は、データベースを格納するためのメモリ1110と、プロセッサ1120と、プロセッサ1120に接続され、プロセッサ1120によって実行されるとき、プロセッサ1120に、本発明の実施形態による、データベースシステムにおけるオンライン分析処理のためのデータを維持する方法を実行させる命令を格納する、ストレージ1130とを含む。
【００８９】
メモリ1110は、高速RAMを含むことができ、また、不揮発性メモリを含むことができる。
【００９０】
プロセッサ1120は、中央処理装置（CPU）または特定用途向け集積回路（ASIC）または本発明の実施形態を実施するように構成される1つ以上の集積回路であることができる。
【００９１】
あるいは、特定の実施においては、メモリ1110、プロセッサ1120およびストレージ1130が個別に実装される場合、そのときメモリ1110、プロセッサ1120およびストレージ1130はバスを介して通信することができる。バスは業界標準アーキテクチャ（ISA）バス、周辺コンポーネント相互接続（PCI）バスまたは拡張業界標準アーキテクチャ（EISA）バス等であることができる。バスはアドレスバス、データバスおよび制御バス等に分割されることができる。便利な表現のために、バスは単一の太線によって表されているだけであるが、1つだけのバス、または1種類だけのバスが存在することを意味してはいない。
【００９２】
あるいは、特定の実施においては、メモリ1110、プロセッサ1120およびストレージ1130が単一のチップに集積される場合、そのときメモリ1110、プロセッサ1120およびストレージ1130は内部インタフェースを介して通信することができる。
【００９３】
上述の実施形態の方法におけるステップの全てまたは一部は、プログラムの命令下で関連ハードウェアによって完了されてよく、且つ、プログラムはコンピュータ可読記憶媒体内に格納されてよく、プログラムが実行されるとき、上述の方法の実施形態のステップが実行されることは、当業者によって理解されるべきである。記憶媒体は、読み出し専用メモリ（ROM）/ランダム・アクセス・メモリ（RAM）、フロッピーディスクまたは光ディスク等であってよい。
【００９４】
上述の実施形態は単に、本発明の技術的解決手段を説明するために提供されるが、本発明を限定するものではないことは留意されるべきである。本発明は、前述の実施形態を参照して詳細に説明されたが、そのような変更または置換が、対応する技術的解決手段の本質を本発明の範囲から逸脱させない限り、前述の実施形態で説明された技術的解決手段に対して変更が行われることができ、または、技術的解決手段におけるいくつかの技術的特徴に対して同等置換が行われることができることは当業者によって理解されるべきである。
【符号の説明】
【００９５】
１００  データベースシステム
１１０  メインプロセス
１２０  子プロセス
７００  データベースシステム
７１０  メインプロセス
７２０  子プロセス
７３０  中間プロセス
８００  データベースシステム
８１０  メインプロセス
８２０−１  子プロセス
８２０−２  子プロセス
８２０−３  子プロセス
９１０  追跡ユニット
９２０  同期ユニット
１０１０  追跡ユニット
１０２０  同期ユニット
１０３０  フォークユニット
１０４０  第1の格納ユニット
１０５０  第2の格納ユニット
１１１０  メモリ
１１２０  プロセッサ
１１３０  ストレージ
【図１】
0006336090.tif 000002
【図２】
0006336090.tif 000003
【図３】
0006336090.tif 000004
【図４】
0006336090.tif 000005
【図５】
0006336090.tif 000006
【図６】
0006336090.tif 000007
【図７】
0006336090.tif 000008
【図８】
0006336090.tif 000009
【図９】
0006336090.tif 000010
【図１０】
0006336090.tif 000011
【図１１】
0006336090.tif 000012