(57)【特許請求の範囲】
【請求項１】
データベースエレメント（５１０、５１２、５１４）のコレクション及びデータ層アプリケーションコンポーネントのポリシー（１０４）を各々が含むデータ層アプリケーションコンポーネントのセット（５０２）、
前記データ層アプリケーションコンポーネントのセット（５０２）をホストするデータベースランタイムリソースのセット（５１６）、及び
前記データ層アプリケーションコンポーネントのセット（５０２）をホストするために前記データベースランタイムリソースのセットによって使用されるコンピューティングリソース（５２４）、
を識別する、ファブリック（５０１、１１０６）を含むコンピュータ読み取り可能なデータストレージデバイスと、及び
１又は複数のファブリックポリシのうち特定のファブリックポリシを受信する管理ポイント（６０２）と、を含み、
前記ファブリックポリシは、少なくとも１つのデータベースランタイムリソースの実行に関連しており、
前記ファブリックポリシは、前記データ層アプリケーションコンポーネントのセット、前記データベースランタイムリソースのセット、及びコンピューティングリソースのいずれかに関連する最適値、又は限界値を規定しており、
前記ファブリックは、前記データ層アプリケーションコンポーネントのセット、前記データベースランタイムリソースのセット、及び前記コンピューティングリソースを関連づけており、前記ファブリックがこれらの関連づけの変更を識別すると、前記特定のファブリックポリシに関連する１または複数の動作が、前記ファブリック（５０１、１１０６）によって識別された前記データ層アプリケーションコンポーネントのセット、前記データベースランタイムリソースのセット、前記コンピューティングリソースに関連するエンティティに適用されることを特徴とするシステム。
【請求項２】
前記１または複数の動作が、
前記コンピューティングリソースのファイルシステムが増大するかまたはリソース限界に達すると予測された場合に、前記ファイルシステムの１または複数のファイルを他のコンピューティングリソースのオペレーティングシステムボリュームの第２のファイルシステムに移動させる動作と、
前記コンピューティングリソースのプロセッサが高負荷を受けた場合に、ソフトウェアアプリケーションを低プロセッサ負荷の他のコンピューティングリソースに移動する動作
を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記コンピューティングリソースが、１もしくは複数のコンピュータリソース、１もしくは複数のコンピュータデータストレージリソース、または１もしくは複数の仮想マシンリソースを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記データ層アプリケーションコンポーネントの各々が、ファブリックのデータ層アプリケーションコンポーネント層に関連し、前記コンピューティングリソースの各々が、前記ファブリックのハードウェアリソース層に関連し、前記データベースランタイムリソースの各々が、前記ファブリックのランタイム層に関連していることを特徴とする請求項１に記載のシステム。
【請求項５】
前記データ層アプリケーションコンポーネントの各々が、前記ファブリックによって前記データベースランタイムリソースの１つにマッピングされ、データベースランタイムリソースの各々が、前記ファブリックによって前記コンピューティングリソースにマッピングされることを特徴とする請求項２に記載のシステム。
【請求項６】
前記コンピューティングリソースは複数のコンピュータを含み、前記データベースランタイムリソースの前記１つは、前記ファブリックポリシに従って前記複数のコンピュータのうち第１のコンピュータから前記複数のコンピュータのうち第２のコンピュータにマッピングが変更されることを特徴とする請求項５に記載のシステム。
【請求項７】
前記コンピューティングリソースは複数のオペレーティングシステムボリュームを含み、前記データベースランタイムリソースの前記１つは、前記ファブリックポリシに従って前記複数のオペレーティングシステムボリュームのうち第１のオペレーティングシステムボリュームから前記複数のオペレーティングシステムボリュームのうち第２のオペレーティングシステムボリュームにマッピングが変更されることを特徴とする請求項５に記載のシステム。
【請求項８】
前記特定のファブリックポリシの前記１または複数の動作は、１または複数のリソースを特定のアプリケーションに割り当てる動作、並びにソフトウェアアプリケーション及び前記ソフトウェアアプリケーションに関連付けられているファイルを前記コンピューティングリソースの第１のコンピュータシステムから第２のコンピュータシステムに移動させる動作のうちの１または複数を含むことを特徴とする請求項１に記載のシステム。
【請求項９】
１または複数のファブリックポリシを適用する、コンピュータによって実行される方法であって、該ファブリックポリシは少なくとも１つのデータベースランタイムリソースの実行に関連しており、該方法は
サーバファブリック（５０１、１１０６）の管理ポイント（６０２）において前記１または複数のファブリックポリシのうち特定のファブリックポリシを受信するステップ（７０２）であって、該サーバファブリック（５０１、１１０６）はコンピュータ読み取り可能データストレージデバイス（９０２，９０４、９０６）に記憶されており、該サーバファブリックは、データ層アプリケーションコンポーネント、データベースランタイムリソース、及びコンピューティングリソースを関連づけている、ステップと、
各々がデータベースエレメントのコレクションおよびデータ層アプリケーションコンポーネントポリシ（１０４）を含む前記データ層アプリケーションコンポーネント（５０２）、
前記データ層アプリケーションコンポーネント（５０２）をホストする前記データベースランタイムリソース（５１６）、及び
前記データ層アプリケーションコンポーネント（５０２）をホストするために前記データベースランタイムリソース（５１６）によって使用される前記コンピューティングリソース（５２４）
を識別するステップと、
前記サーバファブリック（５０１、１１０６）のエンティティを監視するステップ（７０４）と、および
前記サーバファブリックが前記データ層アプリケーションコンポーネント、前記データベースランタイムリソース、及び前記コンピューティングリソースの関連づけの変更を識別すると、前記サーバファブリック（５０１、１１０６）によって識別された前記データ層アプリケーションコンポーネント、前記データベースランタイムリソース、前記コンピューティングリソースに関連するエンティティに前記特定のファブリックポリシに関連する１または複数の動作を適用するステップと、
を含み、前記ファブリックポリシはデータ層アプリケーションコンポーネント、前記データベースランタイムリソース、及びコンピューティングリソースのいずれかに関連する最適値、又は限界値を規定することを特徴とする方法。
【請求項１０】
前記１または複数の動作を適用するステップが、前記特定のファブリックポリシを取り出すステップと、１または複数の対応する動作を生成して前記特定のファブリックポリシを適用するステップと、を含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記特定のファブリックポリシに従って、前記コンピュータは前記サーバファブリックのリソースの現在の利用を監視して、該リソースの利用がリソースの能力の一定値を超えているかを判定することを特徴とする請求項９に記載の方法。
【請求項１２】
前記１または複数の動作はリソース使用統計を含むことを特徴とする請求項９に記載の方法。
【請求項１３】
前記特定のファブリックポリシは活動または動作を誘導するように定義された権限のある方針であり、前記特定のファブリックポリシは、前記サーバファブリックに関連するソフトウェアのバージョンに基づいて、前記エンティティのセットの前記ファブリックへの組み込みを制限することを特徴とする請求項９に記載の方法。
【請求項１４】
前記エンティティのセットが１または複数のデータベースランタイムインスタンスを含み、前記特定のファブリックポリシは、前記１または複数のデータベースランタイムインスタンスに適用される条件に基づいて、前記１または複数のデータベースランタイムインスタンスの前記サーバファブリックへの組み込みを制限することを特徴とする請求項１３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
アプリケーションのオーサリング（authoring）、インストール及び実行時を含むアプリケーションのライフサイクルの間、通常は、多くの異なったオブジェクトが形成されるかまたはアプリケーションと関連付けられる。例えば、プログラミングコード、実行可能コード、ソフトウェアリソース、及びハードウェアリソースは、アプリケーションと関連付けられてもよく、これらのアイテム各々は、様々なファイル名及びファイルタイプを割り当てられる。データベースアプリケーションは、プログラミングコード、実行可能コード及びリソースと関連付けられるのに加え、ポリシ、表、保存された処理、及びデータベースポリシ等の追加のアイテムと関連付けられてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
追跡及び維持のために、データベース管理者にとって、データベースのライフサイクルに亘ってデータベースに関連付けられている全てのアイテムを効率的に管理することは、しばしば困難でありかつ多大な時間を必要とするものである。例えば、データベース管理者が、データベースアプリケーションによって使用されているハードウェアもしくは他のアイテムの変更を行いたい、またはデータベースアプリケーションがインストールされているデータベースサーバインスタンスを追加もしくは変更したいと望む場合、所望の変更を行うプロセスは、多大な時間を必要としかつコストがかかる。オブジェクトは、コード化されてもよいし、当該オブジェクトが存在して動作するハードウェアリソースに直接リンクされてもよく、アイテムとハードウェアリソースとの間の関連付けの変更は、著しい再プログラミングを伴う。アイテムの変更に関する試みは、アプリケーションオブジェクトが複数の場所に保存されているかまたは単一のデータベースが複数のアプリケーションに使用されるオブジェクトを保存している場合に増大する。
【課題を解決するための手段】
【０００３】
データベースのライフサイクル段階において高い管理生産性を達成するために、データベースアプリケーションによって生成されるかまたは使用されるアイテムに関連付けられているグルーピング抽象概念（grouping abstraction）を有することが有効である。ソフトウェアグルーピング抽象概念無しに、データベースアプリケーションを識別、概念化、移動もしくは再生成、またはその他管理をすることは、非常に困難である。本明細書に開示されている実施形態は、データベースアプリケーションが全体として、例えば、移動されるかまたは再生成されることを可能にするデータベースオブジェクトのメタデータに関連付けられているコンテナ内のデータベースアプリケーションのエレメント（element）に関する。コンテナは、ハードウェア又は他のランタイムリソースを変更可能であるかまたはデータベースアプリケーションのエレメントを選択して当該エレメントを記録すること無しに異なったリソースを使用することが可能なデータベースエレメントと、ランタイムリソース（runtime resource）識別子を関連付ける。
【０００４】
さらに、複数のデータベースアプリケーションコンテナは、アプリケーションコンテナが全体として、移動させられるか、再生成されるかまたは他の管理がされることを可能とする単一のグルーピングまたはファブリック（fabric）と関連付けられてもよい。このファブリックは、データベースアプリケーションのエレメントによって使用されるリソース識別子を参照し、複数のデータベースアプリケーションの管理を可能とする。
【０００５】
特定の実施形態によれば、１のシステムは、データ層アプリケーションコンポーネント（data-tier application component）（ＤＡＣ）のセットを識別するファブリックを含む。データ層アプリケーションコンポーネントの各々は、データベースのコレクション（collection）の論理表示（logical representation）、データ層アプリケーションコンポーネントをホストするデータベースランタイムリソースのセット、及びデータ層アプリケーションコンポーネントをホストするためにデータベースランタイムリソースのセットによって使用されるコンピューティングリソース（computing resource）を含む。システムは、ファブリックポリシを受信するための管理ポイント（management point）も含む。ファブリックポリシの１または複数の動作は、当該ファブリックによって識別されている影響を受けたエンティティに自動的に適用されて、当該ファブリックポリシにファブリックエレメントを準拠させる。
【０００６】
この発明の概要は、発明を実施するための形態において以下でさらに説明されるいくつかの概念を、単純な形式で紹介するために提供されている。この発明の概要は、本発明の重要な特徴または本質的な特徴を特定するためのものではなく、本発明の範囲を限定するためのものでもない。
【図面の簡単な説明】
【０００７】
【図１】データ層アプリケーションコンポーネント（ＤＡＣ）を使用するデータベース開発ツールを示すブロック図である。
【図２】ＤＡＣ及びＤＡＣパッケージを使用してＤＡＣインスタンスをインストールする方法を示すフロー図である。
【図３】ＤＡＣの特定の実施形態を示す全体図である。
【図４】関連付けられているＤＡＣ名を有しているＤＡＣの第2の実施形態を示すブロック図である。
【図５】ＤＡＣのセットを含むサーバファブリックの特定の実施形態を示すブロック図である。
【図６】ＤＡＣのセットを含むサーバファブリックの第２の実施形態を示すブロック図である。
【図７】データベース管理動作の適用及びサーバファブリックのエンティティにおけるポリシの適用の方法を示すフロー図である。
【図８】サーバファブリックのエンティティ関係を示すフロー図である。
【図９】データベースアプリケーションを管理するシステムの実施形態のブロック図である。
【図１０】サーバファブリックエレメントの処理方法を示すフロー図である。
【図１１】ＳＱＬインスタンスを管理するシステムの第１の特定の実施形態を示すブロック図である。
【図１２】ＳＱＬインスタンスを管理するシステムの第２の特定の実施形態を示すブロック図である。
【図１３】ＳＱＬインスタンスを管理するシステムの第３の特定の実施形態を示すブロック図である。
【図１４】ＳＱＬインスタンスを管理するシステムの第４の特定の実施形態を示すブロック図である。
【図１５】ＳＱＬインスタンスを管理するシステムの第５の特定の実施形態を示すブロック図である。
【図１６】ＳＱＬインスタンスを管理するシステムの第６の特定の実施形態を示すブロック図である。
【発明を実施するための形態】
【０００８】
特定の実施形態は、データベースアプリケーションのエレメントを識別してデータベースアプリケーションの管理の一単位を提供するデータ層アプリケーションコンポーネント（ＤＡＣ）の使用を説明する。ＤＡＣによって識別されているデータベースアプリケーションは、データベースオブジェクト識別子及び／またはデータベースオブジェクトのメタデータに関連付けられる。データベースオブジェクト識別子及び／またはデータベースオブジェクトのメタデータを介して、データベースアプリケーションが操作される。さらに、データベースランタイム識別子が、データベースアプリケーションのエレメントに使用されている１または複数のランタイムリソースに関連付けられている。データベースランタイムリソースの実行に関連している１または複数のポリシもＤＡＣによって識別される。結果として、ＤＡＣは、データベースオブジェクト識別子によって参照されて、データベースアプリケーションが変更、移動または複製され得る。同様に、ランタイムリソースが変更されてもよいし、またはデータベースアプリケーションが、各々のエレメントに関連付けられているデータベースランタイム識別子を変更することによって複製されてもよい。結果として、データベース管理者は、データベースアプリケーションのインスタンスの組織特性の管理に時間を充てて留意することなく、データベースアプリケーションのコンテンツの管理及びポリシによって特定される様な目的に集中することが可能である。
【０００９】
特定の実施形態において、データ層アプリケーションコンポーネントのセットを識別するファブリックを含むシステムが開示される。データ層アプリケーションコンポーネントは、データベースエレメントのコレクションの論理表示を含む。ファブリックは、データ層アプリケーションコンポーネントのセットをホストするデータベースランタイムリソースのセットも識別する。ファブリックは、データ層アプリケーションコンポーネントのセットをホストするデータベースランタイムリソースのセットによって使用されるコンピューティングリソースを識別する。このシステムは、ファブリックポリシを受信するために管理ポイントも含む。ファブリックポリシの１または複数の動作は、当該ファブリックによって識別されている影響を受けたエンティティに自動的に適用されて、当該ファブリックポリシにファブリックエレメントを準拠させる。
【００１０】
他の特定の実施形態において、ファブリックポリシを自動的に適用する方法が開示される。この方法は、サーバファブリックの管理ポイントでのファブリックポリシの受信を含む。サーバファブリックは、１または複数のデータ層アプリケーションコンポーネントを識別する。データ層アプリケーションコンポーネントの各々は、データベースエレメントのコレクションの論理表示を含む。サーバファブリックは、データ層アプリケーションコンポーネントのセットをホストするデータベースランタイムリソースを識別する。このサーバファブリックは、データ層アプリケーションコンポーネントをホストするデータベースランタイムリソースによって使用されるコンピューティングリソースを識別する。この方法は、サーバファブリックのエンティティを監視すること、及びサーバファブリックによって識別されて影響を受けたエンティティにおいてファブリックポリシの１または複数のアクションを自動的に適用して、サーバファブリックに関連付けられているエレメントをファブリックポリシに準拠させることを含む。例えば、ファブリックポリシの１または複数の動作を自動的に適用することには、ファブリックポリシを検索すること、目標のセットに亘ってファブリックポリシを評価すること、１または複数の対応する動作を生成してファブリックポリシを実施すること、及び目標のセットに対して対応する動作を実行することを含む。目標物のセットは、コンピューティングシステムの１または複数の物理コンピューティングリソースまたはコンピューティングシステムの全てのコンピューティングリソースを含んでもよい。
【００１１】
開示される本発明は、データベースアプリケーションを構成するアイテムに関連しているソフトウェアグルーピング抽象概念を含む。ソフトウェアグルーピング抽象概念は、データベースアプリケーションの識別、概念化、及び管理を可能にする。本開示は、データベースアプリケーションに関連付けられているデータベースオブジェクト、ポリシ、及びランタイムリソースを効率的にモデリングする、データ層アプリケーションコンポーネント（ＤＡＣ）と称される抽象概念を含む。
【００１２】
ＤＡＣは、アプリケーションの全ライフサイクルに関する、バージョニング（versioning）を含む管理の一単位を形成する。例えば、ヒューマンリソース（ＨＲ）ＤＡＣは、これをサポートしているＨＲアプリケーションコードとともに開発されてもよい。ＨＲアプリケーション実行可能ファイルがアプリケーションサーバに配置されると、ＨＲ ＤＡＣは、マイクロソフトＳＱＬサーバのインスタンスに配置される。その後、ＨＲ ＤＡＣは監視されかつ管理されることが可能である。例えば、ＨＲ ＤＡＣにおいて予測される負荷が、ＨＲ ＤＡＣが維持される現在のコンピュータまたはデータベースインスタンスの能力を超えている場合、ＨＲ ＤＡＣは、新しいデータベースインスタンスに移動させられてもよい。移動は、ＤＡＣに関連付けられているデータベースオブジェクト識別子によってデータベースアプリケーションを参照して、データベースエレメントに関連付けられているデータベースランタイム識別子を新しいデータベースインスタンスの参照ランタイムリソースに変更することによって完遂される。ＤＡＣは、全体として複数のタイプのデータベースランタイム環境、並びに／または特に、マイクロソフトＳＱＬサーバインスタンス、マイクロソフトＳＱＬデータベースエンジンマイクロソフトＳＱＬサーバアナリシスサービスインスタンス、マイクロソフトＳＱＬサーバレポーティングサービスインスタンス、データベースサーバ及び／もしくは他のベンダー及び他のタイプのデータベースを含むマイクロソフトＳＱＬサーバランタイム環境に亘り得る。
【００１３】
さらに、本開示は、全体としてデータベース環境の管理に利益をもたらし、ＤＡＣの管理に更に集中することを可能とし、個人のコンピュータ、データベースインスタンス及びデータベースの管理への注意を軽減することを可能とする。本開示は、この問題を「ファブリック」（「マイクロソフトＳＱＬサーバファブリック」とも称される）の概念によって解決する。この概念は、組織のＤＡＣｓ、データベースインスタンス（例えば、マイクロソフトＳＱＬサーバ）ランタイム、及びハードウェアリソースの全てをモデリングする。ファブリックは、ＤＡＣ、ランタイム及びリソース層内のエンティティ及びコンテナの統合表示を提供し、エンティティ間の更に動的なマッピングを可能にする。ファブリックは、管理動作を宣言及び起動する中央管理ポイント、中央ポリシ管理者、並びに影響分析（impact analysis）、what-if分析または配置分析等の分析に使用されるモデル及びデータを含む中央推論ポイントも含む。これらの宣言型のモデル駆動の特徴は、組織ルールを実施する（enforce）全体的な管理動作を規定することを管理者及び開発者に可能にし、ＤＡＣによって要求される全ての特徴を有するランタイムにおいてＤＡＣが配置されることを保証し、サーバファブリック内のエンティティが最小の手作業の介入で環境の変化に対応することを可能にする。
【００１４】
ファブリック内のエンティティの状態のより深い知識によって駆動されるこれらの自己管理能力は、データ層アプリケーションコンポーネントの開発、配置及び管理を、管理者及び開発者に対して著しく容易にするために必要とされる。本開示によって、データベース管理者及び開発者が、アプリケーションのライフサイクルを通して彼らのアプリケーションを管理することにおいて更に生産的になり、彼らのシステムの中に追加のデータ及び記憶プラットフォーム技術を包含させる更なる時間を彼らに与える。
【００１５】
本開示は、データベースインスタンス（例えば、マイクロソフトＳＱＬサーバインスタンス）、データベース、コンピュータ、記憶装置及びネットワークリソースへの従来の注意の集中から、データベースアプリケーションへ注意の集中を移す。ＤＡＣは、データベースインスタンス及びデータベースの両方の上に存在する新しい更に高いレベルの抽象概念である。ＤＡＣは、従来の三階層のアプリケーションへのデータ層サポートを形成するデータベースインスタンスエンティティのセットを含む。近年のシステムにおいて、データベースアプリケーション及びシステムレベルアプリケーション情報は、しばしば複数のデータベース及びデータベースインスタンスに亘る。例えば、マイクロソフトＳＱＬサーバシステムレベルアプリケーション情報は、「マスタ」及び「ｍｓｄｂ」等のシステムデータベース内に保存されてもよい。
【００１６】
さらに具体的には、本開示は、ＤＡＣと称される、コンテナ内のデータベースアプリケーションをモデリングする。ＤＡＣは、データベースアプリケーションアーティファクト（database application artifact）、関連するポリシ及びアプリケーションに関して参照されるランタイムリソースの全てをまとめる論理表示である。ＤＡＣの各々は、管理の一単位として提供される。ポリシは、ＤＡＣに対して適用されても良く、ＤＡＣは、全体として管理される。ポリシは、要求されるかまたは好ましい結果または判断の、開発者意図または配置意図を明示するために使用されてもよい。例えば、開発者は、ＤＡＣが６４ビットランタイムにおいてのみ配置可能であるというポリシを特定することによって要求された意図を宣言することが可能である。
【００１７】
ファブリックは、ＤＡＣのセットをモデリングし、これらを下層のデータベースインスタンスランタイム（例えば、マイクロソフトＳＱＬサーバランタイム、マイクロソフトＳＱＬサーバインスタンス）及び当該ランタイムによって使用されるハードウェアリソースにマッピングする。サーバファブリックは、ＤＡＣが機能するために必要とするランタイム及びハードウェアリソースの全てのモデルを提供する。ファブリックは、他の技術を使用すると非常に複雑な動作を単純化する中央管理特性を提供する。例えば、ＤＡＣの各々は、ファブリックによって管理される１または複数の既知の名前（「エンドポイント名」）を有する。このエンドポイント名は、ＤＡＣによって使用されるハードウェアリソースまたはインスタンスから独立している。結果として、アプリケーションは、コンピュータ名及びインスタンス名の代わりにエンドポイント名を用いて接続をし、アプリケーションの変更の要求無しにインスタンス間でＤＡＣが移動されることが可能になる。
【００１８】
利用可能なＤＡＣ、ランタイム及びリソースの、ファブリック内の中央管理機能及び推測機能を用いた結合は、様々な計画を可能とする。例えば、サーバファブリック内のＤＡＣのリソース使用が監視されてもよい。他の例において、中央推論エンジンは、ＤＡＣの将来の作業負荷を、これらのホストランタイムに割り当てられるリソースに対して予測してもよい。他の例において、動作は、予測されたリソース不足に対応して行われてもよい。例えば、システムは、ランタイムに使用可能なリソースを動的に管理して、能力超過のランタイムを発見して、実行されているアプリケーションへの影響を最小化するか少なくとも低減させる態様でＤＡＣを当該ランタイムに移動してもよい。ツール及び機能のセットは、ファブリック内のライフサイクル（開発、配置及び管理）の間にＤＡＣを管理するために記述される。
【００１９】
特定の実施形態において、ＤＡＣは、データベースオブジェクトのメタデータ、データベースオブジェクトを操作可能なデータベースランタイムリソースのデータベースランタイムリソース識別子、及びデータベースランタイムリソースの実行に関連するポリシをパッケージングする管理の一単位である。図１に示しているように、異なった動作が、ライフサイクルにおけるＤＡＣの状態に基づいてＤＡＣに適用され得る。
【００２０】
例えば、図１を参照すると、ユーザ１００（例えば、開発者）は、ＤＡＣモデル１０２を生成してもよい。ＤＡＣモデル１０２は、データ層アプリケーションコンポーネント（ＤＡＣ）１０４を含む。ＤＡＣ１０４は、ＤＡＣコンテナ１０６内に含まれていてもよい。ＤＡＣ１０４は、データベースエレメントのコレクションを含む。図１に示されているように、ＤＡＣ１０４は、第１のエレメント１０８、第２のエレメント１１０、及び第３のエレメント１１２を含む。第１のエレメント１０８は、データベースオブジェクト識別子を含むデータベースオブジェクトのメタデータを含んでもよい。第２のエレメント１１０は、データベースオブジェクトを操作するために動作可能なデータベースランタイムリソースを含んでもよい。第３のエレメント１１２は、データベースランタイムリソースの実行に関連するポリシを含んでもよい。ＤＡＣモデル１０２内に表示されたデータベースアプリケーションの開発の間、ユーザ１００は、ＤＡＣモデルプトジェクト１１４として、ＤＡＣモデル１０２を生成、編集及び有効化してもよい。ＤＡＣプロジェクト１１４は、１または複数のファイル１１８を含んでもよい。その後、ＤＡＣプロジェクト１１４は、データベースアプリケーションが開発下にある間に、ソース制御システムまたはソース制御データベース１１６にチェックイン（checked into）及びチェックアウト（checked out）させられてもよい。
【００２１】
一度、ユーザ１００（例えば、開発者）がＤＡＣモデル１０２内に示されるデータベースアプリケーションの開発を完了すると、ＤＡＣモデル１０２は、ＤＡＣモデル１０２に基づいた完全なＤＡＣパッケージ１２０にコンパイルされるかまたは組み込まれる。ＤＡＣパッケージ１２０は、必要に応じて再生成されて配置されてもよいＤＡＣモデル１０２の概念化バージョンを示すＤＡＣタイプ１２２として、ファブリック１２６の中に取り込まれる。ＤＡＣタイプ１２２は、ＤＡＣモデル１０２として開発されているデータベースアプリケーションの操作的インストール（operational installation）を示す、配置されたＤＡＣインスタンス１２４を生成するために配置されてもよい。従って、ＤＡＣモデル１０２を開発する際に、開発者は、データベースアプリケーションの記録無しに複製され得るポータブルデータベースアプリケーションを生成する。開発者は、ＤＡＣインスタンス１２４の配置前に、ＤＡＣタイプ１２２を設定してもよい。さらに、ＤＡＣインスタンス１２４は、物理コンピューティングリソースの特定のセットに関してインストールされてもよい。
【００２２】
図２を参照すると、データ層アプリケーションコンポーネントの配置の特定の方法のフロー図が示されている。この方法は、２０２において、１または複数のデータベースオブジェクトのメタデータを含むデータベースエレメントのコレクションを包含するＤＡＣモデルを生成するステップを含む。ＤＡＣモデルは、データベースオブジェクトを操作可能なデータベースランタイムリソースのデータベースランタイムリソース識別子を更に含む。ＤＡＣモデルは、データベースランタイムリソースの実行に関連するポリシを更に含む。特定の実施形態において、２０４にて、この方法は、ＤＡＣプロジェクトとしてのＤＡＣモデルの表示を保存するステップと、ＤＡＣプロジェクトを保存するために、ＤＡＣプロジェクト内で、ソース制御システム内またはソース制御データベース内に任意的にチェックインするステップと、を含んでいる。他の特定の実施形態において、２０６にて、この方法は、ＤＡＣモデルを編集して、ＤＡＣパッケージの構成の前にＤＡＣモデルを有効にするステップと、ＤＡＣインスタンスを配置する前のＤＡＣタイプを設定するステップと、物理コンピューティングリソースの特定のセットに関連してＤＡＣインスタンスをインストールするステップと、を含む。２０８に移動すると、この方法は、ＤＡＣモデルに基づいてＤＡＣパッケージを構成するステップを含む。２１０に移動すると、この方法は、ＤＡＣタイプを、ＤＡＣパッケージからサーバファブリック内に取り込むステップを含んでいる。２１２に移動すると、この方法は、ＤＡＣタイプを配置して、配置されたＤＡＣインスタンスを生成するステップを含む。
【００２３】
ＤＡＣが、ＤＡＣタイプ及びＤＡＣインスタンスとの間のサーバファブリック内において、２つのメイン下位区分を有することが強調されるべきである。ＤＡＣタイプは、ＤＡＣがサーバファブリックに取り込まれた場合に構成される。ＤＡＣタイプは、表及びキューブ（cube）等の、ＤＡＣ内のオブジェクトの論理的実装を定義し、かつ使用されるＤＡＣに対して開発者がどのように意図しているかを定義するポリシを含む。ＤＡＣインスタンスは、ＤＡＣタイプがサーバファブリック内に１または複数のデータベースサーバランタイム（例えば、マイクロソフトサーバランタイム）に配置される際に構築される。ＤＡＣインスタンスは、ＤＡＣタイプのエンティティがどのようにサーバランタイム層内のホストに位置するかを記録する。ＤＡＣインスタンスは、ＤＡＣに関して管理者がどのように操作することを意図しているかを定義するポリシを含む。
【００２４】
図３を参照すると、データ層アプリケーションコンポーネント（ＤＡＣ）のコンテンツのハイレベル表示が示されている。この図は、開発者の意図（ＤＡＣタイプ）の、配置意図（ＤＡＣインスタンス）からの概念的分離を示している。図３に示されているように、ＤＡＣは、ＤＡＣタイプ３０４及びＤＡＣインスタンス３０６に概念的に分割されていてもよい。ＤＡＣタイプ３０４は、構造、ロジック、ポリシ、及びＤＡＣ定義を含む他のエンティティを含む。ＤＡＣタイプ３０４は、開発者のための仕組みも提供して、不変条件、要求、並びにＤＡＣ３０２の意図された使用法及び解釈を形式的に定義する。ＤＡＣタイプ３０４を含むエンティティは、一単位として管理されることが意図されている。この情報は、ＤＡＣ３０２の特定のバージョンの全ての配置に対する全体的な情報である。従って、ＤＡＣタイプ３０４は、開発者の意図を表してもよく、バージョン管理されてもよく、特定のバージョンに対して不変であり、かつ、唯一であると保証される識別子を有している。ＤＡＣタイプ３０４の３つの主セクションは、構成の目的で、プロパティ３０８、アプリケーションスキーマ３１０、並びに開発者意図及びポリシ３１２と示される。
【００２５】
ＤＡＣタイプ３０４のプロパティ３０８は、ＤＡＣタイプ３０４に特有の特徴または特性である。例えば、プロパティ３０８は、人間が可読な名前及び説明を含んでいてもよい。他の例として、プロパティ３０８は、メジャーバージョン番号及びマイナーバージョン番号等の１または複数のバージョン識別子を含んでもよい。他の例として、プロパティ３０８は、ＤＡＣタイプ３０４にとって唯一であると保証されている識別子を含んでもよい。他の例として、プロパティ３０８は、既知のエンドポイント名を含んでいてもよい。他の例として、プロパティ３０８は、他のＤＡＣタイプへの依存関係を含んでいてもよい。
【００２６】
ＤＡＣタイプ３０４のアプリケーションスキーマ３１０は、ＤＡＣ３０２を含むデータベースインスタンス及びデータベースオブジェクトを定義する。ＤＡＣタイプ３０４のこの部分のオブジェクト定義は、ＤＡＣ３０２に固有のものであり、任意の変更は、ＤＡＣタイプの新しいバージョンを生成可能である。アプリケーションスキーマ３１０は、ＤＡＣ３０２が「何」で構成されているかを本質的に定義する。例えば、アプリケーションスキーマ３１０は、表、キューブ、及びデータマイニング（mining）モデル等のアプリケーション構造を含んでもよい。他の例において、アプリケーションスキーマ３１０は、保存された手順、ユーザ定義の機能、及びトリガ等のアプリケーションロジックを含んでもよい。他の例として、アプリケーションスキーマ３１０は、アプリケーション定義の一部と考えられる参照データを含んでいてもよい。例えば、ジップコード及び他の郵便番号、または州及び地域コード等の参照データが参照されてもよい。
【００２７】
ＤＡＣタイプ３０４の開発者意図及びポリシ３１２は、ＤＡＣ３０２がどのように使用するかまたは解釈することを目的としているかについての追加情報を提供する。例えば、開発者意図及びポリシ３１２は、ＤＡＣ３０２を配置することが可能であるべきファブリックリソース要求を含んでいてもよい。例えば、ＤＡＣ３０２は、マイクロソフトＳＱＬサーバ２００８を要求して、空間データタイプ及びＣＬＲ統合に対するサポートを可能とし、かつ８０ＧＢのディスクスペースを要求してもよい。他の例として、開発者意図及びポリシ３１２は、ＤＡＣ３０２に組み込まれる設定可能性を定義する設定意図（パラメータ化）を含んでもよい。ポリシに関する他の例は、利用可能性要求の詳細であり、例えば、ＤＡＣは、クラスタリングが可能であるＳＱＬサーバインスタンスにおける配置を要求する。このことは、配置時間において供給され得るまたはされるべき情報を含む、ＤＡＣバージョンに影響を与えない配置特有の設定を可能にする。例えば、設定パラメータは、配置プロセスが、ファイルグループ及びマイクロソフトＳＱＬサーバのインスタンスの名前等のファブリックリソースの特定のタイプへのマッピングステップを提供すべきことを示すことが可能である。他の例として、開発者意図及びポリシ３１２は、ＤＡＣ３０２のどの部分が外部に曝されるのかを特定するインタフェース定義を含んでもよい。これは、パブリックインタフェースとＤＡＣ３０２内部の実施詳細との分離を可能にする。例えば、インタフェース定義は、どのエンティティがクライアントアプリケーションまたは他のＤＡＣによって参照され得るかを特定し得る。他の例として、開発者意図及びポリシ３１２は、このＤＡＣ３０２に対して実行されるクエリ等の作業負荷特性情報を含んでもよい。
【００２８】
図３に示されているように、ＤＡＣインスタンス３０６は、実際のインスタンスまたは配置特有の情報を捕集する。この情報は、特定の配置に特有である。ＤＡＣインスタンス３０６は、配置意図を表現する。ＤＡＣインスタンス３０６は、ＤＡＣタイプ３０４に関連付けられている。複数のＤＡＣインスタンスは、ＤＡＣタイプ３０４の各々に対して存在している。ＤＡＣインスタンス３０６は、サーバファブリック内で唯一であると保証されている識別子を有している。ＤＡＣインスタンス３０６は、サーバファブリックマッピングを含む。
【００２９】
ＤＡＣインスタンス３０６のプロパティ３１４は、ＤＡＣ３０２の配置されたインスタンスに特有の特徴または特性である。プロパティ３１４は、ＤＡＣインスタンス３０６識別子及び配置名等のアイテムを含む。
【００３０】
ＤＡＣインスタンス３０６の配置スキーマ３１６は、ＤＡＣインスタンス３０６の一部であり、特定の配置に特有のＳＱＬオブジェクトを定義する。配置スキーマ３１６は、認証プリンシパル及びインデックス等のオブジェクトを含む。
【００３１】
ＤＡＣインスタンス３０６の配置意図及びポリシ３１８は、どのようにＤＡＣ３０２がどのように配置又は解釈されることが意図されているかについての情報を提供する。配置意図及びポリシ３１８は、特定の配置に特有の意図されたファブリックマッピング及び意図されたポリシ等のアイテムを含む。
【００３２】
ファブリックマッピング３２０は、ＤＡＣインスタンス３０６の一部であり、ＤＡＣインスタンス３０６と下層にあるリソースとの間のマッピングを定義する。ファブリックマッピング３２０のコンテンツの例は、関係データベースインスタンスまたは解析サーバインスタンス等のマイクロソフトＳＱＬサーバランタイムマッピング、及びディスクストレージ及びコンピュータ等のハードウェアリソースを含む。
【００３３】
データ３２２は、ＤＡＣインスタンス３０６の一部であり、特定のＤＡＣインスタンスに関連付けられているデータを示す。データ３２２は、ＤＡＣインスタンス３０６またはアプリケーションに特有な動作データ等のアプリケーションデータ及び動作データの両方のユーザによって生成されるアプリケーションデータを含む。
【００３４】
図４を参考にすると、データ層アプリケーションコンポーネント（ＤＡＣ）の特定の実施形態が、４００として示されている。ＤＡＣ４０２は、データベースエレメント４０４のコレクションを含む。データベースエレメント４０４のコレクションは、データベースオブジェクト４０６のデータベースオブジェクト識別子を含む。データベースエレメント４０４のコレクションは、データベースオブジェクト４０８を操作可能なデータベースランタイムリソースのデータベースランタイムリソース識別子を含む。データベースエレメント４０４は、データベースランタイムリソースの実行に関連するポリシ４１０を含む。ＤＡＣ４０２は、データベースエレメント４０４のコレクションに関連付けられているＤＡＣ名４１２も含む。ＤＡＣ名４１２は、データベースアプリケーション４１４による使用のためにアクセス可能である。データベースエレメント４０４のコレクションは、４１６に示されているように、ユーザ選択可能サポートコンピュータリソース４１８のセットにプログラム的に関連付けられている。
【００３５】
ＤＡＣ名４１２（エンドポイント名）は、ドメインネームサービス（ＤＮＳ）名といくらか同じように機能する。アプリケーション実行ファイルは、ＤＡＣ名に接続し、ＤＡＣ４０２をホスティングしている特定のコンピュータまたはインスタンスには接続しない。特定のコンピュータまたはインスタンスとＤＡＣ４０２との関連付けは、ＤＡＣ４０２をコンピュータ及びデータベースインスタンスにマッピングすることによってファブリック内で確立される。ＤＡＣ４０２は、アプリケーションがデータベースに接続する接続路に影響を与えずに（例えば、接続ストリングに影響を与えずに）、例えば、ＤＡＣ４０２をマイクロソフトＳＱＬサーバの新しいインスタンスに単純に再マッピングすることによって新しいインスタンスに移動させられ得る。アプリケーションは変更される必要は無い。これらは全て、同一のＤＡＣエンドポイント名に接続され続けている。例えば、ペイロールのＤＡＣエンドポイント名を有しているＤＡＣは、コンピュータ１のデフォルトのデータベースインスタンスからコンピュータ２の他のインスタンスに移動させられ得る。全てのアプリケーションが既知のＤＡＣエンドポイント名ペイロールを参照する故、全てのアプリケーションは同一のＤＡＣ４０２に接続しているままである。
【００３６】
特定の実施形態において、ユーザ選択可能サポートコンピュータリソース４１８のセットは、自動化されたツール（例えば、ソフトウェアアプリケーション、マイクロソフトＳＱＬサーバマネジメントスタジオ、マイクロソフトビジュアルスタジオ、コマンドライン、パワーシェル等のユーザコントロールされているアプリケーション）を使用して変更可能である。他の特定の実施形態において、コレクションに関連付けられているＤＡＣ名４１２は、複数のデータベースアプリケーションからアクセス可能である。
【００３７】
他の特定の実施形態において、ＤＡＣ名４１２は、ユーザ選択可能サポートコンピュータリソース４１８のセットが変更されても変化しない。
【００３８】
他の特定の実施形態において、ＤＡＣ名４１２は、データベースエレメント４０４のコレクション内のデータベースエレメントが変更されても変化しない。
【００３９】
他の特定の実施形態において、データベースランタイムリソースはマイクロソフトＳＱＬサーバのインスタンスであり、ＤＡＣ名４１２は、マイクロソフトＳＱＬサーバのインスタンスが、第１のマイクロソフトＳＱＬサーバインスタンスから第２のマイクロソフトＳＱＬサーバインスタンスに変更されても変化しない。
【００４０】
他の特定の実施形態において、データベースエレメント４０４のコレクションが変化可能か、またはユーザ選択可能サポートコンピュータリソース４１８のセットが変化可能であり、ＤＡＣエンドポイント名４１２は変化しないので、データベースエレメント４０４のコレクションが変更された場合またはユーザ選択可能サポートコンピュータリソース４１８が変更された場合に、１または複数のデータベースアプリケーション（例えば、データベースアプリケーション４１４）のアプリケーション接続ストリングは、記録（例えば、代替、更新、アプリケーションの再コンパイルの必要、アプリケーションバイナリ及び／または実行ファイルの再生成の必要）される必要が無い。
【００４１】
他の特定の実施形態において、ＤＡＣ名４１２を使用するデータベースアプリケーションは、異なったネットワークコンピュータに配されている。
【００４２】
他の特定の実施形態において、データベースランタイムリソースの実行に関連しているポリシ４１０はＤＡＣ名４１２に適用され、ポリシ４１０は、データベースエレメント４０４のコレクションが変更された場合またはユーザ選択可能サポートコンピュータリソース４１８のセットが変更される場合に、適用され続ける。
【００４３】
他の特定の実施形態において、ＤＡＣ４０２は、アプリケーションプログラムインタフェース（ＡＰＩ）をさらに含んで、データベースエレメント４０４のコレクションとインタフェースをとる。例えば、ＡＰＩは、データベースエレメントのコレクションのエレメントの利用の評価が可能である。例えば、図１のように、ＡＰＩは、開発者がデータベースエレメント４０４のコレクションとインタフェースをとることを可能にしてもよい。
【００４４】
特定の実施形態において、ＤＡＣ４０２は、コンピュータ可読媒体内に保存される。コンピュータ可読媒体は、データベースオブジェクトのメタデータ、データベースオブジェクトを操作可能なデータベースランタイムリソースのデータベースランタイムリソース識別子、及びデータベースランタイムリソースの実行に関連しているポリシをパッケージングする管理の一単位を含んでもよい。一度説明したが、管理の一単位は、複数のデータベースオブジェクトのメタデータ、データベースオブジェクトを操作可能なデータベースランタイムリソースの複数のデータベースランタイムリソース識別子、及びデータベースランタイムリソースの実行に関連している複数のポリシをパッケージング可能である。さらに、複数のデータベースオブジェクトは、スキーマ、表、表示、保存されている手順、機能、トリガ、データタイプ、ログイン、ユーザ、許可、ポリシ、統計データ、プライマリキー、デフォルト、チェック、制約、及び／またはデータベースインスタンスもしくはデータベース内で生成可能な任意の他のオブジェクトを含んでもよい。
【００４５】
管理の一単位は、第１の物理コンピューティングリソースにマッピングされてもよい。管理の一単位は、第１の物理コンピューティングリソースから第２の物理コンピューティングに再マッピングされてもよい。第１の物理コンピューティングリソースの例は、プロセッサ、ネットワークデバイスまたはメモリ記憶デバイスである。特定の実施形態において、管理の一単位は、関連付けられたＤＡＣ名によって識別され、ＤＡＣ名は、データベースアプリケーションによる使用のためにアクセス可能である。
【００４６】
データベースオブジェクトを操作可能なデータベースランタイムリソースは、データベースインスタンスであってもよい。データベースインスタンスは、マイクロソフトＳＱＬサーバデータベースエンジンのインスタンス、マイクロソフトＳＱＬサーバアナリシスサービスのインスタンス、もしくはＳＱＬサーバレポーティングサービスのインスタンス、または他のデータベースタイプ及び他のベンダーのインスタンスを含んでもよい。
【００４７】
ポリシは、データベースランタイムリソースの実行に関連していてもよく、リソース制限ポリシ、またはソフトウェアもしくはハードウェアリソース要求に関連している手順を含む。
【００４８】
図５を参照すると、システムの特定の実施形態が５００で示されている。システム５００は、ＤＡＣのセット５０２を含んでいる。データベースによるＤＡＣのホストに関連して、複数のＤＡＣが単一のデータベース内に存在してもよいか、または単一のＤＡＣが複数のデータベースに亘っていてもよい。図５に示されている実施形態において、第１のＤＡＣ５０４、第２のＤＡＣ５０６、及び第３のＤＡＣ５０８は、ＤＡＣのセット５０２の中に含まれている。代替的に、ＤＡＣのセット５０２は、多数のＤＡＣを含んでもよい。ＤＡＣ５０４、５０６及び５０８の各々は、データベースエレメント５１０、５１２及び５１４のコレクションの論理表示を含む。
【００４９】
システム５００は、ＤＡＣのセット５０２をホストするデータベースランタイムリソースのセット５１６を更に含む。図５に示されている実施形態において、データベースランタイムリソースのセット５１６は、第１のデータベースランタイムリソース５１８、第２のデータベースランタイムリソース５２０、及び第３のデータベースランタイムリソース５２２を含む。代替的に、データベースランタイムリソースのセット５１６は、多数のデータベースランタイムリソースを含んでもよい。
【００５０】
システム５００は、データベースランタイムリソースのセット５１６によってＤＡＣのセット５０２をホストするために使用されるコンピューティングリソース５２４を更に含む。図５に示されている実施形態において、コンピューティングリソース５２４は、第１のコンピューティングリソース５２６、第２のコンピューティングリソース５２８、及び第３のコンピューティングリソース５３０を含む。代替的に、コンピューティングリソース５２４は、多数のコンピューティングリソースを含んでいてもよい。
【００５１】
コンピューティングリソース５２４は、１または複数のサーバリソース、１または複数のコンピュータデータストレージリソース、または１または複数の仮想マシンリソースを含んでもよい。１または複数のコンピュータサーバリソースの各々は、プロセッサ、メモリ、またはネットワークエレメントを含んでもよい。１または複数のコンピュータデータストレージリソースの少なくとも１つは、複数のファイルを含むオペレーティングシステムストレージボリュームであってもよい。１または複数のコンピュータサーバリソースの少なくとも１つは、第１のストレージエリアネットワーク（ＳＡＮ）に最初にマッピングされて、その後、第２のＳＡＮにマッピングされてもよい。
【００５２】
１つの実施形態において、ＤＡＣのセット５０２のセット内のＤＡＣ５０４、５０６及び５０８の各々は、ＤＡＣコンテナを含む。ＤＡＣコンテナの各々は、データベースオブジェクトのメタデータ、データベースオブジェクトを操作可能なデータベースランタイムリソースのデータベースランタイムリソース識別子、及びデータベースランタイムリソースの実行に関連するポリシをパッケージングする管理の一単位を含んでもよい。
【００５３】
ＤＡＣのセット５０２の第１のＤＡＣ５０４は、ＤＡＣのセット５０２内の第２のＤＡＣ５０６に依存していてもよい。
【００５４】
ＤＡＣのセット５０２内のＤＡＣ５０４、５０６及び５０８の各々は、ファブリック５０１のＤＡＣ層によって表されていてもよい。コンピューティングリソース５２６、５２８及び５３０を含むコンピューティングリソース５２４は、ファブリック５０１のハードウェアリソース層によって表されていてもよい。データベースランタイムリソースのセット５１６内のデータベースランタイムリソース５１８、５２０及び５２２の各々は、ファブリック５０１のＳＱＬ（Structured Query Language）サーバランタイム層によって表されてもよい。
【００５５】
データベースランタイムリソース５１６のセットは、マイクロソフトＳＱＬサーバサービスを提供する１または複数のランタイムインスタンスを含んでもよい。この１または複数のランタイムインスタンスは、マイクロソフトＳＱＬサーバ、マイクロソフトＳＱＬサーバアナリシスサービス、及びマイクロソフトＳＱＬサーバレポーティングサービスの１または複数のインスタンスを含んでもよい。さらに、１または複数のマイクロソフトＳＱＬサーバランタイムインスタンスは、スキーマ及び表示を含んでもよい。
【００５６】
ＤＡＣ５０４、５０６及び５０８の各々は、データベースランタイムリソース５１８、５２０及び５２２の１または複数にマッピングされてもよく、データベースランタイムリソース５１８、５２０及び５２２の各々は、物理コンピューティングリソース５２６、５２８及び５３０の１または複数にマッピングされてもよい。データベースランタイムリソースは、第１のコンピュータから第２のコンピュータに再マッピングされてもよい。
【００５７】
ＤＡＣ５０４、５０６及び５０８の各々は、関連付けられているＤＡＣエンドポイント名を含んでいてもよい。ＤＡＣエンドポイント名は、データベースアプリケーションが使用するためにアクセス可能である。
【００５８】
図６を参照すると、ＤＡＣのセットを含むファブリックの第２の実施形態を示しているブロック図が６００で示されている。ファブリック６０８は、ＤＡＣのセット（ＤＡＣｓ）、ＤＡＣをホストしているマイクロソフトＳＱＬサーバランタイム、及びＤＡＣをホストするためにこれらのランタイムによって使用されるリソースのモデルベース表示である。ファブリックモデルは、図６に示されているように３つの層を有する。すなわち、ＤＡＣ層６１０、ランタイム層６１２、及びホストリソース層６１４である。このモデル内の全てのオブジェクトは、一般的なモデリング概念（名詞）のセットを使用して記載され、これらのオブジェクトにおいて実行され得る一連の動作（動詞）を有する。
【００５９】
例えば、動作は、ファイルシステムが急激に大きくなるかまたはリソースの限界を上回ると予測された際に、ファイルシステムの１または複数のファイルを自動的に他のオペレーティングシステムボリュームの第２のファイルシステムに移動することを含んでもよい。他の例として、動作は、ソフトウェアアプリケーションを実行しているプロセッサが高負荷になった場合に、当該ソフトウェアアプリケーションを比較的低いプロセッサ負荷の他のコンピュータに自動的に移動することを含んでもよい。更に他の例として、動作は、１または複数の動作を自動的に実行して、評価されたサービスメトリック（service metric）の質（例えば、約束されたパフォーマンスのサービスの質（Ｑｏｓ）レベル）に従ってパフォーマンス（例えば、アプリケーションのパフォーマンス）を維持することを含んでもよい。
【００６０】
ＤＡＣ層６１０は、ＤＡＣのファブリック定義をホスティングする。示された実施形態において、ＤＡＣ層６１０は、第１のＤＡＣ６２２、第２のＤＡＣ６２４、及び第３のＤＡＣ６２６を含む。代替的に、ＤＡＣ層６１０は、多数のＤＡＣを含んでもよい。ランタイム層６１２は、ファブリック６０８内のデータベースランタイムリソース（例えば、マイクロソフトＳＱＬサーバサービス）の表示を提供する。示された実施例において、ランタイム層６１２は、第１のデータベースランタイムリソース６１６、第２のデータベースランタイムリソース６１８、及び第３のデータベースランタイムリソース６２０を含む。代替的に、ランタイム層６１２は、多数のデータベースランタイムリソースを含んでもよい。ホストリソース層６１４は、コンピュータリソース６３０を含み、第１のコンピュータ６３６及びコンピュータサーバ６３８を含む。さらに、ホストリソース層６１４は、データリソース６３２を含み、第１のストレージリソース６４０及び第２のストレージリソース６４２を含む。さらに、ホストリソース層６１４は、仮想リソースを含み、第１の仮想リソース６４４及び第２の仮想リソース６４６を含む。代替的に、ホストリソース層６１４は、多数のコンピュータリソース、データリソースまたは仮想リソースを含んでいてもよい。
【００６１】
ファブリック６０８はＤＡＣを識別し、データベースランタイムリソースはＤＡＣのセットをホストし、コンピューティングリソースは、ＤＡＣをホストするためにデータベースランタイムリソースによって使用される。ＤＡＣ６１０の各々は、データベースエレメントのコレクションの論理表示を含む。推論ポイント（例えば、中央推論ポイント６０４）は、ファブリック６０８のエンティティを監視する。１または複数のポリシ（例えば、中央ポリシ６０６）が使用されて、受信されたデータベース管理動作、及びファブリック６０８によって識別された影響を受けているエンティティにおけるポリシが自動的に適用される。
【００６２】
ファブリック６０８内の層の各々は、４つのタイプのエンティティを含んでいる。すなわち、コンテナ、エレメント、リソース及びマッピングである。コンテナは、ファブリック６０８の所定の層内のトップレベルエンティティであり、管理及び同一性（identity）の直感的な単位を提供する。コンテナの例には、ＤＡＣ、コンピュータ、仮想マシン、ストレージデバイス、マイクロソフトＳＱＬサーバのインスタンス、マイクロソフトＳＱＬサーバアナリシスサービスのインスタンス、及びマイクロソフトＳＱＬサーバレポーティングサービスのインスタンスが含まれる。エレメントは、コンテナ内に存在するファブリック６０８内の単位である。例えば、表及び保存されている手順は、ＤＡＣ内に存在するエレメントである。リソースは、有限の能力を有するエレメントの特別なタイプであり、自身の能力を決定する特性を有する。プロセッサデバイスは、粒度の細かいリソースの例であり、プロセッサデバイスのクロック速度は、その能力に関連する特性の例である。ストレージデバイスは、物理ディスク等の更に粒度の細かいリソースを含むリソースの例である。ストレージデバイスの能力は、ストレージデバイスが含む物理ディスクの特性によってだけではなく、ＲＡＩＤレベル等の設定特性によっても判定される。マッピングは、ファブリック６０８の２つの部分間の関係を表す。マッピングは、ファブリック６０８をマイクロソフトＳＱＬサーバ環境の実際のモデルにする名詞である。マッピングは、コンテナ−コンテナ間、コンテナ−エレメント間、コンテナ−リソース間、エレメント−エレメント間、エレメント−リソース間、及びリソース−リソース間であり得る。
【００６３】
ファブリック６０８内の層６１０、６１２及び６１４の各々の構成は、上述の全体的なモデリング概念を適用することによって定義され得る。各々の層は、これらのコンテナ内の１または複数のコンテナ、エレメント及びリソース、並びにファブリック６０８の隣り合う層内のコンテナもしくはエレメント間のマッピングからなっている。
【００６４】
ＤＡＣ層６１０は、ＤＡＣのファブリック定義をホストする。ＤＡＣの各々は、ＤＡＣコンテナを使用して定義されてもよい。ＤＡＣコンテナの各々は、構造、コード、バージョン及びポリシ等のアプリケーションエンティティを表す多数のエレメントによって構成されている。
【００６５】
ＤＡＣ層６１０におけるマッピングは、ＤＡＣとマイクロソフトＳＱＬサーバランタイム（例えば、マイクロソフトＳＱＬサーバのインスタンス）との間の関係を表す。例えば、ＤＡＣ層６１０内のＤＡＣは、サーバランタイム層６１２内のマイクロソフトＳＱＬサーバのインスタンスにマッピングされ得る。その後、ＤＡＣは、一方のインスタンスから他方のインスタンスまで、インスタンス間のＤＡＣの再マッピングによって移動させられ得る。１つの例として、第１のＤＡＣ６２２は、第１のデータベースランタイムリソース６１６（例えば、マイクロソフトＳＱＬサーバの第１のインスタンス）にマッピングされてもよく、その後、第１のＤＡＣ６２２は、第１のＤＡＣ６２２を第２のデータベースランタイムリソース６１８に再マッピングすることによって、第２のデータベースランタイムリソース６１８（例えば、マイクロソフトＳＱＬサーバの第２のインスタンス）も移動させられ得る。
【００６６】
マッピングは、ＤＡＣ間の関係も表し得る。ＤＡＣは、共通のエレメントの再利用を可能にするために、他のＤＡＣへの依存関係を表し得る。例えば、注文の供給のための企業ポリシを実施する保存された手順のセット等のいくつかのアプリケーションによって共有されるエレメントを有する「ベース」ＤＡＣが定義され得る。これらのエレメントを必要とする任意の他のＤＡＣは、「ベース」ＤＡＣにマッピングされることで当該エレメントを参照する。例えば、第１のＤＡＣ６２２は、第２のＤＡＣ６２４に依存いていてもよい。
【００６７】
ランタイム層６１２は、サーバファブリック内のマイクロソフトＳＱＬサーバサービスの表示を提供する。マイクロソフトＳＱＬサーバランタイムコンテナは、マイクロソフトＳＱＬサーバ、マイクロソフトＳＱＬサーバアナリシスサービス及びマイクロソフトＳＱＬサーバレポーティングサービスのインスタンスを含む。ランタイムコンテナの各々は、１または複数のデータベースエレメントを有する。データベースエレメントは、スキーマ、表、表示、保存されている手順、機能、データタイプ、インデックス、ログイン、ユーザ、ポリシ、統計データ、プライマリキー、外部キー、デフォルト、チェック制約、及び／または任意の他のオブジェクトであってデータベースインスタンスまたはデータベース内で生成され得るオブジェクトを含んでもよい。
【００６８】
ランタイム層６１２におけるマッピングは、特定のデータベースインスタンスランタイム（例えば、マイクロソフトＳＱＬサーバインスタンスのインスタンス）とこれに割り当てられている物理リソースとの間の関係を表す。例えば、ランタイム層６１２内に存在するデータベースインスタンスは、ハードウェアリソース層６１４内の物理コンピュータにマッピングされる。データベースインスタンスは、コンピュータ間でのインスタンスの再マッピングによって物理コンピュータ間を移動させられ得る。１つの例として、第１のデータベースリソース６１６は、第１のサーバ６３６にマッピングされ得、第１のデータベースリソース６１６は、第１のサーバ６３６から第２のサーバ６３８への第１のデータベースリソース６１６の再マッピングによって、第２のサーバ６３８に移動させられ得る。
【００６９】
ホストリソース層６１４は、サーバファブリック６０８内のエレメントによって利用されるコンピューティング能力及びストレージ能力を示す。ホストリソース層６１４におけるコンテナは、物理コンピュータ、仮想マシン、及びオペレーティングシステムストレージボリュームを含む。リソースコンテナは、サブエレメントも含み得る。例えば、物理サーバは、プロセッサ、メモリ及びネットワークエレメントを含む。オペレーティングシステムストレージボリュームは、ファイルエレメント及び言及されるアーティファクトの保存に関する他のエレメントを含んでもよい。
【００７０】
ホストリソース層６１４におけるマッピングは、物理リソース間の関係を表す。例えば、ホストリソース層マッピングは、どのＳＡＮ論理装置番号（ＬＵＮ）が各々の物理コンピュータからアクセス可能かを表す。ＳＵＮ ＬＵＮは、物理コンピュータとＳＡＮ ＬＵＮとの間のマッピングを変更することによって、物理コンピュータ間を移動させられ得る。
【００７１】
ファブリック６０８は、ファブリック６０８全体でエンティティに適用され得る管理動作及びポリシの中央宣言（central declaration）をサポートする。ファブリック６０８の管理ポイント（例えば、中央管理ポイント６０２）は、データベース管理動作及びポリシを受信してもよい。ファブリック６０８は、ファブリックエンティティを監視して管理動作及びポリシを自動的に適用可能な推論エンジンも提供する。ファブリック６０８の中央管理機構は、図６に示されている。
【００７２】
中央管理機構は、ファブリック６０８内のコンテナの関連する詳細、関係及び制約を記録するモデルを全て参照する。
【００７３】
ファブリック６０８内のマイクロソフトＳＱＬサーバインスタンスの１つは、中央管理ポイント６０２として指名され得、全てのファブリック層に対して中央管理能力（発見、ポリシ定義、及び監視）を提供する。中央管理ポイント６０２は、全てのコンテナの動作がトリガ（例えば、取り込み、移動、生成、及び配置）がされる場所である。中央管理ポイント６０２は、ファブリック６０８によって識別されるデータベースランタイムリソースの１つにおいてホストされてもよい。例えば、中央管理ポイント６０２は、第１のデータベースランタイムリソース６１６、第２のデータベースランタイムリソース６１８、または第３のデータベースランタイムリソース６２０においてホストされてもよい。中央管理ポイント６０２は、サーバファブリック層６１０、６１２及び６１４に関する発見、ポリシ定義、及び監視を提供してもよい。
【００７４】
中央推論ポイント６０４は、ファブリック６０８内のエレメントのデータモデルを提供する。このモデルは、ファブリック６０８全体のリソース使用傾向及び可能な動作の影響を予測するために解析エンジンによって使用される。中央推論ポイント６０４は、ファブリック６０８によって識別されるエンティティにおける中央推論動作を行うために使用されてもよい。中央推論動作は、例えば、他のＤＡＣが第１のＤＡＣに対する依存関係を有し得る場合に、第１のＤＡＣのアンインストールの予測される影響を評価する第１の動作を含んでもよい。中央推論動作は、例えば、１または複数のＤＡＣにおけるコンピューティングリソースの１または複数の変更の予測される影響を評価する第２の動作も含んでもよい。中央推論動作は、例えば、配置されるべきＤＡＣホストするように構成されているファブリック内のマイクロソフトＳＱＬサーバインスタンスのリストを提供する第３の動作を含んでもよい。従って、ファブリック６０８が使用されて、推奨される動作及び推奨される動作の予測される影響が判定される。ユーザインタフェースは、推奨される動作の実行の予測される影響に基づいて、ファブリック６０８の関連するハードウェアリソース及びソフトウェアアプリケーションの予測される利用表示を示してもよい。予測される利用の視点で推奨される動作の実行の予測される影響の表示は、推奨される動作を実行するかを判断することを管理者に可能にさせ得る。管理者が関連するハードウェアリソース及びソフトウェアアプリケーションにおける予測影響が受け入れられないと考えた場合、管理者は、推奨される動作を実行しないことを選択してもよい。管理者が、予測される影響が受け入れられると判断した場合、管理者は推奨される動作を実行することを選択してもよい。
【００７５】
中央ポリシ６０６は、活動または動作を誘導するために定義された権限のある方針であるポリシを含んでもよく、ポリシは、ファブリック６０８によって識別されたエンティティのセットに適用され得る条件のセットを特定する。例えば、エンティティのセットは、１または複数のマイクロソフトＳＱＬサーバランタイムインスタンスを含んでもよく、ポリシは、マイクロソフトＳＱＬサーバインスタンスのソフトウェアバージョンに基づいて、ファブリック６０８内への１また複数のマイクロソフトＳＱＬサーバランタイムインスタンスの組み込みを制限してもよい。例として、マイクロソフトＳＱＬサーバ２００８のみがランタイム層６１２内に組み込まれ得る。更なる例として、エンティティのセットは、１または複数のコンピューティングリソースを含んでもよく、ポリシは、オペレーティングシステムのバージョンまたはメモリの量に基づいて、ファブリック６０８内への１または複数のコンピューティングリソースの組み込みを制限してもよい。例として、Ｗｉｎｄｏｗｓ２００８の６４ビットバージョン及び少なくとも４ギガバイト（４ＧＢ）のメモリを含むコンピュータのみが、ホストリソース層６１４内に組み込まれ得る。説明されたポリシは、ファブリック６０８内へのランタイムインスタンス及びハードウェアリソースの組み込み制限するポリシの例である。代替的に、ポリシは、ファブリック６０８内へのＤＡＣの取り込みを制限する。例えば、ポリシは、最良の実行に適合しているクエリを有するＤＡＣのみをファブリック６０８内に受け入れてもよい。最良の実行は、プログラム的に検証可能なルールのセットとしてファブリックモデル内に表されてもよい。最良の実行の例は、データベースクエリ内において「ＳＥＬＥＣＴ＊」命令文の使用を回避するものである。他の例は、保存されている全ての手順が特定の名前付け慣例に適合することを要求するものでもよい。
【００７６】
中央管理ポイント６０２は、ファブリック動作をトリガしてもよい。例えば、ファブリック動作は、取り込み動作、取り出し動作、配置動作、コピー動作、検証動作、インストール動作、アンインストール動作、追加動作、除去動作、取得動作、設定動作、列挙動作、移動動作、生成動作、保存動作、アップグレード動作、開始動作、停止動作、削除動作、再開動作、実行動作、一時停止動作、レジューム動作、無効化動作、有効化動作、評価動作、監視動作、予測動作、管理（govern）動作、マッピング動作、アンマッピング（unmap）動作、発見動作、比較動作、統合動作、遮断動作、遮断解除動作、許可動作、または取り消し動作を含んでもよい。サーバファブリック動作は、最適化動作を含んでもよい。リソース利用度が高すぎる場合に考慮する軽減動作は、データベース設定を最適化することである。データベース最適化例は、インデックスの追加またはデータ圧縮を含む。
【００７７】
ライフサイクル動詞は、生成またはファブリック６０８への取り込みの時点から、ファブリック６０８からの除去の時点までのエンティティの管理のための動作のセットを記述する。例えば、ライフサイクル動詞は、所定のエンティティの生成、変更及び削除等の動作を含む。いくつかのライフサイクル動詞は、層６１０、６１２及び６１４の１または複数に適用されてもよい。ライフサイクル動詞は、取り込み動作、取り出し動作、配置動作、コピー動作、検証動作、インストール動作、アンインストール動作、追加動作、除去動作、取得動作、設定動作、列挙動作、移動動作、生成動作、保存動作、及びアップグレード動作を含む。
【００７８】
取り込み動作は、外部、持続性のデータストアから新しいコンテナ及び関連するエレメントを生成する。取り込み動作は、ＤＡＣ層６１０に適用されてもよい。例えば、取り込み動作は、ＤＡＣファイルをＤＡＣパッケージファイルからファブリック６０８に取り込んでもよい。取り出し動作は、持続的外部データストア（例えば、ファイル）をコンテナ及びそれに含まれるエレメントから生成する。取り出し動作は、ＤＡＣ層６１０に適用されてもよい。例えば、取り出し動作は、ＤＡＣをファイルに取り出す。
【００７９】
配置動作は、コンテナ及びそのオブジェクトを意図された場所に配置する。配置動作は、ＤＡＣ層６１０に適用されてもよい。例えば、配置動作は、第１のＤＡＣ６２２をランタイム層６１２内のインスタンス（例えば、第１のインスタンス６１６）に配置してもよい。
【００８０】
コピー動作は、一方のコンテナから他方のコンテナにエレメントのセットをコピーする。コピー動作は、ＤＡＣ層６１０及びランタイム層６１２に適用してもよい。例えば、コピー動作は、マイクロソフトＳＱＬサーバインスタンスからランタイム層６１２内の他のインスタンス（例えば、第１のインスタンス６１６から第２のインスタンス６１８）にＤＡＣをコピーしてもよい。
【００８１】
検証動作は、目標のコンテナ、エレメント、リソース、またはマッピングが特定の基準に適合しているかをチェックする。検証動作は、ＤＡＣ層６１０、サーバランタイム層６１２及びホストリソース層６１４に適用してもよい。例えば、検証動作は、マイクロソフトＳＱＬサーバのインスタンスが、使用可能なＣＬＲ統合を有していることを検証してもよい。
【００８２】
インストール動作は、ＤＡＣをファブリック６０８内で動作可能に設定する。インストール動作は、ＤＡＣ層６１０及びランタイム層６１２に適用してもよい。例えば、インストール動作は、ＤＡＣを第１のデータベースインスタンス６１６にインストールしてもよい。アンインストール動作は、コンテナ及びそのエレメントを特定の場所から除去する。アンインストール動作は、ＤＡＣ層６１０及びランタイム層６１２に適用してもよい。例えば、アンインストール動作は、第１のデータベースインスタンスか６１６からＤＡＣをアンインストールしてもよい。
【００８３】
追加動作は、外部に生成されたコンテナ、エレメント、またはリソースの表示をファブリック内に組み込む。追加動作は、ランタイム層６１２及びホストリソース層６１４に適用してもよい。例えば、追加動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６をランタイム層６１２に追加する。除去動作は、外部に生成されたコンテナ、エレメント、またはリソースの、ファブリック６０８との関連付けを絶つ。除去動作は、ランタイム層６１２及びホストリソース層６１４に適用してもよい。例えば、除去動作は、マイクロソフトＳＱＬサーバインスタンス６１６をランタイム層６１２から除去してもよい。
【００８４】
取得動作は、コンテナ、エレメント、リソースまたはマッピングの現在の設定を取得する。取得動作は、ＤＡＣ層６１０、ランタイム層６１２及びホストリソース層６１４に適用してもよい。例えば、取得動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６にインストールされているＤＡＣのバージョン番号を取得してもよい。
【００８５】
設定動作は、コンテナ、エレメント、リソースまたはマッピングの現在の設定を更新する。設定動作は、ＤＡＣ層６１０、ランタイム層６１２、及びホストリソース層６１４に適用してもよい。例えば、設定動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６にインストールされているＤＡＣのバージョン番号を設定してもよい。
【００８６】
列挙動作は、コンテナ内のエレメントまたはリソースのセットを取得する。列挙動作は、ＤＡＣ層６１０、ランタイム層６１２、及びホストリソース層６１４に適用してもよい。例えば、列挙動作は、第１のサーバ６３６におけるリソースを列挙する。
【００８７】
移動動作は、一方のコンテナ、エレメント、またはリソースから他方にエレメントまたはリソースのセットを移動する。移動動作は、ＤＡＣ層６１０、ランタイム層６１２、及びホストリソース層６１４に適用してもよい。例えば、移動動作は、マイクロソフトＳＱＬサーバの１のインスタンスから他のインスタンスにデータベースを移動してもよい。他の例にとして、移動動作は、データベースインスタンス（ＳＱＬサーバインスタンス）を移動してもよいか、または一方のコンピュータシステムから他方のコンピュータシステムまでデータベースファイルを移動してもよい。
【００８８】
生成動作は、新しいコンテナまたはエレメントを生成する。生成動作は、ＤＡＣ層６１０及びランタイム層６１２に適用してもよい。例えば、生成動作は、ＤＡＣがマイクロソフトＳＱＬサーバ２００８インスタンスにおける配置を要求していることを特定する新しいポリシ制約を生成してもよい。
【００８９】
保存動作は、コンテナ、エレメント、リソース、またはマッピングの現在の設定を持続させる。保存動作は、ＤＡＣ層６１０、ランタイム層６１２、及びホストリソース層６１４に適用してもよい。例えば、保存動作は、マイクロソフトＳＱＬサーバインスタンス６１６にインストールされているＤＡＣのバージョン番号を保存してもよい。
【００９０】
アップグレード動作は、コンテナまたはエレメント現在の設定を新しい定義に変更する。アップグレード動作は、ＤＡＣ層６１０及びランタイム層６１２に適用してもよい。例えば、アップグレード動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６にインストールされているオーダー表（order table）定義を、第１のバージョンから第２のバージョンにアップグレードしてもよい。
【００９１】
ファブリック６０８は、ポリシに従って、監視動作、変更の調整、及び検証等の動作を実行するさまざまなプロセスを有する。動詞のセットは、プロセスの管理のために使用されてもよい。残りの動詞の全ては、ファブリック６０８の全て層（例えば、ＤＡＣ層６１０、ランタイム層６１２、及びホストリソース層６１４）に適用される。プロセス制御動詞は、開始動作、停止動作、再開動作、実行動作、一時停止動作、レジューム動作、無効化動作、及び有効化動作を含む。
【００９２】
開始動作は、停止されるまで実行し続けるプロセスを開始する。例えば、開始動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６における調整を開始する。停止動作は、プロセスの実行を中止する。例えば、停止動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６における調整を停止してもよい。再開動作は、プロセスの実行を停止させて、その後、プロセスの実行を再度開始する。例えば、再開動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６における調整を再開してもよい。実行動作は、実行されて、完了すると自動的に停止するプロセスを開始する。例えば、実行動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６における発見を実行してもよい。一時停止動作は、プロセスを一時停止し、プロセスは、レジュームされるまで一時停止したままである。例えば、一時停止動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６における発見を一時停止してもよい。レジューム動作は、停止されたプロセスを継続する。例えば、レジューム動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６における発見をレジュームする。無効化動作は、利用できないので開始することができないプロセスを設定する。このプロセスは、有効化されるまで無効化されたままである。例えば、無効化動作は、マイクロソフトＳＱＬサーバインスタンス６１６における調整を無効にしてもよい。有効化動作は、無効化されているプロセスを開始可能なように設定する。例えば、有効化動作は、各々、第１のマイクロソフトＳＱＬサーバインスタンス６１６における調整を可能にしてもよい。
【００９３】
パフォーマンス管理動詞は、ファブリックリソースの現在の利用に関してファブリック６０８の現在または予測される健全度を解析するために使用される。例えば、クエリ等のＤＡＣ動作の評価された待ち時間統計データが監視されて、現在の健全度状態が判定されかつ将来の健全度状態が予測されてもよい。これらの動詞は、ファブリック６０８内の様々なコンテナ及びエレメントによるリソースの使用を管理するための手段も提供する。パフォーマンス管理動詞は、評価動作、監視動作、予測動作、及び管理動作を含んでもよい。
【００９４】
評価動作は、リソース、エレメント、またはコンテナに関するパフォーマンス統計データを収集する。例えば、評価動作は、第１のサーバ６３６のボリュームＥにあるデータベースファイルFinance.mdbによって使用されるスペースを評価してもよい。監視動作は、リソース、エレメント、またはコンテナに関連するパフォーマンス統計データをポリシに関して評価する。例えば、監視動作は、使用が能力の８０％を超えている場合の事象に対し、第１のサーバ６３６のボリュームＥにあるデータベースファイルFinance.mdbによって使用されるスペースを監視してもよい。予測動作は、履歴データ、リソース変更、または配置もしくは移動等のファブリック動作に応じた、コンテナ、エレメントまたはリソースのパフォーマンス統計データを予測する。例えば、予測動作は、財務（Finance）ＤＡＣの増大に対応するために追加のストレージが必要とされるのがいつかを予測してもよい。さらなる例として、予測動作は、ファブリック全体の増大に対応するために追加のリソースが必要とされるのがいつかを予測する。管理動作は、コンテナまたはエレメントに割り当てられるリソースの最小または最大量を特定する。例えば、管理動作は、第１のＳＱＬサーバインスタンス６１６のＣＰＵ使用率を第２のサーバ６３８のＣＰＵ能力の５０％に制限してもよい。リソース管理は、コンテナ及び／またはエレメントのコレクションに適用されてもよい。
【００９５】
マッピング動詞は、ファブリック６０８内の層間の関係を管理する単純な手段を提供する。マッピング動詞は、２つの隣接する層の間の関係を構築するために主に使用される。マッピング動詞は、マッピング動作及びアンマッピング動作を含んでもよい。概念的には、これらの動詞は、一連の実行されている他のライフサイクル動作を生む、ファブリック６０８に対して行われ得るトップレベル動作であるとも考えられる。例えば、マイクロソフトＳＱＬサーバのインスタンスにＤＡＣをマッピングすることは、システムに、ＤＡＣがそのインスタンスにおいて利用可能であるべきことを伝える。これは、特定のインスタンスにおいてこのＤＡＣを利用可能にするために必要とされる、配置またはインストール等の動詞の全てを呼び出す。
【００９６】
マッピング動作は、コンテナ、エレメントまたはリソースの間の関係を生成する。例えば、マッピング動作は、第１のＤＡＣ６２２を第１のマイクロソフトＳＱＬサーバインスタンス６１６に加えてもよい。アンマッピング動作は、コンテナ、エレメントまたはリソースの間のマッピングを除去する。例えば、アンマッピング動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６から第１のＤＡＣ６２２を切り離す。
【００９７】
調整は、規定されている定義からずれてしまったファブリック内のエンティティを識別するプロセスである。例えば、調整は、プロダクションサーバ内の表の定義が、ＤＡＣにおいてどのように定義されるかから変更されているかを検知する。３つのサーバファブリック動詞は、調整を実装する。調整動詞は、発見動作、比較動作、及び統合動作を含んでもよい。
【００９８】
発見動作は、新しいアイテムが発見されかつ新しいアイテムに生産的な理解（productive insight）が与えられる操作を定義する。例えば、発見動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６内の従業員表（employee table）内で新しい列を発見してもよい。比較動作は、コンテナ、エレメントまたはリソースの現在の設定と、予め規定されている設定とをマッチングさせて、差異を報告する。例えば、比較動作は、第１のマイクロソフトＳＱＬサーバインスタンス６１６にある従業員表をＤＡＣ内の表定義と比較して、第１のマイクロソフトＳＱＬサーバインスタンス６１６内の表のバージョンがＤＡＣ内で定義されていない列を有していることを発見してもよい。統合動作は、複数のインスタンスからのコンテナ、エレメントまたはリソースの単一の設定を生成する。例えば、統合動作は、従業員表内の新しい列の定義をＤＡＣ定義内に統合してもよい。
【００９９】
アクセス動詞は、ファブリックモデルの一部へのアクセスを制御して、長期間のプロセスをサポートする手段を提供する。例えば、ファイルを一方のボリュームから他方のボリュームに移動するプロセスは、宛先ボリュームへのアクセスを制御して、複数のプロセスがスペース割り当ての競合を生成しないようにしなければならない。セキュリティ動詞は、ファブリック６０８内のコンテナ及びエレメントへのアクセスを承認されたユーザに限定する。本開示は、新しい承認の基礎構造を提供するのではなく、これらの動詞は、ファブリック６０８に亘る承認設定の統一されたインタフェースを表す。アクセス及びセキュリティ動詞は、遮断動作、遮断解除動作、許可動作、及び取り消し動作を含んでもよい。
【０１００】
遮断動作は、コンテナ、エレメント、またはリソースの設定に発行プロセス排他的アクセスを提供し、他のプロセスが設定にアクセスするのを防止する。この動詞は、実際のエンティティ自体ではなく、サーバファブリック６０８のモデル内のデータにおいて動作する。例えば、遮断動作は、ファイルの移動を実行するためのスペースが確保されるように、第１のサーバ６３６のボリュームＥへのアクセスを遮断してもよい。遮断解除動作は、コンテナ、エレメントおまたはリソースへの排他的アクセスを解除する。この動詞は、実際のエンティティ自体ではなくサーバファブリック６０８のモデル内のデータにおいて動作する。例えば、ファイルの移動が完了した後、遮断解除動作は、第１のサーバ６３６のストレージボリュームＥへのアクセスの遮断を解除してもよい。許可動作は、コンテナ、エレメントまたはリソースへのアクセスのためにプリンシパル許可を与える。例えば、許可動作は、プリンシパルであるジャネットのＤＡＣへの書き込みアクセスを許可してもよい。取り消し動作は、コンテナまたはエレメントへのアクセスのためのプリンシパル許可を拒否する。例えば、取り消し動作は、プリンシパルであるジャネットからＤＡＣへの書き込みアクセスを取り消してもよい。
【０１０１】
図７を参照すると、データベース管理動作及びポリシを自動的に適用する方法の特定の実施例が示されている。７０２において、この方法は、ファブリックの中央管理ポイント（例えば、図６内のサーバファブリック６０８の中央管理ポイント６０２）においてファブリックポリシを受信するステップを含む。ファブリックは、ＤＡＣ、ＤＡＣのセットをホストするデータベースランタイムリソース、及びＤＡＣをホストするためにデータベースランタイムリソースによって使用されるコンピューティングリソースを識別する。ＤＡＣの各々は、データベースのコレクションの論理表示を含む。７０４に移動すると、この方法は、中央管理ポイント（例えば、図６内のサーバファブリック６０８の中央管理ポイント６０２）においてファブリックのエンティティを監視するステップも含む。７０６に移動すると、この方法は、ファブリックエレメントをファブリックポリシ（例えば、図６内の中央ポリシ６０６を使用）に準拠させるためにファブリックによって識別された影響をうけるエンティティにおいて、ファブリックポリシの１または複数の動作を自動的に適用するステップも含む。
【０１０２】
図８を参照すると、エンティティ関係図（ＥＲＤ）が、データ層のコンポーネントを表しているモデルをファブリックがどのように表しているか、及びこれらがどのように関連しているかを示している。図８のエンティティ関係図（ＥＲＤ）は、ファブリックの３つの層の構造及びセマンティクス（semantics）をサポートするために、このモデルがどのような形態をとっているかを示している。
【０１０３】
各々の層は、コンテナ、エレメント及びリソースと同様にモデル内の形式的なエンティティとして示されている。モデルは、ファブリックの定義された構造をもたらしているエンティティ間の関係セマンティクスも定義する。この構造は、ファブリックに亘って判断を行ってファブリックにおいて動作を行うことを本開示の実施形態に可能にすることによって、次のセクションにおいて説明される機構を容易にする。
【０１０４】
図９を参照すると、システムの特定の例示的実施形態が、９００で示されている。中央管理サーバ（ＣＭＳ）９０２は、ファブリックに中央管理ポイントを提供する。ＣＭＳ９０２は、中央管理リポジトリ（ＣＭＲ）９０４に接続している。ファブリック内のデータベースインスタンスの管理されているインスタンス（例えば、マイクロソフトＳＱＬサーバ）は、ＣＭＳ９０２に接続しており、ＣＭＲ９０４内に情報をアップロードする。ＣＭＳ９０２は、ネットワーク上のＳＱＬサービスインスタンスを発見し、ＤＡＣを用意し、所望の場所にＤＡＣエレメントを配置し、基準に対してＤＡＣをチェックし、かつファブリック内のエレメント間の差異を調整するための動作を提供する、
【０１０５】
ＣＭＲ９０４は、ファブリックのモデル（例えば、関連する詳細、関係及び制約）を含む。ＣＭＲ９０２は、配置分析、影響分析、及びwhat-if分析のための中央推論ポイントであり、コアデータタイプ、詳細データタイプ、及びリンクデータタイプを含む。２つのタイプは、ＩＭＲ（例えば、ＩＭＲ９１０及び９１４）からＣＭＲ９０４への応答の頻度に基づいている分類を用いて、ＣＭＲ内に含まれているデータを表示する。高頻度応答データは、コアデータと称される。それよりも応答頻度の低いデータは、詳細データと称される。リンクデータタイプは、インデックスまたはデータへのポインタとして提供され、これらはＣＭＲ９０４内に保存されない。
【０１０６】
中央管理データウェアハウス（ＣＭＤＷ）９０６は、物理コンピュータ及びインスタンスのセットに亘る履歴パフォーマンス統計データの集中報告を可能にする。管理されているＳＱＬサーバランタイムインスタンスの各々にあるデータは、監視及び報告のためにＣＭＤＷ９０６データベースの場所に収集されかつアップロードされる。
【０１０７】
中央ファブリックサービス（ＣＦＳ）９０８は、コアＣＭＳ９０２動作に関するＡＰＩを提供する。これらの動作は、ネットワーク上のＳＱＬサービスインスタンスの発見、ＤＡＣの用意、所望の場所へのＤＡＣエレメントの配置、基準に照らしたＤＡＣのチェック、及びファブリック内のエレメント間の差異の調整を含む。
【０１０８】
インスタンス管理リポジトリ（ＩＭＲ）は、データベースインスタンスの各々内に存在するデータベースである。例えば、第１のＩＭＲ９１０は、第１のマイクロソフトＳＱＬサーバインスタンス９１２内に存在する。第２のＩＭＲ９１４は、第２のマイクロソフトＳＱＬサーバインスタンス９１６内に存在する。ＩＭＲは、ファブリックの全ての配置または変更の最初の目標である。「コレクションセット」として知られる機構は、ＩＭＲ情報をコピーし、それをＣＭＲ９０４内にアップロードしてファブリックの総合レベル（aggregate-level）の表示を提供する。
【０１０９】
インスタンス管理データウェアハウス（ＩＭＤＷ）は、データベースインスタンスの各々内に存在する管理データウェアハウスである。例えば、第１のＩＭＤＷ９１８は、第１のマイクロソフトＳＱＬサーバインスタンス９１２内に存在する。第２のＩＭＤＷ９２０は、第２のマイクロソフトＳＱＬサーバインスタンス９１６内に存在する。ＩＭＤＷは、インスタンス及びホストコンピュータに関するパフォーマンスデータ（例えば、報告及び／または監視）及び設定データの最初の目標であり、これらは、サーバファブリックの総合表示を提供するために、後にＣＭＤＷ９０６内にアップロードされる。
【０１１０】
インスタンスファブリックサーバ（ＩＦＳ）は、コア管理動作のためのＡＰＩを提供する。例えば、第１のＩＦＳ９２２は、第１のマイクロソフトＳＱＬサーバインスタンス９１２内に存在する。第２のＩＦＳ９２４は、第２のマイクロソフトＳＱＬサーバインスタンス９１６内に存在する。これらの動作は、ローカルインスタンスにおけるＤＡＣインスタンスの有効化及びインストール、インストール動向（install drift）発見、及び調整操作の提供を含む。ＩＦＳは、インスタンス及びＤＡＣのパフォーマンスを評価して、ＣＭＳ９０２から送信される動作を実行する。
【０１１１】
図１０を参照すると、エンド間管理プロセスの例示が参照符号１０００で示されている。本開示は、開発から工程への配置までのソフトウェアライフサイクル全体に亘るデータベースアプリケーションの管理のためのツール及び基礎構造を提供する。このセクションにおいて、本開示のいくつかの標準のワークフローは、コアデザイン法則の理解をもたらすために、以前のセクションにおいて説明された重要なアーキテクチャのコンポーネントに亘って実行される。
【０１１２】
１００２において、システムがインストールされてファブリックが設定される。１００４において、ＤＡＣが現在の配置から生成されて、ファブリック内に取り込まれる。１００６において、ファブリックの使用が監視されて予測される。この監視及び予測に基づいて、ファブリックリソースが調整されてもよい。例えば、１００８において、ファブリックリソースが管理される。１０１０において、ファブリックエレメントが移動させられる。
【０１１３】
図１１を参照すると、インストールプロセスの例が示されている。インストールパッケージは、３つのコンポーネントからなっている。すなわち、ツール拡張部、ファブリックサービス、及び管理リポジトリスキーマである。ツール拡張部は、マイクロソフトビジュアルスタジオまたはマイクロソフトＳＱＬサーバマネジメントスタジオに適用され、追加のツールに関しても拡張され得る。ファブリックサービス及び管理リポジトリスキーマは、中央管理サーバ及び管理されているインスタンス内にインストールされる。
【０１１４】
１１０２において、インストールパッケージが取得される。１１０４において、ツール拡張部（例えば、マイクロソフトビジュアルスタジオ及びマイクロソフトＳＱＬサーバマネジメントスタジオに関する）がインストールされる。１１０６において、中央管理サーバ（ＣＭＳ）及び中央ファブリックサービス（ＣＦＳ）がインストールされて設定される。１１０８において、中央管理リポジトリ（ＣＭＲ）及び中央管理データウェアハウス（ＣＭＤＷ）スキーマがインストールされる。１１１０において、ランタイムインスタンスの全てが発見され、ファブリック内で管理されたインスタンスになるインスタンスが発見される。１１１２において、ファブリックインストールジョブが管理されているインスタンスの各々の中に生成される。１１１４において、インスタンス管理リポジトリ（ＩＭＲ）及びインスタンス管理データウェアハウス（ＩＭＤＷ）スキーマが管理されているインスタンスの各々の中にインストールされる。１１１６において、ファブリックＩＭＤＲからＣＭＤＷへのデータアップロード機構がインストールされ、これらは１１１８で開始される。
【０１１５】
図１２を参照すると、現在の配置からＤＡＣを生成して、それをファブリック内に取り込むことの例が示されている。ＤＡＣは、ファブリック内の管理のコア論理単位である。ファブリックはＤＡＣを管理して、最適なリソース利用を保証する。ＤＡＣは、新しいＤＡＣプロジェクトを生成することによって、マイクロソフトビジュアルスタジオまたはマイクロソフトＳＱＬサーバマネジメントスタジオの中に加えられる。さらに、新しいＤＡＣは、アプリケーションデータベースオブジェクトを選択することによって、以前のデータベース配置を解析して模倣する。
【０１１６】
１２０２において、ＤＡＣが生成される。１２０４において、インスタンスオブジェクトがＤＡＣに追加される。１２０６において、インスタンス設定及びポリシがＤＡＣに追加される。１２０８において、配置設定及びポリシがＤＡＣに追加される。１２１０において、ＤＡＣ設定及びポリシがＩＭＲに対して有効化される。１２１２において、ＤＡＣがＩＭＲに保存される。１２１４において、ＤＡＣがＩＭＲからＣＭＲにコピーされる．１２１６において、任意的に、ビジュアルスタジオにおける後の開発用途のためにＤＡＣパッケージバイナリファイルが生成される。
【０１１７】
図１３を参照すると、サーバファブリックの使用の監視及び予測の例が示されている。リソース利用ポリシが、サーバファブリック及びＤＡＣに亘って設定されて評価され得、リソースの過剰使用及び不十分な使用が回避される。
【０１１８】
１３０２において、全体リソース監視ポリシがＣＭＲにおいて設定される。１３０４において、統計データがＩＭＤＷに追加される。１３０６において、データベースリソース監視ポリシがＩＭＲにおいて設定される。１３０８において、リソース使用統計データが、ＩＭＤＷにおいて監視される。代替的に、他のパフォーマンス健全性統計データ（例えば、クエリ等のＤＡＣ動作の待ち時間統計データ）が監視されかつ予測される。１３１０において、ＩＭＤＷリソース使用統計データがＣＭＤＷに出力される。１３１２において、現在のリソース使用が、ＣＭＤＷにおいて監視される。１３１４において、予測されるリソース使用がＣＭＤＷにおいて監視される。
【０１１９】
図１４を参照すると、サーバファブリックリソースの調整の例が示されている。リソース割り当てポリシは、ファブリック及びＤＡＣに亘って設定されて評価され得、ＤＡＣが利用可能なリソースがバランスされる。リソースの調整は、インプレースのリソース管理、及びボリューム間のファイルの移動もしくはサーバ間のデータベースアプリケーションの移動のようなファブリックエレメントの移動等の動作を介して達成され得る。インプレースのリソース管理の例には、１または複数のリソース管理ルールに基づいた、ＣＰＵ、メモリまたはストレージスペースリソースの、データベースインスタンスまたはＤＡＣへの再割り当てが含まれる。ファブリックリソースは、新しいリソース管理ポリシを実装することによって調整され得る。
【０１２０】
１４０２において、リソースバランスオプションが、目標ＤＡＣに関連するＤＡＣに関して予測される。１４０４において、新しいリソースポリシがＣＭＲにおいて設定される。１４０６において、新しいリソースポリシがＩＭＲの各々にコピーされる。１４０８において、リソース管理ルールがＩＭＲの各々に実装される。
【０１２１】
図１５を参照すると、ファブリックリソースの調整の他の例が示されている。図１５において、一方のファイルから他方のファイルまでの移動のプロセスが示されている。
【０１２２】
１５０２において、ＤＡＣがＣＭＲから取得される。１５０４において、潜在的な目標ボリュームが予測される。１５０６において、ＤＡＣが他のボリューム（ボリューム２）にマッピングされる。１５０８において、ＡＤＣがＣＭＲからＩＭＲにコピーされる。１５１０において、ＤＡＣがＩＭＲにおいて有効化される。１５１２において、ＤＡＣがインストールされる（データベース、コピーファイル等を変更する）。１５１４において、ＤＡＣがＣＭＲにおいて有効化される。
【０１２３】
図１６を参照すると、ファブリックリソースの調整の他の例が示されている。図１６において、一方のマイクロソフトＳＱＬサーバインスタンスから他方のマイクロソフトＳＱＬサーバインスタンスにＤＡＣを移動するプロセスが示されている。
【０１２４】
１６０２において、ＤＡＣがＣＭＲから取得される。１６０４において、潜在的な目標インスタンスが予測される。１６０６において、ＤＡＣがランタイムインスタンス２にマッピングされる。１６０８において、ＤＡＣがＣＭＲからインスタンス２ＩＭＲにコピーされる。１６１０において、ＤＡＣがインスタンス２ＩＭＲにおいて有効化される。１６１２において、ＤＡＣがインスタンス２ＩＭＲにインストールされる。１６１４において、ＤＡＣエンドポイント名がＣＭＲにおいて移動される。１６１６において、ＣＭＲにおいてＤＡＣが有効化される。
【０１２５】
本明細書に記載されている例示の実施形態は、様々な実施形態の構造の全般的な理解をもたらすことを目的としている。これらの例は、本明細書に記載されている構造又は方法を使用する装置及びシステムの全ての要素及び特徴の完全な説明として提供することは意図していない。多くの他の実施形態が、本開示を読んだ当業者に明らかである。他の実施形態が、本開示から使用され導き出されてもよく、構造的かつ論理的置換及び変更が、本開示の範囲から逸脱することなくなされ得る。従って、本開示及び図は、限定的ではなく例示的なものと見なされるべきである。
【０１２６】
当業者は、本明細書に開示されている実施形態に関連して説明されている様々な例示的論理ブロック、構成、モジュール、回路、及びアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはこれらの組み合わせとして実装されてもよいことをさらに理解するだろう。ハードウェア及びソフトウェアのこの置換可能性を明確に説明するために、様々な例示のコンポーネント、ブロック、構成、モジュール、回路またはステップが、これらの機能に関して一般的に説明されている。これらの機能がハードウェアまたはソフトウェアのどちらとして実装されるかは、システム全体に与えられている特定の用途及びデザイン制約に依存する。当業者は、特定の用途に対して様々な方法でこの説明されてきた機能を実装してもよいが、このような実装判断は、本開示の範囲からの逸脱をもたらすと解釈されるべきではない。
【０１２７】
本明細書において開示されている実施形態に関連して説明されている方法のステップは、ハードウェア内、プロセッサによって実行されるソフトウェアモジュール内、またはこれら２つの組み合わせ内に直接的に具体化されていてもよい。ソフトウェアモジュールは、ＲＡＭ（random access memory）、フラッシュメモリ、ＲＯＭ（read only memory）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている任意の他の記憶媒体等の、コンピュータ可読媒体内に存在してもよい。例示の記憶媒体はプロセッサと組み合わされ、プロセッサは記憶媒体から情報を読み込み、情報を記憶媒体に書き込むことが可能である。代替例において、記憶媒体はプロセッサに統合されているか、またはプロセッサ及び記憶媒体は、コンピューティングデバイスまたはコンピュータシステム内に個別的なコンポーネントとして存在していてもよい。
【０１２８】
特定の実施形態が本明細書内で説明及び記載されてきたが、同一または同様の目的を達成するためにデザインされる後日の任意の構成が、示されている特定の実施形態に置き換えられ得ることが理解されるべきである。この開示は、様々な実施形態の任意の及び全ての後日の適合又は変更を包含することを目的としている。
【０１２９】
本開示の要約は、本願の特許請求の範囲の請求項の範囲のまたは意味を解釈または限定するために使用されないという理解と共にもたらされている。さらに、上述の発明を実施するための形態において、様々な特徴が、開示の簡素化のためにグループ化されるかまたは単一の実施形態において説明されていてもよい。本開示は、特許請求の範囲に記載されている実施形態が、これらの特許請求の範囲に明示的に列挙されているよりも多くの特徴を要求する意図を反映しているとして解釈されるべきではない。むしろ、特許請求の範囲を検討する場合、本発明は、いくつかの開示された実施形態の特徴の全てよりも少ない特徴を対称にしていてもよい。
【０１３０】
開示された実施形態の上記説明は、本技術分野の当業者が、開示された実施形態を構成または使用することを可能にするために提供されている。これらの実施形態への様々な変更が本技術分野の当業者に容易に理解され、本明細書内に定義されている一般的な原理は、本開示の範囲を逸脱することなく他の実施形態に適用されてもよい。従って、本開示は、本明細書に示されている実施形態に限定されるものではなく、本開示には、添付の特許請求の範囲によって定義される原理及び新規な特徴と一致する可能な限り最も広い範囲が認められる。
【図１】
0005711130.tif 000002
【図２】
0005711130.tif 000003
【図３】
0005711130.tif 000004
【図４】
0005711130.tif 000005
【図５】
0005711130.tif 000006
【図６】
0005711130.tif 000007
【図７】
0005711130.tif 000008
【図８】
0005711130.tif 000009
【図９】
0005711130.tif 000010
【図１０】
0005711130.tif 000011
【図１１】
0005711130.tif 000012
【図１２】
0005711130.tif 000013
【図１３】
0005711130.tif 000014
【図１４】
0005711130.tif 000015
【図１５】
0005711130.tif 000016
【図１６】
0005711130.tif 000017