(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-01-24
(54)【発明の名称】動的な共有されるデータ・オブジェクト・マスキング
(51)【国際特許分類】
G06F 16/24 20190101AFI20230117BHJP
G06F 16/28 20190101ALI20230117BHJP
【FI】
G06F16/24
G06F16/28
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022528044
(86)(22)【出願日】2020-07-31
(85)【翻訳文提出日】2022-05-13
(86)【国際出願番号】 US2020044601
(87)【国際公開番号】W WO2021107994
(87)【国際公開日】2021-06-03
(32)【優先日】2019-11-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】516245999
【氏名又は名称】スノーフレーク インク.
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】アヴァネス アルティン
(72)【発明者】
【氏名】ビホン ハリド ザマン
(72)【発明者】
【氏名】カル ダミアン
(72)【発明者】
【氏名】クルーアン ティエリー
(72)【発明者】
【氏名】ジャイン ヴィカス
(72)【発明者】
【氏名】ミー チェン
(72)【発明者】
【氏名】ムラリダール スブラマニアン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175BA01
5B175EA03
(57)【要約】
共有されるデータベース・プラットフォームが、ユーザ同士の間で共有されるデータに関する動的マスキングを実現し、その動的マスキングにおいて、特定のデータが、ユーザ・ロールと関連付けられる、あらかじめ構成された関数に基づいて、マスクされ、変換され、または、他の形で修正される。共有されるデータベース・プラットフォームは、ユーザが、1つまたは複数のマスキング・ポリシーと関連付けられるデータベース・オブジェクトへのアクセスを要求することに応じて、動的に、ランタイムにおいてマスキングを実現することができる。
【特許請求の範囲】
【請求項1】
ネットワーク・サイト上で、前記ネットワーク・サイトの第1のエンド・ユーザの第1のクライアント・デバイスにより生成されるデータベース・オブジェクトを識別することと、
前記第1のクライアント・デバイスから、前記データベース・オブジェクト内のデータを修正するための共有マスキング・ポリシーを受け取ることであって、前記共有マスキング・ポリシーは、前記データベース・オブジェクトに関する1つまたは複数のあらかじめ構成されたマスキング演算を起動するためのユーザ・ロール・タイプを指定する、受け取ることと、
前記ネットワーク・サイトの第2のエンド・ユーザによる前記データベース・オブジェクトへのアクセスのためのネットワーク・リンクを生成することと、
前記第2のエンド・ユーザの第2のクライアント・デバイスから、前記ネットワーク・リンクを使用して前記データベース・データにアクセスするための要求を受け取ることと、
前記第2のクライアント・デバイスからの前記要求に応じて、前記第2のエンド・ユーザのエンド・ユーザ・ロールが前記共有マスキング・ポリシーの前記ユーザ・ロール・タイプとマッチングすると決定することと、
前記エンド・ユーザ・ロールが前記共有マスキング・ポリシーの前記ユーザ・ロール・タイプとマッチングすることに応じて、マスクされるデータベース・オブジェクトを生成するために、前記データベース・オブジェクトに関する前記1つまたは複数のあらかじめ構成されたマスキング演算を適用することと、
前記第2のエンド・ユーザの前記第2のクライアント・デバイスに、前記マスクされるデータベース・オブジェクトからの結果データの提示を行わせることと
を含む、方法。
【請求項2】
前記第2のクライアント・デバイスからの前記要求は、クエリである、請求項1に記載の方法。
【請求項3】
前記クエリは、選択ステートメントを備え、前記選択ステートメントは、前記提示において表示される前記結果データを生成するために、前記マスクされるデータベース・オブジェクトに適用される、請求項2に記載の方法。
【請求項4】
前記データベース・オブジェクトは、前記第1のエンド・ユーザにより管理される第1のデータベース・インスタンス内に格納され、前記マスクされるデータベース・オブジェクトは、前記第2のエンド・ユーザにより管理される第2のデータベース・インスタンス上でホストされることが、前記第1のデータベース・インスタンスから前記第2のデータベース・インスタンスに前記データベース・オブジェクトをコピーすることなく行われる、請求項1に記載の方法。
【請求項5】
前記データベース・オブジェクトは、1つまたは複数の外部テーブルを備える、請求項1に記載の方法。
【請求項6】
前記共有マスキング・ポリシーは、構造化クエリ言語(SQL)フォーマットで受け取られ、共有マスキング・データベース内に格納される、請求項1に記載の方法。
【請求項7】
前記共有マスキング・ポリシーは、前記データベース・オブジェクトに対応付けされ、前記共有マスキング・ポリシーは、前記ユーザ・ロール・タイプを含む複数のユーザ・ロール・タイプを備え、前記複数のユーザ・ロール・タイプの各々は、前記データベース・オブジェクトをマスクする関数に対応付けされる、請求項1に記載の方法。
【請求項8】
前記関数は、前記データベース・オブジェクトの1つまたは複数の列に対する、1つまたは複数の変換を起こすための、前記データベース・オブジェクトに対して実行可能であるデータベース関数である、請求項7に記載の方法。
【請求項9】
前記共有マスキング・ポリシーは、第1の共有マスキング・ポリシーであり、
前記データベース・オブジェクトは、前記共有マスキング・ポリシーに対応付けされるデータベース・ビューであり、前記データベース・ビューは、第2の共有マスキング・ポリシーに対応付けされるデータベース・テーブルからのデータを組み込む、
請求項1に記載の方法。
【請求項10】
前記第2の共有マスキング・ポリシーは、前記データベース・ビュー内に組み込まれるマスクされるテーブル・データを生成するために、前記データベース・テーブル上で実現され、前記マスクされるテーブル・データを含む前記データベース・ビューは、前記マスクされるデータベース・オブジェクトを生成するために、前記共有マスキング・ポリシーに従ってさらにマスクされる、請求項9に記載の方法。
【請求項11】
マシンの1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサにより実行されるときに、
ネットワーク・サイト上で、前記ネットワーク・サイトの第1のエンド・ユーザの第1のクライアント・デバイスにより生成されるデータベース・オブジェクトを識別することと、
前記第1のクライアント・デバイスから、前記データベース・オブジェクト内のデータを修正するための共有マスキング・ポリシーを受け取ることであって、前記共有マスキング・ポリシーは、前記データベース・オブジェクトに関する1つまたは複数のあらかじめ構成されたマスキング演算を起動するためのユーザ・ロール・タイプを指定する、受け取ることと、
前記ネットワーク・サイトの第2のエンド・ユーザによる前記データベース・オブジェクトへのアクセスのためのネットワーク・リンクを生成することと、
前記第2のエンド・ユーザの第2のクライアント・デバイスから、前記ネットワーク・リンクを使用して前記データベース・データにアクセスするための要求を受け取ることと、
前記第2のクライアント・デバイスからの前記要求に応じて、前記第2のエンド・ユーザのエンド・ユーザ・ロールが前記共有マスキング・ポリシーの前記ユーザ・ロール・タイプとマッチングすると決定することと、
前記エンド・ユーザ・ロールが前記共有マスキング・ポリシーの前記ユーザ・ロール・タイプとマッチングすることに応じて、マスクされるデータベース・オブジェクトを生成するために、前記データベース・オブジェクトに関する前記1つまたは複数のあらかじめ構成されたマスキング演算を適用することと、
前記第2のエンド・ユーザの前記第2のクライアント・デバイスに、前記マスクされるデータベース・オブジェクトからの結果データの提示を行わせることと
を含む動作を実施することを前記マシンに行わせる、命令を格納するメモリと
を備えるシステム。
【請求項12】
前記第2のクライアント・デバイスからの前記要求は、クエリである、請求項11に記載のシステム。
【請求項13】
前記クエリは、選択ステートメントを備え、前記選択ステートメントは、前記提示において表示される前記結果データを生成するために、前記マスクされるデータベース・オブジェクトに適用される、請求項12に記載のシステム。
【請求項14】
前記データベース・オブジェクトは、前記第1のエンド・ユーザにより管理される第1のデータベース・インスタンス内に格納され、前記マスクされるデータベース・オブジェクトは、前記第2のエンド・ユーザにより管理される第2のデータベース・インスタンス上でホストされることが、前記第1のデータベース・インスタンスから前記第2のデータベース・インスタンスに前記データベース・オブジェクトをコピーすることなく行われる、請求項11に記載のシステム。
【請求項15】
前記データベース・オブジェクトは、1つまたは複数の外部テーブルを備える、請求項11に記載のシステム。
【請求項16】
前記共有マスキング・ポリシーは、構造化クエリ言語(SQL)フォーマットで受け取られ、共有マスキング・データベース内に格納される、請求項11に記載のシステム。
【請求項17】
前記共有マスキング・ポリシーは、前記データベース・オブジェクトに対応付けされ、前記共有マスキング・ポリシーは、前記ユーザ・ロール・タイプを含む複数のユーザ・ロール・タイプを備え、前記複数のユーザ・ロール・タイプの各々は、前記データベース・オブジェクトをマスクする関数に対応付けされる、請求項11に記載のシステム。
【請求項18】
前記関数は、前記データベース・オブジェクトの1つまたは複数の列に対する、1つまたは複数の変換を起こすための、前記データベース・オブジェクトに対して実行可能であるデータベース関数である、請求項17に記載のシステム。
【請求項19】
前記データベース・オブジェクトは、前記共有マスキング・ポリシーに対応付けされるデータベース・ビューであり、前記データベース・ビューは、異なる共有マスキング・ポリシーに対応付けされるデータベース・テーブルからのデータを組み込む、請求項11に記載のシステム。
【請求項20】
マシンにより実行されるときに、
ネットワーク・サイト上で、前記ネットワーク・サイトの第1のエンド・ユーザの第1のクライアント・デバイスにより生成されるデータベース・オブジェクトを識別することと、
前記第1のクライアント・デバイスから、前記データベース・オブジェクト内のデータを修正するための共有マスキング・ポリシーを受け取ることであって、前記共有マスキング・ポリシーは、前記データベース・オブジェクトに関する1つまたは複数のあらかじめ構成されたマスキング演算を起動するためのユーザ・ロール・タイプを指定する、受け取ることと、
前記ネットワーク・サイトの第2のエンド・ユーザによる前記データベース・オブジェクトへのアクセスのためのネットワーク・リンクを生成することと、
前記第2のエンド・ユーザの第2のクライアント・デバイスから、前記ネットワーク・リンクを使用して前記データベース・データにアクセスするための要求を受け取ることと、
前記第2のクライアント・デバイスからの前記要求に応じて、前記第2のエンド・ユーザのエンド・ユーザ・ロールが前記共有マスキング・ポリシーの前記ユーザ・ロール・タイプとマッチングすると決定することと、
前記エンド・ユーザ・ロールが前記共有マスキング・ポリシーの前記ユーザ・ロール・タイプとマッチングすることに応じて、マスクされるデータベース・オブジェクトを生成するために、前記データベース・オブジェクトに関する前記1つまたは複数のあらかじめ構成されたマスキング演算を適用することと、
前記第2のエンド・ユーザの前記第2のクライアント・デバイスに、前記マスクされるデータベース・オブジェクトからの結果データの提示を行わせることと
を含む動作を実施することを前記マシンに行わせる、命令を具現する、マシン可読ストレージ・デバイス。
【請求項21】
前記第2のクライアント・デバイスからの前記要求は、クエリである、請求項20に記載のマシン可読ストレージ・デバイス。
【請求項22】
前記クエリは、選択ステートメントを備え、前記選択ステートメントは、前記提示において表示される前記結果データを生成するために、前記マスクされるデータベース・オブジェクトに適用される、請求項21に記載のマシン可読ストレージ・デバイス。
【請求項23】
前記データベース・オブジェクトは、前記第1のエンド・ユーザにより管理される第1のデータベース・インスタンス内に格納され、前記マスクされるデータベース・オブジェクトは、前記第2のエンド・ユーザにより管理される第2のデータベース・インスタンス上でホストされることが、前記第1のデータベース・インスタンスから前記第2のデータベース・インスタンスに前記データベース・オブジェクトをコピーすることなく行われる、請求項20に記載のマシン可読ストレージ・デバイス。
【請求項24】
前記データベース・オブジェクトは、1つまたは複数の外部テーブルを備える、請求項20に記載のマシン可読ストレージ・デバイス。
【請求項25】
前記共有マスキング・ポリシーは、構造化クエリ言語(SQL)フォーマットで受け取られ、共有マスキング・データベース内に格納される、請求項20に記載のマシン可読ストレージ・デバイス。
【請求項26】
前記共有マスキング・ポリシーは、前記データベース・オブジェクトに対応付けされ、前記共有マスキング・ポリシーは、前記ユーザ・ロール・タイプを含む複数のユーザ・ロール・タイプを備え、前記複数のユーザ・ロール・タイプの各々は、前記データベース・オブジェクトをマスクする関数に対応付けされる、請求項20に記載のマシン可読ストレージ・デバイス。
【請求項27】
前記関数は、前記データベース・オブジェクトの1つまたは複数の列に対する、1つまたは複数の変換を起こすための、前記データベース・オブジェクトに対して実行可能であるデータベース関数である、請求項26に記載のマシン可読ストレージ・デバイス。
【請求項28】
前記共有マスキング・ポリシーは、第1の共有マスキング・ポリシーであり、前記データベース・オブジェクトは、前記共有マスキング・ポリシーに対応付けされるデータベース・ビューであり、前記データベース・ビューは、第2の共有マスキング・ポリシーに対応付けされるデータベース・テーブルからのデータを組み込む、請求項20に記載のマシン可読ストレージ・デバイス。
【請求項29】
前記第2の共有マスキング・ポリシーは、前記データベース・ビュー内に組み込まれるマスクされるテーブル・データを生成するために、前記データベース・テーブル上で実現され、前記マスクされるテーブル・データを含む前記データベース・ビューは、前記マスクされるデータベース・オブジェクトを生成するために、前記共有マスキング・ポリシーに従ってさらにマスクされる、請求項28に記載のマシン可読ストレージ・デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願へのクロスリファレンス
本出願は、2019年11月27日に出願された米国特許出願第16/698,142号の優先権を主張するものであり、その米国特許出願の内容は、それらの全体において、本明細書により組み込まれている。
【0002】
本開示は、一般的には、データベースを管理する特殊目的マシン、および、そのような変形例に対する改善に、ならびに、そのような特殊目的マシンが、データベース内のデータを変換することに対して、他の特殊目的マシンと比較して改善された、技術に関する。
【背景技術】
【0003】
データは、データベースにアップロードされ得、データベース・データへのアクセスは、データベース・アドミニストレータにより管理され得る。より最近では、クラウド・データベース・サービスの人気が増しており、それらのサービスの容易さに起因して、新しいデータベース・インスタンスが、データを格納するために作成され得る。新しいクラウド・データベース・サービスが、データベースが容易に作成されることを可能とする一方で、クラウド・データベース・サービスは、データ・プライバシーに関する新しい問題点をもたらす。実例として、データの量が増大する際に、セキュアおよびスケーラブルの両方である手立てで、所与のデータベースの中の特定のデータへの、特定の個人に対してのアクセスを作成することは困難であることがある。
【0004】
添付される図面の様々なものは、ただ単に、本開示の例示的な実施形態を例解するものであり、本開示の範囲を制限すると考えられるべきではない。
【図面の簡単な説明】
【0005】
【
図1】一部の例示的な実施形態による、ネットワーク・ベースのデータ・ウェアハウス・システムが、データベース・オブジェクトの動的共有マスキングを実現することができる、例示的なコンピューティング環境を例解する図である。
【
図2】一部の例示的な実施形態による、コンピュート・サービス・マネージャのコンポーネントを例解するブロック線図である。
【
図3】一部の例示的な実施形態による、実行プラットフォームのコンポーネントを例解するブロック線図である。
【
図4A】一部の例示的な実施形態による、システムを使用してデータベース・オブジェクトを共有するための例示的なデータ・アーキテクチャを示す図である。
【
図4B】一部の例示的な実施形態による、システムを使用してデータベース・オブジェクトを共有するための例示的なデータ・アーキテクチャを示す図である。
【
図4C】一部の例示的な実施形態による、システムを使用してデータベース・オブジェクトを共有するための例示的なデータ・アーキテクチャを示す図である。
【
図5】一部の例示的な実施形態による、システムを使用してエンティティ同士の間でデータを共有するための例示的なデータベース・アーキテクチャを示す図である。
【
図6】一部の例示的な実施形態による、例示的なデータベース・オブジェクトを示す図である。
【
図7A】一部の例示的な実施形態による、共有されるデータの動的マスキングのための例示的なユーザ・インターフェイスを示す図である。
【
図7B】一部の例示的な実施形態による、共有されるデータの動的マスキングのための例示的なユーザ・インターフェイスを示す図である。
【
図7C】一部の例示的な実施形態による、共有されるデータの動的マスキングのための例示的なユーザ・インターフェイスを示す図である。
【
図7D】一部の例示的な実施形態による、共有されるデータの動的マスキングのための例示的なユーザ・インターフェイスを示す図である。
【
図7E】一部の例示的な実施形態による、共有されるデータの動的マスキングのための例示的なユーザ・インターフェイスを示す図である。
【
図8】一部の例示的な実施形態による、共有されるデータ・オブジェクトの動的マスキングのための例示的なデータ・アーキテクチャを示す図である。
【
図9】一部の例示的な実施形態による、例示的なポリシー・データ・アーキテクチャを示す図である。
【
図10】一部の例示的な実施形態による、リソース・アイテムに関する共有マスク・ポリシーを構成するための方法のフロー線図である。
【
図11】一部の例示的な実施形態による、動的にマスクされるデータと相互作用するための方法のフロー線図である。
【
図12】一部の例示的な実施形態による、共有されるデータベース・オブジェクトを動的にマスクするための方法のフロー線図である。
【
図13】本開示の一部の実施形態による、コンピュータ・システムの形式でのマシンであって、その中で、命令のセットが、本明細書において論考される方法論のうちの任意の1つまたは複数を実施することをマシンに行わせるために実行され得る、マシンの線図的表現を例解する図である。
【発明を実施するための形態】
【0006】
後に続く説明は、本開示の例解的な実施形態を具現する、システム、方法、技法、命令シーケンス、およびコンピューティング・マシン・プログラム製品を含む。後に続く説明において、解説の目的のために、数多くの具体的な詳細が、発明性のある主題の様々な実施形態の理解をもたらすために論述される。しかしながら、発明性のある主題の実施形態は、これらの具体的な詳細なしに実践され得るということが、当業者には明白であることになる。全般にわたって、よく知られている命令インスタンス、プロトコル、構造、および技法は、必ずしも詳細には示されない。
【0007】
論考されたように、データの量が増大する際に、スケーラブルであるセキュアな手立てで、アクセスを作成し、データを共有することは困難であることがある。このためにも、共有されるデータベース・プラットフォームが、ユーザ同士の間で共有されるデータに関する動的マスキングを実現することができ、その動的マスキングにおいて、特定のデータが、ユーザ・ロールと関連付けられる、あらかじめ構成された関数に基づいて、マスクされ、変換され、または、他の形で修正される。共有されるデータベース・プラットフォームは、ユーザが、1つまたは複数のマスキング・ポリシーと関連付けられるデータベース・オブジェクトへのアクセスを要求することに応じて、動的に、ランタイムにおいてマスキングを実現することができる。
【0008】
図1は、本開示の一部の実施形態による、ネットワーク・ベースのデータ・ウェアハウス・システム102が、共有されるデータ・オブジェクトの動的マスキングを実現する、例示的な共有されるデータ処理プラットフォーム100を例解する。不必要な詳細によって、発明性のある主題を不明瞭にすることを回避するために、発明性のある主題の理解を伝えることに密接な関係のない、様々な機能的コンポーネントは、図から除かれている。しかしながら、当業者は、様々な追加的な機能的コンポーネントが、本明細書において具体的に説明されない追加的な機能性を手助けするために、共有されるデータ処理プラットフォーム100の部分として含まれ得るということをたやすく認識することになる。
【0009】
示されるように、共有されるデータ処理プラットフォーム100は、ネットワーク・ベースのデータ・ウェアハウス・システム102と、クラウド・コンピューティング・ストレージ・プラットフォーム104(例えば、ストレージ・プラットフォーム、S3などのAWS(R)サービス、Microsoft Azure(R)、またはGoogle Cloud Services(R))と、リモート・コンピューティング・デバイス106とを備える。ネットワーク・ベースのデータ・ウェアハウス・システム102は、統合された様式で、データを格納すること、および、データにアクセスすること(例えば、データを内部的に格納すること、外部的なリモートに配置されるデータにアクセスすること)、ならびに、1つまたは複数の異種ソース(例えば、クラウド・コンピューティング・ストレージ・プラットフォーム104)からの統合されたデータをレポートすること、および、そのデータの分析のために使用される、ネットワーク・ベースのシステムである。クラウド・コンピューティング・ストレージ・プラットフォーム104は、複数のコンピューティング・マシンを備え、需要に応じて、データ・ストレージおよびコンピューティング・パワーなどのコンピュータ・システム・リソースを、ネットワーク・ベースのデータ・ウェアハウス・システム102に提供する。
【0010】
リモート・コンピューティング・デバイス106(例えば、ラップトップ・コンピュータなどのユーザ・デバイス)は、リモート・ソフトウェア・コンポーネント108(例えば、ブラウザでアクセスされるクラウド・サービス)を実行し、ネットワーク・ベースのデータ・ウェアハウス・システム102のユーザに追加的な機能性を提供する、1つまたは複数のコンピューティング・マシン(例えば、ラップトップ・コンピュータなどのユーザ・デバイス)を備える。
【0011】
リモート・ソフトウェア・コンポーネント108は、リモート・コンピューティング・デバイス106により実行されるときに、ある決まった機能性を提供することをリモート・コンピューティング・デバイス106に行わせる、マシン可読命令(例えば、コード)のセットを備える。リモート・ソフトウェア・コンポーネント108は、入力データに関して動作し得、入力データを処理、分析、または、他の形で変換することに基づいて、結果データを生成する。例として、リモート・ソフトウェア・コンポーネント108は、下記でさらに詳細に論考されるように、動的にマスクされる共有されるデータ・オブジェクトを処理する、データ・プロバイダまたはデータ・コンシューマであり得る。
【0012】
ネットワーク・ベースのデータ・ウェアハウス・システム102は、アクセス管理システム110と、コンピュート・サービス・マネージャ112と、実行プラットフォーム114と、データベース116とを備える。アクセス管理システム110は、アドミニストレーティブ・ユーザが、ネットワーク・ベースのデータ・ウェアハウス・システム102により提供されるリソースおよびサービスへのアクセスを管理することを可能にする。アドミニストレーティブ・ユーザは、ユーザ、ロール、およびグループを、作成および管理することができ、ならびに、リソースおよびサービスへのアクセスを可能とする、または拒否するために、パーミッションを使用することができる。アクセス管理システム110は、下記でさらに詳細に論考されるように、ネットワーク・ベースのデータ・ウェアハウス・システム102の異なるユーザの間で、クラウド・コンピューティング・ストレージ・プラットフォーム104のストレージ・リソースへの共有されるアクセスをセキュアに管理する共有データを格納することができる。
【0013】
コンピュート・サービス・マネージャ112は、ネットワーク・ベースのデータ・ウェアハウス・システム102の動作を協調させ、管理する。コンピュート・サービス・マネージャ112は、さらには、クエリ最適化およびコンパイル、ならびに、コンピュート・リソースを提供するコンピューティング・サービスのクラスタ(例えば、仮想ウェアハウス、仮想マシン、EC2クラスタ)を管理することを実施する。コンピュート・サービス・マネージャ112は、任意の数の、データ格納および検索要求を提供するエンド・ユーザ、本明細書において説明されるシステムおよび方法を管理するシステム・アドミニストレータ、ならびに、コンピュート・サービス・マネージャ112と相互作用する他のコンポーネント/デバイスなどの、クライアント・アカウントをサポートすることができる。
【0014】
コンピュート・サービス・マネージャ112は、さらには、格納されるデータの全体、共有されるデータ処理プラットフォーム100と関連付けられる、データベース116にカップリングされる。データベース116は、ネットワーク・ベースのデータ・ウェアハウス・システム102、および、そのユーザと関連付けられる、様々な機能および態様と関係があるデータを格納する。例えば、動的にマスクされることになるデータは、一部の例示的な実施形態によれば、クラウド・コンピューティング・ストレージ・プラットフォーム104上で(例えば、S3上で)格納およびアクセスされ、または、ネットワーク・ベースのデータ・ウェアハウス・システム102に対してローカルであるデータベース116上で格納およびアクセスされ得る。
【0015】
一部の実施形態において、データベース116は、リモート・データ・ストレージ・システム内に格納されるデータ、および、1つまたは複数のローカル・キャッシュから利用可能なデータのサマリを含む。加えて、データベース116は、どのようにデータがリモート・データ・ストレージ・システムおよびローカル・キャッシュ内で組織化されるかに関する情報を含み得る。データベース116は、データのまとまりが、ストレージ・デバイスからの実際のデータをロードすること、または、その実際のデータにアクセスすることなく、アクセスされることを必要とするかどうかを決定することを、システムおよびサービスが行うことを可能とする。コンピュート・サービス・マネージャ112は、下記で、より詳細に論考されるように、様々なデータ格納およびデータ検索タスクを実行する複数個のコンピューティング・リソース(例えば、仮想ウェアハウス)を提供する、実行プラットフォーム114にさらにカップリングされる。
【0016】
実行プラットフォーム114は、クラウド・コンピューティング・ストレージ・プラットフォーム104の部分である複数個のデータ・ストレージ・デバイス124-1から124-nにカップリングされる。一部の実施形態において、データ・ストレージ・デバイス124-1から124-nは、1つまたは複数の地理的場所において配置されるクラウド・ベースのストレージ・デバイスである。例えば、データ・ストレージ・デバイス124-1から124-nは、パブリック・クラウド・インフラストラクチャまたはプライベート・クラウド・インフラストラクチャの部分であり得る。データ・ストレージ・デバイス124-1から124-nは、ハード・ディスク・ドライブ(HDD)、ソリッド・ステート・ドライブ(SSD)、ストレージ・クラスタ、Amazon S3ストレージ・システム、または、任意の他のデータ・ストレージ技術であり得る。加えて、クラウド・コンピューティング・ストレージ・プラットフォーム104は、分散ファイル・システム(Hadoop分散ファイル・システム(HDFS)など)、オブジェクト・ストレージ・システム、および類するものを含み得る。
【0017】
実行プラットフォーム114は、複数のコンピュート・ノード(例えば、仮想ウェアハウス)を備える。コンピュート・ノード上のプロセスのセットが、コンピュート・サービス・マネージャ112によりコンパイルされるクエリ・プランを実行する。プロセスのセットは、クエリ・プランを実行するための第1のプロセスと、最長時間未使用(LRU:least recently used)ポリシーを使用してマイクロ・パーティション・ファイルをモニタリングおよび削除し、アウト・オブ・メモリ(OOM)エラー軽減プロセスを実現するための第2のプロセスと、コンピュート・サービス・マネージャ112に戻るように送出するための、プロセス・ログからの健全性情報、およびステータス情報を抽出する第3のプロセスと、システム・ブートの後に、コンピュート・サービス・マネージャ112との通信を確立するための第4のプロセスと、コンピュート・サービス・マネージャ112により提供される所与のジョブに対して、コンピュート・クラスタとのすべての通信をハンドリングするための、ならびに、コンピュート・サービス・マネージャ112、および、実行プラットフォーム114の他のコンピュート・ノードに戻るように情報を伝達するための第5のプロセスとを含むことができる。
【0018】
クラウド・コンピューティング・ストレージ・プラットフォーム104は、さらには、アクセス管理システム118と、APIゲートウェイ120とを備える。アクセス管理システム110と同様に、アクセス管理システム118は、ユーザが、ユーザ、ロール、およびグループを、作成および管理することを可能とし、ならびに、クラウド・サービスおよびリソースへのアクセスを可能とする、または拒否するために、パーミッションを使用することを可能とする。ネットワーク・ベースのデータ・ウェアハウス・システム102のアクセス管理システム110、および、クラウド・コンピューティング・ストレージ・プラットフォーム104のアクセス管理システム118は、ネットワーク・ベースのデータ・ウェアハウス・システム102およびクラウド・コンピューティング・ストレージ・プラットフォーム104の両方のユーザにより共有される、リソースおよびサービスの、アクセスおよび管理を可能にするように、情報を伝達および共有することができる。APIゲートウェイ120は、トラフィック管理、認可およびアクセス制御、モニタリング、ならびに、APIバージョン管理を含む、同時的なAPIコールを受け付け、処理することにおいて必然的に含まれるタスクをハンドリングする。APIゲートウェイ120は、API(例えば、REST API)を作成、パブリッシュ、メンテナンス、セキュア化、およびモニタリングするためのHTTPプロキシ・サービスを提供する。
【0019】
一部の実施形態において、共有されるデータ処理プラットフォーム100の要素同士の間の通信リンクは、1つまたは複数のデータ通信ネットワークによって実現される。これらのデータ通信ネットワークは、任意の通信プロトコル、および、任意のタイプの通信媒体を利用し得る。一部の実施形態において、データ通信ネットワークは、互いにカップリングされる2つ以上のデータ通信ネットワーク(またはサブネットワーク)の組み合わせである。代替の実施形態において、これらの通信リンクは、任意のタイプの通信媒体、および、任意の通信プロトコルを使用して実現される。
【0020】
図1において示されるように、データ・ストレージ・デバイス124-1から124-Nは、実行プラットフォーム114と関連付けられるコンピューティング・リソースから切り離される。すなわち、新しい仮想ウェアハウスは、実行プラットフォーム114内で作成および終了され得、追加的なデータ・ストレージ・デバイスは、独立的な様式で、104上で作成および終了され得る。このアーキテクチャは、変化するデータ格納/検索必要性、ならびに、共有されるデータ処理プラットフォーム100にアクセスするユーザおよびシステムの変化する必要性に基づく、ネットワーク・ベースのデータ・ウェアハウス・システム102に対する動的変化をサポートする。動的変化のサポートは、ネットワーク・ベースのデータ・ウェアハウス・システム102が、ネットワーク・ベースのデータ・ウェアハウス・システム102の中のシステムおよびコンポーネントに関する変化する需要に応じて、迅速にスケーリングすることを可能とする。データ・ストレージ・デバイスからのコンピューティング・リソースの切り離しは、大きい量のデータの格納を、対応する大きい量のコンピューティング・リソースを要することなくサポートする。同様に、リソースのこの切り離しは、個別の時間において利用されるコンピューティング・リソースにおける有意な増大を、利用可能なデータ・ストレージ・リソースにおける対応する増大を要することなくサポートする。加えて、リソースの切り離しは、異なるアカウントが、他のユーザのシステムに影響を及ぼすことなく、他のユーザにより共有されるデータを処理するために、追加的なコンピュート・リソースを作成することをハンドリングすることを可能にする。実例として、データ・プロバイダは、3つのコンピュート・リソースを有し、データ・コンシューマとデータを共有し得、データ・コンシューマは、共有されるデータに対するクエリを実行するために、新しいコンピュート・リソースを生成し得、新しいコンピュート・リソースは、データ・コンシューマにより管理され、データ・プロバイダのコンピュート・リソースに影響を及ぼすことも、それらのコンピュート・リソースと相互作用することもない。
【0021】
コンピュート・サービス・マネージャ112、データベース116、実行プラットフォーム114、クラウド・コンピューティング・ストレージ・プラットフォーム104、およびリモート・コンピューティング・デバイス106は、個々のコンポーネントとして
図1において示される。しかしながら、コンピュート・サービス・マネージャ112、データベース116、実行プラットフォーム114、クラウド・コンピューティング・ストレージ・プラットフォーム104、およびリモート・コンピューティング環境の各々は、APIおよびアクセス情報(例えば、トークン、ログイン・データ)により接続される、(例えば、複数個の地理的場所における複数個のシステム/プラットフォームにわたって分散される)分散システムとして実現され得る。加えて、コンピュート・サービス・マネージャ112、データベース116、実行プラットフォーム114、およびクラウド・コンピューティング・ストレージ・プラットフォーム104の各々は、受け取られる要求に対する変化、および、共有されるデータ処理プラットフォーム100の変化する必要性に依存して、(互いに対して独立的に)スケールアップまたはダウンされ得る。かくして、説明される実施形態において、ネットワーク・ベースのデータ・ウェアハウス・システム102は、動的であり、現在のデータ処理必要性をかなえるための規則的な変化をサポートする。
【0022】
典型的な動作の間に、ネットワーク・ベースのデータ・ウェアハウス・システム102は、コンピュート・サービス・マネージャ112により決定される複数個のジョブ(例えば、クエリ)を処理する。これらのジョブは、いつおよびどのようにジョブを実行すべきかを決定するためのコンピュート・サービス・マネージャ112により、スケジューリングおよび管理される。例えば、コンピュート・サービス・マネージャ112は、ジョブを複数個の離散的なタスクへと分割し得、何のデータが複数個の離散的なタスクの各々を実行するために必要とされるかを決定し得る。コンピュート・サービス・マネージャ112は、複数個の離散的なタスクの各々を、タスクを処理するための、実行プラットフォーム114の、1つまたは複数のノードに割り当て得る。コンピュート・サービス・マネージャ112は、何のデータがタスクを処理するために必要とされるかを決定し、実行プラットフォーム114の中のどのノードがタスクを処理するのに最も良好に適するかをさらに決定し得る。一部のノードは、タスクを処理するために必要とされるデータを(ノードが、以前のジョブのためにクラウド・コンピューティング・ストレージ・プラットフォーム104からデータを近時にダウンロードしていたことに起因して)既にキャッシュしていることがあり、それゆえに、タスクを処理することに対する良好な候補であり得る。データベース116内に格納されるメタデータは、実行プラットフォーム114内のどのノードが、タスクを処理するために必要とされるデータの少なくとも一部分を既にキャッシュしているかを決定することにおいて、コンピュート・サービス・マネージャ112を支援する。実行プラットフォーム114内の1つまたは複数のノードは、ノードによりキャッシュされるデータ、および、必要ならば、クラウド・コンピューティング・ストレージ・プラットフォーム104から検索されるデータを使用してタスクを処理する。実行プラットフォーム114の中のキャッシュから可能な限り多くのデータを検索することが望ましく、なぜならば、検索速度は、典型的には、クラウド・コンピューティング・ストレージ・プラットフォーム104からデータを検索することよりはるかに高速であるからである。
【0023】
図1において示されるように、共有されるデータ処理プラットフォーム100は、クラウド・コンピューティング・ストレージ・プラットフォーム104から実行プラットフォーム114を分離する。この配置構成において、実行プラットフォーム114内の処理リソースおよびキャッシュ・リソースは、クラウド・コンピューティング・ストレージ・プラットフォーム104内のデータ・ストレージ・リソース124-1から124-nに対して独立的に動作する。かくして、コンピューティング・リソースおよびキャッシュ・リソースは、特定のデータ・ストレージ・リソース124-1から124-nに制約されない。代わりに、すべてのコンピューティング・リソース、および、すべてのキャッシュ・リソースが、クラウド・コンピューティング・ストレージ・プラットフォーム104内のデータ・ストレージ・リソースの任意のものからデータを検索し、その任意のものにデータを格納し得る。
【0024】
図2は、本開示の一部の実施形態による、コンピュート・サービス・マネージャ112のコンポーネントを例解するブロック線図である。
図2において示されるように、要求処理サービス202が、受け取られるデータ格納要求およびデータ検索要求(例えば、データベース・データに関して実施されることになるジョブ)を管理する。例えば、要求処理サービス202は、受け取られるクエリ(例えば、データ格納要求またはデータ検索要求)を処理するために必要なデータを決定し得る。データは、実行プラットフォーム114の中のキャッシュ内に、または、クラウド・コンピューティング・ストレージ・プラットフォーム104内のデータ・ストレージ・デバイス内に格納され得る。管理コンソール・サービス204が、アドミニストレータおよび他のシステム・マネージャによる、様々なシステムおよびプロセスへのアクセスをサポートする。加えて、管理コンソール・サービス204は、ジョブを実行するための要求を受け取り、システム上のワークロードをモニタリングし得る。
【0025】
共有マスク・エンジン225が、下記でさらに詳細に論考されるように、ロールおよび関数に基づいて、異なるユーザに対して、共有されるデータ処理プラットフォーム100により管理されるデータを動的にマスクすることを管理する。
【0026】
コンピュート・サービス・マネージャ112は、さらには、ジョブ・コンパイラ206と、ジョブ・オプティマイザ208と、ジョブ・エグゼキュータ210とを含む。ジョブ・コンパイラ206は、ジョブを複数個の離散的なタスクへとパースし、複数個の離散的なタスクの各々に対する実行コードを生成する。ジョブ・オプティマイザ208は、処理されることを必要とするデータに基づいて、複数個の離散的なタスクを実行するための最も良好な方法を決定する。ジョブ・オプティマイザ208は、さらには、ジョブを実行することの速度および効率を改善するために、様々なデータ・プルーニング動作、および、他のデータ最適化技法をハンドリングする。ジョブ・エグゼキュータ210は、キューから受け取られる、または、コンピュート・サービス・マネージャ112により決定される、ジョブに対する実行コードを実行する。
【0027】
ジョブ・スケジューラおよびコーディネータ212が、実行プラットフォーム114に対するコンパイル、最適化、およびディスパッチのために、受け取られるジョブを適切なサービスまたはシステムに送出する。例えば、ジョブは、優先順位付けされ、その優先順位付けされた順序で処理され得る。実施形態において、ジョブ・スケジューラおよびコーディネータ212は、コンピュート・サービス・マネージャ112によりスケジューリングされる内部ジョブに対して、データベース内の他のシステムによりスケジューリングされ得るが、実行プラットフォーム114内の同じ処理リソースを利用し得る、ユーザ・クエリなどの他の「外側」ジョブによって、優先順位を決定する。一部の実施形態において、ジョブ・スケジューラおよびコーディネータ212は、個別のタスクを処理するための、実行プラットフォーム114内の個別のノードを識別し、または割り当てる。仮想ウェアハウス・マネージャ214が、実行プラットフォーム114内で実現される複数個の仮想ウェアハウスの動作を管理する。下記で論考されるように、各々の仮想ウェアハウスは、キャッシュとプロセッサとを各々が含む、複数個の実行ノードを含む(例えば、仮想マシン、オペレーティング・システム・レベル・コンテナ実行環境)。
【0028】
加えて、コンピュート・サービス・マネージャ112は、リモート・データ・ストレージ・デバイス内に、および、ローカル・キャッシュ(すなわち、実行プラットフォーム114内のキャッシュ)内に格納されるデータに関係付けられる情報を管理する、構成およびメタデータ・マネージャ216を含む。構成およびメタデータ・マネージャ216は、どのデータ・マイクロ・パーティションが、個別のタスクまたはジョブを処理するためのデータを検索するためにアクセスされることを必要とするかを決定するために、メタデータを使用する。モニタおよびワークロード・アナライザ218は、コンピュート・サービス・マネージャ112により実施されるプロセスを監督し、実行プラットフォーム114内の仮想ウェアハウスおよび実行ノードにわたるタスク(例えば、ワークロード)の配分を管理する。モニタおよびワークロード・アナライザ218は、さらには、必要とされる際に、ネットワーク・ベースのデータ・ウェアハウス・システム102の全体を通しての変化するワークロードに基づいて、タスクを再配分し、さらには実行プラットフォーム114により処理され得るユーザ(例えば、「外部」)クエリ・ワークロードに基づいて、タスクをさらに再配分し得る。構成およびメタデータ・マネージャ216、ならびに、モニタおよびワークロード・アナライザ218は、データ・ストレージ・デバイス220にカップリングされる。
図2におけるデータ・ストレージ・デバイス220は、ネットワーク・ベースのデータ・ウェアハウス・システム102の中の任意のデータ・ストレージ・デバイスを表す。例えば、データ・ストレージ・デバイス220は、実行プラットフォーム114内のキャッシュ、クラウド・コンピューティング・ストレージ・プラットフォーム104内のストレージ・デバイス、または、任意の他のストレージ・デバイスを表し得る。
【0029】
図3は、本開示の一部の実施形態による、実行プラットフォーム114のコンポーネントを例解するブロック線図である。
図3において示されるように、実行プラットフォーム114は、仮想マシンなどの、コンピュート・インスタンスの、弾力のあるクラスタである、複数個の仮想ウェアハウスを含む。例解される例において、仮想ウェアハウスは、仮想ウェアハウス1と、仮想ウェアハウス2と、仮想ウェアハウスnとを含む。各々の仮想ウェアハウス(例えば、EC2クラスタ)は、データ・キャッシュとプロセッサとを各々が含む、複数個の実行ノード(例えば、仮想マシン)を含む。仮想ウェアハウスは、複数個の実行ノードを使用することにより、複数個のタスクを並列で実行することができる。本明細書において論考されるように、実行プラットフォーム114は、システムおよびユーザの現在の処理必要性に基づいて、リアルタイムで、新しい仮想ウェアハウスを追加し、既存の仮想ウェアハウスをドロップすることができる。この柔軟性は、実行プラットフォーム114が、必要とされるときに、大きい量のコンピューティング・リソースを迅速にデプロイすることを、それらのコンピューティング・リソースに対して、それらのリソースがもはや必要とされないときに支払いを行うことを継続することを強いられることなく行うことを可能とする。すべての仮想ウェアハウスは、任意のデータ・ストレージ・デバイス(例えば、クラウド・コンピューティング・ストレージ・プラットフォーム104内の任意のストレージ・デバイス)からのデータにアクセスすることができる。
【0030】
図3において示される各々の仮想ウェアハウスは、3つの実行ノードを含むが、個別の仮想ウェアハウスは、任意の数の実行ノードを含み得る。さらに、仮想ウェアハウス内の実行ノードの数は動的であり、そのことは、新しい実行ノードが、追加的な需要が存在するときに作成され、既存の実行ノードが、それらの実行ノードがもはや必要でないときに(例えば、クエリまたはジョブ完了時に)削除されるというようなことである。
【0031】
各々の仮想ウェアハウスは、
図1において示されるデータ・ストレージ・デバイス124-1から124-nの任意のものにアクセスする能力がある。かくして、仮想ウェアハウスは、必ずしも特定のデータ・ストレージ・デバイス124-1から124-nに割り当てられず、代わりに、クラウド・コンピューティング・ストレージ・プラットフォーム104の中のデータ・ストレージ・デバイス124-1から124-nの任意のものからのデータにアクセスすることができる。同様に、
図3において示される実行ノードの各々は、データ・ストレージ・デバイス124-1から124-nの任意のものからのデータにアクセスすることができる。実例として、第1のユーザ(例えば、プロバイダ・アカウント・ユーザ)のストレージ・デバイス124-1は、別のユーザ(例えば、コンシューマ・アカウント・ユーザ)の仮想ウェアハウス内のワーカ・ノードと共有され得、そのことによって、別のユーザは、データベース(例えば、読み出し専用データベース)を作成し、ストレージ・デバイス124-1内のデータを、データをコピーする(例えば、そのデータを、コンシューマ・アカウント・ユーザにより管理される新しいディスクにコピーする)ことを必要とすることなく、直接的に使用することができる。一部の実施形態において、個別の仮想ウェアハウス、または、個別の実行ノードは、特定のデータ・ストレージ・デバイスに一時的に割り当てられ得るが、仮想ウェアハウスまたは実行ノードは、任意の他のデータ・ストレージ・デバイスからのデータに後でアクセスし得る。
【0032】
図3の例において、仮想ウェアハウス1は、3つの実行ノード302-1、302-2、および302-nを含む。実行ノード302-1は、キャッシュ304-1と、プロセッサ306-1とを含む。実行ノード302-2は、キャッシュ304-2と、プロセッサ306-2とを含む。実行ノード302-nは、キャッシュ304-nと、プロセッサ306-nとを含む。各々の実行ノード302-1、302-2、および302-nは、1つまたは複数の、データ格納および/またはデータ検索タスクを処理することと関連付けられる。例えば、仮想ウェアハウスは、クラスタリング・サービス、マテリアライズド・ビュー・リフレッシュ・サービス、ファイル・コンパクション・サービス、ストレージ・プロシージャ・サービス、またはファイル・アップグレード・サービスなどの内部サービスと関連付けられる、データ格納およびデータ検索タスクをハンドリングし得る。他の実現形態において、個別の仮想ウェアハウスは、個別のデータ・ストレージ・システム、または、データの個別のカテゴリと関連付けられる、データ格納およびデータ検索タスクをハンドリングし得る。
【0033】
上記で論考された仮想ウェアハウス1と同様に、仮想ウェアハウス2は、3つの実行ノード312-1、312-2、および312-nを含む。実行ノード312-aは、キャッシュ314-1と、プロセッサ316-1とを含む。実行ノード312-nは、キャッシュ314-nと、プロセッサ316-nとを含む。実行ノード312-nは、キャッシュ314-nと、プロセッサ316-nとを含む。加えて、仮想ウェアハウス3は、3つの実行ノード322-1、322-2、および322-nを含む。実行ノード322-1は、キャッシュ324-1と、プロセッサ326-1とを含む。実行ノード322-2は、キャッシュ324-2と、プロセッサ326-2とを含む。実行ノード322-nは、キャッシュ324-nと、プロセッサ326-nとを含む。
【0034】
一部の実施形態において、
図3において示される実行ノードは、実行ノードがキャッシュしているデータに関してステートレスである。例えば、これらの実行ノードは、実行ノード、または、個別の実行ノードによりキャッシュされているデータに関するステート情報を、格納することも、他の形で維持することもない。かくして、実行ノード障害の事象において、障害が起きたノードは、別のノードにより、トランスペアレントに置き換わられ得る。障害が起きた実行ノードと関連付けられるステート情報は存在しないので、新しい(置き換わり)実行ノードは、個別のステートを再作成することに対する懸念なしに、障害が起きたノードに対して容易に置き換わることができる。
【0035】
図3において示される実行ノードは、1つのデータ・キャッシュと、1つのプロセッサとを各々が含むが、代替の実施形態は、任意の数のプロセッサと、任意の数のキャッシュとを内包する実行ノードを含み得る。加えて、キャッシュは、異なる実行ノードの間で、サイズにおいて変動し得る。
図3において示されるキャッシュは、ローカル実行ノード(例えば、ローカル・ディスク)内に、クラウド・コンピューティング・ストレージ・プラットフォーム104内の1つまたは複数のデータ・ストレージ・デバイスから検索されたデータ(例えば、所与のノードにより、近時にアクセスされたS3オブジェクト)を格納する。一部の例示的な実施形態において、キャッシュは、クエリがそのクエリに対して必要な列のみをダウンロードする際に、ファイル・ヘッダ、および、ファイルの個々の列を格納する。
【0036】
キャッシュ・ヒットを改善し、ノード・キャッシュ内に格納される重複する冗長なデータを回避するために、ジョブ・オプティマイザ208は、アクセスされるデータ(例えば、データベース116またはデータベース122内のデータ)のテーブル・ファイル名全体に関してハッシュするためのコンシステント・ハッシング・スキームを使用して、入力ファイル・セットをノードに割り当てる。同じテーブル・ファイルにアクセスする、後続の、または同時的なクエリは、そのことのために、一部の例示的な実施形態によれば、同じノード上で実施されることになる。
【0037】
論考されるように、ノードおよび仮想ウェアハウスは、環境条件(例えば、災害シナリオ、ハードウェア/ソフトウェア問題点(例えば、機能不全)、または、アドミニストレーティブな変化(例えば、コストを低下させるために、大きいクラスタから、より小さいクラスタに変化させること)に応じて、動的に変化し得る。一部の例示的な実施形態において、ノードのセットが変化するとき、直ちにリシャッフルされるデータはない。代わりに、最長時間未使用置き換えポリシーが、複数個のジョブ全体に関して、失われたキャッシュ・コンテンツについて最終的に置き換えるために実現される。かくして、キャッシュは、リモート・ストレージ・システムからのデータを一貫して検索するプラットフォーム内で発生するボトルネック問題を低減し、または消失させる。リモート・ストレージ・デバイスからのデータに繰り返しアクセスすることの代わりに、本明細書において説明されるシステムおよび方法は、実行ノード内のキャッシュからのデータにアクセスし、そのことは、有意に、より高速であり、上記で論考されたボトルネック問題を回避する。一部の実施形態において、キャッシュは、キャッシュされるデータへの高速のアクセスをもたらす高速度メモリ・デバイスを使用して実現される。各々のキャッシュは、クラウド・コンピューティング・ストレージ・プラットフォーム104内のストレージ・デバイスの任意のものからのデータを格納することができる。
【0038】
さらに、キャッシュ・リソースおよびコンピューティング・リソースは、異なる実行ノードの間で変動し得る。例えば、1つの実行ノードは、相当量のコンピューティング・リソースと、最小量のキャッシュ・リソースとを内包し得、そのことは、実行ノードを、相当量のコンピューティング・リソースを要するタスクに対して有用にする。別の実行ノードは、相当量のキャッシュ・リソースと、最小量のコンピューティング・リソースとを内包し得、そのことは、この実行ノードを、大きい量のデータのキャッシングを要するタスクに対して有用にする。なおも別の実行ノードは、大きい量のデータの高速のスキャニングを要するタスクに対して有用な、より高速の入出力動作をもたらすキャッシュ・リソースを内包し得る。一部の実施形態において、実行プラットフォーム114は、個別の実行と関連付けられるキャッシュ・リソースおよびコンピューティング・リソースの間でワークを配分するためのスキュー・ハンドリングを実現し、配分は、実行ノードにより実施されることになる期待されるタスクにさらに基づき得る。例えば、実行ノードは、実行ノードにより実施されるタスクが、よりプロセッサ集約的になるならば、より多くの処理リソースを割り当てられ得る。同様に、実行ノードは、実行ノードにより実施されるタスクが、より大きいキャッシュ容量を要するならば、より多くのキャッシュ・リソースを割り当てられ得る。さらに、一部のノードは、様々な問題点(例えば、仮想化問題点、ネットワーク・オーバヘッド)に起因して、他のものよりはるかに低速で実行していることがある。一部の例示的な実施形態において、不均衡は、ファイル・スティーリング・スキームを使用して、スキャン・レベルにおいて対処される。特に、ノード・プロセスが、入力ファイルのそのプロセスのセットをスキャンすることを完了するときはいつでも、そのノード・プロセスは、他のノードから追加的なファイルを要求する。他のノードのうちの1つが、そのような要求を受け取るならば、ノードは、そのノード自体のセットを分析し(例えば、どれだけ多くのファイルが、要求が受け取られるときに入力ファイル・セット内に残されているか)、次いで、現在のジョブ(例えば、クエリ)の時間幅に対する、残存するファイルのうちの1つまたは複数の所有権について移転させる。要求するノード(例えば、ファイル・スティーリング・ノード)は、次いで、データ(例えば、ヘッダ・データ)を受け取り、クラウド・コンピューティング・ストレージ・プラットフォーム104から(例えば、データ・ストレージ・デバイス124-1から)ファイルをダウンロードし、移転させるノードからはファイルをダウンロードしない。この手立てでは、遅れるノードは、遅れるノード上のロードを悪化させない手立てで、ファイル・スティーリングによってファイルを移転させることができる。
【0039】
仮想ウェアハウス1、2、およびnは、同じ実行プラットフォーム114と関連付けられるが、仮想ウェアハウスは、複数個の地理的場所における複数個のコンピューティング・システムを使用して実現され得る。例えば、仮想ウェアハウス1は、第1の地理的場所におけるコンピューティング・システムにより実現され得、一方で、仮想ウェアハウス2およびnは、第2の地理的場所における別のコンピューティング・システムにより実現される。一部の実施形態において、これらの異なるコンピューティング・システムは、1つまたは複数の異なるエンティティにより維持されるクラウド・ベースのコンピューティング・システムである。
【0040】
加えて、各々の仮想ウェアハウスは、複数個の実行ノードを有するように、
図3において示される。各々の仮想ウェアハウスと関連付けられる複数個の実行ノードは、複数個の地理的場所における複数個のコンピューティング・システムを使用して実現され得る。例えば、仮想ウェアハウス1のインスタンスは、ある地理的場所における1つのコンピューティング・プラットフォーム上の実行ノード302-1および302-2を実現し、別の地理的場所における異なるコンピューティング・プラットフォームにおける実行ノード302-nを実現する。実行ノードを実現するための個別のコンピューティング・システムを選択することは、個別の実行ノードに対して必要とされるリソースのレベル(例えば、処理リソース所要量およびキャッシュ所要量)、個別のコンピューティング・システムにおいて利用可能なリソース、地理的場所の中の、または、地理的場所同士の間のネットワークの通信能力、および、どのコンピューティング・システムが仮想ウェアハウス内の他の実行ノードを既に実現しているかなど、様々な要因に依存し得る。
【0041】
実行プラットフォーム114は、さらにはフォールト・トレラントである。例えば、1つの仮想ウェアハウスが障害を起こすならば、その仮想ウェアハウスは、異なる地理的場所における異なる仮想ウェアハウスによって迅速に置き換わられる。
【0042】
個別の実行プラットフォーム114は、任意の数の仮想ウェアハウスを含み得る。加えて、個別の実行プラットフォーム内の仮想ウェアハウスの数は動的であり、そのことは、新しい仮想ウェアハウスが、追加的な処理および/またはキャッシング・リソースが必要とされるときに作成されるというようなことである。同様に、既存の仮想ウェアハウスが、仮想ウェアハウスと関連付けられるリソースがもはや必要でないときに削除され得る。
【0043】
一部の実施形態において、仮想ウェアハウスは、クラウド・コンピューティング・ストレージ・プラットフォーム104内の同じデータに関して動作し得るが、各々の仮想ウェアハウスは、独立的な処理およびキャッシング・リソースを伴う、その各々の仮想ウェアハウス自体の実行ノードを有する。この構成は、異なる仮想ウェアハウス上の要求が、独立的に、および、要求同士の間の干渉を伴わずに処理されることを可能とする。仮想ウェアハウスを動的に追加および除去する能力と組み合わされる、この独立的な処理は、既存のユーザにより認められる性能に影響力を及ぼすことなく、新しいユーザに対する新しい処理容量の追加をサポートする。
【0044】
図4A~
図4Cは、一部の例示的な実施形態による、ネットワーク・ベースのデータ・ウェアハウス・システム102を使用してデータベース・オブジェクトを共有するための例示的なデータ・アーキテクチャを示す。論考されるように、アクセス管理システム110は、ストレージ・デバイス同士の間でデータを共有するための共有データ(例えば、単一のアカウントの異なるストレージ・デバイス、または、第2のコンシューマ・アカウントに対して第1の共有者アカウントに割り振られるストレージ・デバイス内のデータを共有すること)を管理することができる。一部の例示的な実施形態において、アクセス管理システム110は、顧客アカウント内のオブジェクトへのアクセスを律するためのロール・ベースのアクセス制御を実現する。ロール・ベースのアクセス制御は、2つの機構:ロールおよび権限からなる。1つの実施形態において、ロールは、ユーザに割り当てられる、エンド・ユーザ・アカウント(例えば、プロバイダ・アカウント、コンシューマ・アカウント)内の特別なオブジェクトである。ロールとデータベース・オブジェクトとの間の権限は、何の特権をロールがこれらのオブジェクトに関して有するかを定義する。例えば、データベースに関して使用権限を有するロールは、コマンド「show databases」を実行するときに、このデータベースを「閲覧する」ことができ、テーブルに関して選択権限を有するロールは、このテーブルから読み出すことができるが、そのテーブルに書き込むことはできない。ロールは、テーブルに関して、そのテーブルに書き込むことができるために、修正権限を有することを必要とすることになる。
【0045】
図4Aは、一部の例示的な実施形態による、マルチテナントで共有されるデータベース・プラットフォーム(例えば、システム102によりアクセスされるようなプラットフォーム120)の顧客アカウント内のオブジェクトへのロール・ベースのアクセスを例解する概略ブロック線図である。後に続く例において、ユーザ・アカウント「A1」は、データ・プロバイダ仮想ウェアハウス(例えば、
図3Aにおける仮想ウェアハウス1)を管理するデータ・プロバイダ・アカウントに対応し、別の異なるユーザ・アカウントA2は、データ・コンシューマ仮想ウェアハウス(例えば、
図3Aにおける仮想ウェアハウス2)を起動するデータ・コンシューマ・アカウントに対応する。
【0046】
例解されるように、A1アカウントは、オブジェクト階層内のすべてのオブジェクトに対する権限を有するロールR1を内包する。これらの権限は、R1と、データベース・オブジェクトD1およびD2、共有S1およびS2との間の使用権限、ならびに、R1と、テーブル・オブジェクトT1、ビュー・オブジェクトV1、関数オブジェクトF2、シーケンス・オブジェクトQ2、テーブル・オブジェクトT2との間の選択権限であるということを想定すると、アクティブ化されたロールR1を伴うユーザは、アカウントA1の中で、すべてのオブジェクトを閲覧し、すべてのテーブル、ビュー、およびシーケンスからデータを読み出すことができ、関数F2を実行することができる。
【0047】
アカウントA2は、オブジェクト階層内のすべてのオブジェクトに対する権限を有するロールR3を内包する。これらの権限は、R3とD3、S3との間の使用権限であり、R3とT3との間の権限を選択するということを想定すると、アクティブ化されたロールR3を伴うユーザは、アカウントA2の中で、すべてのオブジェクトを閲覧し、すべてのテーブル、ビュー、およびシーケンスからデータを読み出すことができる。
【0048】
図4Bは、ロール同士の間の使用権限を例解する。ロール・ベースのアクセス制御によって、1つのロールから別のロールに、使用について権限付与することが、さらには可能である。別のロールに対する使用権限を有するロールは、その他のロールのすべてのアクセス特権を「継承する」。例えば、ロールR2では、ロールR1に関する使用権限を有する。アクティブ化されたロールR2を伴う(例えば、対応する認可詳細を伴う)ユーザは、ロールR2がロールR1からすべての権限を継承するので、すべてのオブジェクトを閲覧し、すべてのオブジェクトから読み出すことができる。
【0049】
1つの実施形態によれば、使用権限は、異なるアカウントにわたって権限付与される。データを共有するアカウントは、本明細書において「共有者アカウント」と呼称され得、データが共有されるアカウントは、本明細書において「ターゲット・アカウント」と呼称され得る。本明細書において開示される一部の実施形態は、データの、瞬時の、ゼロ・コピーの、容易に制御可能な、クロス・アカウントの共有を可能とする。一部の実施形態において、別のアカウントとデータを共有するために、共有者アカウントは、共有オブジェクトを生成し得る。共有オブジェクトの中で、ロールが作成され得、共有者アカウントのユーザは、ロール、および/または、ロールのもとで権利について権限付与されることになる外来のアカウント(またはターゲット・アカウント)に対して利用可能である、アクセス権利または権限を指示し得る。ターゲット・アカウントは、次いで、ターゲット・アカウントが権利またはアクセスについて権限付与されている、他のアカウント内の共有オブジェクトまたはロールを識別することができ得る。1つの実施形態において、共有者アカウント内の共有オブジェクトは、エイリアス・オブジェクトおよびクロス・アカウント・ロール権限を使用して、ターゲット・アカウント内へとインポートされ得る。
【0050】
共有者アカウントは、新しいタイプのオブジェクト、共有オブジェクトを作成する。共有オブジェクトは、共有者アカウントの中で識別されるための一意的な名前を有する。例えば、名前は、アカウントの中で一意的であることを必要とし得るが、必ずしもアカウントにわたって一意的であることを必要とはしないことがある。共有オブジェクトは、共有者アカウント内のそれらの共有オブジェクトの名前によって、それらの共有オブジェクトを参照することにより、作成、修正、および削除され得る。
【0051】
一部の実施形態において、各々の共有オブジェクトは、単一のロールを内包する。このロールとオブジェクトとの間の権限は、何のオブジェクトが共有されているか、および、何の特権によってこれらのオブジェクトが共有されるかを定義する。ロールおよび権限は、ロール・ベースのアクセス制御の実現形態における、任意の他のロールおよび権限システムと同様であり得る。共有オブジェクト内のロールに付属させられる権限のセットを修正することにより、より多くのオブジェクトが、(ロールに権限を追加することにより)共有され得、より少ないオブジェクトが、(ロールから権限を取り消すことにより)共有され得、または、オブジェクトは、(例えば、以前は読み出し専用であった共有されるテーブル・オブジェクトへの書き込みアクセスを可能とするために、権限のタイプを変化させることにより)異なる特権を伴って共有され得る。
【0052】
1つの実施形態において、共有オブジェクトは、さらには、他の顧客アカウントへの参照のリストを内包する。特異的に共有オブジェクト内にあるこれらのアカウントのみが、この共有オブジェクトをルックアップする、この共有オブジェクトにアクセスする、および/または、この共有オブジェクトからインポートすることを可能とされ得る。他の顧客アカウントの参照のリストを修正することにより、共有オブジェクトは、より多くのアカウントにアクセス可能にされ、または、より少ないアカウントに制約され得る。
【0053】
図4Cは、異なるアカウントの間の論理的権限およびリンクを例解する概略ブロック線図である。データベース・エイリアス・オブジェクトDSが、アカウントA2内で作成される。データベース・エイリアスD5が、リンクL1によってデータベースD2を参照する。ロールR3は、データベースDSに関する使用権限G1を有する。ロールR3は、顧客アカウントA1内のロールR4に対する第2の使用権限G2を有する。権限G2は、アカウントA1とA2との間のクロス・アカウント権限である。ロール・ベースのアクセス制御は、アクティブ化されたロールR3を伴う、アカウントA2におけるユーザが、アカウントA1内のデータにアクセスすることを可能とする。例えば、アカウントA2におけるユーザが、テーブルT2内のデータを読み出すことを欲するならば、ロール・ベースのアクセス制御は、そのことを可能とするものであり、なぜならば、ロールR3は、ロールR4の使用権限を有し、ロールR4は、代わって、テーブルT2に関する選択権限を有するからである。例解として、アクティブ化されたロールR3を伴うユーザは、「D5.S2.T2」に行先を定められるクエリまたは選択をランさせることにより、T2にアクセスし得る(その場合、T2へのアクセスは、S2およびD5を通ってのものである)。
【0054】
オブジェクト・エイリアス、および、ターゲット・アカウント内のロールから共有者アカウント内のロールへのクロス・アカウント権限を使用することは、ターゲット・アカウントにおけるユーザが、共有者アカウント内の情報にアクセスすることを可能とする。この手立てでは、データベース・システムは、瞬時の、ゼロ・コピーの、容易に制御可能な方式での、異なる顧客アカウントの間のデータの共有を可能にし得る。共有は瞬時であり得、なぜならば、エイリアス・オブジェクトおよびクロス・アカウント権限は、数ミリ秒で作成され得るからである。共有はゼロ・コピーであり得、なぜならば、プロセス内で複製されなければならないデータはないからである。例えば、すべてのクエリまたは選択は、ターゲット・アカウント内で複製物を作成することなく、共有者アカウント内の共有されるオブジェクトに対して直接的に行われ得る。共有は、さらには、制御するのが容易であり、なぜならば、その共有は、ロール・ベースのアクセス制御の、使用するのが容易な技法を利用するからである。加えて、分離されるストレージおよびコンピュートを伴う実施形態において、共有されるデータに関してクエリを実行するときに、コンピューティング・リソースの間にコンテンションが存在しない。かくして、異なる顧客アカウント内の異なる仮想ウェアハウスは、共有されるデータを個々に処理し得る。例えば、第1のアカウントに対する第1の仮想ウェアハウスが、共有者アカウントにより共有されるデータを使用して、データベース・クエリまたはステートメントを処理し得、第2のアカウントまたは共有者アカウントに対する第2の仮想ウェアハウスが、共有者アカウントの共有されるデータを使用して、データベース・クエリまたはステートメントを処理し得る。
【0055】
図5は、一部の例示的な実施形態による、共有されるデータ処理プラットフォーム100を使用してエンティティ(例えば、ユーザ)同士の間でデータを共有するための例示的なデータベース・アーキテクチャ500を示す。表示される例において、データ・プロバイダ・アカウント505が、データ510のアドミニストレータとしてログインさせられるユーザ(例えば、データを作成および格納する、第1の会社、部門、その他における第1のユーザのアカウント)のユーザ・デバイス(例えば、ラップトップ)に対応する。実例として、プロバイダ・アカウント505は、共有されるデータ処理プラットフォーム100内でデータを生成および格納する。データ510は、(例えば、データベース116、もしくは、114内のノードのキャッシュ内での格納、または、クラウド・コンピューティング・ストレージ・プラットフォーム104上に配置されるデータのために)ネットワーク・ベースのデータ・ウェアハウス・システム102にアップロードされるデータを含むことができる。コンシューマ・アカウント515は、プロバイダ・アカウント505が、共有されるデータ処理プラットフォーム100によって、データ510を共有することに努める、別のユーザ(例えば、ログインし、コンシューマ・アカウント515のアクティブ・セッションを作成するためにラップトップを使用する、別の会社、同じ会社の中の異なる部門、その他における別のユーザ)のユーザ・デバイスに対応する。例えば、データ・プロバイダ・アカウント505およびデータ・コンシューマ・アカウント515は、両方が、(例えば、アクセス管理システム110および/またはアクセス管理システム118により管理される、パーミッション、ロール、セッション情報に基づいて)ネットワーク・ベースのデータ・ウェアハウス・システム102を使用して、データ510にアクセスする、データ510を修正する、または、他の形でデータ510を処理することができる、リモート・コンピューティング・デバイス106などの、異なるリモート・コンピューティング・デバイスからランさせられ得る。例解される例において、データ510は、データベース(例えば、データベース1、データベース2、データベース3)を含む。各々のデータベースは、テーブル(例えば、テーブル2、テーブル3)、ビュー(例えば、ビュー1、ビュー3)、および共有(例えば、共有1)などのデータベース・オブジェクトのグループである、1つまたは複数のスキームからなる。
【0056】
テーブル内で、データは、列および行のコレクションとして構造化されるリレーショナル・データベース・データであり、テーブルは、他のテーブルへの参照(例えば、キー、インデックス、コンシューマ名などの共有される列)を含むことができる。実例として、
図6を参照すると、第1のテーブル600が、3つの列(患者名、年齢、および症状)を、各々の患者に対する行とともに備え、第2のテーブル605が、2つの列(患者名、郵便番号)を備え、患者名は、所与の患者/ユーザを参照するために使用される同一の列である。実例として、結合演算またはビューが、(例えば、患者名、症状、郵便番号列を使用して、ビューまたは新しいテーブルを作成することにより)異なる症状が現れた郵便番号コードを示すために、第1のテーブル600、および、第2のテーブルから作成され得る。リレーショナル・データベース構造が、例としてここでは論考されるが、一部の例示的な実施形態において、共有されるデータ処理プラットフォーム100により管理されるデータは、非リレーショナル・データベース・フォーマット(例えば、no-SQL、Hadoop、Sparkフレーム、その他)で構造化されるデータであり得るということが察知される。
【0057】
図5に戻ると、ここで使用される際に、ビューは、(例えば、カスタマイズされたビュー・スキーマによって、ある決まった列を表示する)1つまたは複数のテーブルからのデータを表示するデータベース・オブジェクトである。ビューは、ビューがそれ自体テーブルであるかのように、クエリの結果がアクセスされることを可能とする。ビューは、データを「マスクする」ために、列を除外する、または隠すために利用され得るが、ビューを使用してデータを隠すことは、管理されなければならない別のオブジェクトを作成し、所与のネットワーク環境内に、マスクされることになる多くのアイテムが存在するならば、大きい量のビューが管理されなければならず、そのことは、相当量のオーバヘッドおよび管理複雑さをもたらす。加えて、マスキングのためにビューを使用してデータを隠すことは、どのロールのアクセスがビューを閲覧するかに対して不可知である(例えば、ユーザ・エンジニアは、アナリスト・ユーザと同じビューを閲覧する)。加えて、ビューは、ただ単にデータ・オブジェクト・ビューを作成し、データ変換スタイル演算を実施しない(例えば、名前の最初の3つの文字について、ハッシュタグによって置き換えない)。加えて、ビューを共有することは、ネットワーク・セキュリティを含み得、なぜならば、ビューの受け取り手は、ビューを作成するために使用される、土台となるデータへのアクセスを得る(例えば、完全なテーブルであって、それから列が、所与のビューを作成するために引き出された、完全なテーブルにアクセスする)ことができ得るからである。
【0058】
共有は、効率的およびセキュアな様式で、ネットワーク・ベースのデータ・ウェアハウス・システム102のユーザ同士の間でデータを共有するために使用され得る、共有されるデータ処理プラットフォーム100に対してカスタムであるオブジェクトである。共有オブジェクトは、所与のデータベースを共有するために使用されるすべての情報を備える。各々の共有は、共有するためのオブジェクトを内包するデータベースおよびスキーマへのアクセスについて権限付与する特権と、特定のオブジェクト(例えば、テーブル、セキュア・ビュー)へのアクセスについて権限付与する特権と、データベース、および、そのデータベースのオブジェクトが共有されるコンシューマ・アカウントとを含む。所与のデータベースが(例えば、データ・プロバイダ・アカウント505により)作成される後に、共有されるオブジェクトが、クラウド・コンピューティング・ストレージ・プラットフォーム104によって、他のユーザ(例えば、コンシューマ・アカウント515)によるアクセスおよび/または操作に対して利用可能にされ得る。例えば、プロバイダ・アカウント505は、1つまたは複数のデータベース・インスタンスを作成し、次いで、データ510をデータベース・インスタンス内へとロードし、ビュー、および/または、共有されるオブジェクトを作成し、ネットワーク・ベースのデータ・ウェアハウス102によってデータベース・オブジェクトにアクセスすることができるコンシューマ・アカウント(例えば、リーダ・アカウント)をさらに作成することができ、アカウント同士の間で転送されることを必要とするデータはなく、代わりに、共有されるデータが、起源となるストレージ・デバイス上で直接的にアクセスされる。実例として、コンシューマ・アカウント515は、共有されるデータを格納するストレージ・デバイスからデータをコピーする必要のない分析のために、ページにアクセスするためにブラウザを使用してログインし、読み出し専用データベース(例えば、「consumerDatabase」)を生成し、データベース内に、共有されるデータ(例えば、「ビュー3」)をポピュレートすることができる。
【0059】
図7A~
図7Eは、一部の例示的な実施形態による、共有されるデータ処理プラットフォーム100を使用してデータを管理するための例示的なユーザ・インターフェイスを示す。例解的な例において、
図7Aおよび
図7Bは、データ・プロバイダ・アカウント505のデバイス(例えば、ラップトップ)上に表示されるインターネット・ブラウザ・ユーザ・インターフェイスに対応し、
図7C~
図7Eは、コンシューマ・アカウント515としてログインさせられる別のユーザの別のデバイス上に表示される例示的なインターネット・ブラウザ・ユーザ・インターフェイスである。インターネット・ブラウザ・ユーザ・インターフェイスが、例解される例において論考されるが、ユーザ・インターフェイスは、クライアント・デバイス・オペレーティング・システムのネイティブ・アプリケーション(例えば、スマートフォン上のモバイル・アプリケーション、Linux(登録商標)ラップトップ上のLinux(登録商標)アプリケーション、Windows対応ラップトップ上のwindowsアプリケーション、その他)などの、他のアプリケーションへと同様に統合され得るということが察知される。
【0060】
図7Aにおいて、ユーザ・インターフェイス700が、リーダ・アカウントを作成するためのウィンドウ705を表示する。ウィンドウ705は、アカウント名(例えば、「bert」、第三者会社内のデータ・アナリストなどの、コンシューマ・アカウント515の名前)を作成するためのフィールドと、ユーザ名フィールドおよびパスワード・フィールドなどのログイン・フィールドとを含む。ウィンドウ705内の「アカウントを作成」ボタンを選択すると、コンシューマ・アカウント515が、作成され、(例えば、アクセス管理システム110およびアクセス管理システム118によって)共有されるデータ処理プラットフォーム100上のプロバイダ・アカウント505にリンクされる。
【0061】
図7Bにおいて、ユーザ・インターフェイス710が、共有オブジェクトを作成し、データベース・オブジェクト(例えば、テーブル、ビュー)を共有オブジェクトに追加し、共有オブジェクト・アクセス(例えば、共有オブジェクトが共有されるコンシューマ・アカウント)を指定するためのウィンドウ715を表示する。例えば、「共有名」フィールドは、共有オブジェクトが命名されることを可能とし、「データベース」フィールドは、データベース・オブジェクトが、ビュー3などの共有オブジェクト内に含められることを可能とする。ウィンドウ715は、共有されるオブジェクトに対して、1つまたは複数のコンシューマ・アカウント(例えば、bert)にアクセスを与える「コンシューマ・アカウント」フィールドと、コンシューマ・アカウント515へのURL(例えば、コンシューマ・アカウント515のネットワーク・サービス・インスタンスへのURL)である、共有オブジェクト・リンクとをさらに含む。
【0062】
ユーザがウィンドウ715内の作成ボタンを選択することに基づいて、共有オブジェクトが作成され、共有オブジェクトへのアクセスが、コンシューマ・アカウント515(例えば、Bertのアカウント)に割り当てられる。共有オブジェクト・リンクは、コンシューマ・アカウント515(例えば、ネットワーク・サービスとしてのコンシューマ・アカウント・セッション)にアクセスし、そのコンシューマ・アカウント515をアクティブ化するために、プロバイダ・アカウントによりコピーされ、ログイン情報(例えば、ユーザ名、パスワード)とともに、他のユーザ(例えば、Bert)に送出され得る。
【0063】
図7Cは、一部の例示的な実施形態による、共有オブジェクトにアクセスするためのログイン・ウィンドウ730を表示するユーザ・インターフェイス720を示す。例解的な例において、ユーザ「Bert」は、共有オブジェクトURL、ユーザ名、およびパスワード情報を(例えば、電子メールによって)受け取り、インターネット・ブラウザのアドレス・バー725内で共有オブジェクトURLを使用して、ユーザ・インターフェイス720を表示する。ユーザ名およびパスワード・フィールド内へと正しい情報(例えば、上記で
図7Aにおいて論考されたユーザ名およびパスワード・データ)を入力し、ログイン・ボタンを選択すると、コンシューマ・アカウント・セッションが、コンシューマ・アカウント515に対して、ネットワーク・ベースのデータ・ウェアハウス・システム102上でアクティブ化される。コンシューマ・アカウント・セッションにおいて、ユーザは、追加的なデータベースを作成し、データについてクエリし、データを修正し、コンシューマ・アカウントと共有されるデータ・オブジェクト(例えば、プロバイダ・アカウント505により作成および共有される共有オブジェクト)にアクセスすることができる。
【0064】
図7Dは、一部の例示的な実施形態による、データベース・インスタンスを作成するために使用され得るウィンドウ740を表示するユーザ・インターフェイス735を示す。ユーザ・インターフェイス735は、正しい情報がログインおよびパスワード・フィールドをポピュレートする様態で、ログイン・ボタンが選択されることに応じて表示され得る。ウィンドウ740は、コンピュート・リソース(例えば、仮想ウェアハウス)、および、データベース・インスタンスであって、その中への共有オブジェクト(例えば、患者データを表示する読み出し専用データベース)が共有される、データベース・インスタンスを作成するために、コンシューマ・アカウント515により使用され得る。実例として、コンピュート要素を作成、を使用すると、ドロップ・ダウン・メニューが表示され、そのメニューは、コンシューマ(例えば、データ・コンシューマ、コンシューマ・アカウント515が、異なるサイズの仮想ウェアハウス(例えば、小さいクラスタ、中間のクラスタ、および、大きいクラスタなどの、異なるサイズのEC2クラスタ)を作成し、仮想ウェアハウス上でデータベースを生成することを可能とし、そのデータベース内へとポピュレートされるデータは、プロバイダ・アカウントのストレージ・デバイスからのものである。論考されたように、コンピュート・リソースおよびストレージ・リソースは切り離され、コンシューマ・アカウント515は、共有オブジェクト・データ、または、他のデータ(例えば、共有オブジェクト・データに関係付けられない、コンシューマ・アカウントの別のユーザにより生成される新しいデータ)にアクセスするために、仮想ウェアハウスを管理する(例えば、支払いをセットアップする、作成する、変更する、終了する)ことができる。
【0065】
ウィンドウ740は、どの共有されるデータがコンシューマ・アカウントの仮想ウェアハウス上で作成されるデータベース・インスタンス(「患者データ」)内へとロードされることになるかを指示する識別子(「共有データ」)と、コンシューマ・アカウント515が、共有オブジェクト・データによりポピュレートされる、新しく作成されたデータベースに命名することを可能とする、データベース名フィールドとをさらに含む。ウィンドウ740内の、データベースを作成ボタンの選択を受け取ることに応じて、新しい仮想ウェアハウスが、コンシューマ・アカウント515に対して生成され(例えば、4つの仮想マシンなどの、小さいサイズの新しいEC2クラスタ)、新しいデータベース・インスタンスが、新しい仮想ウェアハウス上で生成され、共有オブジェクトからのデータが、データベースをポピュレートするために使用される。この手立てでは、コンシューマ・アカウントは、データ・プロバイダのシステムに影響を及ぼすことなく(例えば、データ510を生成および格納するデータベース・プロバイダの射影サーバに影響を及ぼすことなく)、コンピュート・リソースをハンドリングする。
【0066】
図7Eは、一部の例示的な実施形態による、共有オブジェクト・データと相互作用するためのユーザ・インターフェイス745を示す。例を継続すると、コンシューマ・アカウント515のユーザは、新しく作成されたウェアハウス上の共有オブジェクト・データと相互作用するために、ユーザ・インターフェイス745を使用することができる。実例として、サイド・パネル750が、新しく作成されたウェアハウスにより管理されるデータを列挙し、実行区域755は、共有オブジェクト・データに対して実行するためのコードを受け取ることができ、実行されたコードの結果が、結果区域760内に表示される。実例として、コンシューマ・アカウント515のユーザは、SQLクエリを実行区域755内へと入力することができ、そのSQLクエリは、次いで、
図7Dにおいてコンシューマ・アカウントにより作成された新しいウェアハウス上でランする、新しく作成されたデータベース内の共有オブジェクト・データに対して実行される。この手立てでは、コンシューマ・アカウントのユーザは、セキュアな様式で、プロバイダ・アカウントのライブの制作データにアクセスし、そのデータと相互作用することができ、共有オブジェクト・データに対する更新処理(例えば、制作サーバ更新処理であって、それらから共有オブジェクト・データが導出される、制作サーバ更新処理)は、リアルタイムで発生し、コンシューマの計算は、プロバイダ・アカウント・システムに支障をきたすものではなく、なぜならば、計算は、作成される仮想ウェアハウス、および、管理されるコンシューマ・アカウント515上で実施されるからである。
【0067】
図8は、一部の例示的な実施形態による、共有されるデータ・オブジェクトの動的マスキングのための例示的なデータ・アーキテクチャ800を示す。
図8の例において、データ・プロバイダ・ネットワーク805は、テーブル809などのプロバイダ・データを管理するプロバイダ・ユーザ807などのプロバイダ・ユーザを伴うネットワーク(例えば、病院の民間会社ネットワーク)である。データ・プロバイダ・ネットワーク805は、データ・コンシューマ・ネットワーク810(例えば、感染症シンクタンク)と、制御される様式で、テーブル809へのアクセスを共有することに努める。例において、プロバイダ・ユーザ807は、データ・プロバイダ・ネットワーク805の医師ユーザであり、テーブル809は、
図6におけるテーブル600およびテーブル605などのデータベース・オブジェクトを含むことができ、プロバイダ・ユーザ807は、分析のために、他の会社(例えば、データ・コンシューマ・ネットワーク)内のユーザと、テーブル809を共有することに努め、その場合、テーブル809は、ネットワーク・ベースのデータ・ウェアハウス・システム102上の共有マスク・エンジンによる動的データ・マスキングを経る。従来から、データを共有するために、データ・プロバイダは、あるネットワーク場所にデータをアップロードし(例えば、クラウド・ストレージ615へのFTP)、データは、次いで、データ・コンシューマ・ネットワーク810にダウンロードされることになる。この従来の手法は問題をはらむものであり、少なくとも、なぜならば、データの量が(例えば、グローバル企業ネットワーク内でのように)大きいとき、データをアップロードおよびダウンロードすることは、大きいネットワーク・オーバヘッドを招く全く非実用的なプロセスではないにしても、非常に低速であり得るからである。加えて、これらの手法は、最小限のプライバシー保護を有するものであり、なぜならば、データ・コンシューマ810が、共有されるデータのすべてへのアクセスを有する、または、共有されるデータのいずれへのアクセスも有さない、オール・オア・ナッシング手法においてデータが共有されるからである(例えば、数個の列だけを共有することは、新しいデータ・オブジェクトが作成され、次いで、新しいデータ・オブジェクトが共有されるということを必要とすることになり、そのことは、共有されるデータのサイズが増すにつれて、等しく負担となり、非実用的であり得る)。加えて、従来の手法において、一度データがデータ・コンシューマに送出されると、送出されたデータは、何らかの改変が元のデータに対して行われる(例えば、テーブル809に対する更新処理)瞬間に、即座に時代遅れである。データ・コンシューマ・ネットワーク810は、テーブル809への直接的なアクセス(例えば、制作サーバ・データへのアクセス)を好み得るが、多くのデータ・プロバイダは、プライバシーまたはネットワーク・セキュリティ懸念のために(例えば、法的なデータ・プライバシー法を順守するために、ハッキングなどの潜在的な悪意のあるネットワーク不正使用を回避するために)、そのような直接的なアクセスを提供しないことになる。
【0068】
前述のことに対処するために、ネットワーク・ベースのデータ・ウェアハウス・システム102は、データ・プロバイダ・ネットワーク805(例えば、プロバイダ・ユーザ808などの、データ・プロバイダ・ネットワーク内のユーザ)が、一部の例示的な実施形態による、セキュアなマスク可能手法において、データ・コンシューマ・ネットワーク810(例えば、コンシューマ_1およびコンシューマ_2などの、データ・コンシューマ・ネットワーク810内のユーザ)と、ライブ・データへのアクセスを共有することを可能にするために、共有マスク・エンジン225を使用する。実例として、例解されるように、プロバイダ・ユーザ807は、クラウド・ストレージ815にテーブル809をアップロードし、次いで、マスキングおよびクエリのために、データ(例えば、外部テーブル)を検索または参照するために、クラウド・ストレージ815にアクセスするために、ネットワーク・ベースのデータ・ウェアハウス・システム102にアクセスを与えることができる。クラウドで格納されるデータに対して、代替案として、または加えて、プロバイダ・ユーザ807は、データの一部またはすべてを、データベース116などの、ネットワーク・ベースのデータ・ウェアハウス・システム102内のデータベースにアップロードすることができる。プロバイダ・ユーザ807は、ポリシー・データ817として1つまたは複数のポリシーを指定し、そのポリシー・データは、所与のポリシーのマスキング・ルールにより指定されるように、ポリシー・ロールおよび関数によって、アップロードされるデータを動的にマスクする。ポリシー・データ817は、データが、ネットワーク・ベースのデータ・ウェアハウス・システム102によって、コンシューマ_1 811、および、コンシューマ_2 812などのコンシューマにより要求されるときに、ポリシー・データ817によって動的マスキングを提供するために、ローカルに格納されるデータ(例えば、データベース116内のデータ)に対応付けされ、および/または、クラウド・ストレージ815内のデータ(例えば、外部読み出し専用テーブル)に対応付けされ得る。
【0069】
ポリシー・データ817は、ロール、および、どのように、ポリシーにより参照される対応するデータが、異なるロールを有するユーザにより、それらのユーザと相互作用させられ得るかを指定することができる。例えば、コンシューマ_1は、ネットワーク・ベースのデータ・ウェアハウス・システム102上でデータ・エンジニア・ロールと(例えば、コンシューマ_1のユーザ・アカウント情報によって)称され得、コンシューマ_2は、ネットワーク・ベースのデータ・ウェアハウス・システム102上で医師と(コンシューマ_2のユーザ・アカウント情報によって)称され得る。この例において、コンシューマが、ネットワーク・ベースのデータ・ウェアハウス・システム102を通してテーブル809へのアクセスを要求するとき(例えば、コンシューマ・アカウント・セッション)、共有マスク・エンジン225は、ポリシー・データ817にアクセスし、ポリシー・データ817内のロールおよび関数によってデータを修正する。実例として、データ・エンジニア・ロールは、ポリシーを定められる(policied)オブジェクト827内の所与の列(例えば、患者の姓名)を閲覧すべきでなく、しかるに、医師ロールを伴うユーザ(例えば、コンシューマ_2)は、ポリシーを定められるオブジェクト837内のその所与の列を閲覧することができ、その場合、閲覧することは、可視性、変換されないフォーマットであり得、または、医師ロールを伴うそれらのユーザは、データに関する操作(例えば、複数個のテーブルからのデータを結合するための結合演算)を実施することができるということを、ポリシー・データは指定し得る。
【0070】
この手立てでは、データ・プロバイダ・ネットワーク805のユーザは、動的にマスクされる手法において、データ・コンシューマ・ネットワーク810と、データの一部分を共有することができ、その場合、土台となる共有されるデータは、異種ソースからのものであり得る。例えば、
図6におけるテーブル600は、データベース116内に格納され、ネットワーク・ベースのデータ・ウェアハウス・システム102により可読および修正可能であるということを想定し、テーブル605は、ネットワーク・ベースのデータ・ウェアハウス・システム102により参照されるのみであり得る読み出し専用テーブルである、クラウド・ストレージ815上の外部テーブルであるということをさらに想定する。これらの拘束条件があるとして、プロバイダ・ユーザ807は、共有されるビューを作成することができ、その場合、ビューは、第1のローカル・テーブルからのデータ(例えば、所与の顧客に対する症状データ)を引き出し、さらには、第2の外部テーブルからのデータ(例えば、所与の顧客の郵便番号データ)を引き出し、一方で、データが(例えば、コンシューマ・アカウントのセッションにおいてクエリされると)動的にマスクされるように、アクセスされる共有データ(例えば、827および837)をライブに保ち、現在までの更新処理を保ちながら、任意選択で、患者列を含み、または、患者名列を変換し(例えば、最初の頭文字のみを示し)、または、他のデータを匿名化する(例えば、郵便番号情報を、市、郡、または州データなどの地域的情報に変化させる)。
【0071】
図9は、一部の例示的な実施形態による、例ポリシー・データ・アーキテクチャ900を示す。リソース905が、1つまたは複数のルールを備えるマスキング・ポリシー910に対応付けされるデータ・ストア(例えば、データベース、テーブル、ビュー、共有)である。一部の例示的な実施形態において、所与のリソース905が要求される(例えば、コンシューマ・アカウント515のデータベースをポピュレートするために要求される)ことに応じて、共有マスク・エンジン225は、共有マスキングを実現するために、マスキング・ポリシー910を識別する。マスキング・ポリシー910は、1つまたは複数のルール920を含み、それらのルールの各々は、1つまたは複数のロール925と、ロールが満たされるならば実現するための1つまたは複数の関数930とを備えることができる。すなわち、ルール920は論理(例えば、if/then)であり、ロール925は条件であり、関数930は、論理および条件が満足させられるならば、リソース905上で実現される演算(例えば、ユーザ定義関数(UDF))である。
【0072】
関数930は、SQL式を評価し、式の結果を返す、SQL UDFなどの、クエリ言語を使用して演算するユーザ定義関数として作成され得る。UDFを定義する式は、関数の入力引数を、ならびに、テーブル、ビュー、およびシーケンスなどのデータベース・オブジェクトを参照することができる。UDF所有者(例えば、UDFを定義するユーザ)は、一部の例示的な実施形態によれば、UDFがアクセスするいかなるデータベース・オブジェクトに関しても、適切な特権を有さなければならない。SQL UDFの定義する式は、他のユーザ定義関数を参照することができるが、一般的には、UDFは、直接的に、または、そのUDFに対してコールバックする別の関数を通してのいずれでも、そのUDF自体を再帰的に参照しない。単純な例として、後に続くSQLステートメントが、円の面積を算出するための関数を作成するために、実行区域755内へと入力され得る。
::::::::::::::::コード1 - 開始:::::::::::::::
CREATE FUNCTION area_of_circle(radius FLOAT)
RETURNS FLOAT
AS
$$
pi() * radius * radius
$$
;
::::::::::::::::コード1 - 終止:::::::::::::::
【0073】
関数は、後に続くように、クエリ式(例えば、SELECT式)を使用してトリガされ得る。
::::::::::::::::コード2 - 開始:::::::::::::::
SELECT area_of_circle(1.0);
::::::::::::::::コード2 - 終止:::::::::::::::
【0074】
その関数は、次に記す出力(例えば、
図7Eにおける結果区域760において表示される)を返す。
::::::::::::::::コード3 - 開始:::::::::::::::
+-----------------------------------+
| AREA_OF_CIRCLE(1.0) |
| ----------------------------------|
| 3.151592654 |
+-----------------------------------+
::::::::::::::::コード3 - 終止:::::::::::::::
【0075】
マスキングのための関数の例は、列を隠すこと、所与の列の各々のエントリの最初の3つの文字をマスクすること(例えば、区域コードを隠すこと)、各々の行に対して最初の5つの文字をマスクすること、郵便番号を変換または難読化すること(例えば、所与の患者が居住するところをぼかすために、郵便番号コード情報について、市または州情報によって置き換えること)、2つのテーブルからのデータ(例えば、ローカル・テーブルおよび外部読み出し専用データ)を結合し、ビューを返すこと、および、他のタイプの追加的なカスタムのユーザ定義演算を含む。論考される例示的な関数は、単に例であり、任意のデータベース関数が、関数930として含まれ得るということが察知される。一部の例示的な実施形態において、所与のリソース905に対するマスキング・ポリシー910は、作成されたルール・データ(例えば、ルール920、ロール925、関数930)がないならば実現される、デフォルト関数915に対応付けされる。例えば、デフォルト関数915は、社会保障データの完全なマスクを含み、または、デフォルトにより、所与のリソース905に対して3つのロールのみにアクセスを与えることができる(例えば、会社のCEO、CFO、およびGCが、所与のリソース905への完全なアクセスを受け取る)。
【0076】
例示的なポリシー・コードが、ここでは例として含まれる。例コードは、実行区域755(例えば、アクティブ・セッションのブラウザ・ウィンドウ)内へと例コードを入力することにより、ポリシー・データを作成、変更、または終了するために、データ・プロバイダ・アカウント505により実現され得る。一部の例示的な実施形態において、ポリシー・コードは、ポリシー・データ817内の1つまたは複数のポリシー・テーブル内に格納されるSQLであり、そのポリシー・データは、次いで、データを動的にマスクするために、共有マスク・エンジン225により参照され得る。
【0077】
後に続くものは、一部の例示的な実施形態による、マスキング・ポリシーを作成するために使用される例示的な構文を表す。下記の例において、各々のCASEステートメントは、ポリシー本文全体を表し、各々のWHEN…THEN…句は、ルールを指定する。ポリシーは、複数個のルール、および、デフォルト関数によって作成され得、実行するコンテキスト、例えば、ロール、共有に基づいて、1つのルールが適用され得る。ポリシー本文は、CASE…ENDステートメントを使用して指定され得るSQL式であり、各々のWHEN…THEN句は、ルールとして働く。ポリシーは、SQL式として評価されることになり、それゆえに、ルールは、一部の例示的な実施形態によれば、本文内でWHEN…THEN句として指定されるならば、順番に評価される。関数は、一部の例示的な実施形態によれば、ロール・マッチング、および、WHEN…THEN内に含まれる何らかの追加的な条件を基に実行され得る。
::::::::::::::::コード4 - 開始:::::::::::::::
CREATE [ OR REPLACE ] MASKING POLICY <name> AS (val string) returns string ->
CASE
WHEN current_role() IN (‘analyst’,‘dataeng’) THEN DB1.UNMASK(val) //analystおよびdataengは、ロールであり、DB1.UNMASKは、valパラメータを渡されるUDFへのパスである
WHEN share() IN (‘crm_table) THEN DB1.PARTIAL_MASK(val,‘#’) //share()に対する追加的な条件
ELSE DB1.SCHM1.FULL_MASK(val)
END;
::::::::::::::::コード4 - 終止:::::::::::::::
【0078】
後に続く構文は、一部の例示的な実施形態によれば、ポリシーをドロップするためのものである。
::::::::::::::::コード5 - 開始:::::::::::::::
DROP MASKING POLICY IF EXISTS zip_mask;
::::::::::::::::コード5 - 終止:::::::::::::::
【0079】
後に続く構文は、既存のルールについて、新しいものによって置き換えるために、マスキング・ポリシーを変更することになる。加えて、変更は、一部の例示的な実施形態によれば、マスキング・ポリシーに対して新しいコメントをセットするために使用され得る。
::::::::::::::::コード6 - 開始:::::::::::::::
ALTER MASKING POLICY IF EXISTS zip_mask
CASE
WHEN EXECUTING_ROLE() IN (analyst,data_engineer) THEN db1.first3digits(number)
WHEN EXECUTING_ROLE() IN (engineer,sales,sales_eng) THEN db1.first5digits(number)
ELSE db1.fullmask(number)
END;
ALTER MASKING POLICY IF EXISTS zip_mask AS db1.fullmask(number);
// 新しいコメントをセットするために、既存のマスキングzip_maskを変更する
ALTER MASKING POLICY IF EXISTS zip_mask SET COMMENT = ’ユーザ・データに対する居住地マスキング・ポリシー’
::::::::::::::::コード6 - 終止:::::::::::::::
【0080】
SQLが上記の例において実現されるが、マスキング・ポリシーは、JSONデータとしてポリシーを格納し、スクリプト言語(例えば、JavaScript)を使用してマスキングを実施するなど、他の手立てで格納および実現され得るということが、さらに察知される。
【0081】
加えて、オブジェクトに対するマスキング・ポリシーは、一部の例示的な実施形態によれば、リソース・オブジェクトが組み合わされるときに組み合わされ得る。例えば、第1のマスキング・ポリシーが、データベース・テーブルに対応付けされ得、データベース・テーブルの1つまたは複数の列が、データベース・ビュー内に含まれ、ビューは、そのビューに対応付けされる、そのビュー自体のマスキング・ポリシーを有する。この例示的な実施形態において、第1のマスキング・ポリシーは、データベース・テーブルに動的に適用され得、そのことの後に続いて、結果的に生じるマスクされるデータを生成するために、ビュー・マスキング・ポリシーを適用する。この手立てでは、データベース・オブジェクトは、厳格に制御されるデータ共有アーキテクチャを作成するために、異なる構成で組み合わされ得る、微調整されるポリシー・マスクを各々有することができる。
【0082】
図10は、一部の例示的な実施形態による、リソース・アイテムに関する共有マスク・ポリシーを構成するための方法1000のフロー線図を示す。方法1000は、方法100の動作がネットワーク・ベースのデータ・ウェアハウス・システム102のコンポーネントにより実施され得るように、1つまたは複数のハードウェア・コンポーネント(例えば、1つまたは複数のプロセッサ)による実行のためのコンピュータ可読命令において具現され得る。よって、方法1000は、そのネットワーク・ベースのデータ・ウェアハウス・システム102を参照する例として、下記で説明される。しかしながら、方法1000は、様々な他のハードウェア構成上でデプロイされ得、ネットワーク・ベースのデータ・ウェアハウス・システム102の中でのデプロイメントに制限されることを意図されないということが察知されるものとする。
【0083】
動作1005において、共有マスク・エンジン225は、ストレージ・リソースであって、それからデータが動的にマスクされ得る、ストレージ・リソースを識別する。例えば、動作1005において、患者データを内包するテーブルが、動的にマスクされるビューまたは共有を作成するために(例えば、データ・プロバイダ・アカウントにログインさせられるユーザにより)ストレージ・リソースとして選択される。
【0084】
動作1010において、共有マスク・エンジン225は、ポリシー・データ内に含まれることになる1つまたは複数の関数を格納する。例えば、動作1010において、ユーザ定義関数が、所与の列を完全にマスクすること、または、所与の列内のデータを変換すること(例えば、郵便番号コード・データを、市、郡、または地域データへと変換すること)などの、データに関する演算を実施するために(例えば、データ・プロバイダまたはデータ・エンジニア/開発者により)作成される。一部の例示的な実施形態において、動作1010は、例えば、ポリシー内に含まれ得る関数が既に作成されている、および/または、利用可能な関数が関数のライブラリ内に格納される場合、任意選択である。
【0085】
動作1015において、共有マスク・エンジン225は、共有マスク・ポリシーを生成する。例えば、動作1015において、共有マスク・エンジン225は、動作1005のストレージ・リソースに対応付けされるポリシーを格納し、ロール・データと、ロール・データが現在のセッション(例えば、アクセスを要求するログイン・ユーザのセッション)のユーザのロールとマッチングするならば実現するための関数とを含む、さらなる対応付けデータを格納する。
【0086】
動作1020において、共有マスク・エンジン225は、プロバイダ・アカウントのユーザから、動的にマスクされることになるデータを受け取る。生成されるデータベース・オブジェクトは、ストレージ・リソース・オブジェクトと同じであり得、または、格納されるリソース・オブジェクトから派生させられ得る。例えば、動作1005のストレージ・リソース・オブジェクトは、述べられたようにテーブルであり得、動作1020において生成されるデータベース・オブジェクトは、テーブルからの1つまたは複数の列を組み込むビューであり得る。動作1020において生成されるデータベース・オブジェクト(例えば、ビュー)は、動的にマスクされるストレージ・リソース・オブジェクトからの列(例えば、動作1005において識別されるテーブル内の郵便番号列)を含むので、データ、データベース・オブジェクト(ビュー)が要求されるときはいつでも、対応するストレージ・リソース・データが組み込まれ、格納される共有マスク・ポリシーが、ビューに対して起動される。
【0087】
動作1025において、共有マスク・エンジン225は、データベース・オブジェクトを送信するための、プロバイダ・アカウント505からの命令を受け取る。例えば、動作1025において、プロバイダ・アカウント505のユーザは、ネットワーク・ベースのデータ・ウェアハウス・システム102の1人または複数の他のユーザ、コンシューマ・アカウント515のそのような別のユーザに、ビューへのリンクを電子メールで送る。
【0088】
図11は、一部の例示的な実施形態による、動的にマスクされるデータと相互作用するための方法1100のフロー線図を示す。方法1100は、方法1100の動作がネットワーク・ベースのデータ・ウェアハウス・システム102のコンポーネントにより実施され得るように、1つまたは複数のハードウェア・コンポーネント(例えば、1つまたは複数のプロセッサ)による実行のためのコンピュータ可読命令において具現され得る。よって、方法1100は、そのネットワーク・ベースのデータ・ウェアハウス・システム102を参照する例として、下記で説明される。しかしながら、方法1100は、様々な他のハードウェア構成上でデプロイされ得、ネットワーク・ベースのデータ・ウェアハウス・システム102の中でのデプロイメントに制限されることを意図されないということが察知されるものとする。
【0089】
動作1105において、共有マスク・エンジン225は、ネットワーク・ベースのデータ・ウェアハウス・システム102のコンシューマ・アカウントに対するセッションを起動する。例えば、動作1105において、コンシューマ・アカウント515は、ブラウザのアドレス・バー内へと(プロバイダ・アカウント505から受け取られる)ビューに対するリンクを入力することにより、ログイン画面(
図7C)をロードし、ログインし、ユーザ・インターフェイス735(
図7D)などのコンシューマ・アカウント・ユーザ・インターフェイスを提示され、リンクは、1025において送信されるデータベース・オブジェクトに対するものである(例えば、データ・プロバイダ・ユーザは、データ・コンシューマ・ユーザに、オブジェクトへのリンクを電子メールで送り、リンクは、方法1000によって動的にマスクされることになるデータベース・オブジェクトへのアクセスである)。
【0090】
動作1110において、共有マスク・エンジン225は、コンシューマ・アカウント(例えば、コンシューマ・アカウント515)による使用のためのコンピュート・リソース(例えば、仮想ウェアハウス)を生成し、コンピュート・リソースは、共有データ(例えば、マスクされるデータベース・オブジェクト)を格納するための1つまたは複数のデータベースのインスタンスをつくるために使用され得る。例えば、
図7Dを参照して上記で論考されたように、コンシューマ・アカウント515は、1つまたは複数の仮想ウェアハウスを作成し、データベース・インスタンスを作成する。
【0091】
動作1115において、共有マスク・エンジンは、コンシューマ・アカウント515に対して、共有される、およびマスクされるデータをロードする。例えば、動作1115において、共有されるデータは、データベース・インスタンス内へと自動的にロードされる。動作1120において、コンシューマ・アカウント515は、共有されるマスク・オブジェクトについてクエリし、結果区域760(
図7E)内で結果を返すために、実行区域755内へと、1つまたは複数の、SQLステートメントまたは式(例えば、SELECT)を入力することにより、共有されるデータと相互作用する。
【0092】
図12は、一部の例示的な実施形態による、共有されるデータベース・オブジェクトを動的にマスクするための方法1200のフロー線図を示す。方法1200は、共有されるデータへのアクセスを要求するアカウントにより起動される(例えば、その場合、共有されるデータは、ポリシーに対応付けされ、または、データであって、それから、共有されるデータが作成される、データが、ポリシーに対応付けされる)サブルーチンとして実現され得る。例えば、動作1115において、データがロードされる(例えば、コンシューマ・アカウントにより要求される)ことに応じて、共有マスク・エンジン225は、方法1100を起動することができる。
【0093】
動作1205において、共有マスク・エンジン225は、要求されるデータ(例えば、ソース・データベース・テーブルからの列を組み込むビュー)のリソースID(例えば、ソース・データベース・テーブル)、および、アクティブ・セッションにログインさせられるコンシューマ・アカウント515のユーザのロールIDを識別する。動作1210において、共有マスク・エンジン225は、リソースIDに対応付けされるポリシー・データを検索する。動作1215において、共有マスク・エンジン225は、ポリシー内の1つまたは複数のルールであって、それらのルールに対して条件が満足させられるという、1つまたは複数のルールを識別する。例えば、動作1215において、共有マスク・エンジン225は、ルールが、指定されるロール(例えば、アクティブ・セッションに対するユーザ・ロール)とマッチングする、または、ポリシー内の任意の他の指定されるルール(例えば、share()ルール)とマッチングすると決定する。動作1215において、共有マスク・エンジン225が、条件とマッチングするルールが存在しない(例えば、コンシューマ・アカウント515のロールIDが「医師」ロールであり、医師ロールを指定するポリシー内のルールが存在しない)と決定するならば、方法1200は、動作1220に進行し、その動作1220において、ポリシーのデフォルト関数が実行され、データが、サブルーチン結果として返される。
【0094】
動作1215に戻って、アクティブ・セッションのコンシューマ・アカウントの識別されるロールIDに対して、1つまたは複数のルールが存在するということを想定すると、方法1200は、動作1225に進行し、その動作1225において、ルールのユーザ定義関数が実行され、動的にマスクされるデータが、(例えば、コンシューマ・アカウント・ユーザのユーザ・デバイス上での)表示のために返される。さらに、例解されるように、共有マスク・エンジン225は、コンシューマ・アカウント515のロールIDに対して定義される追加的なルールが存在するならば、1215に戻るようにループする(例えば、第1の関数が、所与の列内のデータを変換し得、第2の関数が、さらなる変換またはマスキング演算のために、入力データとして、変換されたデータを使用し得、例えば、所与のロールが、アクティブ化される2つの関数を有し、その場合、各々の関数は、他のものに対して独立的に、または同時的に動作する)。追加的なルールが存在するということを想定すると、方法1200は、ロールIDとマッチングするさらなるルールに対して、動作1225において、ルールを評価し、ルール結果を返す。方法1200が終了した後、動的にマスクされるデータが、
図11において(例えば、動作1120において)論考されるような、コンシューマ・アカウント515による、分析、および、さらなる相互作用(例えば、クエリ)のために、コンシューマ・アカウント・システム(例えば、コンシューマ・アカウント515により動作させられているリモート・コンピューティング・デバイス106)に、共有マスク・エンジン225により返される。
【0095】
図13は、例示的な実施形態による、コンピュータ・システムの形式でのマシン1300であって、その中で、命令のセットが、本明細書において論考される方法論のうちの任意の1つまたは複数を実施することをマシン1300に行わせるために実行され得る、マシン1300の線図的表現を例解する。具体的には、
図13は、コンピュータ・システムの例示的な形式でのマシン1300であって、その中で、本明細書において論考される方法論のうちの任意の1つまたは複数を実施することをマシン1300に行わせるための命令1316(例えば、ソフトウェア、プログラム、アプリケーション、アプレット、アプリ、または、他の実行可能コード)が実行され得る、マシン1300の線図的表現を示す。例えば、命令1316は、方法1000、1100、および1200のうちの任意の1つまたは複数の、任意の1つまたは複数の動作を実行することをマシン1300に行わせ得る。別の例として、命令1316は、
図1~9のうちの任意の1つまたは複数において例解されるデータ・フローの実現される一部分に対するマシン1300をもたらし得る。この手立てでは、命令1316は、一般的な、プログラムされないマシンを、本明細書において説明される様式で、説明および例解される機能のうちの任意の1つを履行するように特別に構成される、個別のマシン1300(例えば、リモート・コンピューティング・デバイス106、アクセス管理システム110、コンピュート・サービス・マネージャ112、実行プラットフォーム113、アクセス管理システム118、APIゲートウェイ120、リモート・コンピューティング・デバイス106へと変換する。
【0096】
代替的な実施形態において、マシン1300は、スタンドアロン・デバイスとして動作し、または、他のマシンに対してカップリングされ(例えば、ネットワーク化され)得る。ネットワーク化されるデプロイメントにおいて、マシン1300は、サーバ・クライアント・ネットワーク環境内のサーバ・マシンもしくはクライアント・マシンの役割において、または、ピア・ツー・ピア(または分散)ネットワーク環境内のピア・マシンとして動作し得る。マシン1300は、サーバ・コンピュータ、クライアント・コンピュータ、パーソナル・コンピュータ(PC)、タブレット・コンピュータ、ラップトップ・コンピュータ、ネットブック、スマートフォン、モバイル・デバイス、ネットワーク・ルータ、ネットワーク・スイッチ、ネットワーク・ブリッジ、または、マシン1300によりとられることになるアクションを指定する命令1316を、逐次的に、もしくは、他の形で実行する能力がある、任意のマシンを含み得、ただしそれらに制限されなくてよい。さらに、単一のマシン1300のみが例解されるが、用語「マシン」は、さらには、本明細書において論考される方法論のうちの任意の1つまたは複数を実施するための命令1316を、個々に、または共同で実行する、マシン1300の集合体を含むと解されるものとする。
【0097】
マシン1300は、バス1302によってなどで互いと通信するように構成される、プロセッサ1310と、メモリ1330と、入出力(I/O)コンポーネント1350とを含む。例示的な実施形態において、プロセッサ1310(例えば、中央処理ユニット(CPU)、縮小命令セット・コンピューティング(RISC)プロセッサ、複合命令セット・コンピューティング(CISC)プロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、無線周波数集積回路(RFIC)、別のプロセッサ、または、それらの任意の適した組み合わせ)は、例えば、命令1316を実行し得る、プロセッサ1312と、プロセッサ1314とを含み得る。用語「プロセッサ」は、命令1316を同時に実行し得る、2つ以上の独立的なプロセッサ(時には「コア」と呼称される)を備え得る、マルチコア・プロセッサ1310を含むことを意図される。
図13は複数個のプロセッサ1310を示すが、マシン1300は、単一のコアを伴う単一のプロセッサ、複数個のコアを伴う単一のプロセッサ(例えば、マルチコア・プロセッサ)、単一のコアを伴う複数個のプロセッサ、複数個のコアを伴う複数個のプロセッサ、または、それらの任意の組み合わせを含み得る。
【0098】
メモリ1330は、バス1302によってなどでプロセッサ1310にすべてがアクセス可能な、メイン・メモリ1332と、スタティック・メモリ1334と、ストレージ・ユニット1336とを含み得る。メイン・メモリ1332、スタティック・メモリ1334、およびストレージ・ユニット1336は、本明細書において説明される方法論または機能のうちの任意の1つまたは複数を具現する命令1316を格納する。命令1316は、さらには、マシン1300によるそれらの命令の実行の間、メイン・メモリ1332の中に、スタティック・メモリ1334の中に、ストレージ・ユニット1336の中に、プロセッサ1310のうちの少なくとも1つの中に(例えば、プロセッサのキャッシュ・メモリの中に)、または、それらの任意の適した組み合わせで、全部そろって、または部分的にあり得る。
【0099】
I/Oコンポーネント1350は、入力を受け取る、出力を提供する、出力を生み出す、情報を送信する、情報を交換する、測定値を捕捉する、等々のためのコンポーネントを含む。個別のマシン1300内に含まれる特定のI/Oコンポーネント1350は、マシンのタイプに依存することになる。例えば、モバイルフォンなどのポータブル・マシンは、おそらくは、タッチ入力デバイス、または、他のそのような入力機構を含むことになり、一方で、ヘッドレス・サーバ・マシンは、おそらくは、そのようなタッチ入力デバイスを含まないことになる。I/Oコンポーネント1350は、
図13において示されない多くの他のコンポーネントを含み得るということが察知されることになる。I/Oコンポーネント1350は、ただ単に、後に続く論考を単純化するために、機能性によってグループ分けされ、グループ分けは、決して制限的ではない。様々な例示的な実施形態において、I/Oコンポーネント1350は、出力コンポーネント1352と、入力コンポーネント1354とを含み得る。出力コンポーネント1352は、視覚的コンポーネント(例えば、プラズマ・ディスプレイ・パネル(PDP)、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プロジェクタ、または陰極線管(CRT)などのディスプレイ)、音響的コンポーネント(例えば、スピーカ)、他の信号生成器、その他諸々を含み得る。入力コンポーネント1354は、英数字入力コンポーネント(例えば、キーボード、英数字入力を受け取るように構成されるタッチ・スクリーン、フォト・オプティカル・キーボード、または、他の英数字入力コンポーネント)、ポイント・ベースの入力コンポーネント(例えば、マウス、タッチパッド、トラックボール、ジョイスティック、モーション・センサ、または、別のポインティング機器)、触覚入力コンポーネント(例えば、物理的ボタン、タッチもしくはタッチ・ジェスチャの場所および/もしくは力を提供するタッチ・スクリーン、または、他の触覚入力コンポーネント)、オーディオ入力コンポーネント(例えば、マイクロホン)、および類するものを含み得る。
【0100】
通信が、多種多様の技術を使用して実現され得る。I/Oコンポーネント1350は、それぞれ、カップリング1382およびカップリング1372によって、ネットワーク1380またはデバイス1370にマシン1300をカップリングするように動作可能な通信コンポーネント1364を含み得る。例えば、通信コンポーネント1364は、ネットワーク1380とインターフェイス接続するための、ネットワーク・インターフェイス・コンポーネント、または、別の適したデバイスを含み得る。さらなる例において、通信コンポーネント1364は、他のモダリティによる通信を提供するための、有線通信コンポーネント、ワイヤレス通信コンポーネント、セルラー通信コンポーネント、および、他の通信コンポーネントを含み得る。デバイス1370は、別のマシン、または、多種多様の周辺デバイスの任意のもの(例えば、ユニバーサル・シリアル・バス(USB)によってカップリングされる周辺デバイス)であり得る。例えば、上記で触れられたように、マシン1300は、リモート・コンピューティング・デバイス106、アクセス管理システム110、コンピュート・サービス・マネージャ112、実行プラットフォーム113、アクセス管理システム118、APIゲートウェイ120のうちの任意の1つに対応し得、コンピューティング・デバイス203、207、307、および401、ならびにデバイス1370は、これらのシステムおよびデバイスのうちの任意の他のものを含み得る。
【0101】
様々なメモリ(例えば、1330、1332、1334、および/または、プロセッサ1310のメモリ、および/または、ストレージ・ユニット1336)は、本明細書において説明される方法論もしくは機能のうちの任意の1つもしくは複数を具現する、または、それらの任意の1つもしくは複数により利用される、命令1316およびデータ構造(例えば、ソフトウェア)の1つまたは複数のセットを格納し得る。これらの命令1316は、プロセッサ1310により実行されるときに、開示される実施形態を実現するための様々な動作を起こす。
【0102】
本明細書において使用される際に、用語「マシン・ストレージ媒体」、「デバイス・ストレージ媒体」、および「コンピュータ・ストレージ媒体」は、同じものを意味し、本開示において互換的に使用され得る。それらの用語は、実行可能命令および/またはデータを格納する、単一または複数個のストレージ・デバイスおよび/または媒体(例えば、集中もしくは分散データベース、ならびに/または、関連付けられるキャッシュおよびサーバ)を指す。それらの用語は、よって、プロセッサの内部または外部のメモリを含む、ソリッド・ステート・メモリ、ならびに、光学および磁気媒体を含むと解され、ただし、それらに制限されないものとする。マシン・ストレージ媒体、コンピュータ・ストレージ媒体、および/またはデバイス・ストレージ媒体の具体的な例は、半導体メモリ・デバイス、例えば、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、およびフラッシュ・メモリ・デバイス;内部ハード・ディスクおよびリムーバブル・ディスクなどの磁気ディスク;磁気光学ディスク;ならびに、CD-ROMおよびDVD-ROMディスクを例として含む、不揮発性メモリを含む。用語「マシン・ストレージ媒体」、「コンピュータ・ストレージ媒体」、および「デバイス・ストレージ媒体」は、具体的には、キャリア波、変調されるデータ信号、および、他のそのような媒体を除外し、それらのうちの少なくとも一部は、下記で論考される用語「信号媒体」のもとに包含される。
【0103】
様々な例示的な実施形態において、ネットワーク980の1つまたは複数の一部分は、アドホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネット、インターネットの一部分、公衆交換電話ネットワーク(PSTN)の一部分、基本電話サービス(POTS:plain old telephone service)ネットワーク、セルラー電話ネットワーク、ワイヤレス・ネットワーク、Wi-Fi(R)ネットワーク、別のタイプのネットワーク、または、2つ以上のそのようなネットワークの組み合わせであり得る。例えば、ネットワーク1380、または、ネットワーク1380の一部分は、ワイヤレスまたはセルラー・ネットワークを含み得、カップリング1382は、コード分割多重アクセス(CDMA)接続、モバイル通信用グローバル・システム(GSM)接続、または、別のタイプのセルラーもしくはワイヤレス・カップリングであり得る。この例において、カップリング1382は、シングル・キャリア無線伝送技術(1xRTT)、エボリューション・データ・オプティマイズド(EVDO)技術、汎用パケット無線サービス(GPRS)技術、GSM進化型高速データ・レート(EDGE)技術、3G、第4世代ワイヤレス(4G)ネットワーク、ユニバーサル移動体通信システム(UMTS)、高速パケット・アクセス(HSPA)を含む第3世代パートナーシップ・プロジェクト(3GPP)、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(WiMAX:Worldwide Interoperability for Microwave Access)、ロング・ターム・エボリューション(LTE)標準、様々な標準化団体により定義される他のもの、他のロング・レンジ・プロトコル、または、他のデータ転送技術などの、種々のタイプのデータ転送技術の任意のものを実現し得る。
【0104】
命令1316は、ネットワーク・インターフェイス・デバイス(例えば、通信コンポーネント1364内に含まれるネットワーク・インターフェイス・コンポーネント)による伝送媒体を使用して、および、いくつかのよく知られている転送プロトコルのうちの任意の1つ(例えば、ハイパーテキスト転送プロトコル(HTTP))を利用して、ネットワーク1380を越えて送信され、または受け取られ得る。同様に、命令1316は、デバイス1370へのカップリング1372(例えば、ピア・ツー・ピア・カップリング)による伝送媒体を使用して、送信され、または受け取られ得る。用語「伝送媒体」および「信号媒体」は、同じものを意味し、本開示において互換的に使用され得る。用語「伝送媒体」および「信号媒体」は、マシン1300による実行のために命令1316を格納、エンコード、または搬送する能力がある任意の無形媒体を含み、そのようなソフトウェアの通信を手助けするための、デジタルもしくはアナログ通信信号、または、他の無形媒体を含むと解されるものとする。ゆえに、用語「伝送媒体」および「信号媒体」は、変調されるデータ信号、キャリア波、その他諸々の任意の形式を含むと解されるものとする。用語「変調されるデータ信号」は、所定の信号であって、その信号において情報をエンコードするような様式で、その信号の特性のうちの1つまたは複数が、セットされ、または変化させられる、信号を意味する。
【0105】
用語「マシン可読媒体」、「コンピュータ可読媒体」、および「デバイス可読媒体」は、同じものを意味し、本開示において互換的に使用され得る。それらの用語は、マシン・ストレージ媒体および伝送媒体の両方を含むように定義される。かくして、それらの用語は、ストレージ・デバイス/媒体、および、キャリア波/変調されるデータ信号の両方を含む。
【0106】
本明細書において説明される例示的な方法の様々な動作は、少なくとも部分的に、関連性のある動作を実施するように(例えば、ソフトウェアにより)一時的に構成され、または、永続的に構成される、1つまたは複数のプロセッサにより実施され得る。同様に、本明細書において説明される方法は、少なくとも部分的に、プロセッサで実現され得る。例えば、方法1000、1100、および1200の動作のうちの少なくとも一部が、1つまたは複数のプロセッサにより実施され得る。動作のうちのいくらかの実施は、単一のマシンの中に在るのみではなく、さらには、いくつかのマシンにわたってデプロイされる、1つまたは複数のプロセッサの間で分散され得る。一部の例示的な実施形態において、1つまたは複数のプロセッサは、(例えば、住宅環境、オフィス環境、またはサーバ・ファームの中の)単一の場所において配置され得、一方で、他の実施形態において、プロセッサは、いくつかの場所にわたって分散され得る。
【0107】
本開示の実施形態は、特定の例示的な実施形態を参照して説明されたが、様々な修正および改変が、発明性のある主題の、より広範な範囲から逸脱することなく、これらの実施形態に対して行われ得るということが明白であることになる。よって、本明細書および図面は、制約的な意味よりむしろ、例解的な意味で顧慮されるべきである。本明細書の部分を形成する、付随する図面は、主題が実践され得る特定の実施形態を、制限としてではなく、例解として示す。例解される実施形態は、当業者が、本明細書において開示される教示を実践することを可能にするのに十分に詳細に説明されている。構造的および論理的な代用および改変が、本開示の範囲から逸脱することなく行われ得るように、他の実施形態が、使用され、それらの例解される実施形態から導出され得る。この、発明を実施するための形態は、それゆえに、制限的な意味で解されるべきではなく、様々な実施形態の範囲は、単に、添付される請求項により、そのような請求項が権利付与される均等物の最大限の範囲と併せて定義される。
【0108】
発明性のある主題のそのような実施形態は、本明細書において、個々に、および/または一括して、用語「発明」により言及され得、そのことは、ただ単に簡便性のために、および、本出願の範囲を任意の単一の発明または発明性のある概念に自発的に制限することを、2つ以上のものが実際に開示される場合に行うことを意図することなく行われる。かくして、特定の実施形態が、本明細書において例解および説明されたが、同じ目的を達成するように計算される任意の配置構成が、示される特定の実施形態に対して代用され得るということが察知されるはずである。本開示は、様々な実施形態の一切の適応形態または変形形態を包含することを意図される。上記の実施形態、および、本明細書において具体的に説明されない他の実施形態の組み合わせが、上記の説明を検討することを基に、当業者に明らかになることになる。
【0109】
本文書において、用語「a」または「an」は、「少なくとも1つ」または「1つまたは複数」の、任意の他の用例または用法に対して独立的に、1つ、または、2つ以上を含むように、特許文書においてよく見られるように使用される。本文書において、用語「または」は、「AまたはB」が、別段に指示されない限り、「A、ただしBでない」、「B、ただしAでない」、および「AおよびB」を含むように、非排他的な「または」を指すように使用される。添付される特許請求の範囲において、用語「含む」および「それにおいて」が、それぞれの用語「備える」および「その場合において」の平易な英語の相当語句として使用される。さらには、後に続く特許請求の範囲において、用語「含む」および「備える」は、オープン・エンドのものであり、すなわち、請求項内のそのような用語の後に列挙される要素に加えて要素を含む、システム、デバイス、物品、またはプロセスは、やはり、その請求項の範囲の中にあるとみなされる。
【0110】
後に続く番号付けされた例は、実施形態である。
【0111】
1.ネットワーク・サイト上で、ネットワーク・サイトの第1のエンド・ユーザの第1のクライアント・デバイスにより生成されるデータベース・オブジェクトを識別することと、第1のクライアント・デバイスから、データベース・オブジェクト内のデータを修正するための共有マスキング・ポリシーを受け取ることであって、共有マスキング・ポリシーは、データベース・オブジェクトに関する1つまたは複数のあらかじめ構成されたマスキング演算を起動するためのユーザ・ロール・タイプを指定する、受け取ることと、ネットワーク・サイトの第2のエンド・ユーザによるデータベース・オブジェクトへのアクセスのためのネットワーク・リンクを生成することと、第2のエンド・ユーザの第2のクライアント・デバイスから、ネットワーク・リンクを使用してデータベース・データにアクセスするための要求を受け取ることと、第2のクライアント・デバイスからの要求に応じて、第2のエンド・ユーザのエンド・ユーザ・ロールが共有マスキング・ポリシーのユーザ・ロール・タイプとマッチングすると決定することと、エンド・ユーザ・ロールが共有マスキング・ポリシーのユーザ・ロール・タイプとマッチングすることに応じて、マスクされるデータベース・オブジェクトを生成するために、データベース・オブジェクトに関する1つまたは複数のあらかじめ構成されたマスキング演算を適用することと、第2のエンド・ユーザの第2のクライアント・デバイスに、マスクされるデータベース・オブジェクトからの結果データの提示を行わせることとを含む方法。
【0112】
2.第2のクライアント・デバイスからの要求は、クエリである、例1の方法。
【0113】
3.クエリは、選択ステートメントを備え、選択ステートメントは、提示において表示される結果データを生成するために、マスクされるデータベース・オブジェクトに適用される、例1または2の方法。
【0114】
4.データベース・オブジェクトは、第1のエンド・ユーザにより管理される第1のデータベース・インスタンス内に格納され、マスクされるデータベース・オブジェクトは、第2のエンド・ユーザにより管理される第2のデータベース・インスタンス上でホストされることが、第1のデータベース・インスタンスから第2のデータベース・インスタンスにデータベース・オブジェクトをコピーすることなく行われる、例1~3のいずれか1つの方法。
【0115】
5.データベース・オブジェクトは、1つまたは複数の外部テーブルを備える、例1~4のいずれか1つの方法。
【0116】
6.共有マスキング・ポリシーは、構造化クエリ言語(SQL)フォーマットで受け取られ、共有マスキング・データベース内に格納される、例1~5のいずれか1つの方法。
【0117】
7.共有マスキング・ポリシーは、データベース・オブジェクトに対応付けされ、共有マスキング・ポリシーは、そのユーザ・ロール・タイプを含む複数のユーザ・ロール・タイプを備え、複数のユーザ・ロール・タイプの各々は、データベース・オブジェクトをマスクする関数に対応付けされる、例1~6のいずれか1つの方法。
【0118】
8.関数は、データベース・オブジェクトの1つまたは複数の列に対する、1つまたは複数の変換を起こすための、データベース・オブジェクトに対して実行可能であるデータベース関数である、例1~7のいずれか1つの方法。
【0119】
9.共有マスキング・ポリシーは、第1の共有マスキング・ポリシーであり、データベース・オブジェクトは、共有マスキング・ポリシーに対応付けされるデータベース・ビューであり、データベース・ビューは、第2の共有マスキング・ポリシーに対応付けされるデータベース・テーブルからのデータを組み込む、例1~8のいずれか1つの方法。
【0120】
10.第2の共有マスキング・ポリシーは、データベース・ビュー内に組み込まれるマスクされるテーブル・データを生成するために、データベース・テーブル上で実現され、マスクされるテーブル・データを含むデータベース・ビューは、マスクされるデータベース・オブジェクトを生成するために、共有マスキング・ポリシーに従ってさらにマスクされる、例1~9のいずれか1つの方法。
【0121】
11.マシンの1つまたは複数のプロセッサと、1つまたは複数のプロセッサにより実行されるときに、例方法1から10のいずれか1つを実現する動作を実施することをマシンに行わせる、命令を格納するメモリとを備えるシステム。
【0122】
12.マシンにより実行されるときに、方法1から10のうちの1つを実現する動作を実施することをマシンに行わせる、命令を具現するマシン可読ストレージ・デバイス。
【国際調査報告】