JP7354447B2 - データ・クリーン・ルーム - Google Patents

データ・クリーン・ルーム Download PDF

Info

Publication number
JP7354447B2
JP7354447B2 JP2022530689A JP2022530689A JP7354447B2 JP 7354447 B2 JP7354447 B2 JP 7354447B2 JP 2022530689 A JP2022530689 A JP 2022530689A JP 2022530689 A JP2022530689 A JP 2022530689A JP 7354447 B2 JP7354447 B2 JP 7354447B2
Authority
JP
Japan
Prior art keywords
data
account
secure
query request
party data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022530689A
Other languages
English (en)
Other versions
JP2023502528A (ja
Inventor
レイチェル フランシス ブルーム
ジョシュア ジェイムズ チャコナ
クリスチャン クライナーマン
ジャスティン ラングセス
ジュニア ウィリアム エル. ストラットン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Computing Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Snowflake Computing Inc filed Critical Snowflake Computing Inc
Publication of JP2023502528A publication Critical patent/JP2023502528A/ja
Application granted granted Critical
Publication of JP7354447B2 publication Critical patent/JP7354447B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6263Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

関連出願へのクロスリファレンス
本出願は、2020年7月31日に出願された米国特許出願第16/944,929号の優先権の利益を主張するものであり、その米国特許出願の内容は、それらの全体において、参照により本明細書により組み込まれている。
本開示は、一般的には、データ・クリーン・ルームを使用して、異なるアカウントにわたってデータをセキュアに分析することに関する。
現在、大部分のデジタル広告は、サード・パーティ・クッキーを使用して実施される。クッキーは、顧客のウェブサイト・ブラウジング履歴に基づいて、それらの顧客の習慣に関するデータを集めるために使用される、ウェブ・サーバから生成および送出され、ユーザのウェブ・ブラウザによりユーザのコンピュータ上に格納される、データの小さいまとまりである。プライバシーの懸念のために、クッキーの使用は制約されている。
会社は、特定のオーディエンス・セグメントに対する広告またはマーケティング努力のために、ターゲット・グループを作成することを欲することがある。そのようにするために、会社は、それらの会社の顧客情報を他の会社の顧客情報と比較することを、それらの会社の顧客リストがそのようなターゲット・グループの作成に対して重複するかどうかを確かめるために行うことを欲することがある。かくして、会社は、それらの会社の顧客または他のデータの、重複分析などのデータ分析を実施することを欲することがある。そのようなタイプのデータ分析を実施するために、会社は、会社の各々からのデータにアクセスし、データ分析を実施することができる、「信頼される」サード・パーティを使用することができる。しかしながら、このサード・パーティ手法は、重大な不利な点を抱える。第1に、会社は、これらのサード・パーティに対するそれらの会社の顧客データの制御を放棄し、そのことは、このデータが個人的なアイデンティティ情報などの機微情報を内包することがあるので、予見し難い、および有害な結果につながることがある。第2に、分析は、会社自体ではなく、サード・パーティにより実施される。かくして、会社は、より詳細な分析、または、異なる分析を行うために、サード・パーティに戻らなければならない。このことは、分析と関連付けられる費用を増大し、時間遅延を加えることがある。さらには、この目的のためにサード・パーティにそのような情報を提供することは、常に進展するデータ・プライバシー規則、および、共通の業界方針と衝突することがある。
添付される図面の様々なものは、ただ単に、本開示の例示的な実施形態を例解するものであり、本開示の範囲を制限すると考えられるべきではない。
一部の例示的な実施形態による、ネットワーク・ベースのデータ・ウェアハウス・システムが、共有されるデータベース・オブジェクトに関するストリームを実現することができる、例示的なコンピューティング環境を例解する図である。 一部の例示的な実施形態による、コンピュート・サービス・マネージャのコンポーネントを例解するブロック線図である。 一部の例示的な実施形態による、実行プラットフォームのコンポーネントを例解するブロック線図である。 一部の例示的な実施形態による、データ・ウェアハウス・システム内のアカウントを例解するブロック線図である。 一部の例示的な実施形態による、データ・クリーン・ルームを例解するブロック線図である。 一部の例示的な実施形態による、ダブル・ブラインド・データ・クリーン・ルームを例解するブロック線図である。 一部の例示的な実施形態による、データ・ウェアハウス・システムに対してデータをオンボーディングするためのフロー線図を示す図である。 一部の例示的な実施形態による、データ・クリーン・ルームを使用するセキュア・クエリを例解するブロック線図である。 一部の例示的な実施形態による、データ・クリーン・ルームを使用するセキュア・クエリを例解するブロック線図である。 一部の例示的な実施形態による、データ・クリーン・ルームを使用するセキュア・クエリを例解するブロック線図である。 本開示の一部の実施形態による、コンピュータ・システムの形式でのマシンであって、その中で、命令のセットが、本明細書において論考される方法論のうちの任意の1つまたは複数を実施することをマシンに行わせるために実行され得る、マシンの線図的表現を例解する図である。
後に続く説明は、本開示の例解的な実施形態を具現する、システム、方法、技法、命令シーケンス、およびコンピューティング・マシン・プログラム製品を含む。後に続く説明において、解説の目的のために、数多くの具体的な詳細が、発明性のある主題の様々な実施形態の理解をもたらすために論述される。しかしながら、発明性のある主題の実施形態は、これらの具体的な詳細なしに実践され得るということが、当業者には明白であることになる。全般にわたって、よく知られている命令インスタンス、プロトコル、構造、および技法は、必ずしも詳細には示されない。
本開示の実施形態は、サード・パーティの使用なしに、複数個のアカウントにわたるセキュアなデータ分析を可能とするデータ・クリーン・ルームを提供し得る。各々のアカウントは、異なる会社またはパーティと関連付けられ得る。データ・クリーン・ルームは、機微情報を守るためのセキュリティ機能を提供し得る。例えば、データ・クリーン・ルームは、他のアカウント内のデータへのアクセスを制約し得る。データ・クリーン・ルームは、さらには、どのデータが分析において使用され得るかを制約し得、出力を制約し得る。例えば、出力は、重複するデータ(例えば、出力データ行ごとの要素)の最小閾値に基づいて制約され得る。それゆえに、各々のアカウント(例えば、会社、パーティ)は、そのアカウント自体のアカウント内の、そのアカウントのデータの制御を保ち、一方で、そのアカウント自体のデータ、および、他のアカウントからのデータを使用して、データ分析を実施することができ得る。各々のアカウントは、どのタイプのデータ、および、どのタイプの分析に対して、そのアカウントが、他のアカウントが実施することを可能とすることをいとわないかのポリシーをセットし得る。重複データは、機微情報が漏らされることを防止するために匿名化され得る。
図1は、本開示の一部の実施形態による、デプロイメント同士の間のセキュアなメッセージングを実現する、例示的な共有されるデータ処理プラットフォーム100を例解する。不必要な詳細によって、発明性のある主題を不明瞭にすることを回避するために、発明性のある主題の理解を伝えることに密接な関係のない、様々な機能的コンポーネントは、図から除かれている。しかしながら、当業者は、様々な追加的な機能的コンポーネントが、本明細書において具体的に説明されない追加的な機能性を手助けするために、共有されるデータ処理プラットフォーム100の部分として含まれ得るということをたやすく認識することになる。
示されるように、共有されるデータ処理プラットフォーム100は、ネットワーク・ベースのデータ・ウェアハウス・システム102と、クラウド・コンピューティング・ストレージ・プラットフォーム104(例えば、ストレージ・プラットフォーム、AWS(R)サービス、Microsoft Azure(R)、またはGoogle Cloud Services(R))と、リモート・コンピューティング・デバイス106とを備える。ネットワーク・ベースのデータ・ウェアハウス・システム102は、統合された様式で、データを格納すること、および、データにアクセスすること(例えば、データを内部的に格納すること、外部的なリモートに配置されるデータにアクセスすること)、ならびに、1つまたは複数の異種ソース(例えば、クラウド・コンピューティング・ストレージ・プラットフォーム104)からの統合されたデータをレポートすること、および、そのデータの分析のために使用される、ネットワーク・ベースのシステムである。クラウド・コンピューティング・ストレージ・プラットフォーム104は、複数のコンピューティング・マシンを備え、需要に応じて、データ・ストレージおよびコンピューティング・パワーなどのコンピュータ・システム・リソースを、ネットワーク・ベースのデータ・ウェアハウス・システム102に提供する。図1において例解される実施形態において、データ・ウェアハウスが描写されるが、他の実施形態は、他のタイプのデータベース、または、他のデータ処理システムを含み得る。
リモート・コンピューティング・デバイス106(例えば、ラップトップ・コンピュータなどのユーザ・デバイス)は、リモート・ソフトウェア・コンポーネント108(例えば、ブラウザでアクセスされるクラウド・サービス)を実行し、ネットワーク・ベースのデータ・ウェアハウス・システム102のユーザに追加的な機能性を提供する、1つまたは複数のコンピューティング・マシン(例えば、ラップトップ・コンピュータなどのユーザ・デバイス)を備える。リモート・ソフトウェア・コンポーネント108は、リモート・コンピューティング・デバイス106により実行されるときに、ある決まった機能性を提供することをリモート・コンピューティング・デバイス106に行わせる、マシン可読命令(例えば、コード)のセットを備える。リモート・ソフトウェア・コンポーネント108は、入力データに関して動作し得、入力データを処理、分析、または、他の形で変換することに基づいて、結果データを生成する。例として、リモート・ソフトウェア・コンポーネント108は、下記でさらに詳細に論考されるように、共有されるテーブルおよびビューに関するストリームなどの、データベース追跡プロシージャを可能にする、データ・プロバイダまたはデータ・コンシューマであり得る。
ネットワーク・ベースのデータ・ウェアハウス・システム102は、アクセス管理システム110と、コンピュート・サービス・マネージャ112と、実行プラットフォーム114と、データベース116とを備える。アクセス管理システム110は、アドミニストレーティブ・ユーザが、ネットワーク・ベースのデータ・ウェアハウス・システム102により提供されるリソースおよびサービスへのアクセスを管理することを可能にする。アドミニストレーティブ・ユーザは、ユーザ、ロール、およびグループを、作成および管理することができ、ならびに、リソースおよびサービスへのアクセスを可能とする、または拒否するために、パーミッションを使用することができる。アクセス管理システム110は、下記でさらに詳細に論考されるように、ネットワーク・ベースのデータ・ウェアハウス・システム102の異なるユーザの間で、クラウド・コンピューティング・ストレージ・プラットフォーム104のストレージ・リソースへの共有されるアクセスをセキュアに管理する共有データを格納することができる。
コンピュート・サービス・マネージャ112は、ネットワーク・ベースのデータ・ウェアハウス・システム102の動作を協調させ、管理する。コンピュート・サービス・マネージャ112は、さらには、クエリ最適化およびコンパイル、ならびに、コンピュート・リソースを提供するコンピューティング・サービスのクラスタ(例えば、仮想ウェアハウス、仮想マシン、EC2クラスタ)を管理することを実施する。コンピュート・サービス・マネージャ112は、任意の数の、データ格納および検索要求を提供するエンド・ユーザ、本明細書において説明されるシステムおよび方法を管理するシステム・アドミニストレータ、ならびに、コンピュート・サービス・マネージャ112と相互作用する他のコンポーネント/デバイスなどの、クライアント・アカウントをサポートすることができる。
コンピュート・サービス・マネージャ112は、さらには、共有されるデータ処理プラットフォーム100に格納されるデータの全体と関連付けられる、データベース116にカップリングされる。データベース116は、ネットワーク・ベースのデータ・ウェアハウス・システム102、および、そのユーザと関連付けられる、様々な機能および態様と関係があるデータを格納する。
一部の実施形態において、データベース116は、リモート・データ・ストレージ・システム内に格納されるデータ、および、1つまたは複数のローカル・キャッシュから利用可能なデータのサマリを含む。加えて、データベース116は、どのようにデータがリモート・データ・ストレージ・システムおよびローカル・キャッシュ内で組織化されるかに関する情報を含み得る。データベース116は、データのまとまりが、ストレージ・デバイスからの実際のデータをロードすること、または、その実際のデータにアクセスすることなく、アクセスされることを必要とするかどうかを決定することを、システムおよびサービスが行うことを可能とする。コンピュート・サービス・マネージャ112は、下記で、より詳細に論考されるように、様々なデータ格納およびデータ検索タスクを実行する複数個のコンピューティング・リソース(例えば、仮想ウェアハウス)を提供する、実行プラットフォーム114にさらにカップリングされる。
実行プラットフォーム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)など)、オブジェクト・ストレージ・システム、および類するものを含み得る。
実行プラットフォーム114は、複数のコンピュート・ノード(例えば、仮想ウェアハウス)を備える。コンピュート・ノード上のプロセスのセットが、コンピュート・サービス・マネージャ112によりコンパイルされるクエリ・プランを実行する。プロセスのセットは、クエリ・プランを実行するための第1のプロセスと、最長時間未使用(LRU:least recently used)ポリシーを使用してマイクロ・パーティション・ファイルをモニタリングおよび削除し、アウト・オブ・メモリ(OOM)エラー軽減プロセスを実現するための第2のプロセスと、コンピュート・サービス・マネージャ112に戻るように送出するための、プロセス・ログからの健全性情報、およびステータス情報を抽出する第3のプロセスと、システム・ブートの後に、コンピュート・サービス・マネージャ112との通信を確立するための第4のプロセスと、コンピュート・サービス・マネージャ112により提供される所与のジョブに対して、コンピュート・クラスタとのすべての通信をハンドリングするための、ならびに、コンピュート・サービス・マネージャ112、および、実行プラットフォーム114の他のコンピュート・ノードに戻るように情報を伝達するための第5のプロセスとを含むことができる。
クラウド・コンピューティング・ストレージ・プラットフォーム104は、さらには、アクセス管理システム118と、ウェブ・プロキシ120とを備える。アクセス管理システム110と同様に、アクセス管理システム118は、ユーザが、ユーザ、ロール、およびグループを、作成および管理することを可能とし、ならびに、クラウド・サービスおよびリソースへのアクセスを可能とする、または拒否するために、パーミッションを使用することを可能とする。ネットワーク・ベースのデータ・ウェアハウス・システム102のアクセス管理システム110、および、クラウド・コンピューティング・ストレージ・プラットフォーム104のアクセス管理システム118は、ネットワーク・ベースのデータ・ウェアハウス・システム102およびクラウド・コンピューティング・ストレージ・プラットフォーム104の両方のユーザにより共有される、リソースおよびサービスの、アクセスおよび管理を可能にするように、情報を伝達および共有することができる。ウェブ・プロキシ120は、トラフィック管理、認可およびアクセス制御、モニタリング、ならびに、APIバージョン管理を含む、同時的なAPIコールを受け付け、処理することにおいて必然的に含まれるタスクをハンドリングする。ウェブ・プロキシ120は、API(例えば、REST API)を作成、パブリッシュ、メンテナンス、セキュア化、およびモニタリングするためのHTTPプロキシ・サービスを提供する。
一部の実施形態において、共有されるデータ処理プラットフォーム100の要素同士の間の通信リンクは、1つまたは複数のデータ通信ネットワークによって実現される。これらのデータ通信ネットワークは、任意の通信プロトコル、および、任意のタイプの通信媒体を利用し得る。一部の実施形態において、データ通信ネットワークは、互いにカップリングされる2つ以上のデータ通信ネットワーク(またはサブネットワーク)の組み合わせである。代替の実施形態において、これらの通信リンクは、任意のタイプの通信媒体、および、任意の通信プロトコルを使用して実現される。
図1において示されるように、データ・ストレージ・デバイス124-1から124-Nは、実行プラットフォーム114と関連付けられるコンピューティング・リソースから切り離される。すなわち、新しい仮想ウェアハウスは、実行プラットフォーム114内で作成および終了され得、追加的なデータ・ストレージ・デバイスは、独立的な様式で、クラウド・コンピューティング・ストレージ・プラットフォーム104上で作成および終了され得る。このアーキテクチャは、変化するデータ格納/検索必要性、ならびに、共有されるデータ処理プラットフォーム100にアクセスするユーザおよびシステムの変化する必要性に基づく、ネットワーク・ベースのデータ・ウェアハウス・システム102に対する動的変化をサポートする。動的変化のサポートは、ネットワーク・ベースのデータ・ウェアハウス・システム102が、ネットワーク・ベースのデータ・ウェアハウス・システム102の中のシステムおよびコンポーネントに関する変化する需要に応じて、迅速にスケーリングすることを可能とする。データ・ストレージ・デバイス124-1から124-nからのコンピューティング・リソースの切り離しは、大きい量のデータの格納を、対応する大きい量のコンピューティング・リソースを要することなくサポートする。同様に、リソースのこの切り離しは、個別の時間において利用されるコンピューティング・リソースにおける有意な増大を、利用可能なデータ・ストレージ・リソースにおける対応する増大を要することなくサポートする。加えて、リソースの切り離しは、異なるアカウントが、他のユーザのシステムに影響を及ぼすことなく、他のユーザにより共有されるデータを処理するために、追加的なコンピュート・リソースを作成することをハンドリングすることを可能にする。実例として、データ・プロバイダは、3つのコンピュート・リソースを有し、データ・コンシューマとデータを共有し得、データ・コンシューマは、共有されるデータに対するクエリを実行するために、新しいコンピュート・リソースを生成し得、新しいコンピュート・リソースは、データ・コンシューマにより管理され、データ・プロバイダのコンピュート・リソースに影響を及ぼすことも、それらのコンピュート・リソースと相互作用することもない。
コンピュート・サービス・マネージャ112、データベース116、実行プラットフォーム114、クラウド・コンピューティング・ストレージ・プラットフォーム104、およびリモート・コンピューティング・デバイス106は、個々のコンポーネントとして図1において示される。しかしながら、コンピュート・サービス・マネージャ112、データベース116、実行プラットフォーム114、クラウド・コンピューティング・ストレージ・プラットフォーム104、およびリモート・コンピューティング環境の各々は、APIおよびアクセス情報(例えば、トークン、ログイン・データ)により接続される、(例えば、複数個の地理的場所における複数個のシステム/プラットフォームにわたって分散される)分散システムとして実現され得る。加えて、コンピュート・サービス・マネージャ112、データベース116、実行プラットフォーム114、およびクラウド・コンピューティング・ストレージ・プラットフォーム104の各々は、受け取られる要求に対する変化、および、共有されるデータ処理プラットフォーム100の変化する必要性に依存して、(互いに対して独立的に)スケールアップまたはダウンされ得る。かくして、説明される実施形態において、ネットワーク・ベースのデータ・ウェアハウス・システム102は、動的であり、現在のデータ処理必要性をかなえるための規則的な変化をサポートする。
典型的な動作の間に、ネットワーク・ベースのデータ・ウェアハウス・システム102は、コンピュート・サービス・マネージャ112により決定される複数個のジョブ(例えば、クエリ)を処理する。これらのジョブは、いつおよびどのようにジョブを実行すべきかを決定するためのコンピュート・サービス・マネージャ112により、スケジューリングおよび管理される。例えば、コンピュート・サービス・マネージャ112は、ジョブを複数個の離散的なタスクへと分割し得、何のデータが複数個の離散的なタスクの各々を実行するために必要とされるかを決定し得る。コンピュート・サービス・マネージャ112は、複数個の離散的なタスクの各々を、タスクを処理するための、実行プラットフォーム114の、1つまたは複数のノードに割り当て得る。コンピュート・サービス・マネージャ112は、何のデータがタスクを処理するために必要とされるかを決定し、実行プラットフォーム114の中のどのノードがタスクを処理するのに最も良好に適するかをさらに決定し得る。一部のノードは、タスクを処理するために必要とされるデータを(ノードが、以前のジョブのためにクラウド・コンピューティング・ストレージ・プラットフォーム104からデータを近時にダウンロードしていたことに起因して)既にキャッシュしていることがあり、それゆえに、タスクを処理することに対する良好な候補であり得る。データベース116内に格納されるメタデータは、実行プラットフォーム114内のどのノードが、タスクを処理するために必要とされるデータの少なくとも一部分を既にキャッシュしているかを決定することにおいて、コンピュート・サービス・マネージャ112を支援する。実行プラットフォーム114内の1つまたは複数のノードは、ノードによりキャッシュされるデータ、および、必要ならば、クラウド・コンピューティング・ストレージ・プラットフォーム104から検索されるデータを使用してタスクを処理する。実行プラットフォーム114の中のキャッシュから可能な限り多くのデータを検索することが望ましく、なぜならば、検索速度は、典型的には、クラウド・コンピューティング・ストレージ・プラットフォーム104からデータを検索することよりはるかに高速であるからである。
図1において示されるように、共有されるデータ処理プラットフォーム100は、クラウド・コンピューティング・ストレージ・プラットフォーム104から実行プラットフォーム114を分離する。この配置構成において、実行プラットフォーム114内の処理リソースおよびキャッシュ・リソースは、クラウド・コンピューティング・ストレージ・プラットフォーム104内のデータ・ストレージ・デバイス124-1から124-nに対して独立的に動作する。かくして、コンピューティング・リソースおよびキャッシュ・リソースは、特定のデータ・ストレージ・デバイス124-1から124-nに制約されない。代わりに、すべてのコンピューティング・リソース、および、すべてのキャッシュ・リソースが、クラウド・コンピューティング・ストレージ・プラットフォーム104内のデータ・ストレージ・リソースの任意のものからデータを検索し、その任意のものにデータを格納し得る。
図2は、本開示の一部の実施形態による、コンピュート・サービス・マネージャ112のコンポーネントを例解するブロック線図である。図2において示されるように、要求処理サービス202が、受け取られるデータ格納要求およびデータ検索要求(例えば、データベース・データに関して実施されることになるジョブ)を管理する。例えば、要求処理サービス202は、受け取られるクエリ(例えば、データ格納要求またはデータ検索要求)を処理するために必要なデータを決定し得る。データは、実行プラットフォーム114の中のキャッシュ内に、または、クラウド・コンピューティング・ストレージ・プラットフォーム104内のデータ・ストレージ・デバイス内に格納され得る。管理コンソール・サービス204が、アドミニストレータおよび他のシステム・マネージャによる、様々なシステムおよびプロセスへのアクセスをサポートする。加えて、管理コンソール・サービス204は、ジョブを実行するための要求を受け取り、システム上のワークロードをモニタリングし得る。ストリーム共有エンジン225が、一部の例示的な実施形態によれば、および、下記でさらに詳細に論考されるように、データ共有(例えば、共有されるテーブル)、または、共有されるビューなどの、データベース・オブジェクトに関する変化追跡を管理する。
コンピュート・サービス・マネージャ112は、さらには、ジョブ・コンパイラ206と、ジョブ・オプティマイザ208と、ジョブ・エグゼキュータ210とを含む。ジョブ・コンパイラ206は、ジョブを複数個の離散的なタスクへとパースし、複数個の離散的なタスクの各々に対する実行コードを生成する。ジョブ・オプティマイザ208は、処理されることを必要とするデータに基づいて、複数個の離散的なタスクを実行するための最も良好な方法を決定する。ジョブ・オプティマイザ208は、さらには、ジョブを実行することの速度および効率を改善するために、様々なデータ・プルーニング動作、および、他のデータ最適化技法をハンドリングする。ジョブ・エグゼキュータ210は、キューから受け取られる、または、コンピュート・サービス・マネージャ112により決定される、ジョブに対する実行コードを実行する。
ジョブ・スケジューラおよびコーディネータ212が、実行プラットフォーム114に対するコンパイル、最適化、およびディスパッチのために、受け取られるジョブを適切なサービスまたはシステムに送出する。例えば、ジョブは、優先順位付けされ、その優先順位付けされた順序で処理され得る。実施形態において、ジョブ・スケジューラおよびコーディネータ212は、コンピュート・サービス・マネージャ112によりスケジューリングされる内部ジョブに対して、データベース内の他のシステムによりスケジューリングされ得るが、実行プラットフォーム114内の同じ処理リソースを利用し得る、ユーザ・クエリなどの他の「外側」ジョブによって、優先順位を決定する。一部の実施形態において、ジョブ・スケジューラおよびコーディネータ212は、個別のタスクを処理するための、実行プラットフォーム114内の個別のノードを識別し、または割り当てる。仮想ウェアハウス・マネージャ214が、実行プラットフォーム114内で実現される複数個の仮想ウェアハウスの動作を管理する。下記で論考されるように、各々の仮想ウェアハウスは、キャッシュとプロセッサとを各々が含む、複数個の実行ノードを含む(例えば、仮想マシン、オペレーティング・システム・レベル・コンテナ実行環境)。
加えて、コンピュート・サービス・マネージャ112は、リモート・データ・ストレージ・デバイス内に、および、ローカル・キャッシュ(すなわち、実行プラットフォーム114内のキャッシュ)内に格納されるデータに関係付けられる情報を管理する、構成およびメタデータ・マネージャ216を含む。構成およびメタデータ・マネージャ216は、どのデータ・マイクロ・パーティションが、個別のタスクまたはジョブを処理するためのデータを検索するためにアクセスされることを必要とするかを決定するために、メタデータを使用する。モニタおよびワークロード・アナライザ218は、コンピュート・サービス・マネージャ112により実施されるプロセスを監督し、実行プラットフォーム114内の仮想ウェアハウスおよび実行ノードにわたるタスク(例えば、ワークロード)の配分を管理する。モニタおよびワークロード・アナライザ218は、さらには、必要とされる際に、ネットワーク・ベースのデータ・ウェアハウス・システム102の全体を通しての変化するワークロードに基づいて、タスクを再配分し、さらには実行プラットフォーム114により処理され得るユーザ(例えば、「外部」)クエリ・ワークロードに基づいて、タスクをさらに再配分し得る。構成およびメタデータ・マネージャ216、ならびに、モニタおよびワークロード・アナライザ218は、データ・ストレージ・デバイス220にカップリングされる。図2におけるデータ・ストレージ・デバイス220は、ネットワーク・ベースのデータ・ウェアハウス・システム102の中の任意のデータ・ストレージ・デバイスを表す。例えば、データ・ストレージ・デバイス220は、実行プラットフォーム114内のキャッシュ、クラウド・コンピューティング・ストレージ・プラットフォーム104内のストレージ・デバイス、または、任意の他のストレージ・デバイスを表し得る。
図3は、本開示の一部の実施形態による、実行プラットフォーム114のコンポーネントを例解するブロック線図である。図3において示されるように、実行プラットフォーム114は、仮想マシンなどの、コンピュート・インスタンスの、弾力のあるクラスタである、複数個の仮想ウェアハウスを含む。例解される例において、仮想ウェアハウスは、仮想ウェアハウス1と、仮想ウェアハウス2と、仮想ウェアハウスnとを含む。各々の仮想ウェアハウス(例えば、EC2クラスタ)は、データ・キャッシュとプロセッサとを各々が含む、複数個の実行ノード(例えば、仮想マシン)を含む。仮想ウェアハウスは、複数個の実行ノードを使用することにより、複数個のタスクを並列で実行することができる。本明細書において論考されるように、実行プラットフォーム114は、システムおよびユーザの現在の処理必要性に基づいて、リアルタイムで、新しい仮想ウェアハウスを追加し、既存の仮想ウェアハウスをドロップすることができる。この柔軟性は、実行プラットフォーム114が、必要とされるときに、大きい量のコンピューティング・リソースを迅速にデプロイすることを、それらのコンピューティング・リソースに対して、それらのリソースがもはや必要とされないときに支払いを行うことを継続することを強いられることなく行うことを可能とする。すべての仮想ウェアハウスは、任意のデータ・ストレージ・デバイス(例えば、クラウド・コンピューティング・ストレージ・プラットフォーム104内の任意のストレージ・デバイス)からのデータにアクセスすることができる。
図3において示される各々の仮想ウェアハウスは、3つの実行ノードを含むが、個別の仮想ウェアハウスは、任意の数の実行ノードを含み得る。さらに、仮想ウェアハウス内の実行ノードの数は動的であり、そのことは、新しい実行ノードが、追加的な需要が存在するときに作成され、既存の実行ノードが、それらの実行ノードがもはや必要でないときに(例えば、クエリまたはジョブ完了時に)削除されるというようなことである。
各々の仮想ウェアハウスは、図1において示されるデータ・ストレージ・デバイス124-1から124-nの任意のものにアクセスする能力がある。かくして、仮想ウェアハウスは、必ずしも特定のデータ・ストレージ・デバイス124-1から124-nに割り当てられず、代わりに、クラウド・コンピューティング・ストレージ・プラットフォーム104の中のデータ・ストレージ・デバイス124-1から124-nの任意のものからのデータにアクセスすることができる。同様に、図3において示される実行ノードの各々は、データ・ストレージ・デバイス124-1から124-nの任意のものからのデータにアクセスすることができる。実例として、第1のユーザ(例えば、プロバイダ・アカウント・ユーザ)のストレージ・デバイス124-1は、別のユーザ(例えば、コンシューマ・アカウント・ユーザ)の仮想ウェアハウス内のワーカ・ノードと共有され得、そのことによって、別のユーザは、データベース(例えば、読み出し専用データベース)を作成し、ストレージ・デバイス124-1内のデータを、データをコピーする(例えば、そのデータを、コンシューマ・アカウント・ユーザにより管理される新しいディスクにコピーする)ことを必要とすることなく、直接的に使用することができる。一部の実施形態において、個別の仮想ウェアハウス、または、個別の実行ノードは、特定のデータ・ストレージ・デバイスに一時的に割り当てられ得るが、仮想ウェアハウスまたは実行ノードは、任意の他のデータ・ストレージ・デバイスからのデータに後でアクセスし得る。
図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つまたは複数の、データ格納および/またはデータ検索タスクを処理することと関連付けられる。例えば、仮想ウェアハウスは、クラスタリング・サービス、マテリアライズド・ビュー・リフレッシュ・サービス、ファイル・コンパクション・サービス、ストレージ・プロシージャ・サービス、またはファイル・アップグレード・サービスなどの内部サービスと関連付けられる、データ格納およびデータ検索タスクをハンドリングし得る。他の実現形態において、個別の仮想ウェアハウスは、個別のデータ・ストレージ・システム、または、データの個別のカテゴリと関連付けられる、データ格納およびデータ検索タスクをハンドリングし得る。
上記で論考された仮想ウェアハウス1と同様に、仮想ウェアハウス2は、3つの実行ノード312-1、312-2、および312-nを含む。実行ノード312-1は、キャッシュ314-1と、プロセッサ316-1とを含む。実行ノード312-2は、キャッシュ314-2と、プロセッサ316-2とを含む。実行ノード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とを含む。
一部の実施形態において、図3において示される実行ノードは、実行ノードがキャッシュしているデータに関してステートレスである。例えば、これらの実行ノードは、実行ノード、または、個別の実行ノードによりキャッシュされているデータに関するステート情報を、格納することも、他の形で維持することもない。かくして、実行ノード障害の事象において、障害が起きたノードは、別のノードにより、トランスペアレントに置き換わられ得る。障害が起きた実行ノードと関連付けられるステート情報は存在しないので、新しい(置き換わり)実行ノードは、個別のステートを再作成することに対する懸念なしに、障害が起きたノードに対して容易に置き換わることができる。
図3において示される実行ノードは、1つのデータ・キャッシュと、1つのプロセッサとを各々が含むが、代替の実施形態は、任意の数のプロセッサと、任意の数のキャッシュとを内包する実行ノードを含み得る。加えて、キャッシュは、異なる実行ノードの間で、サイズにおいて変動し得る。図3において示されるキャッシュは、ローカル実行ノード(例えば、ローカル・ディスク)内に、クラウド・コンピューティング・ストレージ・プラットフォーム104内の1つまたは複数のデータ・ストレージ・デバイスから検索されたデータ(例えば、所与のノードにより、近時にアクセスされたS3オブジェクト)を格納する。一部の例示的な実施形態において、キャッシュは、クエリがそのクエリに対して必要な列のみをダウンロードする際に、ファイル・ヘッダ、および、ファイルの個々の列を格納する。
キャッシュ・ヒットを改善し、ノード・キャッシュ内に格納される重複する冗長なデータを回避するために、ジョブ・オプティマイザ208は、アクセスされるデータ(例えば、データベース116またはデータベース122内のデータ)のテーブル・ファイル名全体に関してハッシュするためのコンシステント・ハッシング・スキームを使用して、入力ファイル・セットをノードに割り当てる。同じテーブル・ファイルにアクセスする、後続の、または同時的なクエリは、そのことのために、一部の例示的な実施形態によれば、同じノード上で実施されることになる。
論考されるように、ノードおよび仮想ウェアハウスは、環境条件(例えば、災害シナリオ)、ハードウェア/ソフトウェア問題点(例えば、機能不全)、または、アドミニストレーティブな変化(例えば、コストを低下させるために、大きいクラスタから、より小さいクラスタに変化させること)に応じて、動的に変化し得る。一部の例示的な実施形態において、ノードのセットが変化するとき、直ちにリシャッフルされるデータはない。代わりに、最長時間未使用置き換えポリシーが、複数個のジョブ全体に関して、失われたキャッシュ・コンテンツについて最終的に置き換えるために実現される。かくして、キャッシュは、リモート・ストレージ・システムからのデータを一貫して検索するプラットフォーム内で発生するボトルネック問題を低減し、または消失させる。リモート・ストレージ・デバイスからのデータに繰り返しアクセスすることの代わりに、本明細書において説明されるシステムおよび方法は、実行ノード内のキャッシュからのデータにアクセスし、そのことは、有意に、より高速であり、上記で論考されたボトルネック問題を回避する。一部の実施形態において、キャッシュは、キャッシュされるデータへの高速のアクセスをもたらす高速度メモリ・デバイスを使用して実現される。各々のキャッシュは、クラウド・コンピューティング・ストレージ・プラットフォーム104内のストレージ・デバイスの任意のものからのデータを格納することができる。
さらに、キャッシュ・リソースおよびコンピューティング・リソースは、異なる実行ノードの間で変動し得る。例えば、1つの実行ノードは、相当量のコンピューティング・リソースと、最小量のキャッシュ・リソースとを内包し得、そのことは、実行ノードを、相当量のコンピューティング・リソースを要するタスクに対して有用にする。別の実行ノードは、相当量のキャッシュ・リソースと、最小量のコンピューティング・リソースとを内包し得、そのことは、この実行ノードを、大きい量のデータのキャッシングを要するタスクに対して有用にする。なおも別の実行ノードは、大きい量のデータの高速のスキャニングを要するタスクに対して有用な、より高速の入出力動作をもたらすキャッシュ・リソースを内包し得る。一部の実施形態において、実行プラットフォーム114は、個別の実行と関連付けられるキャッシュ・リソースおよびコンピューティング・リソースの間でワークを配分するためのスキュー・ハンドリングを実現し、配分は、実行ノードにより実施されることになる期待されるタスクにさらに基づき得る。例えば、実行ノードは、実行ノードにより実施されるタスクが、よりプロセッサ集約的になるならば、より多くの処理リソースを割り当てられ得る。同様に、実行ノードは、実行ノードにより実施されるタスクが、より大きいキャッシュ容量を要するならば、より多くのキャッシュ・リソースを割り当てられ得る。さらに、一部のノードは、様々な問題点(例えば、仮想化問題点、ネットワーク・オーバヘッド)に起因して、他のものよりはるかに低速で実行していることがある。一部の例示的な実施形態において、不均衡は、ファイル・スティーリング・スキームを使用して、スキャン・レベルにおいて対処される。特に、ノード・プロセスが、入力ファイルのそのプロセスのセットをスキャンすることを完了するときはいつでも、そのノード・プロセスは、他のノードから追加的なファイルを要求する。他のノードのうちの1つが、そのような要求を受け取るならば、ノードは、そのノード自体のセットを分析し(例えば、どれだけ多くのファイルが、要求が受け取られるときに入力ファイル・セット内に残されているか)、次いで、現在のジョブ(例えば、クエリ)の時間幅に対する、残存するファイルのうちの1つまたは複数の所有権について移転させる。要求するノード(例えば、ファイル・スティーリング・ノード)は、次いで、データ(例えば、ヘッダ・データ)を受け取り、クラウド・コンピューティング・ストレージ・プラットフォーム104から(例えば、データ・ストレージ・デバイス124-1から)ファイルをダウンロードし、移転させるノードからはファイルをダウンロードしない。この手立てでは、遅れるノードは、遅れるノード上のロードを悪化させない手立てで、ファイル・スティーリングによってファイルを移転させることができる。
仮想ウェアハウス1、2、およびnは、同じ実行プラットフォーム114と関連付けられるが、仮想ウェアハウスは、複数個の地理的場所における複数個のコンピューティング・システムを使用して実現され得る。例えば、仮想ウェアハウス1は、第1の地理的場所におけるコンピューティング・システムにより実現され得、一方で、仮想ウェアハウス2およびnは、第2の地理的場所における別のコンピューティング・システムにより実現される。一部の実施形態において、これらの異なるコンピューティング・システムは、1つまたは複数の異なるエンティティにより維持されるクラウド・ベースのコンピューティング・システムである。
加えて、各々の仮想ウェアハウスは、複数個の実行ノードを有するように、図3において示される。各々の仮想ウェアハウスと関連付けられる複数個の実行ノードは、複数個の地理的場所における複数個のコンピューティング・システムを使用して実現され得る。例えば、仮想ウェアハウス1のインスタンスは、ある地理的場所における1つのコンピューティング・プラットフォーム上の実行ノード302-1および302-2を実現し、別の地理的場所における異なるコンピューティング・プラットフォームにおける実行ノード302-nを実現する。実行ノードを実現するための個別のコンピューティング・システムを選択することは、個別の実行ノードに対して必要とされるリソースのレベル(例えば、処理リソース所要量およびキャッシュ所要量)、個別のコンピューティング・システムにおいて利用可能なリソース、地理的場所の中の、または、地理的場所同士の間のネットワークの通信能力、および、どのコンピューティング・システムが仮想ウェアハウス内の他の実行ノードを既に実現しているかなど、様々な要因に依存し得る。
実行プラットフォーム114は、さらにはフォールト・トレラントである。例えば、1つの仮想ウェアハウスが障害を起こすならば、その仮想ウェアハウスは、異なる地理的場所における異なる仮想ウェアハウスによって迅速に置き換わられる。
個別の実行プラットフォーム114は、任意の数の仮想ウェアハウスを含み得る。加えて、個別の実行プラットフォーム内の仮想ウェアハウスの数は動的であり、そのことは、新しい仮想ウェアハウスが、追加的な処理および/またはキャッシング・リソースが必要とされるときに作成されるというようなことである。同様に、既存の仮想ウェアハウスが、仮想ウェアハウスと関連付けられるリソースがもはや必要でないときに削除され得る。
一部の実施形態において、仮想ウェアハウスは、クラウド・コンピューティング・ストレージ・プラットフォーム104内の同じデータに関して動作し得るが、各々の仮想ウェアハウスは、独立的な処理およびキャッシング・リソースを伴う、その各々の仮想ウェアハウス自体の実行ノードを有する。この構成は、異なる仮想ウェアハウス上の要求が、独立的に、および、要求同士の間の干渉を伴わずに処理されることを可能とする。仮想ウェアハウスを動的に追加および除去する能力と組み合わされる、この独立的な処理は、既存のユーザにより認められる性能に影響力を及ぼすことなく、新しいユーザに対する新しい処理容量の追加をサポートする。
図4は、一部の例示的な実施形態による、データ・ウェアハウス・システム内の2つの別個のアカウントの例を示す。ここでは、会社Aが、本明細書において説明されるようなネットワーク・ベースのデータ・ウェアハウス・システムによるアカウントA402を動作させ得る。アカウントA402内に、会社Aデータ404が格納され得る。会社Aデータ404は、例えば、会社Aの顧客に関する顧客データ406を含み得る。顧客データ406は、顧客情報および他の関係付けられる情報を格納する、テーブルまたは他のフォーマットで格納され得る。他の関係付けられる情報は、電子メールなどの識別する情報と、性別、地理的場所、購買習慣、および類するものなどの、顧客の他の既知の特性とを含み得る。例えば、会社Aが消費財会社であるならば、顧客が、独身、既婚、郊外または都市の家族の一員、その他であるかどうかなどの、購買特性が格納され得る。会社Aがストリーミング・サービス会社であるならば、顧客が、SF、自然、現実、アクション、その他が好きであるかどうかなどの、顧客の視聴習慣に関する情報が格納され得る。
同じように、会社Bが、本明細書において説明されるようなネットワーク・ベースのデータ・ウェアハウス・システムによるアカウントB412を動作させ得る。アカウントB412内に、会社Bデータ414が格納され得る。会社Bデータ414は、例えば、会社Bの顧客を関係付ける顧客データを含み得る。顧客データ416は、顧客情報および他の関係付けられる情報を格納する、テーブルまたは他のフォーマットで格納され得る。他の関係付けられる情報は、上記で説明されたように、電子メールなどの識別する情報と、性別、地理的場所、購買習慣、その他などの、顧客の他の既知の特性とを含み得る。
セキュリティの理由のために、会社Aのデータは、会社Bに対してアクセス可能でないことがあり、逆でも同様である。しかしながら、会社Aおよび会社Bは、顧客の個人的なアイデンティティ情報などの機微情報を漏らすことなく、それらの会社のデータのうちの少なくとも一部を互いと共有することを欲することがある。例えば、会社Aおよび会社Bは、クロス・マーケティングまたは広告機会を調査することを欲することがあり、それらの会社の顧客のうちの何人が重複するかを確かめ、関係性およびパターンを識別するために、重複する顧客の、ある決まった特性に基づいてフィルタリングすることを欲することがある。
このためにも、データ・クリーン・ルームが、本明細書において説明されるようなネットワーク・ベースのデータ・ウェアハウス・システムにより提供され得る。図5は、一部の例示的な実施形態による、データ・クリーン・ルームを動作させるための方法を例解するブロック線図である。データ・クリーン・ルームは、会社AおよびBが、それらの会社の会社データに関する重複分析を実施することを、機微データを共有することなく、および、データ全体に関する制御を失うことなく可能にし得る。データ・クリーン・ルームは、各々のアカウントに対するデータの間のリンケージを作成し得、ブラインド相互参照テーブルのセットを含み得る。
次に、データ・クリーン・ルームを作成するための例示的な動作が説明される。アカウントBは、会社Bに対する顧客データ502を含み得、アカウントAは、会社Aに対する顧客データ504を含み得る。この例において、アカウントBが、データ・クリーン・ルームの作成を起動し得るが、どちらのアカウントも、データ・クリーン・ルームの作成を起動してよい。アカウントBは、セキュア関数506を作成し得る。セキュア関数506は、アカウントBの顧客データ502内の特定の識別子情報をルックアップし得る。セキュア関数506は、各々の顧客データに対する識別子を作成すること(例えば、第1の結果セットを生成すること)により、情報を匿名化し得る。セキュア関数506は、セキュア・ユーザ定義関数(UDF)であり得、2020年3月10日に出願された、「System and Method for Global Data Sharing」と題された、米国特許出願第16/814,875号において説明される技法を使用して実現され得、その米国特許出願は、本明細書において以降で具体的に現れる一部分を含む、ただし、それらに制限されない、その米国特許出願の全体において、参照により、本明細書に組み込まれ、後に続く例外:上記で参照された出願の何らかの一部分が本出願と矛盾するという事象において、本出願が、上記で参照された出願に取って代わるということを伴って、参照による組み込みが行われる。
セキュア関数506は、SQL UDFとして実現され得る。セキュア関数506は、関数を処理するために使用される、土台となるデータを保護するように定義され得る。しかるがゆえに、セキュア関数506は、土台となるデータの直接的および間接的な露出を制約し得る。
セキュア関数506は、次いで、セキュア共有508を使用してアカウントAと共有され得る。セキュア共有508は、アカウントAがセキュア関数506を実行することを可能とし得、一方で、関数により使用されるアカウントBの土台となるデータへのアクセスを有さないように、および、関数のコードを閲覧することができないように、アカウントAを制約する。セキュア共有508は、さらには、セキュア関数506のコードにアクセスしないように、アカウントAを制約し得る。その上、セキュア共有508は、セキュア関数506のアカウントBの使用に関する何らかのログもしくは他の情報、または、セキュア関数506の、それがコールされるときの、アカウントBにより提供されるパラメータを閲覧しないように、アカウントAを制約し得る。
アカウントAは、(例えば、第2の結果セットを生成する)そのアカウントAの顧客データ504を使用するセキュア関数506を実行し得る。セキュア関数506の実行の結果は、アカウントBに伝達され得る。実例として、匿名化された顧客情報512(例えば、匿名化された識別情報)を含み得る、相互参照テーブル510が、アカウントB内で作成され得る。同じように、両方の会社に対するマッチングする重複する顧客に対する匿名化された顧客情報516と、非マッチング・レコードに対するダミー識別子とを含み得る、相互参照テーブル514が、アカウントA内で作成され得る。2つの会社からのデータは、どちらのアカウントも、土台となるデータ、または、他の識別可能な情報にアクセスし得ないように、セキュアに結合され得る。例えば、データは、2019年5月28日に出願された、「Secure Data Joins in a Multiple Tenant Database System」と題された、米国特許出願第16/368,339号において説明される技法を使用してセキュアに結合され得、その米国特許出願は、本明細書において以降で具体的に現れる一部分を含む、ただし、それらに制限されない、その米国特許出願の全体において、参照により、本明細書に組み込まれ、後に続く例外:上記で参照された出願の何らかの一部分が本出願と矛盾するという事象において、本出願が、上記で参照された出願に取って代わるということを伴って、参照による組み込みが行われる。
実例として、相互参照テーブル510(および、匿名化された顧客情報512)は、フィールド:アカウントBのデータ内の顧客IDに対応し得る「my_cust_id」と、識別される顧客情報への匿名化されたリンクに対応し得る「my_link_id」と、会社A内の匿名化されたマッチングされる顧客に対応し得る「their_link_id」とを含み得る。「their_link_id」は、会社Bが、マッチングされる顧客のアイデンティティを明察することができないように、匿名化され得る。匿名化は、ハッシング、暗号化、トークン化、または、他の適した技法を使用して実施され得る。
その上、アイデンティティをさらに匿名化するために、相互参照テーブル510(および、匿名化された顧客情報512)内の会社Bのすべての列挙される顧客は、実際のマッチが存在したか否かにかかわらず、列挙される会社Bからの一意的なマッチングされる顧客を有し得る。ダミー「their_link_id」が、マッチングされない顧客に対して作成され得る。この手立てで、どちらの会社も、マッチングされる顧客のアイデンティティ情報を突き止めることはでき得ない。どちらの会社も、ダミーを返される識別子(マッチなし)よりむしろ、実際のマッチがどこに存在するかを明察し得ない。ゆえに、相互参照テーブル510は、匿名化されたキー・バリュー対を含み得る。マッチの総数を通知するサマリ・レポートが作成され得るが、マッチングされる顧客の他の詳細は、顧客のアイデンティティを守るために提供され得ない。
データ・クリーン・ルームは、1つまたは両方の方向において動作し得、そのことは、ダブル・ブラインド・クリーン・ルームが提供され得るということを意味する。図6は、一部の例示的な実施形態による、ダブル・ブラインド・クリーン・ルームを動作させるための方法を例解するブロック線図である。ダブル・ブラインド・クリーン・ルームは、会社Aが、その会社データを、会社Bの会社データとともに使用して重複分析を実施することを、および、逆でも同様のことを、機微データを共有することなく、および、それらの会社自体のデータ全体に関する制御を失うことなく可能にし得る。ダブル・ブラインド・クリーン・ルームは、各々のアカウントに対するデータの間のリンケージを作成し得、ダブル・ブラインド相互参照テーブルのセットを含み得る。
ここでは、アカウントAは、その顧客データ602を含み得、アカウントBは、その顧客データ604を含み得る。アカウントAは、上記で説明されたように、セキュア関数606(「Get_Link_ID」)を作成し得る。セキュア関数606は、上記で説明されたように、セキュア共有608を使用してアカウントBと共有され得る。その上、ストアド・プロシージャ関数610が、それぞれの顧客データ内のデータに対する変化を検出し得、それ相応に、リンクについて、更新処理を行い、リフレッシュし得る。
同じまたは同様のプロセスが、セキュア関数612、セキュア共有614、およびストアド・プロシージャ616によって、アカウントBからアカウントAに適用され得る。その結果、アカウントA内の相互参照テーブル618は、2つの会社の間の顧客重複に関する情報を含み得る。例えば、相互参照テーブル618は、フィールド:アカウントAのデータ内の顧客IDに対応し得る「my_cust_id」と、会社Aの識別される顧客情報への匿名化されたリンクに対応し得る「my_link_id」と、会社B内の匿名化されたマッチングされる顧客に対応し得る「their_link_id」とを含む。匿名化は、ハッシング、暗号化、トークン化、または類するものを使用して実施され得る。
同様に、アカウントB内の相互参照テーブル620は、2つの会社の間の顧客重複に関する情報を含み得る。例えば、相互参照テーブル620は、フィールド:アカウントBのデータ内の顧客IDに対応し得る「my_cust_id」と、会社Bの識別される顧客情報への匿名化されたリンクに対応し得る「my_link_id」と、会社A内の匿名化されたマッチングされる顧客に対応し得る「their_link_id」とを含む。匿名化は、ハッシング、暗号化、トークン化、または、他の適した技法を使用して実施され得る。
上記の例において、両方の会社AおよびBは、データ・ウェアハウス・システムによるアカウントを有した。しかしながら、本明細書において説明されるブラインド・クリーン・ルーム技法は、さらには、1つまたは両方の会社がデータ・ウェアハウス・システムによるアカウントを有さないときの用途を見いだし得る。図7は、一部の例示的な実施形態による、データ・ウェアハウス・システムに対してデータをオンボーディングするための技法を例解する。ここでは、会社Cは、データ・ウェアハウス・システムによるアカウントを有さないことがあるが、それにもかかわらず、それでもなお、本明細書において説明されるデータ・クリーン・ルーム技法を用いることを欲することがある。会社Cは、その会社データをロード・ファイル702(例えば、.csvファイル)内へとロードし得る。次いで、ブラウザ704、またはアプリケーション、または類するものを使用して、会社Cは、ファイル・アップローダ706を使用し、ロード・ファイル702をセキュア・クラウド・ストレージ・ロケーション708(さらには「エンクレーブ・バケット(enclave bucket)」と呼称される)にアップロードし得る。エンクレーブ・バケット708から、データは、エンクレーブ・アカウント710内へと移動させられ得る。データは、バッチ・データ・インジェスチョン・コマンド、コピー・コマンド、または類するものにより移動させられ得る。カスタム・ウェブGUI712が、さらには、制御情報をエンクレーブ・アカウント710に送出するために使用され得る。制御情報は、例えば、ロード・ファイル702内のデータに対するアクセス制約をセットし得る。データ・クリーン・ルームを作成および使用することの目的のために、エンクレーブ・アカウント710は、次いで、上記で説明されたように、通常のアカウントとして機能および動作し得る。
データ・クリーン・ルームが作成される後、パーティが、より詳細な情報を集めるために、セキュア・データに関するセキュア・クエリをランさせ得る。2つの会社の顧客をセキュアにマッチングすることの例において、どちらの会社も、選択条件に基づくマッチの総計を決定するために、他方の会社にクエリ要求を送出してよい。
図8A~図8Cは、一部の例示的な実施形態による、データ・クリーン・ルームを使用するセキュア・クエリを処理するための方法を例解するブロック線図である。図8A~図8Cにおける例は、図6において作成される例示的なデータ・クリーン・ルームに依拠する。ここでは、アカウントAは、その顧客データ602を含み得、アカウントBは、その顧客データ604を含み得る。上記で解説されたように、相互参照テーブル618、620が、それぞれアカウントAおよびB内で作成され、含まれ得る。加えて、顧客の購入習慣に関係付けられる情報を含む、販売データ802(図8Cにおいて示される)が、アカウントA内に含まれ得、顧客のビューイング習慣に関する情報を含み得る、視聴データ804が、アカウントB内に含まれ得る。
その上、アカウントBは、会社Aが、セキュア・クエリ使用可能データ808と呼称される選択データへのアクセスを有することを可能とするために、セキュア・ビュー806を使用し得る。アカウントBは、アカウントAに、種々の手立てでこのセキュア・クエリ使用可能データ808を通知し得る。アカウントBは、前もってアカウントAにこの情報をパブリッシュし得る。そのアカウントBは、アカウントAと、セキュア・クエリ使用可能データ808の構造およびルックアップ・キーを共有し得る。そのアカウントBは、さらには、2020年1月17日に出願された、「Private Data Exchange」と題された、米国特許出願第16/746,673号において説明される技法を使用してプライベート・データ交換を使用し得、その米国特許出願は、本明細書において以降で具体的に現れる一部分を含む、ただし、それらに制限されない、その米国特許出願の全体において、参照により、本明細書に組み込まれ、後に続く例外:上記で参照された出願の何らかの一部分が本出願と矛盾するという事象において、本出願が、上記で参照された出願に取って代わるということを伴って、参照による組み込みが行われる。
アカウントAにおけるユーザは、データ・クリーン・ルーム内でセキュア・クエリ810をランさせ得る。クエリは、アカウントAおよびBの両方内のデータの処理を要求し得るが、アカウントBの機微データへのアクセスを有さないように、ユーザを制約し得る。例えば、ユーザは、以下の情報を要求するクエリをランさせ得る:結果的に生じるグループ内に少なくとも2人の顧客が存在する場合、米国またはカナダに住んでいることを私が知っており、かつ会社Bによればアニメーション・ファンでもある私の(会社Aの)顧客のうち何人が、会社Bのプログラムのうちの1つを視聴したことがあり、会社Bのプログラムおよび私の(会社Aの)セグメントによってグループ分けされており、さらには私の「Top Paper Towels」製品を購入したことがあるのか?
会社Aの顧客データ602、相互参照テーブル618、および販売データ802を使用して、クエリは、暫定テーブル812(「MyData1」)を生成し得る。暫定テーブル812は、この例において、マッチングする匿名化された会社B顧客(上記で説明されたように、「ダミー」マッチングされるアカウントを含むことがあり、または、含まないことがある)とセキュアに結合される、「Top Paper Towels」を購入した、および、米国またはカナダに住む、顧客に対する、匿名化された会社Aの顧客情報を含み得る。セキュア・クエリ要求814が、さらには、会社Bに送出するために生成され得る。セキュア・クエリ要求814は、会社Bに、クエリの残りの一部分をランさせるように、および、最終的な結果を送り返すように要求し得る。例えば、セキュア・クエリ要求814は、要求IDと、会社Bが適用するためのフィルタ(「select_c」および「where_c」)と、最終的な結果に対する出力フォーマット(「result_table」)とを含み得る。セキュア・クエリ要求814は、(示されるような)要求テーブルの形式で提供され得、または、SQLステートメントなどの、別のタイプのリモート・プロシージャ・コールであり得る。暫定テーブル812およびセキュア・クエリ要求814は、セキュア・クエリ要求共有816を使用して、アカウントBと共有され得る。
次に、アカウントBが、元のクエリの残りの一部分を完了し得る。アカウントBにおいて、暫定テーブル818のコピーが格納され得る。セキュア・クエリ要求814は、要求に関するストリーム820、および、新しい要求に関するタスク822関数により受け取られ得る。セキュア・クエリは、次いで、制約されるクエリ・プロシージャ関数824により実行され得る。この関数は、クエリを実行するために、暫定テーブル818のコピー、相互参照テーブル620、視聴データ804、およびセキュア・クエリ使用可能データ808などの、種々のソースからのデータを使用し得る。この例において、制約されるクエリ・プロシージャ関数824は、会社Bのプログラムのうちの1つを視聴した、および、アニメーション・ファンである人により、暫定テーブル818内で識別される顧客をフィルタリングし得、関数は、クエリ・ステータス826において示されるように、プログラム、および、会社Aのセグメントにより、結果をグループ分けし得る。結果が、生成され、暫定結果テーブル828に出力され得る。次に、クエリの最後の部分が、実施され、各々の結果的に生じるグループ内に2人より少ない顧客(例えば、最小閾値)を伴う結果をフィルタリング除去し得る。図8A~図8Cにおいて示される例において、「映画B」、および、個別の会社Aセグメントに対するグループは、1人のみの結果を有したものであり、そのため、そのグループは除去された。最終的な結果が、次いで、セキュア・クエリ結果共有関数830を使用して、アカウントAと共有され得る。アカウントA内での結果は、2つのプログラムによりグループ分けされるクエリのマッチを示す、最終的な結果テーブル832(「res1」)として提供され得る。
図9は、例示的な実施形態による、コンピュータ・システムの形式でのマシン900であって、その中で、命令のセットが、本明細書において論考される方法論のうちの任意の1つまたは複数を実施することをマシン900に行わせるために実行され得る、マシン900の線図的表現を例解する。具体的には、図9は、コンピュータ・システムの例示的な形式でのマシン900であって、その中で、本明細書において論考される方法論のうちの任意の1つまたは複数を実施することをマシン900に行わせるための命令916(例えば、ソフトウェア、プログラム、アプリケーション、アプレット、アプリ、または、他の実行可能コード)が実行され得る、マシン900の線図的表現を示す。例えば、命令916は、本明細書において説明される方法のうちの任意の1つまたは複数の、任意の1つまたは複数の動作を実行することをマシン900に行わせ得る。別の例として、命令916は、本明細書において説明されるデータ・フローの実現される一部分に対するマシン900をもたらし得る。この手立てでは、命令916は、一般的な、プログラムされないマシンを、本明細書において説明される様式で、説明および例解される機能のうちの任意の1つを履行するように特別に構成される、個別のマシン900(例えば、リモート・コンピューティング・デバイス106、アクセス管理システム110、コンピュート・サービス・マネージャ112、実行プラットフォーム114、アクセス管理システム118、ウェブ・プロキシ120、リモート・コンピューティング・デバイス106)へと変換する。
代替的な実施形態において、マシン900は、スタンドアロン・デバイスとして動作し、または、他のマシンに対してカップリングされ(例えば、ネットワーク化され)得る。ネットワーク化されるデプロイメントにおいて、マシン900は、サーバ・クライアント・ネットワーク環境内のサーバ・マシンもしくはクライアント・マシンの役割において、または、ピア・ツー・ピア(または分散)ネットワーク環境内のピア・マシンとして動作し得る。マシン900は、サーバ・コンピュータ、クライアント・コンピュータ、パーソナル・コンピュータ(PC)、タブレット・コンピュータ、ラップトップ・コンピュータ、ネットブック、スマートフォン、モバイル・デバイス、ネットワーク・ルータ、ネットワーク・スイッチ、ネットワーク・ブリッジ、または、マシン900によりとられることになるアクションを指定する命令916を、逐次的に、もしくは、他の形で実行する能力がある、任意のマシンを含み得、ただしそれらに制限されなくてよい。さらに、単一のマシン900のみが例解されるが、用語「マシン」は、さらには、本明細書において論考される方法論のうちの任意の1つまたは複数を実施するための命令916を、個々に、または共同で実行する、マシン900の集合体を含むと解されるものとする。
マシン900は、バス902によってなどで互いと通信するように構成される、プロセッサ910と、メモリ930と、入出力(I/O)コンポーネント950とを含む。例示的な実施形態において、プロセッサ910(例えば、中央処理ユニット(CPU)、縮小命令セット・コンピューティング(RISC)プロセッサ、複合命令セット・コンピューティング(CISC)プロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、無線周波数集積回路(RFIC)、別のプロセッサ、または、それらの任意の適した組み合わせ)は、例えば、命令916を実行し得る、プロセッサ912と、プロセッサ914とを含み得る。用語「プロセッサ」は、命令916を同時に実行し得る、2つ以上の独立的なプロセッサ(時には「コア」と呼称される)を備え得る、マルチコア・プロセッサ910を含むことを意図される。図9は複数個のプロセッサ910を示すが、マシン900は、単一のコアを伴う単一のプロセッサ、複数個のコアを伴う単一のプロセッサ(例えば、マルチコア・プロセッサ)、単一のコアを伴う複数個のプロセッサ、複数個のコアを伴う複数個のプロセッサ、または、それらの任意の組み合わせを含み得る。
メモリ930は、バス902によってなどでプロセッサ910にすべてがアクセス可能な、メイン・メモリ932と、スタティック・メモリ934と、ストレージ・ユニット936とを含み得る。メイン・メモリ932、スタティック・メモリ934、およびストレージ・ユニット936は、本明細書において説明される方法論または機能のうちの任意の1つまたは複数を具現する命令916を格納する。命令916は、さらには、マシン900によるそれらの命令の実行の間、メイン・メモリ932の中に、スタティック・メモリ934の中に、ストレージ・ユニット936の中に、プロセッサ910のうちの少なくとも1つの中に(例えば、プロセッサのキャッシュ・メモリの中に)、または、それらの任意の適した組み合わせで、全部そろって、または部分的にあり得る。
I/Oコンポーネント950は、入力を受け取る、出力を提供する、出力を生み出す、情報を送信する、情報を交換する、測定値を捕捉する、等々のためのコンポーネントを含む。個別のマシン900内に含まれる特定のI/Oコンポーネント950は、マシンのタイプに依存することになる。例えば、モバイルフォンなどのポータブル・マシンは、おそらくは、タッチ入力デバイス、または、他のそのような入力機構を含むことになり、一方で、ヘッドレス・サーバ・マシンは、おそらくは、そのようなタッチ入力デバイスを含まないことになる。I/Oコンポーネント950は、図9において示されない多くの他のコンポーネントを含み得るということが察知されることになる。I/Oコンポーネント950は、ただ単に、後に続く論考を単純化するために、機能性によってグループ分けされ、グループ分けは、決して制限的ではない。様々な例示的な実施形態において、I/Oコンポーネント950は、出力コンポーネント952と、入力コンポーネント954とを含み得る。出力コンポーネント952は、視覚的コンポーネント(例えば、プラズマ・ディスプレイ・パネル(PDP)、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プロジェクタ、または陰極線管(CRT)などのディスプレイ)、音響的コンポーネント(例えば、スピーカ)、他の信号生成器、その他諸々を含み得る。入力コンポーネント954は、英数字入力コンポーネント(例えば、キーボード、英数字入力を受け取るように構成されるタッチ・スクリーン、フォト・オプティカル・キーボード、または、他の英数字入力コンポーネント)、ポイント・ベースの入力コンポーネント(例えば、マウス、タッチパッド、トラックボール、ジョイスティック、モーション・センサ、または、別のポインティング機器)、触覚入力コンポーネント(例えば、物理的ボタン、タッチもしくはタッチ・ジェスチャの場所および/もしくは力を提供するタッチ・スクリーン、または、他の触覚入力コンポーネント)、オーディオ入力コンポーネント(例えば、マイクロホン)、および類するものを含み得る。
通信が、多種多様の技術を使用して実現され得る。I/Oコンポーネント950は、それぞれ、カップリング982およびカップリング972によって、ネットワーク980またはデバイス970にマシン900をカップリングするように動作可能な通信コンポーネント964を含み得る。例えば、通信コンポーネント964は、ネットワーク980とインターフェイス接続するための、ネットワーク・インターフェイス・コンポーネント、または、別の適したデバイスを含み得る。さらなる例において、通信コンポーネント964は、他のモダリティによる通信を提供するための、有線通信コンポーネント、ワイヤレス通信コンポーネント、セルラー通信コンポーネント、および、他の通信コンポーネントを含み得る。デバイス970は、別のマシン、または、多種多様の周辺デバイスの任意のもの(例えば、ユニバーサル・シリアル・バス(USB)によってカップリングされる周辺デバイス)であり得る。例えば、上記で触れられたように、マシン900は、リモート・コンピューティング・デバイス106、アクセス管理システム110、コンピュート・サービス・マネージャ112、実行プラットフォーム114、アクセス管理システム118、ウェブ・プロキシ120のうちの任意の1つに対応し得、デバイス970は、これらのシステムおよびデバイスのうちの任意の他のものを含み得る。
様々なメモリ(例えば、930、932、934、および/または、プロセッサ910のメモリ、および/または、ストレージ・ユニット936)は、本明細書において説明される方法論もしくは機能のうちの任意の1つもしくは複数を具現する、または、それらの任意の1つもしくは複数により利用される、命令916およびデータ構造(例えば、ソフトウェア)の1つまたは複数のセットを格納し得る。これらの命令916は、プロセッサ910により実行されるときに、開示される実施形態を実現するための様々な動作を起こす。
本明細書において使用される際に、用語「マシン・ストレージ媒体」、「デバイス・ストレージ媒体」、および「コンピュータ・ストレージ媒体」は、同じものを意味し、本開示において互換的に使用され得る。それらの用語は、実行可能命令および/またはデータを格納する、単一または複数個のストレージ・デバイスおよび/または媒体(例えば、集中もしくは分散データベース、ならびに/または、関連付けられるキャッシュおよびサーバ)を指す。それらの用語は、よって、プロセッサの内部または外部のメモリを含む、ソリッド・ステート・メモリ、ならびに、光学および磁気媒体を含むと解され、ただし、それらに制限されないものとする。マシン・ストレージ媒体、コンピュータ・ストレージ媒体、および/またはデバイス・ストレージ媒体の具体的な例は、半導体メモリ・デバイス、例えば、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、およびフラッシュ・メモリ・デバイス;内部ハード・ディスクおよびリムーバブル・ディスクなどの磁気ディスク;磁気光学ディスク;ならびに、CD-ROMおよびDVD-ROMディスクを例として含む、不揮発性メモリを含む。用語「マシン・ストレージ媒体」、「コンピュータ・ストレージ媒体」、および「デバイス・ストレージ媒体」は、具体的には、キャリア波、変調されるデータ信号、および、他のそのような媒体を除外し、それらのうちの少なくとも一部は、下記で論考される用語「信号媒体」のもとに包含される。
様々な例示的な実施形態において、ネットワーク980の1つまたは複数の一部分は、アドホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネット、インターネットの一部分、公衆交換電話ネットワーク(PSTN)の一部分、基本電話サービス(POTS:plain old telephone service)ネットワーク、セルラー電話ネットワーク、ワイヤレス・ネットワーク、Wi-Fi(R)ネットワーク、別のタイプのネットワーク、または、2つ以上のそのようなネットワークの組み合わせであり得る。例えば、ネットワーク980、または、ネットワーク980の一部分は、ワイヤレスまたはセルラー・ネットワークを含み得、カップリング982は、コード分割多重アクセス(CDMA)接続、モバイル通信用グローバル・システム(GSM)接続、または、別のタイプのセルラーもしくはワイヤレス・カップリングであり得る。この例において、カップリング982は、シングル・キャリア無線伝送技術(1xRTT)、エボリューション・データ・オプティマイズド(EVDO)技術、汎用パケット無線サービス(GPRS)技術、GSM進化型高速データ・レート(EDGE)技術、3G、第4世代ワイヤレス(4G)ネットワーク、ユニバーサル移動体通信システム(UMTS)、高速パケット・アクセス(HSPA)を含む第3世代パートナーシップ・プロジェクト(3GPP)、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(WiMAX:Worldwide Interoperability for Microwave Access)、ロング・ターム・エボリューション(LTE)標準、様々な標準化団体により定義される他のもの、他のロング・レンジ・プロトコル、または、他のデータ転送技術などの、種々のタイプのデータ転送技術の任意のものを実現し得る。
命令916は、ネットワーク・インターフェイス・デバイス(例えば、通信コンポーネント964内に含まれるネットワーク・インターフェイス・コンポーネント)による伝送媒体を使用して、および、いくつかのよく知られている転送プロトコルのうちの任意の1つ(例えば、ハイパーテキスト転送プロトコル(HTTP))を利用して、ネットワーク980を越えて送信され、または受け取られ得る。同様に、命令916は、デバイス970へのカップリング972(例えば、ピア・ツー・ピア・カップリング)による伝送媒体を使用して、送信され、または受け取られ得る。用語「伝送媒体」および「信号媒体」は、同じものを意味し、本開示において互換的に使用され得る。用語「伝送媒体」および「信号媒体」は、マシン900による実行のために命令916を格納、エンコード、または搬送する能力がある任意の無形媒体を含み、そのようなソフトウェアの通信を手助けするための、デジタルもしくはアナログ通信信号、または、他の無形媒体を含むと解されるものとする。ゆえに、用語「伝送媒体」および「信号媒体」は、変調されるデータ信号、キャリア波、その他諸々の任意の形式を含むと解されるものとする。用語「変調されるデータ信号」は、所定の信号であって、その信号において情報をエンコードするような様式で、その信号の特性のうちの1つまたは複数が、セットされ、または変化させられる、信号を意味する。
用語「マシン可読媒体」、「コンピュータ可読媒体」、および「デバイス可読媒体」は、同じものを意味し、本開示において互換的に使用され得る。それらの用語は、マシン・ストレージ媒体および伝送媒体の両方を含むように定義される。かくして、それらの用語は、ストレージ・デバイス/媒体、および、キャリア波/変調されるデータ信号の両方を含む。
本明細書において説明される例示的な方法の様々な動作は、少なくとも部分的に、関連性のある動作を実施するように(例えば、ソフトウェアにより)一時的に構成され、または、永続的に構成される、1つまたは複数のプロセッサにより実施され得る。同様に、本明細書において説明される方法は、少なくとも部分的に、プロセッサで実現され得る。例えば、本明細書において説明される方法の動作のうちの少なくとも一部が、1つまたは複数のプロセッサにより実施され得る。動作のうちのいくらかの実施は、単一のマシンの中に在るのみではなく、さらには、いくつかのマシンにわたってデプロイされる、1つまたは複数のプロセッサの間で分散され得る。一部の例示的な実施形態において、1つまたは複数のプロセッサは、(例えば、住宅環境、オフィス環境、またはサーバ・ファームの中の)単一の場所において配置され得、一方で、他の実施形態において、プロセッサは、いくつかの場所にわたって分散され得る。
本開示の実施形態は、特定の例示的な実施形態を参照して説明されたが、様々な修正および改変が、発明性のある主題の、より広範な範囲から逸脱することなく、これらの実施形態に対して行われ得るということが明白であることになる。よって、本明細書および図面は、制約的な意味よりむしろ、例解的な意味で顧慮されるべきである。本明細書の部分を形成する、付随する図面は、主題が実践され得る特定の実施形態を、制限としてではなく、例解として示す。例解される実施形態は、当業者が、本明細書において開示される教示を実践することを可能にするのに十分に詳細に説明されている。構造的および論理的な代用および改変が、本開示の範囲から逸脱することなく行われ得るように、他の実施形態が、使用され、それらの例解される実施形態から導出され得る。この、発明を実施するための形態は、それゆえに、制限的な意味で解されるべきではなく、様々な実施形態の範囲は、単に、添付される請求項により、そのような請求項が権利付与される均等物の最大限の範囲と併せて定義される。
発明性のある主題のそのような実施形態は、本明細書において、個々に、および/または一括して、用語「発明」により言及され得、そのことは、ただ単に簡便性のために、および、本出願の範囲を任意の単一の発明または発明性のある概念に自発的に制限することを、2つ以上のものが実際に開示される場合に行うことを意図することなく行われる。かくして、特定の実施形態が、本明細書において例解および説明されたが、同じ目的を達成するように計算される任意の配置構成が、示される特定の実施形態に対して代用され得るということが察知されるはずである。本開示は、様々な実施形態の一切の適応形態または変形形態を包含することを意図される。上記の実施形態、および、本明細書において具体的に説明されない他の実施形態の組み合わせが、上記の説明を検討することを基に、当業者に明らかになることになる。
本文書において、用語「a」または「an」は、「少なくとも1つ」または「1つまたは複数」の、任意の他の用例または用法に対して独立的に、1つ、または、2つ以上を含むように、特許文書においてよく見られるように使用される。本文書において、用語「または」は、「AまたはB」が、別段に指示されない限り、「A、ただしBでない」、「B、ただしAでない」、および「AおよびB」を含むように、非排他的な「または」を指すように使用される。添付される特許請求の範囲において、用語「含む」および「それにおいて」が、それぞれの用語「備える」および「その場合において」の平易な英語の相当語句として使用される。さらには、後に続く特許請求の範囲において、用語「含む」および「備える」は、オープン・エンドのものであり、すなわち、請求項内のそのような用語の後に列挙される要素に加えて要素を含む、システム、デバイス、物品、またはプロセスは、やはり、その請求項の範囲の中にあるとみなされる。
後に続く番号付けされた例は、実施形態である。
例1.第1のアカウント内にファースト・パーティ・データを用意することと、第2のアカウント内にセカンド・パーティ・データを用意することと、プロセッサにより、第1の結果を生成するために、ファースト・パーティ・データを使用してセキュア関数を実行することであって、ファースト・パーティ・データへのリンクを作成し、ファースト・パーティ・データ内の識別情報を匿名化することを含む、実行することと、セキュア関数を第2のアカウントと共有することと、第2の結果を生成するために、セカンド・パーティ・データを使用してセキュア関数を実行し、ファースト・パーティ・データにアクセスしないように、第2のアカウントを制約することと、第1および第2の結果によって相互参照テーブルを生成することであって、相互参照テーブルは、第1および第2の結果の匿名化されたマッチを提供する、生成することとを含む、方法。
例2.セキュア関数のコードにアクセスしないように、第2のアカウントを制約することをさらに含む、例1の方法。
例3.セキュア関数の第1の一部分の実行に関係付けられるログから離れるように、第2のアカウントを制約することをさらに含む、例1または2の方法。
例4.マッチがないインスタンスに対して、第2の結果内でダミー・マッチング情報を生成することをさらに含む、例1~3のいずれかの方法。
例5.匿名化されたマッチのサマリ・レポートを生成することをさらに含む、例1~4のいずれかの方法。
例6.マッチの数が最小閾値より下であるときに、マッチの数へのアクセスを制約することをさらに含む、例1~5のいずれかの方法。
例7.ファースト・パーティ・データを用意することは、ロード・ファイルをセキュア・クラウド・ストレージ・ロケーションにアップロードすることと、ロード・ファイルからのデータをエンクレーブ・アカウント内へと格納することと、制御情報に基づいて、ロード・ファイルからのデータに対するアクセス制約をセットすることとを含む、例1~6のいずれかの方法。
例8.クエリ要求を受け取ることと、少なくともファースト・パーティ・データおよび相互参照テーブルに基づいて、クエリ要求の第1の一部分を実行することと、クエリ要求の第1の一部分を実行することに基づいて、暫定テーブルを生成することと、クエリ要求の第2の一部分を実行することに関係付けられる命令を含む、セキュア・クエリ要求を生成することと、セキュア・クエリ要求および暫定テーブルを、第2のアカウントと共有することとをさらに含む、例1~7のいずれかの方法。
例9.第2のアカウントにおいて、セキュア・クエリ要求を実行し、クエリ要求の最終的な結果を生成するために、セキュア・クエリ要求の結果を、暫定テーブルからの情報と結合することをさらに含む、例1~8のいずれかの方法。
例10.マシンの1つまたは複数のプロセッサと、1つまたは複数のプロセッサにより実行されるときに、例方法1から9のいずれか1つを実現する動作を実施することをマシンに行わせる、命令を格納するメモリとを備えるシステム。
例11.マシンにより実行されるときに、例方法1から9のうちのいずれか1つを実現する動作を実施することをマシンに行わせる、命令を具現するマシン可読ストレージ・デバイス。

Claims (24)

  1. ネットワーク・ベースのデータ・システムにおいて第1のアカウント内にファースト・パーティ・データを用意することと、
    前記ネットワーク・ベースのデータ・システムにおいて第2のアカウント内にセカンド・パーティ・データを用意することと、
    プロセッサにより、第1の結果を生成するために、前記ファースト・パーティ・データを使用してセキュア関数を実行することであって、前記ファースト・パーティ・データへのリンクを作成し、前記ファースト・パーティ・データ内の識別情報を匿名化することを含む、実行することと、
    前記セキュア関数を前記第2のアカウントと共有することと、
    第2の結果を生成するために、前記セカンド・パーティ・データを使用して前記セキュア関数を実行し、前記ファースト・パーティ・データにアクセスしないように、前記第2のアカウントを制約することと、
    マッチがないインスタンスに対して、前記第2の結果内でダミー・マッチング情報を生成することと、
    前記第1および第2の結果によって相互参照テーブルを生成することであって、前記相互参照テーブルは、前記第1および第2の結果の匿名化されたマッチを提供し、前記ファースト・パーティ・データ及び前記セカンド・パーティ・データの重複分析を実施するために前記相互参照テーブルが前記ネットワーク・ベースのデータ・システムによってアクセス可能である、生成することと
    を含む、方法。
  2. 前記セキュア関数のコードにアクセスしないように、前記第2のアカウントを制約すること
    をさらに含む、請求項1に記載の方法。
  3. 前記セキュア関数の第1の一部分の実行に関係付けられるログを閲覧しないように、前記第2のアカウントを制約すること
    をさらに含む、請求項2に記載の方法。
  4. 前記匿名化されたマッチのサマリ・レポートを生成すること
    をさらに含む、請求項1に記載の方法。
  5. 匿名化されたマッチの数が最小閾値より下であるときに、匿名化されたマッチの前記数へのアクセスを制約すること
    をさらに含む、請求項4に記載の方法。
  6. 前記ファースト・パーティ・データを用意することは、
    ロード・ファイルをセキュア・クラウド・ストレージ・ロケーションにアップロードすることと、
    前記ロード・ファイルからのデータをエンクレーブ・アカウント内へと格納することと、
    制御情報に基づいて、前記ロード・ファイルからの前記データに対するアクセス制約をセットすることと
    を含む、請求項1に記載の方法。
  7. クエリ要求を受け取ることと、
    少なくとも前記ファースト・パーティ・データおよび前記相互参照テーブルに基づいて、前記クエリ要求の第1の一部分を実行することと、
    前記クエリ要求の前記第1の一部分を実行することに基づいて、暫定テーブルを生成することと、
    前記クエリ要求の第2の一部分を実行することに関係付けられる命令を含む、セキュア・クエリ要求を生成することと、
    前記セキュア・クエリ要求および前記暫定テーブルを、前記第2のアカウントと共有することと
    をさらに含む、請求項1に記載の方法。
  8. 前記第2のアカウントにおいて、前記セキュア・クエリ要求を実行し、前記クエリ要求の最終的な結果を生成するために、前記セキュア・クエリ要求の結果を、前記暫定テーブルからの情報と結合すること
    をさらに含む、請求項7に記載の方法。
  9. マシンにより実行されるときに、
    ネットワーク・ベースのデータ・システムにおいて第1のアカウント内にファースト・パーティ・データを用意することと、
    前記ネットワーク・ベースのデータ・システムにおいて第2のアカウント内にセカンド・パーティ・データを用意することと、
    第1の結果を生成するために、前記ファースト・パーティ・データを使用してセキュア関数を実行することであって、前記ファースト・パーティ・データへのリンクを作成し、前記ファースト・パーティ・データ内の識別情報を匿名化することを含む、実行することと、
    前記セキュア関数を前記第2のアカウントと共有することと、
    第2の結果を生成するために、前記セカンド・パーティ・データを使用して前記セキュア関数を実行し、前記ファースト・パーティ・データにアクセスしないように、前記第2のアカウントを制約することと、
    マッチがないインスタンスに対して、前記第2の結果内でダミー・マッチング情報を生成することと、
    前記第1および第2の結果によって相互参照テーブルを生成することであって、前記相互参照テーブルは、前記第1および第2の結果の匿名化されたマッチを提供し、前記ファースト・パーティ・データ及び前記セカンド・パーティ・データの重複分析を実施するために前記相互参照テーブルが前記ネットワーク・ベースのデータ・システムによってアクセス可能である、生成することと
    を含む動作を実施することを前記マシンに行わせる、命令を具現するマシン・ストレージ媒体。
  10. 前記セキュア関数のコードにアクセスしないように、前記第2のアカウントを制約すること
    をさらに含む、請求項9に記載のマシン・ストレージ媒体。
  11. 前記セキュア関数の第1の一部分の実行に関係付けられるログを閲覧しないように、前記第2のアカウントを制約すること
    をさらに含む、請求項10に記載のマシン・ストレージ媒体。
  12. 前記匿名化されたマッチのサマリ・レポートを生成すること
    をさらに含む、請求項9に記載のマシン・ストレージ媒体。
  13. 匿名化されたマッチの数が最小閾値より下であるときに、匿名化されたマッチの前記数へのアクセスを制約すること
    をさらに含む、請求項12に記載のマシン・ストレージ媒体。
  14. 前記ファースト・パーティ・データを用意することは、
    ロード・ファイルをセキュア・クラウド・ストレージ・ロケーションにアップロードすることと、
    前記ロード・ファイルからのデータをエンクレーブ・アカウント内へと格納することと、
    制御情報に基づいて、前記ロード・ファイルからの前記データに対するアクセス制約をセットすることと
    を含む、請求項9に記載のマシン・ストレージ媒体。
  15. クエリ要求を受け取ることと、
    少なくとも前記ファースト・パーティ・データおよび前記相互参照テーブルに基づいて、前記クエリ要求の第1の一部分を実行することと、
    前記クエリ要求の前記第1の一部分を実行することに基づいて、暫定テーブルを生成することと、
    前記クエリ要求の第2の一部分を実行することに関係付けられる命令を含む、セキュア・クエリ要求を生成することと、
    前記セキュア・クエリ要求および前記暫定テーブルを、前記第2のアカウントと共有することと
    をさらに含む、請求項9に記載のマシン・ストレージ媒体。
  16. 前記第2のアカウントにおいて、前記セキュア・クエリ要求を実行し、前記クエリ要求の最終的な結果を生成するために、前記セキュア・クエリ要求の結果を、前記暫定テーブルからの情報と結合すること
    をさらに含む、請求項15に記載のマシン・ストレージ媒体。
  17. マシンの1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサにより実行されるときに、
    ネットワーク・ベースのデータ・システムにおいて第1のアカウント内にファースト・パーティ・データを用意することと、
    前記ネットワーク・ベースのデータ・システムにおいて第2のアカウント内にセカンド・パーティ・データを用意することと、
    第1の結果を生成するために、前記ファースト・パーティ・データを使用してセキュア関数を実行することであって、前記ファースト・パーティ・データへのリンクを作成し、前記ファースト・パーティ・データ内の識別情報を匿名化することを含む、実行することと、
    前記セキュア関数を前記第2のアカウントと共有することと、
    第2の結果を生成するために、前記セカンド・パーティ・データを使用して前記セキュア関数を実行し、前記ファースト・パーティ・データにアクセスしないように、前記第2のアカウントを制約することと、
    マッチがないインスタンスに対して、前記第2の結果内でダミー・マッチング情報を生成することと、
    前記第1および第2の結果によって相互参照テーブルを生成することであって、前記相互参照テーブルは、前記第1および第2の結果の匿名化されたマッチを提供し、前記ファースト・パーティ・データ及び前記セカンド・パーティ・データの重複分析を実施するために前記相互参照テーブルが前記ネットワーク・ベースのデータ・システムによってアクセス可能である、生成することと
    を含む動作を実施することを前記マシンに行わせる、命令を格納するメモリと
    を備える、システム。
  18. 前記動作は、
    前記セキュア関数のコードにアクセスしないように、前記第2のアカウントを制約すること
    をさらに含む、請求項17に記載のシステム。
  19. 前記動作は、
    前記セキュア関数の第1の一部分の実行に関係付けられるログを閲覧しないように、前記第2のアカウントを制約すること
    をさらに含む、請求項18に記載のシステム。
  20. 前記動作は、
    前記匿名化されたマッチのサマリ・レポートを生成すること
    をさらに含む、請求項17に記載のシステム。
  21. 前記動作は、
    匿名化されたマッチの数が最小閾値より下であるときに、匿名化されたマッチの前記数へのアクセスを制約すること
    をさらに含む、請求項20に記載のシステム。
  22. 前記ファースト・パーティ・データを用意することは、
    ロード・ファイルをセキュア・クラウド・ストレージ・ロケーションにアップロードすることと、
    前記ロード・ファイルからのデータをエンクレーブ・アカウント内へと格納することと、
    制御情報に基づいて、前記ロード・ファイルからの前記データに対するアクセス制約をセットすることと
    を含む、請求項17に記載のシステム。
  23. クエリ要求を受け取ることと、
    少なくとも前記ファースト・パーティ・データおよび前記相互参照テーブルに基づいて、前記クエリ要求の第1の一部分を実行することと、
    前記クエリ要求の前記第1の一部分を実行することに基づいて、暫定テーブルを生成することと、
    前記クエリ要求の第2の一部分を実行することに関係付けられる命令を含む、セキュア・クエリ要求を生成することと、
    前記セキュア・クエリ要求および前記暫定テーブルを、前記第2のアカウントと共有することと
    をさらに含む、請求項17に記載のシステム。
  24. 前記第2のアカウントにおいて、前記セキュア・クエリ要求を実行し、前記クエリ要求の最終的な結果を生成するために、前記セキュア・クエリ要求の結果を、前記暫定テーブルからの情報と結合すること
    をさらに含む、請求項23に記載のシステム。
JP2022530689A 2020-07-31 2021-06-30 データ・クリーン・ルーム Active JP7354447B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/944,929 US10970419B1 (en) 2020-07-31 2020-07-31 Data clean room
US16/944,929 2020-07-31
PCT/US2021/039775 WO2022026107A1 (en) 2020-07-31 2021-06-30 Data clean room

Publications (2)

Publication Number Publication Date
JP2023502528A JP2023502528A (ja) 2023-01-24
JP7354447B2 true JP7354447B2 (ja) 2023-10-02

Family

ID=75275429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022530689A Active JP7354447B2 (ja) 2020-07-31 2021-06-30 データ・クリーン・ルーム

Country Status (6)

Country Link
US (4) US10970419B1 (ja)
EP (1) EP4010835A4 (ja)
JP (1) JP7354447B2 (ja)
CN (1) CN114303146A (ja)
DE (1) DE202021004036U1 (ja)
WO (1) WO2022026107A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301464B2 (en) * 2020-01-14 2022-04-12 Videoamp, Inc. Electronic multi-tenant data management system
US10970419B1 (en) 2020-07-31 2021-04-06 Snowflake Inc. Data clean room
US20220342874A1 (en) * 2021-04-23 2022-10-27 Videoamp, Inc. Electronic multi-tenant data management systems and clean rooms
AU2022399453A1 (en) 2021-12-01 2024-05-16 Videoamp, Inc. Symmetric data clean room
US12008135B2 (en) * 2021-12-21 2024-06-11 Commvault Systems, Inc. Controlling information privacy in a shared data storage management system
US20230401200A1 (en) 2022-06-13 2023-12-14 Snowflake Inc. Data clean room using defined access via native applications
CN114817338A (zh) * 2022-06-28 2022-07-29 杭州湖畔网络技术有限公司 数据处理方法、装置、电子设备及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010237811A (ja) 2009-03-30 2010-10-21 Nec Corp 個人情報管理システム及び個人情報管理方法
JP2012017612A (ja) 2010-07-08 2012-01-26 Takenaka Komuten Co Ltd 多層階建築物の柱改修方法
JP2014013458A (ja) 2012-07-03 2014-01-23 Hitachi Systems Ltd サービス提供方法及びサービス提供システム
US20170026343A1 (en) 2015-07-22 2017-01-26 Paypal Inc. Anonymous Account Security Exchange
WO2019054097A1 (ja) 2017-09-14 2019-03-21 グローリー株式会社 ポイント管理システム、管理装置及びポイント管理方法
US20200244626A1 (en) 2019-01-24 2020-07-30 Samsung Electronics Co., Ltd. Electronic device and operating method of the same

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392391B2 (en) * 2001-11-01 2008-06-24 International Business Machines Corporation System and method for secure configuration of sensitive web services
US10936744B1 (en) * 2010-04-21 2021-03-02 Stanley Trepetin Mathematical method for performing homomorphic operations
US9442980B1 (en) 2010-04-21 2016-09-13 Stan Trepetin Mathematical method for performing homomorphic operations
JP5735485B2 (ja) * 2010-08-06 2015-06-17 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 匿名化情報共有装置および匿名化情報共有方法
US11228566B1 (en) 2011-03-08 2022-01-18 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
CN104040543B (zh) * 2012-01-11 2018-01-19 英特尔公司 基于文件库和云的文档公正服务
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9201924B1 (en) 2012-11-26 2015-12-01 Google Inc. Processing partially supported queries
US20140365363A1 (en) * 2013-06-07 2014-12-11 Prairie Cloudware, Inc Secure integrative vault of consumer payment instruments for use in payment processing system and method
US9137127B2 (en) * 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9485244B2 (en) 2015-03-02 2016-11-01 Citrix Systems, Inc. Executing an operation over file repositories located in different authentication domains using a representational state transfer (REST)-compliant client
KR20170011724A (ko) 2015-07-24 2017-02-02 코오롱인더스트리 주식회사 배리어필름 및 그 제조방법
US10783142B2 (en) 2015-10-23 2020-09-22 Oracle International Corporation Efficient data retrieval in staged use of in-memory cursor duration temporary tables
WO2017187207A1 (en) * 2016-04-29 2017-11-02 Privitar Limited Computer-implemented privacy engineering system and method
WO2017205683A1 (en) * 2016-05-25 2017-11-30 Atomite, Inc. System and method of efficient and secure data filtering of non-permitted data
US11625662B2 (en) * 2016-09-22 2023-04-11 Qvinci Software, Llc Methods and apparatus for the manipulating and providing of anonymized data collected from a plurality of sources
US10885032B2 (en) 2016-11-29 2021-01-05 Sap Se Query execution pipelining with shared states for query operators
US10614248B2 (en) * 2017-01-31 2020-04-07 Ca, Inc. Privacy preserving cross-organizational data sharing with anonymization filters
US10769148B1 (en) 2017-09-25 2020-09-08 Amazon Technologies, Inc. Relocating data sharing operations for query processing
US11321330B1 (en) 2018-06-26 2022-05-03 Amazon Technologies, Inc. Combining nested data operations for distributed query processing
US11102214B2 (en) * 2018-08-27 2021-08-24 Amazon Technologies, Inc. Directory access sharing across web services accounts
US11232445B2 (en) * 2018-08-30 2022-01-25 Bank Of America Corporation Intelligent dynamic authentication and event processing system
US11216435B2 (en) 2018-09-24 2022-01-04 Salesforce.Com, Inc. Techniques and architectures for managing privacy information and permissions queries across disparate database tables
US10515106B1 (en) 2018-10-01 2019-12-24 Infosum Limited Systems and methods for processing a database query
US20190147451A1 (en) * 2018-11-27 2019-05-16 BehavioSec Inc Collaborate Fraud Prevention
US11106673B2 (en) 2018-12-04 2021-08-31 Sap Se Query plan sharing
US20200258605A1 (en) 2019-02-07 2020-08-13 Elaine Blechman Electronic health records management using wireless communication
US11188670B2 (en) 2019-03-28 2021-11-30 Snowflake Inc. Secure data joins in a multiple tenant database system
US11194805B2 (en) 2019-06-10 2021-12-07 International Business Machines Corporation Optimization of database execution planning
US20210026986A1 (en) * 2019-07-25 2021-01-28 Pearson Education, Inc. Multi-country data pipeline that protects personally identifying information
US11301464B2 (en) 2020-01-14 2022-04-12 Videoamp, Inc. Electronic multi-tenant data management system
US11687670B2 (en) * 2020-07-08 2023-06-27 Sap Se Correlating experience data and operations data without compromising anonymity
US10970419B1 (en) 2020-07-31 2021-04-06 Snowflake Inc. Data clean room

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010237811A (ja) 2009-03-30 2010-10-21 Nec Corp 個人情報管理システム及び個人情報管理方法
JP2012017612A (ja) 2010-07-08 2012-01-26 Takenaka Komuten Co Ltd 多層階建築物の柱改修方法
JP2014013458A (ja) 2012-07-03 2014-01-23 Hitachi Systems Ltd サービス提供方法及びサービス提供システム
US20170026343A1 (en) 2015-07-22 2017-01-26 Paypal Inc. Anonymous Account Security Exchange
WO2019054097A1 (ja) 2017-09-14 2019-03-21 グローリー株式会社 ポイント管理システム、管理装置及びポイント管理方法
US20200244626A1 (en) 2019-01-24 2020-07-30 Samsung Electronics Co., Ltd. Electronic device and operating method of the same

Also Published As

Publication number Publication date
CN114303146A (zh) 2022-04-08
DE202021004036U1 (de) 2022-06-27
US20220035949A1 (en) 2022-02-03
JP2023502528A (ja) 2023-01-24
US20240020416A1 (en) 2024-01-18
EP4010835A1 (en) 2022-06-15
WO2022026107A1 (en) 2022-02-03
EP4010835A4 (en) 2023-08-09
US12013969B2 (en) 2024-06-18
US11809600B2 (en) 2023-11-07
US10970419B1 (en) 2021-04-06
US20230169212A1 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
JP7354447B2 (ja) データ・クリーン・ルーム
US11468195B1 (en) Multiple cloud and region data clean rooms
US11347886B1 (en) Secure multi-party encrypted identifier data sharing
US20230169198A1 (en) Dynamic data restriction in a database clean room
US12001581B2 (en) Query processing in a secure data clean room
US11803432B1 (en) Data clean rooms using defined access
US20230169202A1 (en) Cloud data sharing for applications
US20230344796A1 (en) Secure message exchange between deployments
US12020128B2 (en) Multi-party machine learning using a database cleanroom
WO2023244972A1 (en) Unstructured file replication staged between database deployments
US11734451B1 (en) Secure continuous compliance enforcement on a data exchange system
US20240143548A1 (en) Continuous ingestion of custom file formats
US11973748B1 (en) Token-based secure database query result sharing
US11989173B2 (en) Query validation and processing in data clean rooms

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220525

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230516

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230920

R150 Certificate of patent or registration of utility model

Ref document number: 7354447

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150