IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ライブランプ インコーポレーテッドの特許一覧

特表2024-546451プライバシ保全フェデレーテッド・クエリ・エンジン
<>
  • 特表-プライバシ保全フェデレーテッド・クエリ・エンジン 図1
  • 特表-プライバシ保全フェデレーテッド・クエリ・エンジン 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-24
(54)【発明の名称】プライバシ保全フェデレーテッド・クエリ・エンジン
(51)【国際特許分類】
   G06F 16/245 20190101AFI20241217BHJP
   G06F 21/62 20130101ALI20241217BHJP
【FI】
G06F16/245
G06F21/62 345
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024529221
(86)(22)【出願日】2022-11-15
(85)【翻訳文提出日】2024-07-05
(86)【国際出願番号】 US2022049973
(87)【国際公開番号】W WO2023091418
(87)【国際公開日】2023-05-25
(31)【優先権主張番号】63/279,867
(32)【優先日】2021-11-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】519161872
【氏名又は名称】ライブランプ インコーポレーテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ンゴ、チー、ラン
(72)【発明者】
【氏名】マコウスキー、マチェイ
(72)【発明者】
【氏名】ガブリヤンチク、ピョートル
(72)【発明者】
【氏名】ギルモア、デイビッド
(72)【発明者】
【氏名】ヘイルズ、アイザック
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175HA04
(57)【要約】
複数のデータセットのためのフェデレーテッド・クエリ・エンジン・システム及び方法は、プライバシ保全特徴で強化される。これは、例えば、アクセスされるデータセットのうちの1つ又は複数からのデータの移動を制限することができる。これは、プレーンテキスト列値の比較を要求しないファジー・テーブル結合を可能にする暗号長期鍵を使用することができる。クエリ計画は、データセットのそれぞれを収納するストレージ・システムの特定のインフラストラクチャを活用することができる。クエリ・エンジンは、標準SQLクエリを受け取り、複数のデータセットにわたってクエリを実施するための論理計画にクエリを翻訳し、複数のデータセットの実装アーキテクチャに固有の物理計画に論理計画をコンバートし、各データセットを収納するデータ・ウェアハウスの近くにあるSQLワーカにこれらの物理計画を送る。
【特許請求の範囲】
【請求項1】
フェデレーテッド・クエリ方法であって、
クエリ文、複数のデータセットのそれぞれのためのスキーマ、及びクエリ・エンジンにおける少なくとも1つのプライバシ・ポリシを受け取ることと、
前記クエリ文を構造化形式にパースすることと、
前記プライバシ・ポリシに基づいて、論理クエリ計画を生み出すために前記プライバシ・ポリシにおけるプライバシ要件のセットに準拠するように前記クエリ文の前記構造化形式の構造変換を実施することと、
前記複数のデータセットのそれぞれのための前記スキーマ及び前記論理計画に基づいて、前記複数のデータセットのそれぞれにおけるクエリのための少なくとも1つの物理計画を生成することと、
前記複数のデータセットのうちの1つをそれぞれが収納した複数のデータ・ウェアハウスのうちの1つの近くにある、複数のワーカ・ノードのそれぞれにおいて、翻訳済みクエリを生み出すために前記複数のワーカ・ノードのそれぞれが近くにある前記データ・ウェアハウスにおける前記データセットに適したクエリ方言に前記物理計画を変換することと
を行うステップを含む、フェデレーテッド・クエリ方法。
【請求項2】
前記クエリ文を構造化形式にパースするステップが、前記クエリ文を木構造にパースするステップを含む、請求項1に記載のフェデレーテッド・クエリ方法。
【請求項3】
前記クエリ文を木構造にパースするステップが、前記クエリ文を抽象構文木にパースするステップを含む、請求項2に記載のフェデレーテッド・クエリ方法。
【請求項4】
前記複数のデータセットのそれぞれのためのロケーションを受け取るステップをさらに含む、請求項1に記載のフェデレーテッド・クエリ方法。
【請求項5】
前記少なくとも1つの物理計画が、複数の物理計画を含む、請求項1に記載のフェデレーテッド・クエリ方法。
【請求項6】
前記複数の物理計画のそれぞれが、前記複数のデータセットのうちの1つに適用される、請求項5に記載のフェデレーテッド・クエリ方法。
【請求項7】
前記複数の物理計画から最善の物理計画を選ぶステップをさらに含む、請求項5に記載のフェデレーテッド・クエリ方法。
【請求項8】
前記複数のデータセットのうちの1つに対して前記翻訳済みクエリのそれぞれを実行するステップをさらに含む、請求項1に記載のフェデレーテッド・クエリ方法。
【請求項9】
前記複数のデータセットのそれぞれに対して前記翻訳済みクエリのそれぞれを実行した結果をフェッチして前記クエリ・エンジンに返すステップをさらに含む、請求項8に記載のフェデレーテッド・クエリ方法。
【請求項10】
前記クエリ・エンジンが、コーディネータを備え、前記複数のデータセットのそれぞれに対して前記翻訳済みクエリのそれぞれを実行した結果をフェッチして前記コーディネータに返すステップをさらに含む、請求項9に記載のフェデレーテッド・クエリ方法。
【請求項11】
前記複数のデータセットのそれぞれに対して前記翻訳済みクエリのそれぞれを実行した結果を前記コーディネータにおいて集約するステップをさらに含む、請求項10に記載のフェデレーテッド・クエリ方法。
【請求項12】
追加のプライバシ制約のセットを前記集約された結果に適用するステップをさらに含む、請求項11に記載のフェデレーテッド・クエリ方法。
【請求項13】
前記プライバシ・ポリシが、前記複数のデータセットの中の第1のデータセットに対する第1のプライバシ制限、及び前記複数のデータセットの中の第2のデータセットに対する第2のプライバシ制限を含み、前記第1のプライバシ制限及び第2のプライバシ制限が同じではない、請求項1に記載のフェデレーテッド・クエリ方法。
【請求項14】
前記プライバシ・ポリシが、クエリ閾値を含む、請求項13に記載のフェデレーテッド・クエリ方法。
【請求項15】
前記プライバシ・ポリシが、前記複数のデータセットのうちの少なくとも1つにおける前記データの一部分のデータ移動に対する制限を含む、請求項13に記載のフェデレーテッド・クエリ方法。
【請求項16】
前記複数のデータセットのうちの少なくとも1つにおける前記データの前記一部分が、前記複数のデータセットのうちの少なくとも1つにおける列である、請求項15に記載のフェデレーテッド・クエリ方法。
【請求項17】
前記プライバシ・ポリシが、前記複数のデータセットのうちの少なくとも2つの間の結合への暗号長期鍵の適用を含む、請求項13に記載のフェデレーテッド・クエリ方法。
【請求項18】
前記プライバシ・ポリシが、前記複数のデータセットのうちの少なくとも2つの結合の間のデータ・ウェアハウス・ネイティブ・プライバシ強化特徴の適用を含む、請求項13に記載のフェデレーテッド・クエリ方法。
【請求項19】
論理クエリ計画を生み出すために前記プライバシ・ポリシにおけるプライバシ要件のセットに準拠するように前記クエリ文の前記構造化形式の構造変換を実施するステップが、閾値を下回る前記複数のデータセット内の行を抑制するステップを含む、請求項1に記載のフェデレーテッド・クエリ方法。
【請求項20】
前記閾値が、前記複数のデータセットにおける前記データセットのうちの少なくとも2つの間で変動する、請求項19に記載のフェデレーテッド・クエリ方法。
【発明の詳細な説明】
【背景技術】
【0001】
現代の企業は、異なるインフラストラクチャ及び/又はクラウド・ストレージ環境でホストされるデータ・ウェアハウスに記憶された大規模データセットを有していることが多い。それでも企業は、これらのデータセット上で互いに共同作業したいと思うことが多い。
【0002】
この問題を解決するための1つの最近のアプローチは、フェデレーテッド・クエリ・エンジンである。典型的なフェデラル・クエリ・エンジンでは、ローカル・インフラストラクチャで見つかるかクラウド・ストレージで見つかるかに関わらず、データベース及びデータ・ウェアハウスなどの互いに遠く離れた複数のソースから、データが抽出されることになる。これらのソース全体からデータをフェッチし、異なるデータセットからのテーブルを結合する、標準問合せ言語(SQL:Standard query language)スクリプトが書かれる。市販製品の実例は、AWSクラウド環境で使用されるAmazon Redshift及びAthena、並びにGoogleクラウド環境で使用されるGoogle BigQueryを含む。これらのシステムは、異なるデータ・ソースにわたってデータがいつもの所に残っているので、クエリを実行するために共有フォーマットのデータを集めるのに必要な、長くて冗長な抽出、変換、ロード(ETL)プロセスを回避する。これらの異種のソースにわたるデータを引き抜く単一のSQLのようなクエリが作られることが可能である。フェデレーテッド・クエリ・システムが必要な翻訳を実施するので、ユーザは、データセット毎に固有のクエリ又はデータ言語を知っている必要はなく、自動化されたコンバージョンによって、誰でも、データ・ソースの全てにわたってクエリを実施することができる。Trino、Spark、及びDremioは、フェデレーテッド・クエリ・サポートを提供するプラットフォームの実例である。
【0003】
フェデラル・クエリ・システムの限界は、アクセスされる複数のデータセットにわたってプライバシを独立して制御する手段をフェデラル・クエリ・システムが含んでいないことである。それでも、個々のデータセットは、異なるプライバシ要件を有することがある。これらのプライバシ要件は、データを保管する組織によって、データ自体の性質によって、又は、データが収集及び/若しくは記憶される管轄区域の法律及び規則によって、決定されることがある。したがって、フェデレーテッド・クエリ・システムの一部としてプライバシ保護を提供するためのシステムが望まれる。
【0004】
本背景技術セクションで言及された参照は、本発明に対する従来技術であるとは認められない。
【発明の概要】
【0005】
本発明は、プライバシ保全特徴を伴うフェデレーテッド・クエリ・エンジン・システム及び方法を対象とする。特定の実施例では、フェデレーテッド・クエリ・エンジンは、アクセスされるデータセットのうちの1つ又は複数からのデータの移動を制限することができる。例えば、特定のデータセットの所有者は、データセット内のデータの特定の列が独自のネットワークを決して離れてはならないことを指定することができる。また、特定の実施例では、プライバシ強化技術が、プライバシ保全テーブルの結合を可能にするためにフェデレーテッド・クエリ・エンジンによって開発されたクエリ計画に挿入されてもよい。例えば、これは、ブルーム・フィルタ・ベースの暗号アプローチである暗号長期鍵を使用し、これにより、プレーンテキスト列値の比較を要求しないファジー・テーブル結合を可能にすることによって実施されてもよい。また、特定の実施例では、フェデレーテッド・クエリ・エンジンによって開発されたクエリ計画は、データセットのそれぞれを収納したストレージ・システムの特定のインフラストラクチャを活用してもよい。例えば、Snowflakeアカウントに記憶された複数のデータセットがある場合、計画は、これがSnowflakeデータセット環境と非Snowflakeデータセット環境との間の結合のための計画の一部にならないことを認識しつつ、セキュアなデータ共有を可能にするために、ネイティブなSnowflake能力を利用することができる。
【0006】
基礎をなすデータセットのそれぞれの(フェデレーションのための)データ・ロケーション及びプライバシ制約の両方を認識することによって、本発明の実施例によるフェデレーテッド・クエリ・エンジン・システムは、最適なプライバシ準拠実行計画を書き換えること/生成することができる。本発明のこれら及び他の特徴、目的、及び利点は、以下で説明されるような図面と共に、好ましい実施例の以下の詳細な説明及び添付の特許請求の範囲の検討から、より良く理解されるようになるであろう。
【図面の簡単な説明】
【0007】
図1】本発明の実施例によるシステムのアーキテクチャ図である。
図2】本発明の実施例によるフェデレーテッドSQLコーディネータのためのプロセス・フロー図である。
【発明を実施するための形態】
【0008】
本発明がさらに詳細に説明される前に、本発明は、説明される特定の実施例に限定されないこと、及び、特定の実施例を説明する際に使用される用語は、これらの特定の実施例を説明するためだけのものであり、本発明の範囲が特許請求の範囲によってのみ限定されることになるので、限定であることを意図するものではないことを理解されたい。
【0009】
図2を参照すると、プライバシ保全フェデレーテッドSQLエンジンとしての本発明の実施例の使用のためのフローの概観は、以下のように機能することができる。SQLテキスト・ステップ10では、エンジンは、(a)SQLで書かれ得るクエリ文、(b)問い合わされたデータセットに関連付けられたプライバシ・ポリシのセット、及び(c)データセット・ロケーションを伴うデータセット/テーブル毎のスキーマ(つまり、基礎をなすデータ・ウェアハウスとの関連付け)を、エンジンの入力として取る。このステップは、Spark Catalystなどの、SQLパーサ/オプティマイザ11を使用して実施されてもよい。プライベートSQLエンジン13自体の中で、次のステップは、SQL ASTステップ12において、エンジンがSQL文を構造化形式にパースすることである。抽象構文木(AST:Abstract syntax tree)は、機械可読フォーマットを具体的な構文コードに提供する構造化木データ構造である。具体的には、SQLの場合、ASTは、結合、フィルタ、射影等のノードで構成された木の形をしていることがある。入力されたプライバシ・ポリシ及びテーブル・ロケーションに基づいて、エンジン13は、次いで、システムに課されたプライバシ制約を満たすために、クエリのASTの構造変換(つまり、書き換え)を実施する。これは、別個のデータセットのそれぞれにクエリのための「論理」計画14を作り出す。この論理計画14から、エンジン13は、次いで、プライバシ制約及びデータセット/テーブル・ロケーションの両方を考慮した物理計画16である、最適化されたクエリ実行を生成する。最上位の物理計画16は、(テーブルが、入力されたクエリの一部である)基礎をなすデータセットのそれぞれに対して1つの、複数の別個の物理計画16から構成されることが可能である。
【0010】
どのように行われることになるかについてのアルゴリズムレベルの詳細ではなく、行われなければならないことを定義する論理計画14を、SQLクエリ・エンジン13が、入力されたクエリを使用して定義することがわかる。この論理計画14を使用して、クエリを実行するために使用されることになる固有のアルゴリズムを定義する、1つ又は複数の物理計画16が作り出される。オプティマイザ11は、次いで、最善の物理計画16を選ぼうとし、最終的に、この計画に従ってクエリが実行される。
【0011】
物理計画16が作り出されると、物理計画16は、実行グラフ18においてデータ・ウェアハウスのSQLワーカのそれぞれに送り出される。このプロセスでは、個々の物理計画は、各データセットに適切な固有のデータ・ウェアハウス21のSQL(又は非SQL)方言に変換される。SQLワーカは、次いで、基礎をなすデータセットに対して翻訳済みクエリを実行し、結果をフェッチし、ジョブ・ステップ20においてコーディネータに結果を送り返す。コーディネータは、複数の結果からの最終的な集約を実施し、集約された結果に対して追加のプライバシ制約を潜在的に適用し、SQLエンジン13から結果を元に返す。
【0012】
ここから図1を参照すると、本発明の実施例によるシステムの構造が説明され得る。SQLエンジン13は、SQLコーディネータ20、クエリ書換えSQLプランナ22、及びSQLアグリゲータ24を含む。SQLプランナ22は、SQLパーサ及びSQLクエリ・オプティマイザ・ライブラリを利用するが、カスタム書換え/変換及び最適化を実施して、データ・ウェアハウス21内のデータセットのそれぞれのための複数の物理計画16を生成する。SQLアグリゲータ24は、オンザフライ集約を実施し、カスタム・プライバシ制限をクエリ結果に適用する。SQLアグリゲータは、標準的なローカルSQLデータベース又はデータ・ウェアハウスを使用する。SQLワーカ26は、各データセットの近くに置かれる。SQLワーカ26は、データ・ウェアハウス方言へのクエリASTの翻訳を実施し、既存のデータ・ウェアハウスが物理的なSQL(又は非SQL)クエリを実行することを当てにする。
【0013】
SQLエンジン13は、基礎をなすクエリ毎の実際の実行のために、既存のクラウド・データ・ウェアハウス(BigQuery、Snowflake、AWS Athena等)を当てにする。SQLエンジン13の制御プレーンは、サービス・プロバイダのクラウド(例えば、Googleクラウド)内に展開されてもよく、その一方で、SQLワーカ26は、顧客のデータ・ウェアハウス/クラウド21の近くに展開されてもよい。
【0014】
システムの実例の動作が、ここから説明され得る。クエリが2つのデータセットに対して実行されると仮定し、1つのデータセットは、スニーカー製造業者からの顧客関係管理(CRM)データを表し、その一方で、他のデータセットは、サプライヤのブランド及び他のブランドのスニーカーを売る小売業者からのトランザクションを表す。クエリは、小売業者からサプライヤのスニーカー・ブランドをどれだけの顧客が買ったか、及び、誰がサプライヤのオンラインVIP顧客プログラムのメンバでもあるかを知ろうとする。この実例では、小売業者データセットは、Snowflakeクラウド環境に収納され、その一方で、小売業者のデータセットは、Google BigQuery内にある。したがって、これらのロケーションのそれぞれにおけるSQLワーカ26は、これらの2つのデータセットのそれぞれにおけるSQL動作のために、クエリをローカル方言に翻訳することになる。必要なデータは、この実例では、STORE SALESファクト・テーブルを含み、これを項目及び日付情報と組み合わせる。
【0015】
システムのプライバシ構成要素は、いくつかの方式で実装されてもよい。クエリがサプライヤによって作られると仮定する。小売業者は、トランザクション・データへのサプライヤ・アクセスを承諾していてもよいが、プライバシを保護するためにプライベートな顧客データを明らかにしたいとは思わない。したがって、小売業者は、サプライヤがその全データセットを簡単にダウンロードできるようにしたいとは思わない。したがって、この実例では、小売業者は、クエリ閾値100をセットし、クエリ閾値100は、全てのクエリが集約クエリでなければならないことを意味し、顧客が100人未満のグループが返されることはない。
【0016】
閾値を下回る行の抑止は、各集約グループ内の値に寄与した全く異なる顧客のカウントを含めるように論理クエリ計画を修正する、SQLプランナのクエリ書換えモジュール22によって達成される。その結果として、カウントは、ソース・データ・ウェアハウス21において効率的に計算される。これらのカウントは、次いで、結果の集約された行毎に含まれ、セットされた閾値(この実例では100)を満たさない行は、ユーザに返される結果からアグリゲータ24によって除外される。フェデレーションがある場合、このアプローチは、それぞれが、独立してセットされたクエリ閾値を有する、複数のデータセットからのデータの組合せを可能にする。顧客のカウントは、構成するデータセット毎に独立して計算され、次いで、データが組み合わされた後、全てのポリシがアグリゲータによって施行される。
【0017】
サプライヤ独自のデータセットからのデータを小売業者データセットと結合するために、顧客データをマッチングするいくつかの手段が要求される。1つの実例では、顧客識別子customer_idが、使用されてもよい。いくつかのケースでは、小売業者及びそのサプライヤは、eメールのような、顧客の共通識別子を有することができる。他のケースでは、小売業者及びそのサプライヤは、LiveRampのRampID製品などの、サード・パーティのアイデンティティ解決製品を使用して識別子を添付してもよい。
【0018】
見識及び測定に加えて、別のコア・サプライヤ・ユース・ケースは、この種類のデータを使用して、新しい宣伝キャンペーンを作り出すことである。サプライヤが、特定の月に別のブランドからの靴を買ったVIPクラブ・メンバのためのキャンペーンを実施したいと思っていると仮定する。クエリ閾値により、サプライヤは、誰がこのグループ内の固有の顧客であるかわからない。しかし、サード・パーティ・システムを使用してマッチさせることによって、この種類のカスタム顧客セットの直接販売が可能にされてもよい。
【0019】
本明細書で説明されるシステム及び方法は、様々な実施例において、ハードウェアとソフトウェアとの任意の組合せによって実装されてもよい。例えば、1つの実施例では、システム及び方法は、コンピュータ・システム又はコンピュータ・システムの集団によって実装されてもよく、コンピュータ・システムのそれぞれは、プロセッサに連結されたコンピュータ可読ストレージ媒体に記憶されたプログラム命令を実行する1つ又は複数のプロセッサを含む。プログラム命令は、本明細書で説明される機能を実施することができる。図に示され本明細書で説明されるような様々なシステム及びディスプレイは、実例の実装形態を表す。いずれかの方法の順序は変更されてもよく、様々な要素が、追加、修正、又は省略されてもよい。
【0020】
本明細書で説明されるようなコンピューティング・システム又はコンピューティング・デバイスは、本発明の様々な実装形態の一部を形成するような、クラウド・コンピューティング・システム又は非クラウド・コンピューティング・システムのハードウェア部分を実施することができる。コンピュータ・システムは、コモディティ・サーバ、パーソナル・コンピュータ・システム、デスクトップ・コンピュータ、ラップトップ若しくはノートブック・コンピュータ、メインフレーム・コンピュータ・システム、ハンドヘルド・コンピュータ、ワークステーション、ネットワーク・コンピュータ、コンシューマ・デバイス、アプリケーション・サーバ、ストレージ・デバイス、電話、携帯電話、又は、一般に、任意のタイプのコンピューティング・ノード、計算ノード、計算デバイス、及び/若しくはコンピューティング・デバイスを含むがこれらに限定されない、デバイスの様々なタイプのいずれかでもよい。コンピューティング・システムは、入出力(I/O)インターフェースを介してシステム・メモリに連結された1つ又は複数のプロセッサを含む(プロセッサのいずれかが複数の処理コアを含み、処理コアはシングル・スレッド化されてもマルチ・スレッド化されてもよい)。コンピュータ・システムは、I/Oインターフェースに連結されたネットワーク・インターフェースをさらに含むことができる。
【0021】
様々な実施例では、コンピュータ・システムは、1つのプロセッサを含むシングル・プロセッサ・システム、又は複数のプロセッサを含むマルチ・プロセッサ・システムでもよい。プロセッサは、コンピューティング命令を実行する能力がある任意の適切なプロセッサでもよい。例えば、様々な実施例では、プロセッサは、様々なインストラクション・セット・アーキテクチャのいずれかを実装する汎用又は組込みプロセッサでもよい。マルチ・プロセッサ・システムでは、プロセッサのそれぞれは、一般に、しかし必ずしもそうではないが、同じ命令セットを実装することができる。コンピュータ・システムは、また、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、又はインターネットなどの通信ネットワークを介して他のシステム及び/又は構成要素と通信するための、1つ又は複数のネットワーク通信デバイス(例えば、ネットワーク・インターフェース)を含む。例えば、コンピューティング・デバイス上で実行するクライアント・アプリケーションは、ネットワーク・インターフェースを使用して、様々なサブシステムにおいて実施されるような、クラウド・コンピューティング環境又は非クラウド・コンピューティング環境において本明細書で説明されるシステムの構成要素のうちの1つ又は複数を実行する単一のサーバ上で又はサーバのクラスタ上で実行するサーバ・アプリケーションと通信することができる。別の実例では、コンピュータ・システム上で実行するサーバ・アプリケーションのインスタンスは、ネットワーク・インターフェースを使用して、他のコンピュータ・システム上で実行され得るアプリケーションの他のインスタンスと通信することができる。
【0022】
コンピューティング・デバイスは、また、1つ若しくは複数の永続ストレージ・デバイス及び/又は1つ若しくは複数のI/Oデバイスを含む。様々な実施例では、永続ストレージ・デバイスは、ディスク・ドライブ、テープ・ドライブ、ソリッド・ステート・メモリ、他の大容量ストレージ・デバイス、又は任意の他の永続ストレージ・デバイスに対応し得る。コンピュータ・システム(又はその上で動作する分散型アプリケーション若しくはオペレーティング・システム)は、永続ストレージ・デバイスに命令及び/又はデータを要望通りに記憶することができ、記憶された命令及び/又はデータを必要に応じて取り出すことができる。例えば、いくつかの実施例では、コンピュータ・システムは、制御プレーン又は制御システムの1つ又は複数のノードを実装することができ、永続ストレージは、このサーバ・ノードに取り付けられたSSDを含むことができる。複数のコンピュータ・システムが、同じ永続ストレージ・デバイスを共有してもよく、又は、永続ストレージ・デバイスのプールを共有してもよく、プール内のデバイスは、同じ又は異なるストレージ技術に相当する。
【0023】
コンピュータ・システムは、プロセッサによってアクセス可能なコード/命令及びデータを記憶し得る1つ又は複数のシステム・メモリを含む。システムのメモリ能力は、例えばアクセス・スピードに基づいてメモリ内の情報をスワップするようにデザインされた、システム内の複数のレベルのメモリ及びメモリ・キャッシュを含むことができる。インターリーブ及びスワッピングは、仮想メモリ実装形態における永続ストレージに拡張することができる。メモリを実装するために使用される技術は、例として、スタティック・ランダム・アクセス・メモリ(RAM)、ダイナミックRAM、リード・オンリ・メモリ(ROM)、不揮発性メモリ、又はフラッシュ・タイプ・メモリを含むことができる。永続ストレージと同様に、複数のコンピュータ・システムが、同じシステム・メモリを共有してもよく、又は、システム・メモリのプールを共有してもよい。1つ又は複数のシステム・メモリは、本明細書で説明されるルーチンを実施するためにプロセッサによって実行可能なプログラム命令を含んでもよい。様々な実施例では、プログラム命令は、バイナリ、アセンブリ言語、Java(登録商標)などの任意のインタープリタ型言語、C/C++などのコンパイラ型言語、又はその任意の組合せにエンコードされてもよいが、ここで示された特定の言語は実例にすぎない。いくつかの実施例では、プログラム命令は、複数の別個のクライアント、サーバ・ノード、及び/又は他の構成要素を実装することができる。
【0024】
いくつかの実装形態では、プログラム命令は、オペレーティング・システム(図示せず)を実装するために実行可能な命令を含むことができ、オペレーティング・システムは、UNIX(登録商標)、LINUX、Solaris(商標)、MacOS(商標)、又はMicrosoft Windows(登録商標)などの、様々なオペレーティング・システムのいずれかでもよい。プログラム命令のいずれか又は全てが、様々な実装形態に応じてプロセスを実施するようにコンピュータ・システム(又は他の電子デバイス)をプログラムするために使用され得る命令を記憶した、非一過性コンピュータ可読ストレージ媒体を含み得るコンピュータ・プログラム製品又はソフトウェアとして提供されてもよい。非一過性コンピュータ可読ストレージ媒体は、機械(例えばコンピュータ)によって可読の形(例えば、ソフトウェア、処理アプリケーション)で情報を記憶するための任意のメカニズムを含むことができる。一般的に言えば、非一過性コンピュータ・アクセス可能媒体は、I/Oインターフェースを介してコンピュータ・システムに連結された、例えばディスク又はDVD/CD-ROMといった、磁気又は光媒体などの、コンピュータ可読ストレージ媒体又はメモリ媒体を含むことができる。非一過性コンピュータ可読ストレージ媒体は、また、システム・メモリ又は別のタイプのメモリとして、コンピュータ・システムのいくつかの実施例に含まれ得るRAM又はROMなどの、任意の揮発性又は不揮発性媒体を含むことができる。他の実装形態では、プログラム命令は、ネットワーク・インターフェースを介して実装され得るような、ネットワーク及び/又は有線若しくはワイヤレス・リンクなどの通信媒体を介して伝えられる、光、音響、又は他の形の伝搬される信号(例えば、搬送波、赤外線信号、デジタル信号等)を使用して伝達されてもよい。ネットワーク・インターフェースは、他のコンピュータ・システム又は任意のタイプの外部電子デバイスを含み得る、他のデバイスとのインターフェースに使用されてもよい。一般に、ネットワークを通じて他のデバイス上でアクセス可能なシステム・メモリ、永続ストレージ、及び/又はリモート・ストレージは、データ・ブロック、データ・ブロックのレプリカ、データ・ブロック及び/若しくはその状態に関連付けられたメタデータ、データベース構成情報、並びに/又は、本明細書で説明されるルーチンを実施する際に使用可能な任意の他の情報を記憶することができる。
【0025】
特定の実装形態では、I/Oインターフェースは、ネットワーク・インターフェース又は他の周辺インターフェースを通じることを含む、プロセッサ、システム・メモリ、及び、システム内のいずれかの周辺デバイスの間のI/Oトラフィックを調和させることができる。いくつかの実施例では、I/Oインターフェースは、任意の必要なプロトコル、タイミング、又は他のデータ変換を実施して、1つの構成要素(例えばシステム・メモリ)からのデータ信号を、別の構成要素(例えばプロセッサ)による使用に適したフォーマットにコンバートすることができる。いくつかの実施例では、I/Oインターフェースは、例えば、ペリフェラル・コンポーネント・インターコネクト(PCI)バス規格又はユニバーサル・シリアル・バス(USB)規格の変形物などの、様々なタイプの周辺バスを通じて取り付けられたデバイスへのサポートを含むことができる。また、いくつかの実施例では、システム・メモリへのインターフェースなどの、I/Oインターフェースの機能の一部又は全てが、プロセッサに直接的に組み込まれてもよい。
【0026】
ネットワーク・インターフェースは、コンピュータ・システムと、例えば、(1つ又は複数のストレージ・システム・サーバ・ノード、1次ノード、リード・オンリ・ノードのノード、及び/又は、本明細書で説明されるデータベース・システムのクライアントを実装し得る)他のコンピュータ・システムなどの、ネットワークに取り付けられた他のデバイスとの間でデータが交換されることを可能にすることができる。さらに、I/Oインターフェースは、コンピュータ・システムと、様々なI/Oデバイス及び/又はリモート・ストレージとの間の通信を可能にすることができる。いくつかの実施例では、入出力デバイスは、1つ若しくは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、スキャン・デバイス、音声若しくは光学認識デバイス、又は、1つ若しくは複数のコンピュータ・システムによるデータの入力若しくは取出しに適した任意の他のデバイスを含むことができる。入出力デバイスは、特定のコンピュータ・システムに直接的に接続すること、或いは、クラウド・コンピューティング環境若しくはグリッド・コンピューティング環境における複数のコンピュータ・システム、又は、複数のコンピュータ・システムを伴う他のシステムに全体的に接続することができる。複数の入出力デバイスが、コンピュータ・システムとの通信状態で存在してもよく、又は、コンピュータ・システムを含む分散型システムの様々なノード上に分散されてもよい。本明細書で説明されるユーザ・インターフェースは、様々なタイプのディスプレイ・スクリーンを使用してユーザに可視でもよく、ディスプレイ・スクリーンは、CRTディスプレイ、LCDディスプレイ、LEDディスプレイ、及び他のディスプレイ技術を含むことができる。いくつかの実装形態では、入力は、タッチスクリーン技術を使用したディスプレイを通じて受け取られてもよく、他の実装形態では、入力は、キーボード、マウス、タッチパッド、若しくは他の入力技術、又はこれらの技術の任意の組合せを通じて受け取られてもよい。
【0027】
いくつかの実施例では、類似の入出力デバイスが、コンピュータ・システムとは別個のものでもよく、ネットワーク・インターフェースなどを介した有線又はワイヤレス接続を通じて、コンピュータ・システムを含む分散型システムの1つ又は複数のノードと対話することができる。ネットワーク・インターフェースは、1つ又は複数のワイヤレス・ネットワーキング・プロトコル(例えば、Wi-Fi/IEEE802.11、又は別のワイヤレス・ネットワーキング規格)を一般にサポートすることができる。ネットワーク・インターフェースは、例えば、イーサネット(登録商標)・ネットワークの他のタイプなどの、任意の適切な有線又はワイヤレスの一般的なデータ・ネットワークを介した通信をサポートすることができる。追加として、ネットワーク・インターフェースは、ファイバ・チャネルSANなどのストレージ・エリア・ネットワークを介して、又は、任意の他の適切なタイプのネットワーク及び/若しくはプロトコルを介して、アナログ音声ネットワーク又はデジタル・ファイバ通信ネットワークなどの、テレコミュニケーション/電話通信ネットワークを介した通信をサポートすることができる。
【0028】
本明細書で説明される分散型システムの実施例のいずれか、又はその構成要素のいずれかが、クラウド・コンピューティング環境における1つ又は複数のネットワーク・ベース・サービスとして実装されてもよい。例えば、データベース・システムのデータベース階層内のリード・ライト・ノード及び/又はリード・オンリ・ノードが、ネットワーク・ベース・サービスとしてのクライアントに、本明細書で説明される分散型ストレージ・システムを採用したデータベース・サービス及び/又は他のタイプのデータ・ストレージ・サービスを提示してもよい。いくつかの実施例では、ネットワーク・ベース・サービスは、ネットワークを介した相互運用可能なマシン・ツー・マシン対話をサポートするようにデザインされた、ソフトウェア及び/又はハードウェア・システムによって実装されてもよい。ウェブ・サービスは、ウェブ・サービス記述言語(WSDL)などの機械処理可能フォーマットで記述されたインターフェースを有することができる。他のシステムが、ネットワーク・ベース・サービスのインターフェースの記述によって規定される様式でネットワーク・ベース・サービスと対話してもよい。例えば、ネットワーク・ベース・サービスは、他のシステムが呼び出し得る様々な動作を定義することができ、他のシステムが様々な動作をリクエストするときに適合すると予想され得る、特定のアプリケーション・プログラミング・インターフェース(API)を定義することができる。
【0029】
様々な実施例では、ネットワーク・ベース・サービスは、ネットワーク・ベース・サービス・リクエストに関連付けられたパラメータ及び/又はデータを含むメッセージの使用を通じてリクエストされるか呼び出されてもよい。このようなメッセージは、エクステンシブル・マークアップ・ランゲージ(XML)などの特定のマークアップ言語に応じてフォーマットされてもよく、及び/又は、シンプル・オブジェクト・アクセス・プロトコル(SOAP)などのプロトコルを使用してカプセル化されてもよい。ネットワーク・ベース・サービス・リクエストを実施するために、ネットワーク・ベース・サービス・クライアントが、リクエストを含むメッセージを組み立て、ハイパー・テキスト転送プロトコル(HTTP)などのインターネット・ベースのアプリケーション層転送プロトコルを使用して、ウェブ・サービスに対応するアドレス可能エンドポイント(例えば、ユニフォーム・リソース・ロケータ(URL))にメッセージを伝えることができる。いくつかの実施例では、ネットワーク・ベース・サービスは、メッセージ・ベースの技法ではなく、レプリゼンテーショナル・ステート・トランスファ(REST)技法を使用して実施されてもよい。例えば、REST技法に従って実装されるネットワーク・ベース・サービスは、PUT、GET、又はDELETEなどの、HTTP方法に含まれるパラメータを通じて呼び出されてもよい。
【0030】
別途述べられない限り、本明細書で使用される全ての技術的及び科学的用語が、本発明が属する技術における当業者によって一般に理解されるものと同じ意味を有する。本明細書で説明されるものに類似又は同等の任意の方法及び材料も、本発明の実践又はテストの際に使用されることが可能であるが、限定された数の例示的方法及び材料が本明細書で説明される。本明細書における発明の概念から逸脱することなく、さらに多くの修正が可能であることが当業者には明らかであろう。
【0031】
本明細書で使用される全ての用語が、コンテキストに一致した最も広い可能な様式で解釈されるべきである。グルーピングが本明細書で使用されるとき、グループの全ての個々のメンバ、並びにグループの可能な全ての組合せ及び部分的な組合せが、個別に含まれることが意図される。本明細書で範囲が述べられるとき、範囲は、範囲内の全ての部分範囲及び個々のポイントを含むことが意図される。本明細書で引用される全ての参照が、本明細書の本開示との不整合がない限り、本明細書によって参照により組み込まれる。
【0032】
本発明は、例示にすぎないこと、及び添付の特許請求の範囲で説明されるような、本発明の全範囲に限定しないことが意図される、特定の好ましい及び代替の実施例を参照しながら説明されてきた。
図1
図2
【国際調査報告】