(57)【特許請求の範囲】
【請求項１】
マルチテナントデータベース内の共有データへのアクセスを提供するためのシステムであって、
第１のアカウントが前記第１のアカウントのデータベースオブジェクトへのアクセスを第２のアカウントに権限付与していると判定するための手段と、
前記第１のアカウントに対応する前記データベースオブジェクトにアクセスするためのリクエストを前記第２のアカウントから受信するための手段と、
前記第２のアカウントに対応する仮想ウェアハウスを使用して前記リクエストを処理するための手段であって、ここで、前記仮想ウェアハウスは、前記リクエストへの応答を生成するために、前記第１のアカウントに対応するストレージレイヤ内のデータにアクセスするように構成された１つ以上のコンピュートノードのセットを含む、前記手段と
を含む、システム。
【請求項２】
前記第１のアカウントが第２のアカウントにアクセスを権限付与していると判定するための前記手段は、前記第２のアカウントが有する前記第１のアカウントのリストが前記第１のアカウント内の共有オブジェクト又は共有ロールへの権利を有していると判定するための手段であって、ここで、前記共有オブジェクト又は共有ロールは、前記第１のアカウントの前記データベースオブジェクトへのアクセス権を有する、前記手段を含む、請求項１に記載のシステム。
【請求項３】
前記リクエストを受信するための前記手段は、前記第２のアカウント内のエイリアスオブジェクトに向けられたリクエストを受信するための手段であって、ここで、前記エイリアスオブジェクトは前記データベースオブジェクトとリンクされる、前記手段を含む、請求項１に記載のシステム。
【請求項４】
前記リクエストを処理するための前記手段は、前記第１のアカウントのデータオブジェクト内のデータを使用して前記リクエストを処理するための手段を含む、請求項１に記載のシステム。
【請求項５】
１つ以上のプロセッサにより実行される場合に、
共有ロールを含む第１のアカウント内に共有オブジェクトを生成することと、
前記共有ロールと１つ以上のアクセス権を関連付けることであって、ここで、前記１つ以上のアクセス権は、前記第１のアカウント内の如何なるオブジェクトが前記共有オブジェクトに基づいてアクセス可能であるかを指し示すことと、
前記第１のアカウント内の前記共有ロール又は共有オブジェクトへのクロスアカウントアクセス権を第２のアカウントに権限付与することと、
前記クロスアカウントアクセス権が権限付与された前記第１のアカウントのデータ又はサービスにアクセスするためのリクエストを前記第２のアカウントから受信することと、
前記第１のアカウントの前記データ又はサービスに基づいて前記第２のアカウントに応答を提供することと
を前記１つ以上のプロセッサにさせる命令を格納するコンピュータ可読ストレージ媒体。
【請求項６】
前記１つ以上のオブジェクトは、データベースオブジェクト、スキーマ、テーブル、シーケンス、又はファンクションの内の１つ以上を含む、請求項５に記載のコンピュータ可読媒体。
【請求項７】
前記命令は、前記１つ以上のプロセッサに、前記共有ロールが権利を有するオブジェクトのリストを格納することによって、前記共有ロールと前記１つ以上のアクセス権を関連付けさせる、請求項５に記載のコンピュータ可読媒体。
【請求項８】
前記命令は、前記１つ以上のプロセッサに、前記第１のアカウント内の前記共有ロール又は共有オブジェクトへの権利を有するアカウントのリスト内の前記第２のアカウントの指標を格納することによって、前記１つ以上のアクセス権を権限付与させる、請求項５に記載のコンピュータ可読媒体。
【請求項９】
前記命令は、前記１つ以上のプロセッサに、前記第２のアカウント内のエイリアスオブジェクトに向けられたリクエストを受信することによって前記リクエストを受信させる、請求項５に記載のコンピュータ可読媒体。
【請求項１０】
前記命令は、前記１つ以上のプロセッサに、前記第２のアカウントの仮想ウェアハウスを使用して前記リクエストを処理することによって前記応答を提供させる、請求項５に記載のコンピュータ可読媒体。
【請求項１１】
前記命令は、前記１つ以上のプロセッサに、前記第２のアカウント内に複製のテーブル又はその他のデータソースを創出することなく前記リクエストを処理することによって、前記応答を提供させる、請求項５に記載のコンピュータ可読媒体。
【請求項１２】
前記命令は、前記１つ以上のプロセッサに、前記第１のアカウントのリクエストされた前記データ又はサービスへのアクセス権を前記第２のアカウントが有すると判定させる、請求項５に記載のコンピュータ可読媒体。
【請求項１３】
前記命令は、前記１つ以上のプロセッサに、前記共有オブジェクト又は共有ロールから前記第１のアカウントへの権限が存在すると判定することによって、前記第２のアカウントがアクセス権を有すると判定させる、請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記命令は、前記１つ以上のプロセッサに、前記第２のアカウント内のエイリアスオブジェクトと前記第１のアカウントの前記データ又はサービスとの間にリンクが存在すると判定することによって、前記第２のアカウントがアクセス権を有すると判定させる、請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
マルチテナントデータベースシステムであって、
１つ以上の共有リソースへのクロスアカウントアクセス権が共有者アカウントによって対象アカウントに権限付与されていると判定するように構成されたクロスアカウント権コンポーネントと、
前記共有者アカウント内の前記１つ以上の共有リソースの内の共有リソースに対応するエイリアスオブジェクトを前記対象アカウント内に創出するように構成されたエイリアスコンポーネントと、
前記エイリアスオブジェクトに向けられたリクエストを使用して、前記対象アカウントが前記共有リソースにアクセスすることを可能にするように構成されたアクセスコンポーネントと
を含む、システム。
【請求項１６】
前記エイリアスコンポーネントは、前記共有者アカウント内の前記共有リソースに前記対象アカウント内の前記エイリアスオブジェクトをリンクするように構成される、請求項１５に記載のシステム。
【請求項１７】
前記エイリアスコンポーネントは、前記エイリアスオブジェクトへのアクセス権を前記対象アカウント内のロールに権限付与するように更に構成される、請求項１５に記載のシステム。
【請求項１８】
前記１つ以上の共有リソースは、前記共有者アカウントのデータベースオブジェクト、スキーマ、テーブル、シーケンス、又はファンクションの内の１つ以上を含む、請求項１５に記載のシステム。
【請求項１９】
前記アクセスコンポーネントは、前記共有者アカウント内の共有ロール又は共有オブジェクトへの権利を有するアカウントのリストに基づいて、クロスアカウントアクセス権が権限付与されていると判定することに応答して、前記対象アカウントが前記共有リソースにアクセスすることを可能にするように構成され、ここで、前記共有ロール又は共有オブジェクトは、前記１つ以上の共有リソースへの権利を有する、請求項１５に記載のシステム。
【請求項２０】
前記アクセスコンポーネントは、前記共有者アカウント内の共有オブジェクト又は共有ロールから前記対象アカウントへの権限の存在に基づいてクロスアカウントアクセス権が権限付与されていると判定することに応答して、前記対象アカウントが前記共有リソースにアクセスすることを可能にするように構成される、請求項１５に記載のシステム。
【請求項２１】
前記アクセスコンポーネントは、前記対象アカウント内のエイリアスオブジェクトと前記共有者アカウントのデータ又はサービスとの間にリンクが存在することに基づいてクロスアカウントアクセス権が権限付与されていると判定するように構成される、請求項１５に記載のシステム。
【請求項２２】
前記アクセスコンポーネントは、前記対象者アカウント内にデータリソースのコピーを創出することなく、前記対象アカウントが前記共有者アカウント内の前記共有リソースにアクセスすることを可能にする、請求項１５に記載のシステム。
【請求項２３】
前記共有者アカウントの仮想ウェアハウスを使用して、前記リクエストへの応答を提供するように構成された処理コンポーネントを更に含む、請求項１５に記載のシステム。
【請求項２４】
前記処理コンポーネントは、前記共有者アカウント内のオリジナルデータを使用して前記リクエストを処理することによってリクエストへの応答を提供するように構成される、請求項２３に記載のシステム。
【請求項２５】
マルチテナントデータベース内の共有データへのアクセスを提供するための方法であって、
第１のアカウントが前記第１のアカウントのデータベースオブジェクトへのアクセスを第２のアカウントに権限付与していると判定することと、
前記第１のアカウントに対応する前記データベースオブジェクトにアクセスするためのリクエストを前記第２のアカウントから受信することと、
前記第２のアカウントに対応する仮想ウェアハウスを使用して前記リクエストを処理することであって、ここで、前記仮想ウェアハウスは、前記リクエストへの応答を生成するために、前記第１のアカウントに対応するストレージレイヤ内のデータにアクセスするように構成された１つ以上のコンピュートノードのセットを含むことと
を含む、方法。
【請求項２６】
前記第１のアカウントが第２のアカウントにアクセスを権限付与していると判定することは、前記第２のアカウントが有する前記第１のアカウントのリストが前記第１のアカウント内の共有オブジェクト又は共有ロールへの権利を有していると判定することであって、ここで、前記共有オブジェクト又は共有ロールは、前記第１のアカウントの前記データベースオブジェクトへのアクセス権を有することを含む、請求項２５に記載の方法。
【請求項２７】
前記リクエストを受信することは、前記第２のアカウント内のエイリアスオブジェクトに向けられたリクエストを受信することであって、ここで、前記エイリアスオブジェクトは前記データベースオブジェクトとリンクされることを含む、請求項２５に記載の方法。
【請求項２８】
前記応答を提供することは、前記第１のアカウントのデータオブジェクト内のデータを使用して前記リクエストを処理することを含む、請求項２５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データベースに関し、より具体的には、マルチテナントデータベースシステムにおけるデータ共有に関する。
【背景技術】
【０００２】
データベースは、コンピューティングアプリケーションでのデータの格納及びアクセスのために広く使用される。データベースは、クエリを使用して読み出し、変更、又は削除し得るデータを含む又は参照する１つ以上のテーブルを含み得る。データベースは、個人情報又はその他のセンシティブな情報を格納及び／又は該情報にアクセスするのに使用され得る。データベースのデータのセキュアな格納及びアクセスは、無認証のアクセスを防止するための暗号化形式でデータを暗号化及び／又は格納することによって提供され得る。幾つかの場合、データ共有は、データのセットに対するクエリを他の関係者に実施させることが望ましいことがある。
【図面の簡単な説明】
【０００３】
本開示の非限定的で非包括的な実装は、後続の図を参照しながら説明され、ここで、同様の参照番号は、別段の定めがない限り、様々な視点全体を通して同様又は類似の部分を指す。本開示の利点は、後続の説明及び添付の図面に関してより良く理解されてくるであろう。
【０００４】
【図１】一実施形態に従ったマルチテナントデータベース内のアカウントを説明する概略的ブロック図である。
【図２】一実施形態に従ったデータベースのサービスを提供し、該サービスにアクセスするためのシステムを説明する概略図である。
【図３】一実施形態に従ったストレージリソースとコンピューティングリソースとの分離を有するマルチテナントデータベースを説明する概略図である。
【図４】一実施形態に従ったオブジェクト階層を説明する概略的ブロック図である。
【図５】一実施形態に従ったロールベースのアクセスを説明する概略図である。
【図６】一実施形態に従ったロール間の使用権限を説明する概略図である。
【図７】一実施形態に従った共有オブジェクトを説明する概略図である。
【図８】一実施形態に従ったクロスアカウント権限を説明する概略図である。
【図９】一実施形態に従った共有コンポーネントのコンポーネントを説明する概略的ブロック図である。
【図１０】一実施形態に従ったアカウント間でデータベースのデータを共有するための方法を説明する概略的フローチャート図である。
【図１１】本明細書に開示される１つ以上の実施形態と一致する例示的コンピューティングデバイス又はシステムを描写するブロック図である。
【発明を実施するための形態】
【０００５】
マルチテナントデータベース又はマルチテナントデータウェアハウスは、一度に複数の別個の顧客アカウントをサポートする。例として、図１は、多くの異なる顧客アカウントＡ１、Ａ２、Ａ３、Ａｎ等をサポートするマルチテナントデータベース又はデータウェアハウスを説明する概略的ブロック図である。顧客アカウントは、異なるアクセスクレデンシャル、異なるデータ格納位置（ＡｍａｚｏｎウェブサービスＳ３バケット等）、及び異なるアカウントレベルの暗号化キーに接続するための異なるユニフォームリソースロケータ（ＵＲＬ）を含む複数のセキュリティ制御によって分離され得る。したがって、各顧客は、顧客自身のデータを閲覧、読み出し、及び／又は書き込むことを可能にのみし得る。
意図的に、顧客が別の顧客のデータを閲覧、読み出し、又は書き込むことは不可能であり得る。幾つかの場合、顧客アカウントの厳格な分離は、マルチテナントデータウェアハウス又はデータベースシステムの重要要素である。
【０００６】
出願人は、クロスアカウントのデータ共有を可能にすることが時には望ましいことがあり得ることを認識している。しかしながら、現在のマルチテナントデータベースシステムは、瞬時でゼロコピーの容易に制御可能な仕方では、異なる顧客アカウント間でのデータの共有を何ら可能にしない。Ａｍａｚｏｎ  Ｒｅｄｓｈｉｆｔ（登録商標）等の既存のオンラインデータウェアハウスは、物理的なデータのコピーなしに、データ共有をサポートしない。Ｏｒａｃｌｅデータベースサーバ（登録商標）又はＭｉｃｒｏｓｏｆｔ  ＳＱＬサーバ（登録商標）等のオンプレミスなデータベースシステムは、個別のデータベースのインストールの物理的分散のために、定義上はオンラインのデータ共有をサポートしない。
【０００７】
前述に基づいて、出願人は、マルチテナントオンラインデータベースシステムのためのシステム、方法、及びデバイスを発展させている。幾つかの実施形態は、異なる顧客アカウント間のデータの共有を可能にし、データをコピーする必要なく瞬時にデータにアクセス可能にし得る。幾つかの実施形態は、顧客が共有を望むデータへのアクセスを可能にしつつ、所望のデータの分離を維持するためのきめ細やかな制御を使用して、データへのアクセスを提供する。
【０００８】
一実施形態に従えば、コンピュータ実装の方法は、共有ロールを含む第１のアカウント内に共有オブジェクトを生成することを含む。方法は、１つ以上のアクセス権を共有ロールと関連付けることを含み、ここで、１つ以上のアクセス権は、第１のアカウント内の如何なるオブジェクトが共有オブジェクトに基づいてアクセス可能であるかを指し示す。方法は、第１のアカウント内の共有ロール又は共有オブジェクトへのクロスアカウントアクセス権を第２のアカウントに権限付与することを含む。方法は、第１のアカウントのデータ又はサービスにアクセスするためのリクエストを第２のアカウントから受信することと、第１のアカウントのデータ又はサービスに基づいて、第２のアカウントに応答を提供することを更に含む。
【０００９】
一実施形態に従えば、マルチテナントデータベースシステムは、クロスアカウント権コンポーネントと、エイリアスコンポーネントと、アクセスコンポーネントとを含む。クロスアカウント権コンポーネントは、１つ以上の共有リソースへのクロスアカウントアクセス権が共有者アカウントによって対象アカウントに権限付与されていると判定するように構成される。エイリアスコンポーネントは、共有者アカウント内の１つ以上の共有リソースの内の共有リソースに対応するエイリアスオブジェクトを対象アカウント内に創出するように構成される。アクセスコンポーネントは、エイリアスオブジェクトに向けられたリクエストを使用して、対象アカウントが共有リソースにアクセスすることを可能にするように構成される。
【００１０】
別の実施形態に従えば、マルチテナントデータベース内の共有データへのアクセスを提供するための方法は、第１のアカウントが第１のアカウントのデータベースオブジェクトに第２のアカウントのアクセスを権限付与していると判定することを含む。方法は、第１のアカウントに対応するデータオブジェクトにアクセスするためのリクエストを第２のアカウントから受信することを含む。方法は、第１のアカウントに対応する仮想ウェアハウスを使用して該リクエストを処理することを含む。仮想ウェアハウスは、該リクエストへの応答を生成するために、第１のアカウントに対応するストレージレイヤ内のデータにアクセスするように構成された１つ以上のコンピュートノードのセットを含む。
【００１１】
本明細書に開示される実施形態は、オンラインデータベース及び／又はオンラインデータウェアハウス内の異なる顧客アカウント間でデータを共有するために使用され得る技術を提供する。一実施形態では、データ共有は、データをコピーする必要なく、制御された瞬時の仕方で、ある顧客アカウントでのユーザが別の顧客アカウント内のデータにアクセスすることを可能にするクロスアカウントロール権限を使用して可能である。例えば、外来アカウントが該アカウント上のクエリ又はその他の処理をそれらの権利（例えば、読み出し、書き込み等）内で実施することを可能にしつつ、共有データは共有アカウント内に残存し得る。
【００１２】
本明細書に開示される実施形態は、様々なアプリケーションに対して使用され得る。一実施形態では、データベースの所有者は、チュートリアル及び／又は紹介のための新たな顧客アカウントでサンプルデータセットを共有し得る。一実施形態では、デモデータセットは、あるアカウントから、データウェアハウス又はその他のサービスを潜在的な顧客にデモするためのデモアカウントで共有され得る。一実施形態では、データベースプロバイダ又はホストにより収集された使用データは、顧客アカウントで容易に共有され得る。一実施形態では、顧客アカウントがそれら自体にデータを取り込まなくてもよいように、公表されているデータセットは、中心的なアカウントから顧客アカウントで共有し得る。一実施形態では、顧客は、データを物理的にコピー又は送信する必要なく、共有リソースへのより容易なアクセスのためにその他の顧客とデータを共有することが可能である。一実施形態では、顧客は、サポート問題の調査のために、管理者とデータを容易に共有することが可能である。一実施形態に従えば、顧客又はその他のアカウント保有者／所有者は、彼らのデータについての情報を、購入／寄付のためのマーケットプレイス上にリスト化し得る。例えば、幾つかの実施形態は、マルチテナントデータベース又はデータウェアハウスの顧客アカウント間でデータセットを購買及び販売するためのマーケットプレイスを提供する。
【００１３】
本開示の実施形態と一致するシステム及び方法の詳細な説明を以下に提供する。幾つかの実施形態が説明されるが、この開示は何れか１つの実施形態に限定されないが、代わりに、多数の代替物、変更物、及び均等物を包含することを理解すべきである。また、本明細書に開示される実施形態の完全な理解を提供するために、多くの具体的詳細が後続の説明に記載されるが、幾つかの実施形態は、これらの詳細の幾つか又は全てなしに実践され得る。更に、明確にする目的のために、関連技術で周知のある技術項目は、開示を不必要に不明確にするのをさけるために詳細には説明されていない。
【００１４】
図２は、データベースのデータ又はサービスを提供及びアクセスするためのシステム２００の概略図である。システム２００は、データベースシステム２０２、１つ以上のサーバ２０４、及びクライアントコンピューティングシステム２０６を含む。データベースシステム２０２、１つ以上のサーバ２０４、及び／又はクライアントコンピューティングシステム２０６は、インターネット等のネットワーク２０８を越えて相互に通信し得る。例えば、１つ以上のサーバ２０４及び／又はクライアントコンピューティングシステム２０６は、データベースに問い合わせ、及び／又はデータベースからデータを受信するために、ネットワーク２０８を越えてデータベースシステム２０２にアクセスし得る。データベースからのデータは、任意のタイプのコンピューティングアプリケーションのための１つ以上のサーバ２０４又はクライアントコンピューティングシステム２０６により使用され得る。一実施形態では、データベースシステム２０２は、複数の異なるアカウントに対するデータをホストするマルチテナントデータベースシステムである。
【００１５】
データベースシステム２０２は、共有コンポーネント２１０及びストレージ２１２を含む。ストレージ２１２は、データを格納するためのストレージ媒体を含み得る。例えば、ストレージ２１２は、データベースのテーブル、スキーマ、暗号化キー、データファイル
、又は任意のその他のデータを格納するための１つ以上のストレージデバイスを含み得る。共有コンポーネント２１０は、データ又はサービスのクロスアカウントな共有を可能にするためのハードウェア及び／又はソフトウェアを含み得る。例えば、共有コンポーネント２１０は、共有データにアクセスする又はデータを共有するために、リモートデバイスから受信されたクエリ／命令を処理し得る。クエリ／命令は、サーバ２０４又はクライアントコンピューティングシステム１０６から受信されてもよい。一実施形態では、共有コンポーネント２１０は、共有アカウントの外でテーブル又はデータ等の複製物を創出することなく、アカウント間でデータを共有することを可能にするように構成される。例えば、共有コンポーネントは、外来アカウントにより提供された任意のクエリ又は命令を実施するために、共有アカウントに割り当てられたコンピュータリソースを可能にし得る。
【００１６】
一実施形態では、データベースシステム１００のためのストレージリソース及びコンピュートリソースは、論理的に及び／又は物理的に分離され得る。一実施形態では、ストレージは、全てのアカウントに渡って共通の共有リソースである。コンピュートリソースは、仮想ウェアハウスとして、アカウント毎に独立してセットアップされ得る。一実施形態では、仮想ウェアハウスは、ストレージレイヤ内のデータにアクセスし、クエリの結果を計算するコンピュートノードのセットである。コンピュートノード又はリソースをストレージから分離することは、各レイヤを独立してスケーリングすることを可能にする。ストレージとコンピュートとの分離はまた、他のアカウントでの計算に影響を与える、あるアカウントでの計算なしに、共有データが異なるアカウントによって独立に処理され得ることを可能にする。すなわち、少なくとも幾つかの実施形態では、共有データ上でクエリを実行する場合に、コンピューティングリソース間に何ら競合がない。
【００１７】
図３は、ストレージリソースとコンピューティングリソースとの分離を説明するマルチテナントデータベース３００の概略的ブロック図である。例えば、マルチテナントデータベース３００は、複数の異なるアカウント（Ａ１、Ａ２、Ａ３、〜Ａｎ）がホストされるデータウェアハウスであり得る。図３では、アカウントＡ１は、実行中の３つの仮想ウェアハウスを有し、アカウントＡ２は、実行中の１つの仮想ウェアハウスを有し、アカウントＡ３は、実行中の仮想ウェアハウスを何ら有しない。一実施形態では、３つの仮想ウェアハウスの全ては、仮想ウェアハウスのコンピュートノードから分離されたストレージレイヤへのアクセスを有する。一実施形態では、仮想ウェアハウスは、アカウントに対する現在のワークロードに基づいて、動的にプロビジョニング又は除去され得る。
【００１８】
一実施形態では、データベースシステム３００は、アカウント内のオブジェクト階層を使用する。例えば、各顧客アカウントはオブジェクト階層を含み得る。オブジェクト階層は、データベース内でしばしばルーティングされる。例えば、データベースは、スキーマを含み、スキーマは、続いて、テーブル、ビュー、シーケンス、ファイルフォーマット、及びファンクション等のオブジェクトを含み得る。これらのオブジェクトの各々は特定の目的に適い、テーブルは、リレーショナルデータ又は半構造化データを格納し、ビューは、格納されたデータに渡る論理的抽象化を定義し、シーケンスは、増加し続ける数を生成する手段を提供し、ファイルフォーマットは、摂取されたデータファイルをパースするための方法を定義し、ファンクションは、ユーザ定義の実行プロシージャを保持する。
【００１９】
図４は、顧客アカウント内のオブジェクト階層を説明する概略的ブロック図である。具体的には、アカウントは、データベース内で参照され得るオブジェクトの階層を含み得る。例えば、顧客アカウントＡ１は、２つのデータベースオブジェクトＤ１及びＤ２を含む。データベースオブジェクトＤ１は、スキーマオブジェクトＳ１を含み、スキーマオブジェクトＳ１は、続いて、テーブルオブジェクトＴ１及びビューオブジェクトＶ１を含む。データベースオブジェクトＤ２は、スキーマオブジェクトＳ２を含み、スキーマオブジェクトＳ２は、ファンクションオブジェクトＦ２、シーケンスオブジェクトＱ２、及びテー
ブルオブジェクトＴ２を含む。顧客アカウントＡ２は、スキーマオブジェクトＳ３及びテーブルオブジェクトＴ３を有するデータベースオブジェクトＤ３を含む。オブジェクト階層は、アカウント又はデータベースシステムのオブジェクト、データ、ファンクション、又はその他の情報若しくはサービスがどのようにアクセス又は参照されるかを制御し得る。
【００２０】
一実施形態では、データベースシステムは、顧客アカウント内のオブジェクトへのアクセスを支配するためのロールベースのアクセス制御を実装する。一般的に、ロールベースのアクセス制御は、２つの基本原理、ロール及び権限（grant）を含む。一実施形態では
、ロールは、ユーザに割り当てられた顧客アカウント内の特定のオブジェクトである。ロールとデータベースオブジェクト間の権限は、これらのオブジェクト上にロールが如何なる特権を有するかを定義する。例えば、データベースについての使用権限を有するロールは、コマンド“ｓｈｏｗ  ｄａｔａｂａｓｅｓ”を実行する場合にこのデータベースを“閲覧”し得、テーブルについての選択権限を有するロールは、このテーブルから読み出し得るが、テーブルに書き込み得ない。ロールは、テーブルに書き込むことができるようにテーブルについての変更権限を有する必要があるであろう。
【００２１】
図５は、顧客アカウント内のオブジェクトへのロールベースのアクセスを説明する概略的ブロック図である。顧客アカウントＡ１はロールＲ１を含み、ロールＲ１は、オブジェクト階層内の全てのオブジェクトへの権限を有する。これらの権限がＲ１とＤ１、Ｄ２、Ｓ１、Ｓ２との間の使用権限と、Ｒ１とＴ１、Ｖ１、Ｆ２、Ｑ２、Ｔ２との間の選択権限とであると仮定すると、アクティブにされたロールＲ１を有するユーザは、全てのオブジェクトを閲覧し得、全てのテーブル、ビュー、及びシーケンスからデータを読み出し得、アカウントＡ１内のファンクションＦ２を実行し得る。顧客アカウントＡ２はロールＲ３を含み、ロールＲ３は、オブジェクト階層内の全てのオブジェクトへの権限を有する。これらの権限がＲ３とＤ３、Ｓ３との間の使用権限と、Ｒ３とＴ３との間の選択権限である仮定すると、アクティブにされたＲ３を有するユーザは、全てのオブジェクトを閲覧し得、アカウントＡ２内の全てのテーブル、ビュー、及びシーケンスからデータを読み出し得る。
【００２２】
図６は、ロール間の使用権限を説明する。ロールベースのアクセス制御を用いて、あるロールから別のロールへの使用を権限付与することもできる。別のロールへの使用権限を有するロールは、該別のロールの全てのアクセス特権を“継承”する。例えば、ロールＲ２では、ロールＲ１についての使用権限を有する。ロールＲ２は全ての権限をＲ１から承継するので、アクティブにされたロールＲ２を有する（例えば、対応する認証の細目を有する）ユーザは、全てのオブジェクトを閲覧し、該オブジェクトから読み出し得る。
【００２３】
一実施形態に従えば、使用権限は、異なるアカウントに渡って権限付与される。データを共有するアカウントは、“共有者アカウント”と本明細書では称され得、データが共有されるアカウントは、“対象アカウント”と本明細書では称され得る。一実施形態では、本明細書に開示される実施形態は、データの瞬時でゼロコピーの容易に制御可能なクロスアカウントの共有を可能にする。一実施形態では、別のアカウントを有するデータを共有するために、共有者アカウントは、共有オブジェクトを生成し得る。共有オブジェクト内で、ロールが創出され得、共有者アカウントのユーザは、アクセス権又は権限がロール、及び／又は該ロールの下で権利が権限付与されるであろう外来（又は対象アカウント）を入手可能であることを指し示し得る。対象アカウントは、対象アカウントが権利又はアクセスを権限付与されている他のアカウント内の共有オブジェクト又はロールをその後識別し得る。一実施形態では、共有者アカウント内の共有オブジェクトは、エイリアスオブジェクト及びクロスアカウントのロール権限を使用して、対象アカウントにインポートされ得る。
【００２４】
一実施形態では、データ共有は、共有されるデータを所有するアカウントによって開始される。例えば、共有者アカウントは、新たなタイプのオブジェクト、共有オブジェクトを創出する。共有オブジェクトは、共有者アカウント内で識別されるユニークなネームを有する。例えば、ネームは、複数のアカウントに渡る必要はないが、１つのアカウント内でユニークである必要があり得る。共有オブジェクトは、共有者アカウント内のそれらのネームを介してそれらを参照することによって、創出、変更、及び削除され得る。
【００２５】
一実施形態では、各共有オブジェクトは単一のロールを含む。このロールとオブジェクトとの間の権限は、如何なるオブジェクトが共有されているかと、これらのオブジェクトが如何なる特権で共有されるかとを定義する。ロール及び権限は、ロールベースのアクセス制御の実装において、任意のその他のロール及び権限システムと同様であり得る。共有オブジェクト内のロールに付着した権限のセットを変更することによって、（ロールに権限を付加することにより）より多くのオブジェクトが共有され得、（ロールから権限を取り消すことにより）より少ないオブジェクトが共有され得、又は（例えば、以前に読み出しのみなされた共有テーブルオブジェクトへの書き込みアクセスを可能にするために、権限のタイプを変更することにより）異なる特権でオブジェクトが共有され得る。
【００２６】
一実施形態では、共有オブジェクトはまた、他の顧客アカウントへの参照のリストを含む。特に共有オブジェクトにあるこれらのアカウントのみがこの共有オブジェクトからルックアップ、アクセス、及び／又はインポートすることを可能にし得る。他の顧客アカウントの参照のリストを変更することによって、共有オブジェクトは、より多くのアカウントにアクセス可能にし得、又はより少ないアカウントに制限し得る。
【００２７】
図７は、共有オブジェクトＳＨ１を説明する概略的ブロック図である。顧客アカウントＡ１は共有オブジェクトＳＨ１を含む。共有オブジェクトＳＨ１は、顧客アカウントＡ１内にユニークなネーム“ＳＨ１”を有する。共有オブジェクトＳＨ１は、データベースＤ２、スキーマＳ２、及びテーブルＴ２への権限を有するロールＲ４を含む。データベースＤ２及びスキーマＳ２についての権限は使用権限であり得、テーブルＴ２についての権限は選択権限であり得る。この場合、データベースＤ２内のスキーマＳ２内のテーブルＴ２は、読み出しのみが共有されるであろう。共有オブジェクトＳＨ１は、アカウントＡ２を含むその他の顧客アカウントへの参照のリストを含む。
【００２８】
共有オブジェクトが創出された後、共有オブジェクトは、共有オブジェクト内でリスト化された対象アカウントによってインポート又は参照され得る。例えば、共有者アカウントから共有オブジェクトをインポートすることは、他の顧客アカウントから可能である。対象アカウントは、インポートするために全ての入手可能な共有オブジェクトをリスト化するためのコマンドを実行し得る。対象アカウントが含まれる参照を用いて共有オブジェクトが創出された場合にのみ、対象アカウントは共有オブジェクトをリスト化し得、続いてそれをインポートし得る。一実施形態では、別のアカウント内の共有オブジェクトへの参照は、常にアカウント名によって適格化される。例えば、対象アカウントＡ２は、例示的な適格化名“Ａ１．ＳＨ１”を用いて共有者アカウントＡ１内の共有ＳＨ１を参照するであろう。
【００２９】
一実施形態では、プロセス、又は共有オブジェクトをインポートすることは、対象アカウント内にエイリアスオブジェクトを創出することと、エイリアスオブジェクトを、オブジェクト階層内の、共有者アカウント内の最上の共有オブジェクトとリンクすることと、対象アカウント内のロールの使用特権をエイリアスオブジェクトに権限付与することと、対象アカウントのロールの使用特権を、共有オブジェクトに含まれるロールに権限付与することとを含み得る。
【００３０】
一実施形態では、共有オブジェクト又はデータをインポートする対象アカウントはエイリアスオブジェクトを創出する。エイリアスオブジェクトは、顧客アカウント内の通常オブジェクトと類似する。エイリアスオブジェクトは、それが識別されるそれ自体のユニークなネームを有する。エイリアスオブジェクトは、共有される各オブジェクト階層内の最上のオブジェクトにリンクされ得る。複数のオブジェクト階層が共有される場合、複数のエイリアスオブジェクトが対象アカウント内に創出され得る。エイリアスオブジェクトが使用される（例えば、エイリアスオブジェクトからの読み出し、エイリアスオブジェクトへの書き込み）場合には常に、エイリアスオブジェクトは、それがリンクされる共有者アカウント内の通常オブジェクトによって内部で置換される。この方法では、エイリアスオブジェクトは、通常オブジェクトのプロキシオブジェクトにすぎず、複製オブジェクトではない。したがって、エイリアスオブジェクトに対して読み出す又は書き込む場合、該動作は、エイリアスがリンクするオリジナルオブジェクトに影響を与える。類似又は通常のオブジェクトは、エイリアスオブジェクトが創出される場合に、ユーザのアクティブにされたロールに権限付与される。
【００３１】
エイリアスオブジェクトに加えて、対象アカウント内のロールと共有オブジェクトに含まれるロールとの間の権限が創出される。これは、複数の顧客アカウントに渡るロールからロールへの使用権限である。ロールベースのアクセス制御は、対象アカウントでのユーザが共有者アカウント内のオブジェクトにアクセスすることを可能にする。
【００３２】
図８は、異なるアカウント間の論理的な権限とリンクを説明する概略的ブロック図である。データベースのエイリアスオブジェクトＤ５はアカウントＡ２内で創出される。データベースのエイリアスＤ５は、リンクＬ１を介してデータベースＤ２を参照する。ロールＲ３は、データベースＤ５についての使用権限Ｇ１を有する。ロールＲ３は、顧客アカウントＡ１内のロールＲ４への第２の使用権限Ｇ２を有する。権限Ｇ２は、アカウントＡ１とＡ２との間のクロスアカウント権限である。一実施形態では、ロールベースのアクセス制御は、アクティブにされたロールＲ３を有するアカウントＡ２でのユーザがアカウントＡ１内のデータにアクセスすることを可能にする。例えば、アカウントＡ２でのユーザがテーブルＴ２内のデータを読み出すことを欲した場合、ロールＲ３がロールＲ４の使用権限を有し、ロールＲ４が続いてテーブルＴ２についての選択権限を有するので、ロールベースのアクセス制御はそれを可能にする。例証として、アクティブにされたロールＲ３を有するユーザは、“Ｄ５．Ｓ２．Ｔ２”に向けられたクエリ又は選択を実行することによってＴ２にアクセスし得る。
【００３３】
対象アカウント内のロールから共有者アカウント内のロールへのオブジェクトエイリアス及びクロスアカウント権限を使用することは、対象アカウントでのユーザが共有者アカウント内の情報にアクセスすることを可能にする。この方法では、データベースシステムは、異なる顧客アカウント間でのデータベースの共有を瞬時でゼロコピーの容易に制御可能な仕方で可能にし得る。エイリアスオブジェクト及びクロスアカウント権限は、数ミリ秒で創出され得るので、共有は瞬時であり得る。プロセス中にデータが何ら複製されないので、共有はゼロコピーであり得る。例えば、全てのクエリ又は選択は、対象アカウント内に複製を創出することなく、共有者アカウント内の共有オブジェクトに直接なされ得る。共有はまた、ロールベースのアクセス制御の使用しやすい技術を利用するので、制御が容易である。また、別個なストレージとコンピュートとを有する実施形態では、共有データについてのクエリを実行する場合に、コンピューティングリソース間に何ら競合がない。したがって、異なる顧客アカウント内の異なる仮想ウェアハウスは、共有データを独立して処理し得る。例えば、第１のアカウントに対する第１の仮想ウェアハウスは、共有者アカウントにより共有されたデータを使用して、データベースのクエリ又はステートメントを処理し得、第２のアカウント又は共有者アカウントに対する第２の仮想ウェアハウス
は、共有者アカウントの共有データを使用して、データベースのクエリ又はステートメントを処理し得る。
【００３４】
図９は、共有コンポーネント２１０の概略的ブロック図である。共有コンポーネント２１０は、クロスアカウント権コンポーネント９０２、エイリアスコンポーネント９０４、リクエストコンポーネント９０６、アクセスコンポーネント９０８、及び処理コンポーネント９１０を含む。コンポーネント９０２〜９１０は、例示としてのみ与えられ、全ての実施形態に含まれるとは限られない。例えば、コンポーネント９０２〜９１０の各々は、別個のデバイス又はシステムに含まれ得、若しくは別個のデバイス又はシステムの一部として実装され得る。
【００３５】
クロスアカウント権コンポーネント９０２は、アカウント間の権利又は権限を創出及び管理するように構成される。クロスアカウント権コンポーネント９０２は、共有者アカウント内に共有オブジェクトを生成し得る。例えば、共有者アカウントのユーザは、１つ以上のリソースが別のアカウントで共有されるべきであることを指し示す入力を提供し得る。一実施形態では、ユーザは、リソースが外来アカウントで共有され得るように、新たな共有オブジェクトを創出するためのオプションを選択し得る。ユーザの入力に応答して、クロスアカウント権コンポーネント９０２は、共有者アカウント内に共有オブジェクトを創出し得る。共有オブジェクトは、外来アカウントで共有するためのリソースにアクセス権が権限付与され得るロールを含み得る。外来アカウントは、共有者アカウントとは別個の顧客アカウント又はその他のアカウントを含み得る。例えば、外来アカウントは、マルチテナントデータベースシステム上にホストされた別のアカウントであり得る。
【００３６】
創出されると、共有オブジェクトは、共有者アカウント内の１つ以上のリソースへの権利が権限付与され得る。リソースは、共有者アカウントのデータベース、スキーマ、テーブル、シーケンス、又はファンクションを含み得る。例えば、共有オブジェクトは、データベース等のデータ格納オブジェクトを読み出し、選択し、問い合わせ、又は変更するための権利が権限付与されたロール（すなわち、共有ロール）を含み得る。共有オブジェクト、又は共有オブジェクト内の共有ロールは、ロールベースのアクセス制御を使用して、他のロールに権利が権限付与され得る方法と同様の権利が権限付与され得る。ユーザは、外来アカウントで共有することを意図するリソースに共有ロールがアクセスし得るように、アカウントにアクセスすること、及び共有ロールへの権利を権限付与することが可能であり得る。一実施形態では、共有オブジェクトは、共有ロールが権利を有するオブジェクトのリストとアクセスレベルとを含み得る。
【００３７】
共有オブジェクトはまた、特定の外来アカウントに入手可能に又はリンクさせられ得る。例えば、共有オブジェクトは、共有者アカウント内の共有ロール又は共有オブジェクトへの権利を有するアカウントのリストを格納し得る。共有者アカウントを有するユーザは、アカウントのリストに対してアカウントを追加又は除去し得る。例えば、ユーザは、共有オブジェクトを介して共有されるオブジェクトに如何なるアカウントがアクセスし得るかを制御するためにリストを変更することが可能であり得る。共有オブジェクト内でリスト化又は識別される外来アカウントは、共有オブジェクトの共有ロールに権限付与されたアクセス権を用いて、リソースへのアクセスが与えられ得る。一実施形態では、特定のアカウントは、該特定のアカウントで共有されている共有オブジェクト又は共有者アカウントを識別するための検索を実施し得る。入手可能な共有オブジェクトのリストは、対象の又は特定のアカウントのユーザによって見分され得る。
【００３８】
エイリアスコンポーネント９０４は、別個のアカウントにより共有されるデータ又はデータオブジェクトに対するエイリアスを生成するように構成される。例えば、エイリアスオブジェクトは、共有者アカウントにより共有される共有リソースに対応するエイリアス
オブジェクトを対象アカウント内に創出し得る。一実施形態では、対象アカウントが第１の時間の間に共有リソースを受け取ること、又は共有リソースへのアクセスを試行することに応答してエイリアスオブジェクトは創出される。エイリアスオブジェクトは、共有者アカウントにより共有される最高位のオブジェクト階層に対するデータオブジェクトに対するエイリアスとしての機能を果たし得る（例えば、Ｄ５がＤ２に対するエイリアスである図８を参照）。エイリアスコンポーネント９０４はまた、エイリアスオブジェクトと共有オブジェクトとの間のリンクを生成し得る（例えば、Ｌ１がＤ５とＤ２との間のリンクである図８を参照）。リンクは、オリジナル又は“実”オブジェクトの識別子又はネームの形式で創出及び／又は格納され得る。例えば、図８のリンクＬ１は、“Ａ１．Ｄ２”等のユニークなシステム全体のネームを含むエイリアスオブジェクトＤ５内に格納されたＤ２に対する識別子を含み得る。
【００３９】
エイリアスコンポーネント９０４はまた、対象アカウント（共有者アカウントが共有データ又はリソースを有するアカウント）内のロールのアクセス権をエイリアスオブジェクトに権限付与し得る（例えば、図８のＧ１を参照）。また、エイリアスコンポーネント９０４はまた、共有者アカウントの共有オブジェクト内の共有ロールに対象アカウント内のロールを権限付与し得る（例えば、図８のＧ２を参照）。創出されたエイリアスオブジェクトと、エイリアスオブジェクトと共有者アカウント内のオブジェクトとの間のリンクと、対象アカウント内のロールへの権限とを用いて、対象アカウントは、自由に、共有者アカウント内のクエリ、ステートメントを実行し得、又は共有データ若しくはリソースを“閲覧”し得る。
【００４０】
リクエストコンポーネント９０６は、異なるアカウント内の共有リソースにアクセスするためのリクエストをアカウントから受信するように構成される。リクエストは、リソースにアクセスするためのデータベース、クエリ、又は選択ステートメント等を含み得る。一実施形態では、該リクエストは、リクエストしているアカウントのエイリアスオブジェクトに向けられたリクエストを含む。リクエストコンポーネント９０６は、共有者アカウント内のデータベース又はテーブル等の、エイリアスオブジェクトがリンクされたリソースを識別し得る。リクエストコンポーネント９０６は、エイリアスオブジェクトの識別子に基づいて、リンクされたオブジェクトを識別し得る。
【００４１】
アクセスコンポーネント９０８は、異なるアカウントの共有リソースへのアクセスをアカウントが有するか否かを判定するように構成される。例えば、第１のアカウントが異なる第２のアカウントのリソースへのアクセスをリクエストした場合、アクセスコンポーネント９０８は、第２のアカウントが第１のアカウントにアクセスを権限付与しているか否かを判定し得る。アクセスコンポーネント９０８は、リクエストしているアカウントを共有オブジェクトが識別したか否かを判定することによって、リクエストしているアカウントがアクセスを有するか否かを判定し得る。例えば、アクセスコンポーネント９０８は、共有オブジェクトにより格納されたアカウントのリスト内に、リクエストしているアカウントが存在するか否かを確認し得る。アクセスコンポーネント９０８はまた、リクエストしているアカウントを識別する共有オブジェクトが共有者アカウント内の対象データリソースへのアクセス権（例えば、権限）を有するか否かを確認し得る。
【００４２】
一実施形態では、アクセスコンポーネント９０８は、共有者アカウント内の共有ロールから、リクエストしているアカウント内のリクエストしているロールへの権限の存在を確認し得る。アクセスコンポーネント９０８は、データベースのリクエスト若しくはステートメントが向けられたエイリアスオブジェクト間にリンクが存在するか否か、又はリクエストしているロールとエイリアスオブジェクトとの間に権限が存在するか否かを確認し得る。例えば、アクセスコンポーネント９０８は、図８に説明されるＬ１、Ｇ１、及びＧ２の内の１つ以上の実在又は存在を確認し得る。更に、アクセスコンポーネント９０８は、
共有オブジェクト内のロールと共有者アカウントのオブジェクト（テーブル又はデータベース等）との間の権限を確認し得る。例えば、アクセスコンポーネント９０８は、図８のロールＲ４とデータベースＤ２との間の権限の存在を確認し得る。リクエストしているアカウントが共有リソースへのアクセスを有するとアクセスコンポーネント９０８が判定した場合、共有コンポーネント２１０又は処理コンポーネント９１０によってリクエストは遂行され得る。リクエストしているアカウントが、リクエストされたデータ又はオブジェクトへの権利を有しないとアクセスコンポーネント９０８が判定した場合、リクエストは拒否されるであろう。
【００４３】
処理コンポーネント９１０は、データベースのリクエスト、クエリ、又はステートメントを処理するように構成される。処理コンポーネント９１０は、別のアカウント内のデータ又はサービスにアクセス又は使用するための、アカウントからのリクエストへの応答を処理及び提供し得る。一実施形態では、処理コンポーネント９１０は、リクエストしているアカウントとは異なる共有者アカウント内のオリジナルデータを使用してリクエストを処理することによって、リクエストへの応答を提供する。例えば、リクエストは、第１のアカウント内に格納された又は第１のアカウントに対するデータベース又はテーブルに向けられ得、処理コンポーネント９１０は、第１のアカウントのデータベース又はテーブルを使用してリクエストを処理し得、リクエストしている第２のアカウントに応答を返し得る。
【００４４】
一実施形態では、処理コンポーネント９１０は、リクエストしているアカウント内に複製のテーブル又はその他のデータソースを創出することなく、共有データの処理を実施する。一般的に、データは、該データを処理すること又は該データに対する動作を実施することを望むアカウントにまず取り込まれなければならない。処理コンポーネント９１０は、対象アカウント内にデータリソースのコピーを創出することなく、共有者アカウント内の共有リソースに対象アカウントがアクセスすることを可能にすることによって、処理時間、遅延、及び／又はメモリリソースを抑制し得る。
【００４５】
処理コンポーネント９１０は、異なるアカウントに対する異なる処理リソースを使用して、同じデータの処理を実施し得る。例えば、第１のアカウントに対する第１の仮想ウェアハウスは、共有者アカウントにより共有されるデータを使用して、データベースのクエリ又はステートメントを処理し得、第２のアカウント又は共有者アカウントに対する第２の仮想ウェアハウスは、共有者アカウントの共有データを使用して、データベースのクエリ又はステートメントを処理し得る。同じデータを処理するために別個の処理リソースを使用することは、アカウント間の処理リソースの競合を防止し得る。処理リソースは、動的にプロビジョニングされる処理リソースを含み得る。一実施形態では、共有データの処理は、異なるアカウントに対するストレージにデータが配置され得るとしても、リクエストしているアカウントに対する仮想ウェアハウスを使用して実施される。
【００４６】
図１０は、データベースのデータ又はリソースを共有するための例示的方法１０００を説明する概略的フローチャート図である。方法１０００は、図１又は図９のような共有コンポーネント２１０によって、又は図１、図２、若しくは図３のようなデータベースシステムによって等、データベースシステムにより実施され得る。
【００４７】
方法１０００が開始し、クロスアカウント権コンポーネント９０２は、１００２において、共有ロールを含む第１のアカウント内に共有オブジェクトを生成する。クロスアカウント権コンポーネント９０２は、１００４において、１つ以上のアクセス権を共有ロールと関連付け、ここで、１つ以上のアクセス権は、第１のアカウント内の如何なるオブジェクトが共有オブジェクトに基づいてアクセス可能であるかを指し示す。クロスアカウント権コンポーネント９０２は、１００６において、第１のアカウント内の共有ロール又は共
有オブジェクトへのクロスアカウントアクセス権を第２のアカウントに権限付与する。リクエストコンポーネント９０６は、１００８において、第１のアカウントのデータ又はサービスにアクセスするためのリクエストを第２のアカウントから受信する。処理コンポーネント９１０は、１０１０において、第１のアカウントのデータ又はサービスに基づいて、第２のアカウントに応答を提供する。
【００４８】
図１１は、例示的コンピューティングデバイス１１００を描写するブロック図である。幾つかの実施形態では、コンピューティングデバイス１１００は、本明細書で論じられるシステム及びコンポーネントの内の１つ以上を実装するために使用される。更に、コンピューティングデバイス１１００は、本明細書で説明されるシステム及びコンポーネントの内の何れかと相互作用し得る。したがって、コンピューティングデバイス１１００は、本明細書で論じられるプロシージャ及びタスク等の、様々なプロシージャ及びタスクを実施するために使用され得る。コンピューティングデバイス１１００は、サーバ、クライアント、又は任意のその他のコンピューティングエンティティとして機能し得る。コンピューティングデバイス１１００は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、携帯コンピュータ、及びタブレット等の幅広い様々なコンピューティングデバイスの内の何れかであり得る。
【００４９】
コンピューティングデバイス１１００は、１つ以上のプロセッサ１１０２、１つ以上のメモリデバイス１１０４、１つ以上のインタフェース１１０６、１つ以上の大容量ストレージデバイス１１０８、及び１つ以上の入出力（Ｉ／Ｏ）デバイス１１１０を含み、それらの全てはバス１１１２に結合される。プロセッサ１１０２は、メモリデバイス１１０４及び／又は大容量ストレージデバイス１１０８に格納された命令を実行する１つ以上のプロセッサ又はコントローラを含む。プロセッサ１１０２はまた、キャッシュメモリ等の様々なタイプのコンピュータ可読媒体を含み得る。
【００５０】
メモリデバイス１１０４は、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ））及び／又は不揮発性メモリ（例えば、リードオンリーメモリ（ＲＯＭ））等の様々なコンピュータ可読媒体を含む。メモリデバイス１１０４はまた、フラッシュメモリ等の再書き込み可能なＲＯＭを含み得る。
【００５１】
大容量ストレージデバイス１１０８は、磁気テープ、磁気ディスク、光ディスク、及び固体状態メモリ（例えば、フラッシュメモリ）等の様々なコンピュータ可読媒体を含む。様々なコンピュータ可読媒体に対する読み出し及び／又は書き込みを可能にするために、様々なドライブも大容量ストレージデバイス１１０８に含まれ得る。大容量ストレージデバイス１１０８は、取り外し可能な媒体及び／又は取り外し不可能な媒体を含む。
【００５２】
Ｉ／Ｏデバイス１１１０は、データ及び／又はその他の情報がコンピューティングデバイス１１００に入力されること、又はコンピューティングデバイス１１００から検索されることを可能にする様々なデバイスを含む。例示的なＩ／Ｏデバイス１１００は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びＣＣＤ若しくはその他の画像取得デバイス等を含む。
【００５３】
インタフェース１１０６は、コンピューティングデバイス１１００がその他のシステム、デバイス、又はコンピューティング環境と相互作用することを可能にする様々なインタフェースを含む。例示的なインタフェース１１０６は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク、及びインターネットへのインタフェース等の任意の数の異なるネットワークインタフェースを含む。
【００５４】
バス１１１２は、プロセッサ１１０２、メモリデバイス１１０４、インタフェース１１０６、大容量ストレージデバイス１１０８、及びＩ／Ｏデバイス１１１０が、バス１１１２に結合されたその他のデバイス又はコンポーネントと共に相互に通信することを可能にする。バス１１１２は、システムバス、ＰＣＩバス、ＩＥＥＥ１３９４バス、及びＵＳＢバス等の幾つかのタイプのバス構造の内の１つ以上を表す。
【００５５】
説明の目的で、プログラム及びその他の実行可能プログラムのコンポーネントが別々のブロックとして本明細書に示されているが、こうしたプログラム及びコンポーネントは、コンピューティングデバイス１１００の異なるストレージコンポーネント内に様々な時間に存在し得、プロセッサ１１０２により実行される。或いは、本明細書で説明されるシステム及びプロシージャは、ハードウェア、又はハードウェア、ソフトウェア、及び／若しくはファームウェアの組み合わせで実装され得る。例えば、１つ以上の特定用途向け集積回路（ＡＳＩＣ）は、本明細書で説明されるシステム及びプロシージャの内の１つ以上を実行するようにプログラミングされ得る。本明細書で使用されるように、用語“モジュール”又は“コンポーネント”は、本明細書に開示される動作の全て又は一部を実施する目的で、ハードウェア、又はハードウェア、ソフトウェア、及び／若しくはファームウェアの組み合わせによる等、プロセスを達成するための実装装置を伝えることを意図する。
実施例
【００５６】
以下の例は更なる実施形態に関係する。
【００５７】
実施例１は、１つ以上のプロセッサにより実行される場合に、共有ロールを含む第１のアカウント内に共有オブジェクトをプロセッサに生成させる命令を格納するコンピュータ可読ストレージ媒体のための方法である。命令は、１つ以上のプロセッサに、１つ以上のアクセス権を共有ロールと関連付けさせ、ここで、１つ以上のアクセス権は、第１のアカウント内の如何なるオブジェクトが共有オブジェクトに基づいてアクセス可能であるかを指し示す。命令は、１つ以上のプロセッサに、第１のアカウント内の共有ロール又は共有オブジェクトへのクロスアカウントアクセス権を第２のアカウントに権限付与させる。命令は、１つ以上のプロセッサに、第１のアカウントのデータ又はサービスにアクセスするためのリクエストを第２のアカウントから受信させる。命令は、１つ以上のプロセッサに、第１のアカウントのデータ又はサービスに基づいて第２のアカウントに応答を提供させる。
【００５８】
実施例２では、実施例１の１つ以上のオブジェクトは、データベースオブジェクト、スキーマ、テーブル、シーケンス、又はファンクションの内の１つ以上を含む。
【００５９】
実施例３では、実施例１〜２の内の何れかの命令は更に、１つ以上のプロセッサに、共有ロールが権利を有するオブジェクトのリストを格納することによって、１つ以上のアクセス権を共有ロールと関連付けさせる。
【００６０】
実施例４では、実施例１〜３の内の何れかの命令は、１つ以上のプロセッサに、第１のアカウント内の共有ロール又は共有オブジェクトへの権利を有する、アカウントのリスト内の第２のアカウントの指標を格納することによって、１つ以上のアクセス権を権限付与させる。
【００６１】
実施例５では、実施例１〜４の内の何れかの命令は、１つ以上のプロセッサに、第２のアカウント内のエイリアスオブジェクトに向けられたリクエストを受信することによって、リクエストを受信させる。
【００６２】
実施例６では、実施例１〜５の内の何れかの命令は、１つ以上のプロセッサに、第２の
アカウントの仮想ウェアハウスを使用してリクエストを処理することによって、応答を提供させる。
【００６３】
実施例７では、実施例１〜６の内の何れかの命令は、１つ以上のプロセッサに、第２のアカウント内に複製のテーブル又はその他のデータソースを創出することなくリクエストを処理することによって応答を提供させる。
【００６４】
実施例８では、実施例１〜７の内の何れかの命令は更に、１つ以上のプロセッサに、第１のアカウントのリクエストされたデータ又はサービスへのアクセス権を第２のアカウントが有すると判定させる。
【００６５】
実施例９では、実施例８の命令は、１つ以上のプロセッサに、共有オブジェクト又は共有ロールから第１のアカウントへの権限が存在すると判定することによって、第２のアカウントがアクセス権を有すると判定させる。
【００６６】
実施例１０では、実施例８〜９の内の何れかの命令は、１つ以上のプロセッサに、第２のアカウント内のエイリアスオブジェクトと第１のアカウントのデータ又はサービスとの間にリンクが存在すると判定することによって、第２のアカウントがアクセス権を有すると判定させる。
【００６７】
実施例１１は、クロスアカウント権コンポーネント、エイリアスコンポーネント、及びアクセスコンポーネントを含むマルチテナントデータベースシステムである。クロスアカウント権コンポーネントは、１つ以上の共有リソースへのクロスアカウントアクセス権が共有者アカウントによって対象アカウントに権限付与されていると判定するように構成される。エイリアスコンポーネントは、共有者アカウント内の１つ以上の共有リソースの内の共有リソースに対応するエイリアスオブジェクトを対象アカウント内に創出するように構成される。アクセスコンポーネントは、エイリアスオブジェクトに向けられたリクエストを使用して対象アカウントが共有リソースにアクセスすることを可能にするように構成される。
【００６８】
実施例１２では、実施例１１のようなエイリアスコンポーネントは、対象アカウント内のエイリアスオブジェクトを共有者アカウント内の共有リソースにリンクするように構成される。
【００６９】
実施例１３では、実施例１１〜１２の内の何れかのようなエイリアスコンポーネントは更に、エイリアスオブジェクトへのアクセス権を対象アカウント内のロールに権限付与するように構成される。
【００７０】
実施例１４では、実施例１１〜３の内の何れかのような１つ以上の共有リソースは、共有者アカウントのデータベースオブジェクト、スキーマ、テーブル、シーケンス、又はファンクションの内の１つ以上を含む。
【００７１】
実施例１５では、実施例１１〜１４の内の何れかのようなクロスアカウント権コンポーネントは、共有者アカウント内の共有ロール又は共有オブジェクトへの権利を有するアカウントのリストに基づいてクロスアカウントアクセス権が権限付与されていると判定するように構成され、ここで、共有ロール又は共有オブジェクトは、１つ以上の共有リソースへの権利を有する。
【００７２】
実施例１６では、実施例１１〜１５の内の何れかのアクセスコンポーネントは、共有者アカウント内の共有オブジェクト又は共有ロールから対象アカウントへの権限の存在に基
づいてクロスアカウントアクセス権が権限付与されていると判定することに応答して、対象アカウントが共有リソースにアクセスすることを可能にするように構成される。
【００７３】
実施例１７では、実施例１１〜１５の内の何れかのアクセスコンポーネントは、対象アカウント内のエイリアスオブジェクトと共有者アカウントのデータ又はサービスとの間にリンクが存在することに基づいてクロスアカウントアクセス権が権限付与されていると判定することに応答して、対象アカウントが共有リソースにアクセスすることを可能にするように構成される。
【００７４】
実施例１８では、実施例１１〜１６の内の何れかのようなシステムは更に、対象アカウント内にデータリソースのコピーを創出することなく、共有者アカウント内の共有リソースを処理するように構成された処理コンポーネントを含む。
【００７５】
実施例１９では、実施例１１〜１６の内の何れかのようなシステムは更に、第２のアカウントの仮想ウェアハウスを使用して応答を提供するように構成された処理コンポーネントを含む。
【００７６】
実施例２０では、実施例１８〜１８の内の何れかのような処理コンポーネントは、共有者アカウント内のオリジナルデータを使用してリクエストを処理することによってリクエストへの応答を提供するように構成される。
【００７７】
実施例２１は、マルチテナントデータベース内の共有データへのアクセスを提供するための方法である。方法は、第１のアカウントが第１のアカウントのデータベースオブジェクトへのアクセスを第２のアカウントに権限付与していると判定することを含む。方法は、第１のアカウントに対応するデータオブジェクトにアクセスするためのリクエストを第２のアカウントから受信することを含む。方法は、第２のアカウントに対応する仮想ウェアハウスを使用してリクエストを処理することを含み、ここで、仮想ウェアハウスは、リクエストへの応答を生成するために、第１のアカウントに対応するストレージレイヤ内のデータにアクセスするように構成された１つ以上のコンピュートノードのセットを含む。
【００７８】
実施例２２では、実施例２１のように第１のアカウントが第２のアカウントにアクセスを権限付与していると判定することは、第２のアカウントが有する第１のアカウントのリストが第１のアカウント内の共有オブジェクト又は共有ロールへの権利を有していると判定することを含み、ここで、共有オブジェクト又は共有ロールは、第１のアカウントのデータベースオブジェクトへのアクセス権を有する。
【００７９】
実施例２３では、実施例２１〜２２の内の何れかのようなリクエストを受信することは、第２のアカウント内のエイリアスオブジェクトに向けられたリクエストを受信することを含み、ここで、エイリアスオブジェクトは、データベースオブジェクトとリンクされる。
【００８０】
実施例２４では、実施例２１〜２３の何れかのように応答を提供することは、第１のアカウントのデータオブジェクト内のデータを使用してリクエストを処理することを含む。
【００８１】
実施例２５は、実施例１〜２０の何れかのような方法を実施するための、又は装置又はシステムを実現するための手段を含む装置である。
【００８２】
実施例２６は、実行される場合に、実施例１１〜２５の内の何れかの方法を実装するため、又は装置を実現するための機械可読命令を含む機械可読ストレージである。
【００８３】
様々な技術、又はそれらの幾つかの側面若しくは一部は、フロッピーディスク、ＣＤ−ＲＭ、ハードドライブ、非一時的コンピュータ可読ストレージ媒体、又は任意のその他の機械可読ストレージ媒体等の有形媒体に具体化されたプログラムコード（すなわち、命令）の形式を取り得、ここで、プログラムコードがコンピュータ等の機械にロードされ、該機械によって実行される場合に、該機械が様々な技術を実践するための装置になる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピューティングデバイスは、プロセッサ、プロセッサにより読み出し可能なストレージ媒体（揮発性及び不揮発性のメモリ、並びに／又はストレージ素子を含む）、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスを含み得る。揮発性及び不揮発性のメモリ、並びに／又はストレージ素子は、ＲＡＭ、ＥＰＲＯＭ、フラッシュドライブ、光ドライブ、磁気ハードドライブ、又は電子データを格納するための別の媒体であり得る。本明細書で説明される様々な技術を実装又は利用し得る１つ以上のプログラムは、アプリケーションプログラミングインタフェース（ＡＰＩ）及び再使用可能な制御等を使用し得る。こうしたプログラムは、コンピュータシステムと通信するための高水準の手続き型若しくはオブジェクト指向のプログラミング言語で実装され得る。しかしながら、プログラムは、必要であれば、アセンブリ又は機械語で実装され得る。如何なる場合でも、言語は、コンパイルされた又はインタープリタされた言語であり得、ハードウェアの実装と組み合わせられ得る。
【００８４】
この明細書で説明される機能的ユニットの多くは、１つ以上のコンポーネントとして実装され得、それは、より具体的には、それらの実装の独立を強調するために使用される用語であると理解すべきである。例えば、コンポーネントは、特注の超大規模集積回路（ＶＬＳＩ）若しくはゲートアレイを含むハードウェア回路、ロジックチップ、トランジスタ等のオフザシェルフの半導体、又はその他の別々のコンポーネントとして実装され得る。コンポーネントはまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、又はプログラマブルロジックデバイス等のプログラム可能なハードウェアデバイスで実装され得る。
【００８５】
コンポーネントはまた、様々なタイプのプロセッサによる実行のためのソフトウェアで実装され得る。実行可能コードの識別されるコンポーネントは、実例として、コンピュータ命令の１つ以上の物理的な又は論理的なブロックを含み得、それらは、例えば、オブジェクト、プロシージャ、又はファンクションとして組織化され得る。にもかかわらず、識別される実行可能なコンポーネントは、物理的に一緒に配置される必要はないが、論理的に結合される場合には、コンポーネントを含み、コンポーネントに対する定められた目的を実現する異なる位置に格納された異なる命令を含み得る。
【００８６】
実際、実行可能コードのコンポーネントは、単一の命令又は多数の命令であってもよいが、異なるプログラム間で、幾つかのメモリデバイスに渡って、幾つかの異なるコードのセグメントに渡り分散され得る。同様に、動作可能なデータは、コンポーネント内に本明細書に識別及び説明され得、任意の適切な形式で具体化され得、任意の適切なタイプのデータ構造内に組織化され得る。動作可能なデータは、単一のデータセットとして収集され得、又は異なるストレージデバイスに渡ることを含む、異なる位置に渡って分散され得、少なくとも部分的には、単にシステム又はネットワーク上の電子信号として存在し得る。コンポーネントは受動的又は能動的であり得、所望の機能を実施するように動作可能なエージェントを含む。
【００８７】
この明細書全体を通じて“実施例（example）”への言及は、該実施例に関連して説明
される特定の機構、構造、又は特徴が本開示の少なくとも１つの実施形態に含まれることを意味する。したがって、この明細書全体を通じて様々な場所における句“実施例では”の出現は、必ずしも全てが同じ実施形態に言及していない。
【００８８】
本明細書で使用されるように、複数の項目、構造的要素、組成上の要素、及び／又は材料は、便宜上、共通のリストで提示され得る。しかしながら、これらのリストは、あたかも、リストの各メンバーが別個のユニークなメンバーとして個別に識別されるかのように解釈されるべきである。したがって、こうしたリストの個別のメンバーは、反対の表示なしに、共通のグループ内でのその提示のみに基づいて同じリストの何れかの他のメンバーの事実上の均等物として何ら解釈されるべきではない。また、本開示の様々な実施形態及び実施例は、それらの様々なコンポーネントに対する代替物と共に本明細書に言及され得る。こうした実施形態、実施例、及び代替物は、相互の事実上の均等物として解釈されるべきではないが、本開示の別個の自律的な表現としてみなされるべきであると理解される。
【００８９】
前述は、明確にする目的で若干詳細に説明されているが、その本質から逸脱することなく、幾つかの変形及び変更がなされ得ることは分かるであろう。本明細書で説明されるプロセス及び装置の両方を実装する多くの代替方法があることに留意すべきである。したがって、本実施形態は、例証であって限定的であるとみなされるべきではない。
【００９０】
開示の根底にある本質から逸脱することなく、上で説明した実施形態の詳細に多くの変形がなされ得ることを当業者は分かるであろう。本開示の範囲は、それ故、以下の請求項の範囲によってのみ決定されるべきである。
【図１】
0006918120.tif 000002
【図２】
0006918120.tif 000003
【図３】
0006918120.tif 000004
【図４】
0006918120.tif 000005
【図５】
0006918120.tif 000006
【図６】
0006918120.tif 000007
【図７】
0006918120.tif 000008
【図８】
0006918120.tif 000009
【図９】
0006918120.tif 000010
【図１０】
0006918120.tif 000011
【図１１】
0006918120.tif 000012