(57)【要約】  フロントデータベース及び１つ又は複数のクラウドデータベースにわたって分散されたデータベースの維持。データベースのフロント及びリモート部分を固定させるのではなくて、データ分散マネージャーは、データ分散ポリシーに従ってデータベースセグメントを評価して、１つ又は複数のクラウドデータベースに又はそれから、フロントデータベースから又はそれに転送されることになる１つ又は複数のデータベースセグメントを識別する。それに応じて、データ分散マネージャーは、識別されたデータベースセグメントを移動させる。結果として、フロントデータベース内にあるデータ（及びクラウドに記憶されたデータ）は、時間とともに変化し得る。
2017533518.tif 000002
【特許請求の範囲】
【請求項１】
フロントデータベース及び１つ又は複数のクラウドデータベースにわたって分散されたデータベースを維持するためのコンピュータ実装方法であって、前記コンピュータ実装方法が、前記コンピュータ実装方法のためのコンピュータ実行可能命令を実行する１つ又は複数のプロセッサによって実行され、前記コンピュータ実装方法が、
データ分散ポリシーに従ってフロントデータベースを評価して、１つ又は複数のクラウドデータベースに移動されることになる１つ又は複数のフロントデータベースセグメントを決定するステップと、
前記フロントデータベースの評価に応答して、前記１つ又は複数のフロントデータベースセグメントを前記１つ又は複数のクラウドデータベースのうちの少なくとも１つに移動させるステップと、
データ分散ポリシーに従って前記１つ又は複数のクラウドデータベース内の前記データベースのリモート部分を評価して、前記１つ又は複数のクラウドデータベースのうちの少なくとも１つから前記フロントデータベースに移動されることになる１つ又は複数のリモートデータベースセグメントを決定するステップと、
前記データベースの前記リモート部分の評価に応答して、前記１つ又は複数のリモートデータベースセグメントを前記フロントデータベースに移動させるステップと
を含む、コンピュータ実装方法。
【請求項２】
前記データベースをバックアップするステップをさらに含み、前記データベースのバックアップが、
前記フロントデータベースをバックアップするステップと、
前記フロントデータベースのバックアップに対応するバックアップ時間の時点での前記１つ又は複数のクラウドデータベースのうちの少なくとも１つのクラウドデータベースの状態を取得するのに十分なリモート復元情報をバックアップするステップと
を含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記１つ又は複数のクラウドデータベースが、単一クラウドデータベースを備える、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記１つ又は複数のクラウドデータベースが、複数のクラウドデータベースを備える、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記１つ又は複数のフロントデータベースセグメントが、各々、前記フロントデータベースの１つ又は複数の行を備える、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記１つ又は複数のフロントデータベースセグメントが、各々、前記フロントデータベースの１つ又は複数の列を備える、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記データ分散ポリシーが、ユーザーによって指定された、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記データ分散ポリシーが、データ使用の頻度に基づく、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記データ分散ポリシーが、オンデマンドポリシーを含む、請求項１に記載のコンピュータ実装方法。
【請求項１０】
コンピューティングシステムの１つ又は複数のプロセッサによって実行されるときに前記コンピューティングシステムにフロントデータベース及び１つ又は複数のクラウドデータベースにわたって分散されたデータベースを維持するためのコンピュータ実装方法を実行させるように構造化されたコンピュータ実行可能命令をそこに有する１つ又は複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータ実装方法が、
データ分散ポリシーに従ってデータベースセグメントを評価して、前記１つ又は複数のクラウドデータベースに又はそれから、前記フロントデータベースから又はそれに転送されることになる１つ又は複数のデータベースセグメントを識別するステップと、
前記データベースセグメントの評価に応答して、前記識別された１つ又は複数のデータベースセグメントをそれに対応して移動させるステップと
を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースデータ分散管理に関する。
【背景技術】
【０００２】
[0001]コンピューティングシステム及び関連ネットワークは、人間が働き、遊び、及び通信する方法に革命をもたらした。我々の生活のほとんどすべての側面は、何らかの方法でコンピューティングシステムの影響を受ける。ネットワークの拡散は、コンピューティングシステムがデータを共有し、通信することを可能にし、それによって、情報アクセスを大幅に増やした。このため、現代は、「情報化時代」としばしば称される。
【０００３】
[0002]データベースは、しばしば大量のデータを整然と体系化するための１つの方法である。さらに、クエリ処理エンジンは、大量のデータから取得されるときでも、ユーザーが興味のある特定のデータをすぐに取得することを可能にし、特定のクエリがデータベースに対して処理されることを可能にする。クエリを処理するために、クエリ処理エンジンは、先ず、クエリをクエリプランに変換する。通常、データベースは、単一クエリが異なるロケーションにあるデータベースの部分に由来するデータをもたらし得るように分散され得る。
【０００４】
[0003]本明細書で特許請求される主題は、任意の欠点を解決する又は前述のものなどの環境においてのみ機能する実施形態に限定されない。そうではなくて、本背景技術は、本明細書に記載されるいくつかの実施形態が実施され得る１つの例示的技術分野を示すためにのみ提供される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データベースデータ分散管理を提供する。
【課題を解決するための手段】
【０００６】
[0004]本明細書に記載される少なくともいくつかの実施形態は、１つ又は複数のフロントデータベース及び１つ又は複数のクラウドデータベースにわたって分散されたデータベースの維持に関する。たとえば、フロントデータベースは、ローカルデータベース又はリモートデータベースでもよい。それでも、フロントデータベースは、クエリがフロントデータベースに提出されるという意味で「前面（ｆｒｏｎｔａｌ）」である。実際に、フロントデータベースにクエリを提出するものは、データの一部がクラウド内にあり得ることを認識する必要さえない。データベースのフロント及びリモート部分を固定させるのではなくて、データ分散マネージャーは、データ分散ポリシーに従ってデータベースセグメントを評価して、クラウドデータベースに又はそれから、フロントデータベースから又はそれに転送されることになる１つ又は複数のデータベースセグメントを識別する。それに応じて、データ分散マネージャーは、識別されたデータベースセグメントを移動させる。結果として、フロントデータベース内にあるデータ及びクラウドに記憶されたデータは、時間とともに変化し得る。
【０００７】
[0005]本概要は、本特許請求されている主題の主な特徴又は本質的特徴を識別することを意図されておらず、本特許請求されている主題の範囲を判定する際の助けとして使用されることも意図されていない。
【０００８】
[0006]前述の及び他の利点及び特徴が獲得され得る方式を説明するために、様々な実施形態のより具体的な説明が、添付の図面を参照して行われることになる。これらの図面は、単に、サンプルの実施形態を示し、したがって、本発明の範囲の限定として考えられるべきではないという理解の下で、実施形態が、以下のような添付の図面の使用を通してさらなる特異性及び詳細とともに記載及び説明されることになる。
【図面の簡単な説明】
【０００９】
【図１】[0007]本明細書に記載されるいくつかの実施形態がその中で使用され得るコンピューティングシステムを抽象的に示す図である。
【図２】[0008]その中で分散型データベースが、コンピューティングシステム内に前面データベースを含み、リモートクラウドシステム内にリモートクラウドデータベースもまた含む、そして、その中でデータベースセグメントが、前面データベースとリモートクラウドデータベースとの間で移動させられる、データベース環境の図である。
【図３】[0009]前面データベース及びリモートクラウドデータベースにわたって分散されたデータベースを維持するための方法であって、前面データベースとリモートクラウドデータベースとの間のデータベースセグメントの移動を含む方法の流れ図である。
【図４】[0010]分散型データベースのためのバックアップ環境の図である。
【発明を実施するための形態】
【００１０】
[0011]本明細書に記載される少なくともいくつかの実施形態は、１つ又は複数のフロントデータベース及び１つ又は複数のリモートクラウドデータベースにわたって分散されたデータベースの維持に関する。たとえば、フロントデータベースは、ローカルデータベース又はリモートデータベースでもよい。それでも、フロントデータベースは、クエリがフロントデータベースに提出されるという意味で、「前面」である。実際に、フロントデータベースにクエリを提出するものは、データの一部がクラウド内にあり得ることを認識する必要さえない。データベースのフロント及びリモート部分を固定させるのではなくて、データ分散マネージャーは、データ分散ポリシーに従ってデータベースセグメントを評価して、クラウドデータベースに又はそれから、前面データベースから又はそれに転送されることになる１つ又は複数のデータベースセグメントを識別する。それに応じて、データ分散マネージャーは、識別されたデータベースセグメントを移動させる。結果として、フロントデータベース内にあるデータ及びクラウドに記憶されたデータは、時間とともに変化し得る。コンピューティングシステムのいくらかの導入的論考が、図１に関して説明されることになる。次いで、アクセス制御の構造及び使用法が、その後の図に関して説明されることになる。
【００１１】
[0012]コンピューティングシステムは、現在、ますます多種多様な形をとる。コンピューティングシステムは、たとえば、ハンドヘルドデバイス、アプライアンス、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散型コンピューティングシステム、データセンター、又は、ウェアラブル（たとえば、眼鏡）などの従来はコンピューティングシステムとは考えられなかったデバイスでもよい。本説明において及び本特許請求の範囲において、「コンピューティングシステム」という用語は、少なくとも１つの物理的及び有形のプロセッサとプロセッサによって実行され得るコンピュータ実行可能命令をそこに有することが可能な物理的及び有形のメモリとを含む任意のデバイス又はシステム（又はその組合せ）を含むものとして広く定義される。メモリは、任意の形をとることができ、コンピューティングシステムの特質及び形に応じて決まり得る。コンピューティングシステムは、ネットワーク環境にわたって分散されてもよく、複数の構成するコンピューティングシステムを含み得る。
【００１２】
[0013]図１に示すように、その最も基本的な構成において、コンピューティングシステム１００は、通常、少なくとも１つのハードウェアプロセッシングユニット１０２及びメモリ１０４を含む。メモリ１０４は、揮発性、不揮発性、又はその２つの何らかの組合せでもよい、物理的システムメモリでもよい。「メモリ」という用語はまた、本明細書において、物理記憶媒体などの不揮発性大容量記憶装置を指すために使用され得る。コンピューティングシステムが、分散される場合、処理、メモリ及び／又は記憶機能もまた、分散され得る。本明細書において、「実行可能モジュール」又は「実行可能構成要素」という用語は、コンピューティングシステムで実行され得るソフトウェアオブジェクト、ルーチン、又は方法を指し得る。本明細書に記載される異なる構成要素、モジュール、エンジン、及びサービスは、コンピューティングシステムで実行するオブジェクト又はプロセスとして実装され得る（たとえば、別個のスレッドとして）。
【００１３】
[0014]以下の説明では、実施形態が、１つ又は複数のコンピューティングシステムによって実行される動作を参照して説明される。そのような動作が、ソフトウェアにおいて実施される場合、１つ又は複数のプロセッサ（その動作を実行する関連コンピューティングシステムの）が、実行されたコンピュータ実行可能命令の実行に応答してコンピューティングシステムの動作を指示する。たとえば、そのようなコンピュータ実行可能命令は、コンピュータプログラム製品を形成する１つ又は複数のコンピュータ可読媒体で実施され得る。そのような動作の一例は、データの操作を含む。コンピュータ実行可能命令（及び、操作されたデータ）は、コンピューティングシステム１００のメモリ１０４に記憶され得る。コンピューティングシステム１００はまた、コンピューティングシステム１００が、たとえばネットワーク１１０を介して、他のコンピューティングシステムと通信できるようにする通信チャネル１０８を含み得る。コンピューティングシステム１００はまた、ユーザーに視覚的表現を表示するために使用され得るディスプレイを含む。
【００１４】
[0015]本明細書に記載される実施形態は、以下にさらに詳しく論じられるような、たとえば、１つ又は複数のプロセッサ及びシステムメモリなど、コンピュータハードウェアを含む特定用途又は汎用コンピューティングシステムを備え得る又は使用し得る。本明細書に記載される実施形態はまた、コンピュータ実行可能命令及び／又はデータ構造体を運ぶ又は記憶するための物理的及び他のコンピュータ可読媒体を含む。そのようなコンピュータ可読媒体は、汎用又は特定用途コンピューティングシステムによってアクセスされ得る任意の使用可能な媒体でもよい。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理記憶媒体である。コンピュータ実行可能命令を運ぶコンピュータ可読媒体は、伝送媒体である。したがって、例として、そして、限定ではなく、本発明の実施形態は、少なくとも次の２つのはっきりと異なる種類のコンピュータ可読媒体を備え得る：記憶媒体及び伝送媒体。
【００１５】
[0016]コンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、又は、コンピュータ実行可能命令もしくはデータ構造体の形で所望のプログラムコード手段を記憶するために使用され得る、そして汎用もしくは特定用途コンピューティングシステムによってアクセスされ得る、任意の他の物理的及び有形の記憶媒体を含む。
【００１６】
[0017]「ネットワーク」が、コンピューティングシステム及び／又はモジュール及び／又は他の電子デバイスの間の電子データの移送を可能にする１つ又は複数のデータリンクとして定義される。情報が、ネットワーク又は別の通信接続（ハードワイヤード、ワイヤレス、又は、ハードワイヤードもしくはワイヤレスの組合せのいずれか）を介してコンピューティングシステムに転送又は提供されるとき、コンピューティングシステムは、その接続を伝送媒体として適切に見なす。伝送媒体は、コンピュータ実行可能命令又はデータ構造体の形で所望のプログラムコード手段を運ぶために使用され得る及び汎用又は特定用途コンピューティングシステムによってアクセスされ得る、ネットワーク及び／又はデータリンクを含み得る。前述の組合せはまた、コンピュータ可読媒体の範囲に含まれるべきである。
【００１７】
[0018]さらに、様々なコンピューティングシステム構成要素に到達したとき、コンピュータ実行可能命令又はデータ構造体の形のプログラムコード手段は、伝送媒体から記憶媒体に（又は、その逆に）自動的に転送され得る。たとえば、ネットワーク又はデータリンクを介して受信されるコンピュータ実行可能命令又はデータ構造体は、ネットワークインターフェースモジュール（たとえば、「ＮＩＣ」）内のＲＡＭにおいてバッファリングすることができ、次いで、コンピューティングシステムＲＡＭに及び／又はコンピューティングシステムにある揮発性の低い記憶媒体に最終的に転送され得る。したがって、記憶媒体は、伝送媒体もまた（又は主に）使用するコンピューティングシステム構成要素に含まれ得ることを理解されたい。
【００１８】
[0019]コンピュータ実行可能命令は、たとえば、プロセッサで実行されるときに汎用コンピューティングシステム、特定用途コンピューティングシステム、又は特定用途処理デバイスにある特定の機能又はグループの機能を実行させる命令及びデータを備える。コンピュータ実行可能命令は、たとえば、アセンブリ言語などの中間フォーマット命令など、プロセッサによる直接実行の前に何らかの変換（コンパイルなど）を受けるバイナリ又は命令、あるいはソースコードでもよい。本主題は、構造的特徴及び／又は方法論的動作に特有の言語で説明されるが、添付の特許請求の範囲において定義される本主題は、記載される特徴又は前述の動作に必ずしも限定されないことを理解されたい。そうではなくて、記載される特徴及び動作は、本特許請求の範囲を実装する例示的形として開示される。
【００１９】
[0020]本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの又はプログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ページャ、ルータ、スイッチ、データセンター、ウェアラブル（眼鏡など）などを含む、多数のタイプのコンピューティングシステム構成を有するネットワークコンピューティング環境において実施され得ることが、当業者には理解されよう。本発明はまた、ネットワークを介してリンクされた（ハードワイヤードデータリンク、ワイヤレスデータリンク、又は、ハードワイヤード及びワイヤレスデータリンクの組合せのいずれかによって）ローカル及び遠隔コンピューティングシステムが、両方ともタスクを実行する、分散型システム環境において実施され得る。分散型システム環境では、プログラムモジュールは、ローカル及び遠隔メモリ記憶装置の両方に置かれ得る。
【００２０】
[0021]図２は、前面システム２１０及びリモートクラウドシステム２２０を含むデータベース環境２００を示す。前面システム２１０は、たとえば、コンピューティングシステムでもよく、図１のコンピューティングシステム１００について前述されたように構造化され得る。リモートクラウドシステム２２０は、クラウドコンピューティング環境である。クラウドコンピューティング環境は、高い可用性を有するサービスを提供するので、クラウドコンピューティング環境は、しばしば、「クラウド」と称される。クラウドサービスの消費者の視点からすると、それは、消費者が、いつでもどんな場所でも簡単にクラウドへと手を伸ばして、サービスをサポートする実際の物理ハードウェアに関する心配なしに、所望のサービスを取得することができるようなものである。多くの場合、データセンター内の計算及び記憶域ハードウェアは、クラウドコンピューティング環境のためのハードウェアサポートを提供する。
【００２１】
[0022]図示された実施形態では、前面システム２１０は、１つ又は複数のフロントデータベース２１１を有し、リモートクラウドシステム２２０は、１つ又は複数のリモートクラウドデータベース２２１を有する。分散型データベース２３０は、フロントデータベース２１１及びリモートクラウドデータベース２２１の両方を含むものとして示される。前面システム２１０は、前面システム２１０が、分散型データベース２３０に向けられたデータベース利用システム（ｄａｔａｂａｓｅ  ｕｔｉｌｉｚａｔｉｏｎ  ｓｙｓｔｅｍ）２１４（たとえば、前面システム２１０などのデータベースシステムにクエリなどのコマンドを提出するソフトウェアアプリケーションを含む）からクエリ（たとえば、クエリ２０１）を受信し、対応するクエリ応答（たとえば、クエリ応答２０４）をデータベース利用システム２１４に提供するという意味で、「前面」である。実際に、前面システム２１０にクエリを提出するもの（たとえば、データベース利用システム２１４）は、データベースのデータの一部がクラウド内にあり得ることを認識する必要さえない。データベース利用システム２１４は、前面システム２１０に対してローカル又はリモートでもよく、図１に関して前述されたものなどのコンピューティングシステムでもよい。１つ又は複数のフロントデータベース２１１は、単一フロントデータベース２１１Ａを含むものとして示されるが、１つ又は複数のフロントデータベース２１１は、省略記号２１１Ｂによって表されるように、より多数のフロントデータベースを含み得る。また、１つ又は複数のクラウドデータベース２２１は、単一クラウドデータベース２２１Ａを含むものとして示されるが、１つ又は複数のクラウドデータベース２２１は、省略記号２２１Ｂによって表されるように、より多数のクラウドデータベースを含み得る。複数のデータベースが利用され得る１つの状況は、基本的データベースプラットフォームが最大限度のデータベースサイズを有するときである。
【００２２】
[0023]前面システム２１０はまた、分散型データベース２３０に対して処理されることになるコマンド（たとえば、コマンド２０１）を受信するクエリプラン生成プログラム２１２を含む。コマンドは、分散型データベース２３０の管理者によって発行される管理用コマンド、又は恐らくは、分散型データベース２３０のプログラマーによって発行されるプログラミングコマンドを含み得る。しかし、演算時間中、コマンドは、分散型データベース２３０のユーザーによって発行されるクエリである可能性がより高い。たとえば、図示されるように、データベース利用システム２１４は、前面システム２１０へのコマンド２０１を発行し、コマンド２０１は、クエリプラン生成プログラム２１２によって受信される。
【００２３】
[0024]管理者がコマンドを発行する場合、データベース利用システム２１４は、データベース利用アプリケーション（又は、分散型データベース２３０を利用するアプリケーション）を有し得る。プログラマーがコマンドを発行する場合、データベース利用システム２１４は、データベースソフトウェア開発アプリケーションを有し得る。ランタイムユーザーがコマンドを発行する場合、データベース利用システム２１４は、データベースクエリを提出するアプリケーションを有し得る。しかし、コマンド２０１の発行者にかかわらず、コマンド２０１自体は、分散型データベース２３０の構造と合致する任意の特別な構造を有する必要はない。そうではなくて、コマンド２０１は、基本的データベースが単一データベースであるか前面システム２１０及びリモートクラウドシステム２２０にわたって分散されるかにかかわらず、発行及び構造化され得る。
【００２４】
[0025]他方で、クエリプラン生成プログラム２１２は、フロントデータベース２１１及びリモートクラウドデータベース２２１の存在を理解している。さらに、クエリプラン生成プログラム２１２は、どこにデータが存在するか（たとえば、フロントデータベース２１１にあるかどうか、又はリモートクラウドデータベース２２１にあるかどうか）を表すロケーションデータ２１３へのアクセスを有する。結果として、クエリプラン生成プログラム２１２は、データが分散型データベース２３０全体でどのように分散されるかの理解を有する。クエリプラン生成プログラム２１２は、ロケーションデータ２１３を使用し、クエリ（図２のクエリ２０１など）の受信に応答してクエリプランを策定及び発行する。
【００２５】
[0026]クエリプラン生成プログラム２１２が、クエリ２０１に応答するために使用されることになるすべてのデータがフロントデータベース２１１のみにあると判定した場合、次いで、クエリプランは、フロントデータベース２１１に単純に提出される。しかし、クエリプラン生成プログラム２１２が、クエリ２０１に応答するために使用されることになるデータはフロントデータベース２１１及びリモートクラウドデータベース２２１の間で分散されると判定した場合、次いで、クエリプラン生成プログラム２１２は、クエリプランの部分２０２Ａを処理するためにフロントデータベース２１１に送信し、クエリプランの別の部分２０２Ｂを処理するためにリモートクラウドデータベース２２１に送信する。以下、クエリプランの部分２０２Ａ及び２０２Ｂは、集合的に「クエリプラン２０２」と称され得る。
【００２６】
[0027]しかし、クエリプラン生成プログラム２１２が、クエリに応答するために有用なデータはリモートクラウドデータベース２２０内にあるとロケーションデータ２１３が示すことに気付いたときでも、クエリプラン生成プログラム２１２が、それでもなお、リモートクラウドデータベース２２１にクエリプラン２０２の部分２０２Ｂを発行しないことを選ぶ時が存在し得る。一例として、恐らくは、現在、前面システム２１０とリモートシステム２２０との間の確立された通信接続は存在しない。別法として、恐らくは、前面システム２１０上のデータは、クエリに少なくとも部分的回答を与えるのに十分である。
【００２７】
[0028]いずれの場合にも、クエリプラン２０２の部分２０２Ｂが発送される場合、部分２０２Ｂは、次いで、リモートクラウドシステム２２０に送信される。クエリプラン２０２の部分２０２Ｂは、次いで、リモートクラウドシステム２３０内のクエリプランプロセッサ２２２によって受信される。クエリプランプロセッサ２２２は、適切なクエリをリモートクラウドデータベース２２１に提出し（矢印２３１Ａによって表されるように）、結果を集める（矢印２３１Ｂによって表されるように）。しかし、クエリの結果を単純に集めることをはるかに超えて、クエリプランプロセッサ２２２は、リモートデータベースからのデータの計算を実際に実行してクエリ結果を取得する能力を有する。したがって、その計算へのその入力データは、ここで前面システム２１０にダウンロードされる必要はない。そうではなくて、計算は、リモートクラウドシステム２２０で実行される。クエリプラン２０２の部分２０２Ｂは、実行されることになる計算を指定する。クエリプランプロセッサ２２２の計算の結果が、前面システム２１０にダウンロードされる（そのような計算への潜在的にはるかに大きい入力とは対照的に）ので、リモートクラウドシステム２２０及び前面システム２１０から送信されるデータの量は、大幅に低減される。
【００２８】
[0029]クエリプラン生成プログラム２１２は、フロントデータベース２１１（矢印２０３Ａによって表されるように）並びにクエリプランプロセッサ２２２を介するリモートクラウドデータベース２２１（矢印２０３Ｂによって表されるように）の両方から結果を受信し、それらの結果を集計して（たとえば、マージ又は和集合（ｕｎｉｏｎ）を介して）、最終的クエリ結果を返す（矢印２０４によって表されるように）。
【００２９】
[0030]いくつかの実施形態では、クエリは、データベースの層状の階層（ｔｉｅｒｅｄ  ｈｉｅｒａｒｃｈｙ）について階層的に処理され得る。たとえば、リモートデータベース２２１が複数のデータベースを含んだと仮定する。その場合、クエリプランプロセッサ２２２は、クエリプラン生成プログラム２１２が元のクエリ２０１を処理したのと同じだけクエリプラン２０２の部分２０２Ｂを処理することができる。具体的には、クエリプランプロセッサ２２２は、データがリモートクラウドデータベース２２１にわたってどのように分散されるかを説明するロケーションデータ２２３に基づいて、クエリプランを生成することができる。この階層的構造は、潜在的に多数の層について再帰的に継続し得る。同様に、フロントデータベース２１１が、複数のフロントデータベースを含む場合、同様のクエリプランプロセッサ（図示せず）が、ロケーションデータ（図示せず）を使用して、データがフロントデータベース２１１のうちのどれにあるかを判定し、各フロントデータベースに対する適切なクエリプランを策定することができる。
【００３０】
[0031]しかし、本明細書に記載される原理によれば、分散型データベース２３０にわたるデータの分散は、時間とともに変化する。具体的には、データ移動エージェント２４０（本明細書では「データ移動マネージャー」又は「データ分散マネージャー」とも称される）は、ポリシー２５１の評価に応答して、リモートクラウドデータベース２２１の部分をフロントデータベース２１１に転送する（矢印２４１によって表されるように）。データ移動エージェント２４０はまた、ポリシー２５２の評価に応答して、フロントデータベース２１１の部分をリモートクラウドデータベース２２１に転送する（矢印２４２によって表されるように）。フロントデータベース２１１がローカルデータベースである場合、これは、フロントデータベース２１１の部分の「リモート処理（ｒｅｍｏｔｉｎｇ）」と称され得る。データ移動エージェント２４０はまた、転送が生じる（矢印２４３によって表されるように）ときには必ずロケーションデータ２１３を更新する。データ移動エージェント２４０は、前面システム２１０上にあってもよく、又はリモートクラウドシステム２２０内にあってもよく、又はその間で分散されてもよい。しかし、必須ではないが、セキュリティ目的で、前面システム２１０上にデータ移動エージェント２４０を位置付ける傾向（ｉｎｃｌｉｎａｔｉｏｎ  ｔｏ  ｌｏｃａｔｅ）があってもよい。一実施形態では、データ移動エージェント２４０は、クエリプラン生成プログラム２１２の部分として実装され得る。
【００３１】
[0032]図３は、フロントデータベース及びリモートデータベースにわたって分散されたデータベースを維持するための方法３００の流れ図である。方法３００は、たとえば、分散型データベース２３０を管理するために、図２のデータ移動エージェント２４０によって、実行され得る。結果として、図３の方法３００は、ここで、図２の環境２００を頻繁に参照して説明されることになる。
【００３２】
[0033]方法３００は、データ分散ポリシーに従ってフロントデータベースを評価して、１つ又は複数のクラウドデータベースに移動されることになる１つ又は複数のフロントデータベースセグメントを決定するステップ（動作３１１）を含む。たとえば、図２では、データ移動エージェント２４０は、ポリシー２５２を評価して、リモートクラウドデータベース２２１に移動されることになるフロントデータベース２１１の１つ又は複数のセグメントを決定する。たとえば、移動されるセグメントは、フロントデータベースの１つ又は複数の行、フロントデータベースの１つ又は複数の列、あるいは、フロントデータベースの１つ又は複数のセルを含み得る。移動されることになるフロントデータベースセグメントを識別したとき（動作３１１）、識別されたフロントデータベースセグメントは、次いで、リモートクラウドデータベース２２１に移動させられる（動作３１２）。たとえば、データ移動エージェント２４０は、識別されたフロントデータベースセグメントをフロントデータベース２１１からリモートクラウドデータベース２２１に移動させることができる。
【００３３】
[0034]一実施形態では、セキュリティは、フロントデータベースセグメントのリモートクラウドデータベースへの移動に先立ってフロントデータベースセグメントの少なくとも一部の内容を暗号化することによって、達成され得る。しかし、少なくとも一部の計算がクラウドにおいてリモートで実行されること（たとえば、クエリプランプロセッサ２２２によって）を可能にするために、いくつかのフィールドは、プレーンテキストのままであり得る。それにより、フロントシステムは、暗号化キーを制御し続け（たとえば、クエリプラン生成プログラム２１２において）、安全に暗号化された内容をリモートクラウドデータベースに提供することができる。
【００３４】
[0035]たとえば、ある特定のテーブルが雇用者のリストを有すると仮定する。名、給料、社会保障番号、肩書、雇用された日付などの各々について列が存在する。フロントデータベース２１１内にあるセグメントでは、すべてのデータは、プレーンテキストでもよい。しかし、リモートクラウドデータベース２２１内にあるセグメントでは、これらの列のうちのいくつかは、暗号化され得（名及び社会保障番号など）、一方で、他の列（たとえば、給料、肩書、雇用された日付）はプレーンテキストであること可能にする。結果として、＄２００，０００より多い給料を有するすべての雇用者の社会保障番号を求めるクエリがあった場合、そのクエリは、クエリプランプロセッサ２２２によってリモートで処理することができる（たとえば、プレーンテキストでの入力として給料情報を使用して）。しかし、社会保障番号を直接に返すのではなくて、クエリプランプロセッサ２２２は、社会保障番号の暗号化されたバージョンを返すことになる。前面システム２１０は、復号キーを有し、それにより、前面システムは、機密の社会保障番号情報を取得することができる。
【００３５】
[0036]図３に戻ると、方法３００はまた、データ分散ポリシーに従ってリモートクラウドデータベースを評価して、１つ又は複数のフロントデータベースに移動されることになる１つ又は複数のリモートクラウドデータベースセグメントを決定するステップ（動作３２１）を含む。たとえば、図２では、データ移動エージェント２４０が、ポリシー２５１を評価して、フロントデータベース２１１に移動されることになるリモートクラウドデータベース２１１の１つ又は複数のセグメントを決定する。たとえば、移動されるセグメントは、リモートクラウドデータベースの１つ又は複数の行、リモートクラウドデータベースの１つ又は複数の列、あるいは、リモートクラウドデータベースの１つ又は複数のセルを含み得る。移動されることになるリモートクラウドデータベースセグメントを識別したとき（動作３２１）、識別されたリモートクラウドデータベースセグメントは、次いで、フロントデータベースに移動させられる（動作３２２）。たとえば、データ移動エージェント２４０は、識別されたリモートクラウドデータベースセグメントをリモートクラウドデータベース２２１から前面データベース２１１に移動させることができる。データベースセグメントをリモートクラウドデータベース２２１からフロントデータベース２１１に移動するとき、任意の暗号化された内容が、フロントデータベース２１１で表記するために復号され得る。
【００３６】
[0037]フロントデータベース２１１への又はそれからのデータベースセグメントの移動があるとき（たとえば、動作３１１又は動作３２１）、クエリプラン生成プログラムに使用可能なロケーションデータは、更新されて、データベースセグメントの移動の完了を反映する（動作３３１）。たとえば、図２を参照すると、データ移動エージェント２４０が、データベースセグメントをフロントデータベース２１１からリモートクラウドデータベース２２１に（矢印２４２によって表されるように）、又はリモートクラウドデータベース２２１からフロントデータベース２１１に（矢印２４１によって表されるように）移動するとき、ロケーションデータ２１３は、更新される（矢印２４３によって表されるように）。たとえば、移動（動作３１１又は動作３２１）及びロケーション更新（動作３３１）は、自動的に生じ得る。
【００３７】
[0038]矢印２４１及び２４２によって表されるデータの移動は、フロントデータベース２１１のサイズと比べて、そして特にリモートデータベース２２０と比べて、低容量であり得る。したがって、それにより、矢印２４１及び２４２は、適切な分散（ポリシー２５１及び２５２によって定義される）が所与の時間に及び時間とともに達成されることを確保するための、行き来する情報の細流（ｔｒｉｃｋｌｅ）を表し得る。
【００３８】
[0039]前述のように、データをフロントデータベース２１１とリモートデータベース２２１との間で移動するかどうかの決定は、データ分散ポリシーに従って行われる。フロントデータベースセグメントのリモートクラウドデータベース２２１への移動を統制するデータ分散ポリシー２５２は、リモートデータベースセグメントのフロントデータベース２１１への移動を統制するデータ分散ポリシー２５１と同じである必要はない。たとえば、一例では、リモートクラウドデータベースセグメントをフロントデータベース２１１に移動するためのデータ分散ポリシー２５１は、オンデマンドポリシーでもよく、そこでは、リモートクラウドデータベースセグメントは、クエリがそれらを要求するときに移動される。別法として又は追加で、フロントデータベースセグメントをリモートクラウドデータベース２２１に移動するためのデータ分散ポリシー２５２は、そのフロントデータベースセグメントが近い将来にクエリに応答するために使用される可能性は低いという判断に従い得る。
【００３９】
[0040]しかし、データ分散ポリシー２５１及び２５２のいずれか又は両方は、オンデマンドポリシーに従うことができ、そこにおいて、データベースセグメントは、異なるデータベースにおいて必要に応じて移動される。たとえば、コマンドシステム１１４が、特定のリモートデータベースセグメントへのアクセスを要求するコマンドを発行するとき、データ移動エージェント２４０は、そのリモートデータベースセグメントをフロントデータベース２１１に移動することができる。
【００４０】
[0041]別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、ユーザーによって指定されたポリシーに従い得る。たとえば、データベース利用システム２１４のユーザーは、データ分散ポリシーを定義する述語を表すコマンドを発行することができる。たとえば、販売日の列を含む販売情報の分散型データベースを考える。ユーザーは、１年を越える販売データを有する販売記録がクラウドデータベースに移動されることを命令する述語を指定することができる。
【００４１】
[0042]別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、データの使用の履歴の及び／又は予想される頻度に従い得る。時に、使用の頻度（履歴の又は予想される）は、データの「温度」と称される。本明細書に記載される原理は、データの温度の判定の特定の方法に限定されない。一実施形態では、より熱い（又は、より頻繁にアクセスされる）データベースセグメントが、フロントデータベースに移動される。
【００４２】
[0043]別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、主題領域に従い得る。たとえば、ある条件及び時間において、別の領域よりも、ある領域に関連するデータベースセグメントを有することがより有益であることがある。
【００４３】
[0044]別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、データ作成の時間に従い得る。たとえば、１つの例示的データベースは、事象データを単純に集めることができ、そこで、各テーブルは、所与の月に生じた事象のリストを含む。より離れた月からの事象を含むテーブルは、フロントデータベースからリモートデータベースに取り出され得る。
【００４４】
[0045]別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、時間的バージョニング（ｔｅｍｐｏｒａｌ  ｖｅｒｓｉｏｎｉｎｇ）に基づくことができ（たとえば、データベーステーブルの時間的設定に基づくことができ）、その中で、１つの、いくつかの、又はすべての旧バージョンのデータは、リモートクラウドデータベース内に置かれることになる。
【００４５】
[0046]別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、データを使用するワークフローのワークフロー状況に基づき得る。別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、リモートクラウドデータベースに対するフロントデータベース内にデータを保持するための所有権の総費用に基づき得る。
【００４６】
[0047]別法として又は追加で、データ分散ポリシー２５１及び２５２のいずれか又は両方は、クラウドデータベースにリモートされることから除外されたデータのリストに基づき得る。そのような除外は、セキュリティ又は法的要求事項に基づき得る。さらに、ポリシーは、そのような情報が、暗号化された場合にのみクラウドデータベースにリモートされ得ることを指示することができる。結果として、ポリシー２５１及び２５２は、どのデータベースセグメントを移動するかを識別するだけではなく、どのフィールドがクラウドデータベースへの移動に先立って暗号化されるべきかもまた識別するために使用され得る。
【００４７】
[0048]図４は、その中で分散型データベースがバックアップされ得る例示的バックアップ環境４００を示す。バックアップ環境４００は、図２の分散型データベース２３０をバックアップするために使用され得る。バックアップ環境によって表されるように、バックアップは、フロントデータベース４０１（たとえば、図２のフロントデータベース２１１）がバックアップの時に存在する又は存在したとき、それらのフロントデータベースを含む。結果として、データベース２３０のバックアップを実行するために、少なくともフロントデータベースがバックアップされる。
【００４８】
[0049]しかし、リモートデータベースを表すために、リモートデータベースの全体をバックアップするのではなくて、リモートデータベース２２１の復元情報４１２が記憶される。そのような復元情報４１２は、バックアップ時間の時点でのリモートクラウドデータベース（たとえば、リモートクラウドデータベース２２１）の状態を復元するのに十分である。たとえば、そのような復元情報４１２は、リモートクラウドデータベース２２１を指し示し、恐らくは、バックアップ時間の時点でのリモートデータベースの状態が確認されるように十分な情報を提供する。いくつかのクラウド実施形態では、リモートクラウドシステム２２０自体は、リモートクラウドデータベース２２１のバックアップ及びレプリカを保持する。これは、現在のクラウドによって提供される従来のサービスである。リモートクラウドデータベース２２１内の各行は、行の状態が最後に変わったのはいつかを表すそれらと関連付けられたタイムスタンプを有することができる。復元が、たとえば、２０１４年１０月１日午後１時に起ころうとした場合、そのとき、復元は、２０１４年１０月１日午後１時より前のタイムスタンプを有するすべての行を削除することになる。その場合、復元情報４１２は、復元されることになるウォールクロック時間を含み得る。タイムスタンプは、文字通りの時刻（又は「ウォールクロック時間」）でもよいが、行バージョン情報（時間的データベース又はマルチバージョンデータベースシステムにおいて使用されることになるものなど）を表す、より一般的アプリケーション時間（たとえば、カウンター、識別された、数）でもよい。結果として、復元中、リモートクラウドデータベース２２１はまた、適切なバックアップ時間に復元される。
【００４９】
[0050]したがって、フロントデータベースとリモートデータベースとの間のデータベースセグメントの分散がポリシーに応答して時間とともに変化し得る、分散型データベース技術が説明された。さらに、データベースの分散型の特質は、クエリの発行者及びクエリ結果の消費者に明らかである必要はない。さらに、クエリの部分的計算は、クラウドシステムに移動され得る。それにより、ストレージ及び処理資源は、クラウドに移すことができ、それによって、クラウドによって提供されるストレージ及び処理資源における効率性を活用することができる。
【００５０】
[0051]請求項サポート節
[0052]本明細書で説明されるのは、フロントデータベース及び１つ又は複数のクラウドデータベースにわたって分散されたデータベースを維持するための方法である。本方法は、データ分散ポリシーに従ってフロントデータベースを評価して、１つ又は複数のクラウドデータベースに移動されることになる１つ又は複数のフロントデータベースセグメントを決定する動作を含む。さらに、フロントデータベースを評価する動作に応答して、１つ又は複数のフロントデータベースセグメントが、１つ又は複数のクラウドデータベースのうちの少なくとも１つに移動させられる。１つ又は複数のクラウドデータベース内のデータベースのリモート部分が、データ分散ポリシーに従って評価されて、１つ又は複数のクラウドデータベースのうちの少なくとも１つからフロントデータベースに移動されることになる１つ又は複数のリモートデータベースセグメントを決定する。さらに、データベースのリモート部分を評価する動作に応答して、１つ又は複数のリモートデータベースセグメントが、フロントデータベースに移動させられる。
【００５１】
[0053]本方法はさらに、データベースをバックアップする動作をさらに含むことができ、データベースをバックアップする動作は、以下を含む：フロントデータベースをバックアップする動作と、フロントデータベースをバックアップする動作に対応するバックアップ時間の時点での１つ又は複数のクラウドデータベースのうちの少なくとも１つのクラウドデータベースの状態を取得するのに十分なリモート復元情報をバックアップする動作。
【００５２】
[0054]１つ又は複数のクラウドデータベースは、単一クラウドデータベース、又は複数のクラウドデータベースを備え得る。さらに、１つ又は複数のフロントデータベースセグメントは、各々、フロントデータベースの１つ又は複数の行、フロントデータベースの１つ又は複数の列、あるいは組合せを備え得る。
【００５３】
[0055]データ分散ポリシーは、ユーザーによって指定する、データ使用の頻度に基づく、時間的バージョニングに基づく、主題領域に基づく、時間作成時間（ｔｉｍｅ  ｐｏｐｕｌａｔｉｏｎ  ｔｉｍｅ）に基づく、ワークフロー状況に基づく、所有権の総費用に基づく、及び／又はオンデマンドポリシーを含むことができる。
【００５４】
[0056]本明細書ではまた、コンピューティングシステムの１つ又は複数のプロセッサによって実行されるときに、フロントデータベース及び１つ又は複数のクラウドデータベースにわたって分散されたデータベースを維持するための方法をコンピューティングシステムに実行させるように構造化されたコンピュータ実行可能命令をそこに有する１つ又は複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品が説明される。ここで、本方法は、データ分散ポリシーに従ってデータベースセグメントを評価して、１つ又は複数のクラウドデータベースに又はそれから、フロントデータベースから又はそれに転送されることになる１つ又は複数のデータベースセグメントを識別する動作と、データベースセグメントを評価する動作に応答して、識別された１つ又は複数のデータベースセグメントをそれに対応して移動させる動作とを備え得る。対応して移動されることになる１つ又は複数のデータベースセグメントを識別する動作は、以下の自動的実行を備え得る：識別された１つ又は複数のデータベースセグメントをそれに対応して移動させる動作と、クエリプラン生成プログラムに使用可能なロケーションデータを更新して、識別されたデータベースセグメントの対応する移動の動作の完了を反映する動作。
【００５５】
[0057]本明細書ではまた、以下を備えるコンピューティングシステムが説明される：１つ又は複数のプロセッサと、１つ又は複数のプロセッサによって実行されるときにコンピューティングシステムに以下をインスタンス化及び／又は動作させるように構造化されたコンピュータ実行可能命令をそこに有するより多数のコンピュータ可読記憶媒体のうちの１つ：データ分散ポリシーに従ってデータベースセグメントを評価して、１つ又は複数のクラウドデータベースに又はそれから、フロントデータベースから又はそれに転送されることになる１つ又は複数のデータベースセグメントを識別するように構成されたデータ移動マネージャーと、フロントデータベースを評価する動作に応答して、識別された１つ又は複数のデータベースセグメントをそれに対応して移動させる動作。
【００５６】
[0058]１つ又は複数のコンピュータ可読記憶媒体はさらに、１つ又は複数のプロセッサによって実行されるときにコンピューティングシステムに以下をインスタンス化及び／又は動作させるように構造化されたコンピュータ実行可能命令をそこに有し得る：フロントデータベース及び１つ又は複数のクラウドデータベースの両方を備えるデータベースに向けられたクエリを受信する、そしてロケーションデータを使用してフロントデータベース及び１つ又は複数のクラウドデータベースに対して実行される対応するクエリプランを策定するように構成された、クエリプラン生成プログラム。
【００５７】
[0059]データ移動マネージャーは、自動的に以下を実行するように構成され得る：識別された１つ又は複数のデータベースセグメントをそれに対応して移動させる動作と、クエリプラン生成プログラムに使用可能なロケーションデータを更新して、識別された１つ又は複数のデータベースセグメントをそれに対応して移動させる動作の完了を反映する動作。
【００５８】
[0060]クエリプラン生成プログラムは、ロケーションデータが、応答情報は１つ又は複数のクラウドデータベースのうちの少なくとも１つについてであることを指示する、少なくともいくつかの状況の下で、対応するクエリを１つ又は複数のクラウドデータベースのうちの少なくとも１つに対して実行させることを控えるように構成され得る。
【００５９】
[0061]本発明は、その趣旨又は本質的特質を逸脱することなしに他の特定の形で実施され得る。記載された実施形態は、あらゆる点に単に例示であり、限定ではないものとして考えられるものとする。したがって、本発明の範囲は、前述の説明によってではなくて、添付の特許請求の範囲によって示される。本特許請求の範囲と同等の意味及び範囲内にあるすべての変更は、それらの範囲内に包含されるものとする。
【図１】
2017533518.tif 000003
【図２】
2017533518.tif 000004
【図３】
2017533518.tif 000005
【図４】
2017533518.tif 000006
【国際調査報告】
2017533518.tif 000007
2017533518.tif 000008
2017533518.tif 000009