(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-24
(45)【発行日】2023-05-02
(54)【発明の名称】ブロックチェーンネットワークにおけるフィールドベースのピア許可
(51)【国際特許分類】
G06F 21/62 20130101AFI20230425BHJP
H04L 9/14 20060101ALI20230425BHJP
【FI】
G06F21/62 318
H04L9/14
(21)【出願番号】P 2021515119
(86)(22)【出願日】2019-09-18
(86)【国際出願番号】 US2019051783
(87)【国際公開番号】W WO2020061226
(87)【国際公開日】2020-03-26
【審査請求日】2022-07-22
(32)【優先日】2018-09-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-12-20
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】パドマナバーン,プリトヴィ クリシュナン
【審査官】吉田 歩
(56)【参考文献】
【文献】特開2017-195627(JP,A)
【文献】特開2018-055203(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
H04L 9/14
(57)【特許請求の範囲】
【請求項1】
ピアツーピアブロックチェーンネットワークにおいてデータを管理するマルチテナントサーバのための方法であって、
前記マルチテナントサーバにより、前記ピアツーピアブロックチェーンネットワークのための交換オブジェクトを生成するステップであり、前記交換オブジェクトは、交換フィールドのセット、及び、前記交換フィールドのセット内の各交換フィールドと前記ピアツーピアブロックチェーンネットワーク内の各ピアに関連づけられた物理オブジェクトのフィールドとの間のマッピングを含む、ステップと、
前記マルチテナントサーバにより、各交換フィールドに対する、及び前記ピアツーピアブロックチェーンネットワーク内の各ピアに対する許可を決定するステップと、
前記ピアツーピアブロックチェーンネットワーク内の第1のピアのために前記マルチテナントサーバにより、前記交換オブジェクトに基づいてトランザクションオブジェクトを生成するステップであり、前記トランザクションオブジェクトは、前記交換フィールドのセットのためのフィールド値のセットを含み、前記フィールド値のセット内の1つ以上のフィールド値が、前記決定された許可に基づいて暗号化される、ステップと、
前記第1のピアのために前記マルチテナントサーバにより、前記トランザクションオブジェクトを前記ピアツーピアブロックチェーンネットワーク内の第2のピアに利用可能にして、前記第1のピアに対応する物理オブジェクトを改変するための合意を得るよう試みるステップと、
を含む方法。
【請求項2】
前記マルチテナントサーバにより、前記第1のピアに対応する第1の許可鍵セットを生成するステップと、
前記マルチテナントサーバにより、前記第2のピアに対応する第2の許可鍵セットを生成するステップと、
をさらに含む請求項1に記載の方法。
【請求項3】
前記第1の許可鍵セット内の各許可鍵は、前記交換フィールドのセット内の交換フィールドに関する前記第1のピアの許可に対応し、
前記第2の許可鍵セット内の各許可鍵は、前記交換フィールドのセット内の交換フィールドに関する前記第2のピアの許可に対応する、請求項2に記載の方法。
【請求項4】
前記トランザクションオブジェクトを生成するステップは、前記第1の許可鍵セットを使用して前記1つ以上のフィールド値を暗号化することを含む、請求項3に記載の方法。
【請求項5】
前記許可は、対応する交換フィールドに対する読み取り、更新、及び挿入アクセス許可を含む、請求項4に記載の方法。
【請求項6】
前記マルチテナントサーバにより、前記改変のための、前記ピアツーピアブロックチェーンネットワーク内のピアからの合意の受信に応答して、前記トランザクションオブジェクトを前記第1のピアの第1の台帳及び前記第2のピアの第2の台帳に追加するステップと、
前記第2のピアのために前記マルチテナントサーバにより、前記第2の許可鍵セットを使用して前記1つ以上の
フィールド値を読み取るステップと、
をさらに含む請求項5に記載の方法。
【請求項7】
前記1つ以上の
フィールド値を読み取るステップは、前記第2の許可鍵セット内の別個の鍵を使用して前記
フィールド値のセット内の各値を復号することを含む、請求項6に記載の方法。
【請求項8】
前記マルチテナントサーバは、前記ピアツーピアブロックチェーン
ネットワーク内の各ピアのための仮想空間を含み、
各仮想空間は、関連づけられたピアに利用可能な、前記ピアツーピアブロックチェーンネットワーク内の他のピアによりアクセス不可能であるデータ及びサービスを含む、請求項1
乃至7のうちいずれか1項に記載の方法。
【請求項9】
命令を含む
コンピュータプログラムであって、前記命令は、マルチテナントサーバのプロセッサにより実行されたときに前記プロセッサに、
ピアツーピアブロックチェーンネットワークのための交換オブジェクトを生成することであり、前記交換オブジェクトは、交換フィールドのセット、及び、前記交換フィールドのセット内の各交換フィールドと前記ピアツーピアブロックチェーンネットワーク内の各ピアに関連づけられた物理オブジェクトのフィールドとの間のマッピングを含
み、
各交換フィールドに対する、及び前記ピアツーピアブロックチェーンネットワーク内の各ピアに対する許可を決定
し、
前記ピアツーピアブロックチェーンネットワーク内の第1のピアのために、前記交換オブジェクトに基づいてトランザクションオブジェクトを生成することであり、前記トランザクションオブジェクトは、前記交換フィールドのセットのためのフィールド値のセットを含み、前記フィールド値のセット内の1つ以上のフィールド値が、前記決定された許可に基づいて暗号化さ
れ、
前記第1のピアのために、前記トランザクションオブジェクトを前記ピアツーピアブロックチェーンネットワーク内の第2のピアに利用可能にして、前記第1のピアに対応する物理オブジェクトを改変するための合意を得るよう試み
る
ことをさせる、
コンピュータプログラム。
【請求項10】
前記命令はさらに、前記プロセッサに、
前記第1のピアに対応する第1の許可鍵セットを生成
し、
前記第2のピアに対応する第2の許可鍵セットを生成す
る
ことをさせ
る、
請求項9に記載のコンピュータプログラム。
【請求項11】
前記第1の許可鍵セット内の各許可鍵は、前記交換フィールドのセット内の交換フィールドに関する前記第1のピアの許可に対応し、
前記第2の許可鍵セット内の各許可鍵は、前記交換フィールドのセット内の交換フィールドに関する前記第2のピアの許可に対応
する、
請求項10に記載のコンピュータプログラム。
【請求項12】
前記トランザクションオブジェクトを生成することは、前記第1の許可鍵セットを使用して前記1つ以上のフィールド値を暗号化することを含む、請求項
11に記載の
コンピュータプログラム。
【請求項13】
前記許可は、対応する交換フィールドに対する読み取り、更新、及び挿入アクセス許可を含む、請求項12に記載のコンピュータプログラム。
【請求項14】
前記命令はさらに、前記プロセッサに、
前記改変のための、前記ピアツーピアブロックチェーンネットワーク内のピアからの合意の受信に応答して、前記トランザクションオブジェクトを前記第1のピアの第1の台帳及び前記第2のピアの第2の台帳に追加
し、
前記第2のピアのために、前記第2の許可鍵セットを使用して前記1つ以上の
フィールド値を読み取る
ことをさせ
る、
請求項10乃至13のうちいずれか1項に記載のコンピュータプログラム。
【請求項15】
前記1つ以上の
フィールド値を読み取ることは、前記第2の許可鍵セット内の別個の鍵を使用して前記
フィールド値のセット内の各値を復号することを含む、請求項
14に記載の
コンピュータプログラム。
【請求項16】
前記マルチテナントサーバは、前記ピアツーピアブロックチェーン
ネットワーク内の各ピアのための仮想空間を含み、
各仮想空間は、関連づけられたピアに利用可能な、前記ピアツーピアブロックチェーンネットワーク内の他のピアによりアクセス不可能であるデータ及びサービスを含む、請求項
9乃至15のうちいずれか1項に記載の
コンピュータプログラム。
【請求項17】
ピアツーピアブロックチェーンネットワークにおいてデータを管理するマルチテナントサーバであって、
プロセッサと、
命令を記憶するメモリと、を備え、
前記命令は、前記プロセッサにより実行されたとき前記プロセッサに、
前記ピアツーピアブロックチェーンネットワークのための交換オブジェクトを生成することであり、前記交換オブジェクトは、交換フィールドのセット、及び、前記交換フィールドのセット内の各交換フィールドと前記ピアツーピアブロックチェーンネットワーク内の各ピアに関連づけられた物理オブジェクトのフィールドとの間のマッピングを含
み、
各交換フィールドに対する、及び前記ピアツーピアブロックチェーンネットワーク内の各ピアに対する許可を決定
し、
前記ピアツーピアブロックチェーンネットワーク内の第1のピアのために、前記交換オブジェクトに基づいてトランザクションオブジェクトを生成することであり、前記トランザクションオブジェクトは、前記交換フィールドのセットのためのフィールド値のセットを含み、前記フィールド値のセット内の1つ以上のフィールド値が、前記決定された許可に基づいて暗号化さ
れ、
前記第1のピアのために、前記トランザクションオブジェクトを前記ピアツーピアブロックチェーンネットワーク内の第2のピアに利用可能にして、前記第1のピアに対応する物理オブジェクトを改変するための合意を得るよう試み
る
ことをさせる、マルチテナントサーバ。
【請求項18】
前記命令はさらに、前記プロセッサに、
前記第1のピアに対応する第1の許可鍵セットを生成
し、
前記第2のピアに対応する第2の許可鍵セットを生成す
る
ことをさせ
る、
請求項17に記載のマルチテナントサーバ。
【請求項19】
前記第1の許可鍵セット内の各許可鍵は、前記交換フィールドのセット内の交換フィールドに関する前記第1のピアの許可に対応し、
前記第2の許可鍵セット内の各許可鍵は、前記交換フィールドのセット内の交換フィールドに関する前記第2のピアの許可に対応し、
前記トランザクションオブジェクトを生成することは、前記第1の許可鍵セットを使用して前記1つ以上のフィールド値を暗号化することを含む、請求項1
8に記載のマルチテナントサーバ。
【請求項20】
前記命令はさらに、前記プロセッサに、
前記改変のための、前記ピアツーピアブロックチェーンネットワーク内のピアからの合意の受信に応答して、前記トランザクションオブジェクトを前記第1のピアの第1の台帳及び前記第2のピアの第2の台帳に追加
し、
前記第2のピアのために、前記第2の許可鍵セットを使用して前記1つ以上の
フィールド値を読み取
る
ことをさせ、
前記1つ以上の
フィールド値を読み取ることは、前記第2の許可鍵セット内の別個の鍵を使用して前記
フィールド値のセット内の各値を復号することを含む、請求項1
9に記載のマルチテナントサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2018年12月20日に出願された米国特許出願第16/228,555号及び2018年9月19日に出願された米国仮出願第62/733,535号の利益を主張し、これらは参照により本明細書に組み込まれる。
【0002】
[技術分野]
1つ以上の実装がデータ管理の分野に関し、より具体的には、ピアツーピアブロックチェーンネットワークに記憶されたデータのフィールドに対するピアベースの許可の割り当て及び実施に関する。
【背景技術】
【0003】
ブロックチェーンは、暗号法を用いてリンク及び安全化されるレコード/ブロックの、継続的に拡張するリストである。詳細には、ブロックチェーン内のあらゆるブロックは、直前のブロックの暗号ハッシュ、現在のブロックのタイムスタンプ、及びトランザクションデータ(例えば、ブロックチェーンネットワーク内のピアに関連づけられた情報の追加/修正)を含むことができる。さらに、ブロックチェーンは、チェーンに追加される新しいブロックを立証/検証するシステムを介してピアツーピアネットワークを通じて共有及び管理することができ、それにより、ブロックチェーン内のブロックは、全ての後続ブロックの改変なしに改変することができず、これは、ネットワークの合意を必要とする。このアーキテクチャは、暗号法の使用を通じてブロック内に記憶された情報のセキュリティ、ピアツーピアネットワークの使用を通じた情報の共有/分散、ブロック追加のコンセンサスの使用を通じた信頼性、並びに暗号法の使用、ブロックのチェーン化/リンク、及びピア分散を通じてブロック内に記憶された情報の不変性(immutability)を可能にする(例えば、ブロックチェーンネットワークの各ピアは、ネットワーク内の全ての立証/検証されたトランザクションの台帳を維持することができる)。
【0004】
ブロックチェーンアーキテクチャと対照的に、マルチテナントクラウドアーキテクチャは、共通のデータベース又は他のデータ構造における情報の集中化に依存している。クラウドベースのアーキテクチャは、ブロックチェーンアーキテクチャと比較して、テナントから多くの管理機能を除去して代わりにこれらの機能を集中化システムに集める能力を含む多くの利点を提供するが、これらのアーキテクチャは、データのテナント間通信の間、同じレベルの情報のセキュリティ、信頼性、及び不変性を提供しない。さらに、ブロックチェーンアーキテクチャは、上述のものを含む多くの利点を提供するが、これらのアーキテクチャは、ピア間の秘密性又は他のアクセス許可/特権の実施を可能にしない。すなわち、ピア台帳のブロック内の各情報は、ブロックチェーンネットワーク内の全てのピアに可視であり、各ピアは、ブロックチェーンネットワーク内で同じ許可/特権を有する。
【図面の簡単な説明】
【0005】
以下の図は、同様の要素を参照するために同様の参照番号を使用している。以下の図は様々な例示的な実装を示すが、代替的な実装が別記の特許請求の範囲の主旨及び範囲内である。
【
図1】一例示的な実装による、マルチテナントサーバを含むコンピューティング環境を示すブロック図を示す。
【
図2A】一例示的な実装による、ピアツーピアブロックチェーンネットワークにおいてマルチテナントサーバがデータを管理する方法を示す。
【
図2B】一例示的な実装による、ピアツーピアブロックチェーンネットワークにおいてマルチテナントサーバがデータを管理する方法を示す。
【
図3A】一例示的な実装による、テナントシステムごとの別個のブロックチェーンサービスのセットを含むコンピューティング環境を示す。
【
図3B】別の例示的な実装による、共有ブロックチェーンサービスのセットを含むコンピューティング環境を示す。
【
図4】一例示的な実装による、テナントシステムのセットに対応する物理オブジェクトを示す。
【
図5】一例示的な実装による、交換フィールドと物理オブジェクトのフィールドとの間のマッピングのセットを含む交換オブジェクトを示す。
【
図6】一例示的な実装による、テナントシステムの各々のためのセキュリティオブジェクトを示す。
【
図7】一例示的な実装による、テナントシステムに対応するシャドウオブジェクトの一例を示す。
【
図8】一例示的な実装による、トランザクションオブジェクトの一例を示す。
【
図9】一例示的な実装による、エントリ/ブロックのセットを含むブロックチェーンの一例を示す。
【
図10A】一例示的な実装による電子デバイスを示す。
【
図10B】一例示的な実装による、コンピューティング環境及びサーバが実装され得る環境のブロック図を示す。
【発明を実施するための形態】
【0006】
図1は、一例示的な実装による、コンピューティング環境100を示すブロック図である。コンピューティング環境100は、テナントシステム102
1~102
3、マルチテナントサーバ104、及び通信ネットワークのセット106を含む。この例示的なコンピューティング環境100において、テナントシステム102
1~102
3は、ピアツーピアブロックチェーンネットワーク108の一部であり得、マルチテナントサーバ104は、トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びセキュリティサービス112を含むブロックチェーンサービス104Dを介して、ピアツーピアブロックチェーンネットワーク108内のテナントシステム102
1~102
3のデータ及び様々なトランザクションを管理するためのクラウド環境を提供する。例えば、ブロックチェーンサービス104Dは、テナントシステム102の物理オブジェクトのフィールドを交換フィールドにマッピングするマッピングデータを生成することができ、これらは、ピアツーピアブロックチェーンネットワーク108におけるトランザクションを処理するために使用される。さらに、ブロックチェーンサービス104Dは、ブロックチェーンネットワーク108内の各テナントシステム102のための公開鍵及び秘密鍵を生成し、これらの鍵を使用して交換フィールドに関して許可/特権を割り当てる/実施する(enforce)ことができる。すなわち、交換フィールドは、これらのフィールドにアクセスすることを許可されているテナントシステム102の秘密及び/又は公開鍵を使用して暗号化することができ、別個の鍵セットを、異なる許可/特権レベルのために対応するテナントシステム102に提供することができる。
【0007】
例えば、以下でより詳細に記載されるように、テナントシステム1021のトランザクション生成器1101は、(1)テナントシステム1021に関連づけられた物理オブジェクトに新しいレコードを追加/挿入するか、又は(2)テナントシステム1021に関連づけられた物理オブジェクトの既存のレコードを修正/更新する要求を生成することができる。物理オブジェクトは、レコードごとのフィールドのセットを含むことができ、テナントシステム1021に関連づけられたマルチテナントサーバ104のテナントレベルオブジェクト104Bの部分/パーティションに記憶され、それにより、物理オブジェクトは、テナントシステム1021のみがアクセス可能である(例えば、テナントシステム1022及びテナントシステム1023は、テナントシステム1021の物理オブジェクトに対して読み取り又は書き込みを許可されない)。要求は、テナントシステム1021に関連づけられたテナントレベルオブジェクト104Bの部分/パーティション内のシャドウオブジェクトにおけるレコードの追加をもたらし得る。シャドウオブジェクトは、物理オブジェクトに対してコミットされていないデータ(すなわち、ピアツーピアブロックチェーンネットワーク108内のピア/テナント間における合意がまだ達成されていないデータ)を表す。シャドウオブジェクトは、トランザクションオブジェクトを生成するためにトランザクションキュー104Aにより使用されてもよく、該トランザクションオブジェクトは、テナントシステム1021の物理オブジェクトへの提案された追加/修正のための合意を受け取るために、他のテナントシステム1022及び1023に分散され/利用可能にされる。
【0008】
一実装において、トランザクションオブジェクトのフィールドのセットは、物理オブジェクトのフィールドのサブセットであり、トランザクションオブジェクトのフィールドのセットは、ネットワークレベルオブジェクト104Cに含まれる交換オブジェクト(exchange object)により定義される。この実装において、交換オブジェクトは、交換フィールドのセットを含むことができ、これは、トランザクションオブジェクトに含まれることになり、交換オブジェクトの各交換フィールドは、テナントシステム1021~1023の物理オブジェクト内のフィールドにマッピングされ得る。例えば、テナントシステム1021の物理オブジェクトは、フィールドA~Dを含んでもよく、テナントシステム1022の物理オブジェクトは、フィールドE~Hを含んでもよく、テナントシステム1023の物理オブジェクトは、フィールドI~Kを含んでもよい。この例において、ピアツーピアブロックチェーンネットワーク108の交換オブジェクトの第1の交換フィールドは、テナントシステム1021のフィールドB、テナントシステム1022のフィールドF、及びテナントシステム1023のフィールドIにマッピングされてもよい。同様に、ピアツーピアブロックチェーンネットワーク108の交換オブジェクトの第2の交換フィールドは、テナントシステム1021のフィールドC、テナントシステム1022のフィールドE、及びテナントシステム1023のフィールドJにマッピングされてもよい。したがって、テナントシステム1021の物理オブジェクトのためのレコードを追加/修正する提案を受信したとき、対応するトランザクションオブジェクトは、提案された物理/シャドウオブジェクトのフィールドBからの値を有する第1の交換フィールドと、提案された物理/シャドウオブジェクトのフィールドCからの値を有する第2の交換フィールドとを含む。交換オブジェクトは、ピアツーピアブロックチェーンネットワーク108において立証(verification)/検証(validation)目的でマッピングメタデータを介して一様なトランザクションオブジェクトを提供する一方で、テナントシステム1021がピアツーピアブロックチェーンネットワーク108内の他のテナント/ピアに対して情報の特定部分のみを見せることを可能にする(例えば、物理オブジェクト内の機密情報/フィールドは、トランザクションオブジェクトに含まれなくてもよく、該トランザクションオブジェクトは、ピアツーピアブロックチェーンネットワーク108内のテナントシステム1021~1023間で分散され、後に分散台帳に含まれる)。
【0009】
本明細書に記載されるように、マルチテナントサーバ104は、テナントシステム1021~1023のためにピアツーピアブロックチェーンネットワーク108の機能の多くを実行することができる。詳細には、マルチテナントサーバ104は、テナントシステム1021~1023の各々のための仮想空間/組織(organization)を含むことができる。各仮想空間/組織は、対応するテナントシステム1021~1023のためのデータ及びアプリケーション/サービスを含むことができ、他のテナントシステム1021~1023の全ての他の仮想空間/組織から論理的に別個である。例えば、各仮想空間/組織は、それぞれのテナント/テナントシステム1021~1023に対応するテナントレベルオブジェクト104Bと、ブロックチェーンサービス104Dの別個のインスタンス化又はブロックチェーンサービス104Dへの別個のアクセスを含んでもよい。この構成/アーキテクチャにおいて、各テナントシステム1021~1023のための仮想空間/組織は、対応するテナントシステム1021~1023のために1つ以上のブロックチェーン機能/動作を実行することができる。例えば、テナントシステム1021からの、テナントシステム1021の物理オブジェクトに新しいレコードを追加/挿入するか又は該物理オブジェクトの既存のレコードを修正/更新する要求の受信に応答して、マルチテナントサーバ104は、マルチテナントサーバ104内のテナントシステム1021の仮想空間/組織にシャドウオブジェクトレコードを生成することができる。応答して、トランザクションキュー104Aは、シャドウオブジェクト内のレコードに対応するトランザクションオブジェクトを、トランザクションオブジェクトが交換フィールドをシャドウオブジェクトからのデータと共に含むようにする、ピアツーピアブロックチェーンネットワーク108の交換オブジェクトと、トランザクションオブジェクトが他のテナントシステム1022及び1023の仮想空間/組織に分散され又はその他の方法で利用可能にされ得るようにする、テナントシステム1021の暗号鍵のセットとを使用して、生成することができる。
【0010】
詳細には、ブロックチェーンサービス104Dのセキュリティサービス112は、各テナントシステム102の許可/特権レベルに基づいて、トランザクションオブジェクトの各交換フィールドを暗号化することができる。例えば、セキュリティサービス112は、テナントシステム1021が第1及び第2の交換フィールドに対する読み取り、更新、及び挿入許可/特権を有すると決定することができる。対照的に、テナントシステム1022は、第1の交換フィールドに対する読み取り許可、及び第2の交換フィールドに対する読み取り及び更新許可のみを有してもよい。最後、テナントシステム1023は、第1の交換フィールドに対する許可/特権を有さず、第2の交換フィールドに対する読み取り、更新、及び挿入特権を有してもよい。この例示的な状況において、セキュリティサービス112は、テナントシステム1021のための第1の鍵セット、テナントシステム1022のための第2の鍵セット、及びテナントシステム1023のための第3の鍵セットを、テナントシステム1021~1023の秘密鍵及び公開鍵、並びに割り当てられた許可/特権レベルに基づいて生成することができる。第1の鍵セットは、テナントシステム1021が第1及び第2の交換フィールドに関してデータを読み取り、更新し、挿入することを可能にし、第2の鍵セットは、テナントシステム1022が第1の交換フィールドを読み取り、第2の交換フィールドを読み取り、更新することを可能にし、第3の鍵セットは、テナントシステム1023が第2の交換フィールドに関してデータを読み取り、更新し、挿入することを可能にする。したがって、上述したように、及び以下でより詳細に説明するように、マルチテナントサーバ104のセキュリティサービス112は、ブロックチェーンネットワーク108内のデータの許可/特権レベル制御を提供する。
【0011】
トランザクションオブジェクトの分散の後、他のテナントシステム1022及び1023の仮想空間/組織は、その後、トランザクションオブジェクトを分析して、検証/立証が適切であるかどうかを判定してもよい。トランザクションキュー104Aは、テナントシステム1022及び1023の仮想空間/組織からの検証/立証を待機することができ、それにより、テナントシステム1021の物理オブジェクトへの提案された改変のための合意が達成される。この合意に応答して、リーダ(leader)テナントシステム1021~1023の仮想空間/組織は、(1)対応する物理オブジェクトにおいて(適宜)レコードを追加し、又はレコードを修正し、(2)対応するエントリ/ブロックをリーダテナントシステム1021~1023の分散台帳に追加することができる。その後、リーダテナントシステム1021~1023の仮想空間/組織は、他の/残りのテナントシステム1021~1023の仮想空間/組織に対して、それらの物理オブジェクトに対する変更を(交換オブジェクト内に定義されたマッピングに基づいて)コミットし、及び/又は対応するエントリ/ブロックをこれらのテナントシステム1021~1023の台帳に追加するように、要求を送信することができる。上述のように、及び以下でより詳細に説明するように、マルチテナントサーバ104により提供されるクラウド環境(例えば、マルチテナントサーバ104により提供される仮想空間/組織)は、テナントシステム1021~1023間のブロックチェーントランザクションを管理するために使用することができる。詳細には、セキュリティサービス112は、許可/特権(例えば、読み取り、更新、及び挿入の許可/特権)がピア/テナントシステム102ごと及び交換フィールドごとに実施され得るように、交換フィールドを暗号化する。
【0012】
次に、
図1のコンピューティング環境100の各要素を、例として以下でより詳細に説明する。いくつかの実装において、コンピューティング環境100は、
図1に示されているものより多くの要素を含んでもよい。したがって、
図1のコンピューティング環境100は、単に例示目的のものである。
【0013】
図1に示すように、及び上述したように、テナントシステム102
1~102
3及びマルチテナントサーバ104は、1つ以上の通信ネットワーク106のセットを通じて接続されてもよい。1つ以上の通信ネットワーク106のセットは、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネットなどのグローバルエリアネットワーク(GAN)、又はそのようなネットワークの組み合わせでもよい。別の実装において、テナントシステム102
1~102
3及びマルチテナントサーバ104は、有線又は無線媒体を介して互いへの直接接続を維持してもよい。
【0014】
テナントシステム1021~1023の各々は、1以上のユーザにより操作され得るコンピューティングシステムでもよい。例えば、テナントシステム1021~1023の各々は、パーソナルコンピュータ(PC)、ワークステーション、ラップトップコンピュータ、タブレットコンピュータ、モバイルフォン、スマートフォン、パーソナルデジタルアシスタント(PDA)などでもよい。以下でより詳細に説明するように、テナントシステム1021~1023は、マルチテナントサーバ104と通信してデータを修正/追加/記憶し、取り出すことができる。
【0015】
テナントシステム1021~1023(クライアント、ピア、又はユーザシステムと呼ばれることもある)は各々、ウェブページにおいて提示されたインターフェースを含むインターフェース(例えば、グラフィカルユーザインターフェース(GUI))をユーザに提示するための画面/ディスプレイ(例えば、液晶ディスプレイ(LCD))を含んでもよい。以下でより詳細に説明するように、テナントシステム1021~1023の各々は、テナントシステム1021~1023に関連づけられた物理オブジェクトを改変する(例えば、物理オブジェクトにおける新しいレコードの追加、又は物理オブジェクト内の既存レコードの修正)ためにユーザから入力を受け取り、改変のためにピアツーピアブロックネットワーク108内の他のテナントシステム1021~1023からの合意を得るプロセス(例えば、立証/検証)をトリガするための、対応するトランザクション生成器1101~1103を含んでもよい。
【0016】
テナントシステム1021~1023は各々、1つ以上の組織/テナントに関連づけることができる。例えば、テナントシステム1021のユーザは、第1の組織/テナントの顧客でもよく、テナントシステム1023のユーザは、第2の組織/テナントの顧客でもよい。組織/テナントは、そこに記憶されたデータへのアクセスをユーザにテナントシステム1021~1023を介して提供するためのマルチテナントサーバ104の管理者と契約した任意の会社、法人、機関、協会、又は社会でもよい。
【0017】
一実装において、マルチテナントサーバ104は、テナントシステム1021~1023及び通信ネットワーク106を介してリソースへのアクセスをユーザに提供する任意のコンピューティングデバイスでもよい。例えば、マルチテナントサーバ104は、1つ以上の物理オブジェクト、及び/又は物理オブジェクトに対する変更を記述する1つ以上の対応する分散ピア台帳内のデータへのアクセスを、テナントシステム1021~1023のユーザに提供することができる。例えば、テナントシステム1021の物理オブジェクトは、医療ラボレポートに対応してもよい。この例示的な実装において、物理オブジェクト内のレコードは、ラボレポート識別子フィールド、患者名フィールド、ラボネットワーク識別子フィールド、ラボ検査識別子フィールド、患者識別子フィールド、及び社会保障番号フィールドを含んでもよい。テナントシステム1021~1023の物理オブジェクトに対して改変/変更が望まれるとき(例えば、物理オブジェクトへの新しいレコードの追加、又は物理オブジェクト内の既存レコードの修正)、マルチテナントサーバ104は、トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dを使用して、ピアツーピアブロックチェーンネットワーク108においてこれらの改変(例えば、テナントシステム1021~1023に関連づけられた物理オブジェクト及び分散台帳に反映される改変)を行うよう試みる。
【0018】
マルチテナントサーバ104は、マルチテナントシステムのハードウェア及びソフトウェアの様々な要素を含んでもよい。本明細書で用いられるとき、用語「マルチテナントシステム」は、ハードウェア及びソフトウェアの様々な要素が1つ以上のテナントにより共有され得るシステムを指す。例えば、マルチテナントサーバ104は、多数のテナントに対する要求を同時に処理することができ、所与のデータベーステーブルは、潜在的に一層多数のテナントに対するレコードを記憶することができる。マルチテナントサーバ104は、システムのハードウェア又はソフトウェアインフラストラクチャなどの、アプリケーションを実行可能にするフレームワーク(例えば、サービス及びメタデータ)を含むアプリケーションプラットフォームを含んでもよい。一実装において、マルチテナントサーバ104は、各テナントシステム1021~1023のデータ/オブジェクト及びサービスのための別個の仮想空間/組織(部分又はパーティションと呼ばれることもある)を含む。例えば、各テナントシステム1021~1023は、別個の仮想空間/組織を割り当てられてもよい。各仮想空間/組織は、マルチテナントサーバ104内の論理パーティションであり、対応するテナントシステム1021~1023のためにマルチテナントサーバ104により使用されるサービス(例えばブロックチェーンサービス104D)に追加で、そのテナントシステム1021~1023のみがアクセス可能であって他のテナントシステム1021~1023がアクセス不可能である別個のテナントレベルオブジェクト104Bを含む(例えば、テナントシステム1021~1023は、他のテナントシステム1021~1023のテナントレベルオブジェクト104Bを読み取る及び/又は書き込むことができない)。
【0019】
図1に示すように、ピアツーピアブロックチェーンネットワーク108は、各々がテナント/ピアを表すテナントシステム102
1~102
3を含み得る。
図1に示すピアツーピアブロックチェーンネットワーク108は、ブロックチェーンネットワーク108内のピア/テナントの表現である。いくつかの実装において、ピアツーピアブロックチェーンネットワーク108は、テナントシステム102
1~102
3からの入力/要求を用いてマルチテナントサーバ104により制御される分散ネットワークとして見なされてもよい。上述のように、及び以下でより詳細に説明するように、マルチテナントサーバ104は、テナントシステム102
1~102
3のために様々な機能/動作を実行することができる。例えば、マルチテナントサーバ104は、ブロックチェーンサービス104Dを使用して、テナントシステム102
1~102
3のためにブロックチェーン機能/動作を実行することができる。上述のように、いくつかの実装において、ブロックチェーン機能/動作は、それぞれのテナントシステム102
1~102
3に関連づけられた別個の仮想空間/組織で実行されてもよい。
【0020】
3つのテナント/ピア(例えば、テナントシステム1021~1023)で示されているが、他の実装において、ピアツーピアブロックチェーンネットワーク108は、より多くの又はより少ないテナント/ピアを含んでもよい。例えば、ピアツーピアブロックチェーンネットワーク108は、2つ、4つ、5つ、又はそれ以上のテナント/ピアを、対応するテナントシステム102と共に含んでもよい。したがって、3つのテナント/ピアの使用は、説明目的のものである。
【0021】
次に、
図2A及び
図2Bを参照し、ピアツーピアブロックチェーンネットワーク108内のデータを管理するマルチテナントサーバ104について、いくつかの実装による方法200を説明する。詳細には、マルチテナントサーバ104により提供されるマルチテナントクラウド環境は、ピアツーピアブロックチェーンネットワーク108におけるデータに対するテナントシステム102
1~102
3の許可/特権を管理するために使用することができる。
【0022】
方法200は、
図1に示す例示的なコンピューティング環境100、
図3Aに示す例示的なコンピューティング環境300A、及び/又は
図3Bに示す例示的なコンピューティング環境300Bに関連して説明される。しかしながら、他の実装において、方法200は、マルチテナントサーバ104の異なる実装を含む他の環境で動作してもよい。
【0023】
上述したように、
図2A及び
図2Bのフロー図における動作は、他の図の例示的な実装を参照して説明される。しかしながら、フロー図の動作は、他の図を参照して論じたもの以外の実装により実行でき、これらの他の図を参照して論じた実装は、フロー図を参照して論じたものと異なる動作を実行できることを理解されたい。
【0024】
図2A及び
図2Bでは特定の順序で記載及び図示されているが、方法200の動作はこの順序に限定されない。例えば、方法200の動作のうち1つ以上が、異なる順序で、又は部分的若しくは完全に重なる時間に実行されてもよい。したがって、方法200の説明及び図示は、例示目的のものであり、特定の実装に制限することは意図されない。
【0025】
図2Aに示すように、方法200は、動作202で開始することができ、ブロックチェーンサービス104Dのメンバシップサービス302Aが、ピアツーピアブロックチェーンネットワーク108に対してテナント(ピアと呼ばれることもある)のセットを決定及び/又は追加する。いくつかの実装において、ピアツーピアブロックチェーンネットワーク108は、ネットワークオブジェクト304Aにおいて識別され、ピアツーピアブロックチェーンネットワーク108のテナントは、ピアオブジェクト304Bにおいて識別される(例えば、テナントシステム102
1~102
3の識別子により表されるテナント)。例えば、メンバシップサービス302Aは、動作202においてピアオブジェクト304Bを調査することにより、ピアツーピアブロックチェーンネットワーク108内のテナントのセットを決定することができる。いくつかの実装において、ピアツーピアブロックチェーンネットワーク108にテナント/テナントシステム102
1~102
3を追加することは、ピアツーピアブロックチェーンネットワーク108内の現在のテナント/テナントシステム102
1~102
3からの立証/検証のプロセスを通じての合意を必要としてもよい。
図1の例示的なコンピューティング環境100、
図3Aの例示的なコンピューティング環境300A、及び
図3Bの例示的なコンピューティング環境300Bにおいて、及び方法200を以降説明する目的で、メンバシップサービス302Aは、動作202において、ピアツーピアブロックチェーンネットワーク108がテナントシステム102
1~102
3を含むと決定し、これらはテナント/ピアを表す。
【0026】
上述のように、テナントシステム102
1~102
3の各々は、マルチテナントサーバ104内に別個の仮想空間/組織を含むことができる。各仮想空間/組織は、対応するテナントシステム102
1~102
3のためにマルチテナントサーバ104により使用されるサービス(例えば、ブロックチェーンサービス104D)に追加で、そのテナントシステム102
1~102
3のみがアクセス可能であって他のシステム102
1~102
3がアクセス不可能である別個のテナントレベルオブジェクト104Bを含む(例えば、テナントシステム102
1~102
3は、別のテナントシステム102
1~102
3のテナントレベルオブジェクト104Bを読み取る及び/又は書き込むことができない)。例えば、
図3Aに示すように、各テナントシステム102
1~102
3は、対応するテナントレベルオブジェクト104B
1~104B
3(例えば、物理オブジェクト306
1~306
3、シャドウオブジェクト308
1~308
3、ピア台帳310
1~310
3、及びマッピングオブジェクト316
1~316
3)と、ブロックチェーンサービス104D
1~104D
3とを有する、別個の仮想空間/組織314
1~314
3に関連づけられてもよい。
図3Aでは、各仮想空間/組織314
1~314
3に対してブロックチェーンサービス104D
1~104D
3の別個のインスタンス化として示すが、各仮想空間/組織314
1~314
3は、代わりに、
図3Bに示すように、ブロックチェーンサービス104Dの単一のインスタンス化への別個のアクセスを有してもよい。
【0027】
動作204において、メンバシップサービス302Aは、ピアツーピアブロックチェーンネットワーク108内の各テナント/テナントシステム1021~1023のための公開鍵(public keys、PK)及び秘密/シークレット鍵(private/secret keys、SK)のセットを生成することができる。一実装において、公開鍵は、決定された秘密鍵に基づいて生成される。例えば、一方向暗号ハッシュ関数(例えば、SHA256)を使用して、対応する秘密鍵に基づいてテナントシステム1021~1023の公開鍵を生成してもよい。一実装において、公開鍵及び秘密/シークレット鍵は、メンバシップサービス302Aにより、動作204における生成に続いてウォレットオブジェクト304Cに記憶されてもよい。以下でより詳細に説明するように、トランザクションキュー104Aは、テナントシステム1021~1023の各々について、トランザクションオブジェクト及び許可鍵(permission keys)のセットを生成するために、ウォレットオブジェクト304Cに記憶された秘密/シークレット鍵を利用することができる。詳細には、公開鍵及び秘密/シークレット鍵は、ピアツーピアブロックチェーンネットワーク108により使用されるトランザクションの暗号要素を実装するために、トランザクションキュー104Aにより使用されてもよく、セキュリティサービス112は、テナントシステム1021~1023の許可/特権を実施するために、許可鍵を使用することができる。
【0028】
動作206において、メンバシップサービス302Aは、ピアツーピアブロックチェーンネットワーク108のための交換オブジェクトを決定することができる。一実装において、交換オブジェクトは、交換フィールドのセット、及び、各交換フィールドとテナントシステム102
1~102
3の物理オブジェクト内のフィールドとの間のマッピングを定義するマッピングメタデータにより定義される。例えば、
図4は、テナントシステム102
1~102
3に対する物理オブジェクト306
1~306
3をそれぞれ示す。この例において、テナントシステム102
1に対応する物理オブジェクト306
1は、フィールド406
1~406
Nから構成されるレコード404
1~404
Mを含み、各レコード404
1~404
Mは、各フィールド406
1~406
Nの値408
1,1~M,Nを含む。同様に、テナントシステム102
2に対応する物理オブジェクト306
2は、フィールド412
1~412
Hから構成されるレコード410
1~410
Gを含み、各レコード410
1~410
Gは、各フィールド412
1~412
Hの値414
1,1~G,Hを含む。同様に、テナントシステム102
3に対応する物理オブジェクト306
3は、フィールド418
1~418
Sから構成されるレコード416
1~416
Qを含み、各レコード416
1~416
Qは、各フィールド418
1~418
Sの値420
1,1~Q,Sを含む。物理オブジェクト306
1~306
3の各々は、任意のタイプのデータを表すことができる。例えば、テナントシステム102
1は、医療ラボラトリ内で動作し、あるいはその他の方法で医療ラボラトリに対応してもよい。この例において、物理オブジェクト306
1は、医療ラボレポートを表すことができる(例えば、レコード404
1~404
Mの各々は、別個の医療ラボレポートに対応してもよい)。テナントシステム102
2は、医院内で動作し、あるいはその他の方法で医院に対応してもよい。この例において、物理オブジェクト306
2は、患者ファイルを表すことができる(例えば、レコード410
1~410
Gの各々は、別個の患者ファイルに対応してもよい)。
【0029】
図4に示す例示的な物理オブジェクト306
1~306
3では、メンバシップサービス302Aは、
図5に示すような交換オブジェクト502を決定することができ、これは、デジタル資産オブジェクト304Dに記憶することができる。
図5に示すように、交換オブジェクト502は、交換フィールド504
1~504
3と、交換フィールド504を物理オブジェクト306のフィールドにマッピングするマッピングメタデータとにより定義される。この構成において、交換フィールド504
1は、物理オブジェクト306
1のフィールド406
2、物理オブジェクト306
2のフィールド412
H、及び物理オブジェクト306
3のフィールド418
2にマッピングする。交換フィールド504
2は、物理オブジェクト306
1のフィールド406
N、物理オブジェクト306
2のフィールド412
1、及び物理オブジェクト306
3のフィールド418
1にマッピングする。交換フィールド504
3は、物理オブジェクト306
1のフィールド406
1、及び物理オブジェクト306
2のフィールド412
2にマッピングする。したがって、交換オブジェクト502のマッピングメタデータは、交換フィールド504を物理オブジェクト306のフィールドにマッピング/リンクする。いくつかの実装において、交換フィールド504
1~504
3の数(すなわち、3)は、(1)物理オブジェクト306
1内のフィールド406
1~406
Nの数(すなわち、N)、(2)物理オブジェクト306
2内のフィールド412
1~412
Hの数(すなわち、H)、及び/又は(3)物理オブジェクト306
3内のフィールド418
1~418
Sの数(すなわち、S)未満である。したがって、テナントシステム102
1~102
3の間で分散されることになる生成されたトランザクションオブジェクトと、分散ピア台帳310に含まれる対応するデータ/情報は、機密データを含まなくてもよい。
【0030】
交換フィールド504の、物理オブジェクト306
1~306
3のフィールド406、412、及び418へのマッピングは、物理オブジェクト306
1~306
3のフィールド406、412、及び418間の関係を示す。例えば、物理オブジェクト306
1が医療ラボレポートを表し、物理オブジェクト306
2が患者ファイルを表す上記の例を用いると、物理オブジェクト306
1のフィールド406
2は、対応する医療ラボレポートが生成された患者識別子に対応することができ、物理オブジェクト306
2のフィールド412
Hは、対応する患者ファイルが表す患者識別子に対応することができる。
図5に示すように、及び上述のように、これらのフィールド406
2及び412
Hは同じ交換フィールド504
1にマッピングされ、これらのフィールド406
2及び412
Hが類似のデータを表す(例えば、フィールド406
2及び412
Hは双方とも患者識別子を表す)ことを示している。
【0031】
いくつかの実装において、各テナント/テナントシステム1021~1023は、ブロックチェーンネットワーク108を含む複数のブロックチェーンネットワークの一部でもよい。これらのブロックチェーンネットワークの各々は、ブロックチェーンネットワーク108との重複メンバシップを含んでもよく、かつ/あるいはさらなるピア/テナントシステム102を含んでもよい。いくつかの実装において、ネットワークオブジェクト304Aは、マルチテナントサーバ104により管理される各ブロックチェーンネットワークの識別子を含んでもよく、ピアオブジェクト304Bは、マルチテナントサーバ104により管理されるブロックチェーンネットワーク内の各ピア/テナントシステム102の識別子を含んでもよく、ウォレットオブジェクト304Cは、マルチテナントサーバ104により管理されるブロックチェーンネットワーク内の各ピア/テナントシステム102の鍵を含んでもよく、デジタル資産オブジェクト304Dは、マルチテナントサーバ104により管理される各ブロックチェーンネットワークの交換オブジェクト502を含んでもよい。いくつかの実装において、各テナントシステム102のためのテナントレベルオブジェクト104Bは、マッピングオブジェクト316を含んでもよい。各マッピングオブジェクト316は、対応するテナントシステム102のためのマッピングメタデータを含む。例えば、テナントシステム1021に対応するマッピングオブジェクト3161は、交換フィールド5041を物理オブジェクト3061のフィールド4062に、交換フィールド5042を物理オブジェクト3061のフィールド406Nに、及び交換フィールド5043を物理オブジェクト3061のフィールド4061にマッピングするマッピングメタデータを含む。対照的に、テナントシステム1022に対応するマッピングオブジェクト3162は、交換フィールド5041を物理オブジェクト3062のフィールド412Hに、交換フィールド5042を物理オブジェクト3062のフィールド4121に、及び交換フィールド5043を物理オブジェクト3062のフィールド4122にマッピングするマッピングメタデータを含む。最後、テナントシステム1023に対応するマッピングオブジェクト3163は、交換フィールド5041を物理オブジェクト3063のフィールド4182に、及び交換フィールド5042を物理オブジェクト3063のフィールド4181にマッピングするマッピングメタデータを含む。したがって、各マッピングオブジェクト316は、対応するテナントシステム102に関連づけられたマッピングメタデータのみを含む。
【0032】
動作208において、セキュリティサービス112は、各交換フィールド504及びテナントシステム102ごとに許可/特権(許可/特権レベルと呼ばれることもある)を決定することができる。例えば、ブロックチェーンネットワーク108は、各交換フィールド504ごとに読み取り、更新、及び挿入特権を提供してもよい。この例において、セキュリティサービス112は、テナントシステム1021が交換フィールド5041~5043に対する読み取り、更新、及び挿入許可を有すると決定することができる。対照的に、テナントシステム1022は、交換フィールド5041に対する読み取り許可、及び交換フィールド5042及び5043に対する読み取り許可及び更新許可のみを有してもよい。最後、テナントシステム1023は、交換フィールド5041に関して許可/特権を有さず、交換フィールド5042及び5043に対する読み取り、更新、及び挿入特権を有してもよい。動作208における特権/許可の決定は、管理者からの指示又はテナントシステム102のサブスクリプションレベルに基づいてもよい。
【0033】
動作210において、セキュリティサービス112は、各テナントシステム102のための許可鍵のセットを生成することができる。許可鍵のセットは、1つ以上の交換フィールド504にアクセスするために、テナントシステム102により、又はテナントシステム102のために使用することができる。例えば、各々の許可鍵セットは、テナントシステム102の各交換フィールド504及び各許可/特権レベルに対して別個の鍵を含んでもよい。例えば、
図6は、テナントシステム102
1~102
3の各々に対するセキュリティオブジェクト318
1~318
3をそれぞれ示す。図示のように、鍵のセット604
1~604
3が、対応するテナントシステム102に関連づけられた各許可/特権レベル606に対して交換フィールド504ごとに提供される。これらの鍵セット604
1~604
3は、各それぞれのテナントシステム102の公開及び秘密鍵のうち1つ以上に基づいて生成されてもよく、交換フィールド504を対応するトランザクションオブジェクト及びピア台帳310を介して読み取り、更新し、ブロックチェーンネットワーク108に挿入するために使用されてもよい。
【0034】
動作212において、ブロックチェーンサービス104Dのトランザクション管理サービス302Bは、(1)物理オブジェクト3061~3063に追加するための提案された新しいレコード、又は(2)物理オブジェクト3061~3063の既存のレコードへの修正を受信することができる。例えば、上記の例に記載されるように、物理オブジェクト3061は、医療ラボレポートに対応することができ、仮想空間/組織3141のトランザクション管理サービス302Bは、テナントシステム1021から動作212において新しいラボレポートレコード404を追加/挿入する要求を受け取ることができる。別の例では、再びになるが、物理オブジェクト3061は、医療ラボレポートに対応することができ、仮想空間/組織3141のトランザクション管理サービス302Bは、テナントシステム1021から動作212において既存のラボレポートレコード404を修正する要求を受け取ることができる。説明の目的で、方法200は、仮想空間/組織3141のトランザクション管理サービス302Bがテナントシステム1021から動作212においてレコードを物理オブジェクト3061に追加/挿入する要求を受信することに関連して説明される。しかしながら、方法200は、物理オブジェクト306の修正に関して同様の方法で機能し得る
【0035】
動作214において、セキュリティサービス112は、テナントシステム1021が、動作212からの受信した要求を実行するのに十分な許可/特権を有するかを判定することができる(すなわち、セキュリティサービス112は、テナントシステム1021が新しいラボレポートレコード404を追加/挿入することを承認されているかどうかを判定する)。一実装において、この判定は、テナントシステム1021の各許可/特権レベル606に対する鍵を含むセキュリティオブジェクト3181に基づく。詳細には、挿入されるよう要求された各交換フィールド504に対する、挿入許可/特権606に対応する許可鍵の、発見(locate)の失敗に応答して、セキュリティサービス112は、動作214において、テナントシステム1021が動作212からの受信した要求を実行するのに十分な許可/特権を有さないと判定することができ、方法200は、動作216に進んで動作212からの要求を拒絶することができる。
【0036】
対照的に、挿入されるよう要求された各交換フィールド504に対する、挿入許可/特権606に対応する許可鍵の発見に応答して、セキュリティサービス112は、動作214において、テナントシステム1021が動作212からの受信した要求を実行するのに十分な許可/特権を有すると判定することができ、方法200は、動作218に進み得る。
【0037】
動作218において、仮想空間/組織3141のトランザクション管理サービス302Bは、シャドウオブジェクト3081に、動作212の受信した要求(すなわち、新しいレコード)に対応するレコードを生成する。シャドウオブジェクト3081は、テナントシステム1021に対応することができ、物理オブジェクト3061の全てのフィールド4061~406Nを含むことができる。テナントシステム1021の対応するピア台帳3101にも表現されるコミットされたデータ(例えば、テナントシステム1021の物理オブジェクト3061のレコード404への追加/修正)を記憶する物理オブジェクト3061と対照的に、シャドウオブジェクト3081は、物理オブジェクト3061へのコミットされていないデータを表す。以下でより詳細に説明するように、テナントシステム1021のシャドウオブジェクト3081内のデータは、物理オブジェクト3061に対してコミットされ、テナントシステム1021のピア台帳3101により表現される前に、他のテナントシステム1022及び非テナントシステム102Bによる合意を通じて検証/立証される必要がある。このコミット及び表現は、以下でより詳細に説明するように、テナントシステム1022及び1023の物理オブジェクト3062及び3063、並びにピア台帳3102及び3103にも拡張することができる。
【0038】
図7は、一例示的な実装による、テナントシステム102
1及び物理オブジェクト306
1に対応するシャドウオブジェクト308
1の一例を示す。図示のように、シャドウオブジェクト308
1は、物理オブジェクト306
1に対する2つの別個の提案された改変に対応する2つのレコード704
1及び704
2を含む。例えば、第1のレコード704
1は、物理オブジェクト306
1内のレコード404の追加/挿入に対応し、第2のレコード704
2は、物理オブジェクト306
1内の新たに追加/挿入されたレコード404のための1つ以上のフィールド値408の修正/更新に対応する。例えば、第1のレコード704
1は、医療ラボレポートに対応するレコード404の追加/挿入を提案してもよく、一方で、第2のレコード704
2は、新しい医療ラボレポートレコード404のいくつかのフィールド値408の修正(例えば、医療ラボレポートのステータスに対応するフィールド値408の修正/更新)を提案してもよい。
【0039】
動作220において、イベント管理サービス302C及び/又はトランザクションキュー104Aは、(1)動作218でシャドウオブジェクト308
1に追加されたレコード704
1、及び(2)ピアツーピアブロックチェーンネットワーク108の交換オブジェクト502に基づいて、トランザクションオブジェクトを生成することができる。詳細には、トランザクションオブジェクトは、交換フィールド504
1~504
3の各々のための値と、対応する交換フィールド504
1~504
3における、動作218でシャドウオブジェクト308
1に追加されたレコード704
1からのデータ/フィールド値とを含む。例えば、
図8は、一例示的な実装による、トランザクションオブジェクト802の一例を示す。
【0040】
図8に示すように、トランザクションオブジェクト802は、交換オブジェクト502の全ての交換フィールド504
1~504
3と、交換フィールド504
1~504
3と物理オブジェクト306
1のフィールド406との間のマッピングに基づく適切な位置における、シャドウオブジェクト308
1内のレコード704
1からのフィールド値706とを含む。レコード704
1に関連して示されているが、別個のトランザクションオブジェクト802がレコード704
2に対して生成されてもよい。後述するように、例示の目的で以降用いられるトランザクションオブジェクト802は、提案されたレコード404をコミットするためのブロックチェーンネットワーク108内の合意があるかを判定するために(例えば、トランザクションオブジェクト802を立証/検証するために)、他のテナントシステム102
2及び102
3に渡され、あるいはその他の方法で利用可能にされ得る。
【0041】
一実装において、トランザクションオブジェクト802の生成は、(1)シャドウオブジェクト3081からのレコード7041、(2)トランザクションオブジェクト802の一意割り当て識別子(例えば、トランザクションオブジェクト802が生成されるときこれらに順次割り当てられる識別子)、及び(3)テナントシステム1021の秘密鍵(すなわち、改変を提案するテナントシステム102の秘密鍵)に基づいて、トランザクションオブジェクトに署名を追加することを含んでもよい。例えば、レコード7041とトランザクションオブジェクト802の一意割り当て識別子をマージし、あるいはその他の方法で一緒に組み合わせて、単一のメッセージを形成することができ、テナントシステム1021の秘密鍵を使用して、メッセージを(例えば、SHA256などの一方向暗号ハッシュ関数を使用して)暗号化し、デジタル署名を形成することができる。したがって、トランザクションオブジェクト802は、テナントシステム1021の秘密鍵を使用して生成された署名と共に、シャドウオブジェクト3081からのレコード7041を含む。
【0042】
いくつかの実装において、セキュリティサービス112は、(1)テナントシステム1021の秘密鍵(すなわち、改変を提案するテナントシステム102の秘密鍵)、(2)交換フィールド504に関連する許可/特権606を有する各テナントシステム102の許可鍵(すなわち、交換フィールド504に関連づけられた読み取り、更新、及び/又は挿入特権を有するテナントシステム102の許可鍵)、及び/又は(3)交換フィールド504に関連する許可/特権を有する各テナントシステム102の公開鍵を使用して、トランザクションオブジェクト802の各交換フィールド504を別個に暗号化することができる。これらの実装において、交換フィールド504に関連する許可/特権を有する各テナントシステム102の許可鍵を使用することは、これらのテナントシステム102のみが対応する交換フィールド504へのアクセス(例えば、読み取りアクセス)を有することを保証する。いくつかの実装において、秘密鍵、公開鍵、及び/又は許可鍵は、暗号化されたデータを生成するために、暗号関数(例えば、SHA256)と共に使用されてもよい。
【0043】
動作222において、イベント管理サービス302C及びトランザクションキュー104Aは、トランザクションオブジェクト802を他のテナントシステム1022及び1023に利用可能にすることができる。いくつかの実装において、トランザクションオブジェクト802を他のテナントシステム1022及び1023に利用可能にすることは、トランザクションキュー104Aがトランザクションオブジェクト802を、テナントシステム1022及び1023がアクセス可能なマルチテナントサーバ104の部分/パーティションに配置することを含む。例えば、上述のように、マルチテナントサーバ104は、テナントシステム1021~1023の各々について別個の仮想空間/組織314を含んでもよい。各仮想空間/組織314は、そのテナントシステム1021~1023のみがアクセス可能であって他のテナントシステム1021~1023がアクセス不可能であるデータ及びサービスを含む。動作222において、マルチテナントサーバ104は、テナントシステム1021の仮想空間/組織3141からテナントシステム1022及び1023の仮想空間/組織3142及び3143にトランザクションオブジェクト802を渡すことができ、それにより、テナントシステム1022及び1023の仮想空間/組織3142及び3143は、可能な立証/検証のためにトランザクションオブジェクト802を処理/分析することができる。上述のように、交換フィールド504は、秘密鍵、公開鍵、及び/又は許可鍵を使用して暗号化され得るため、交換フィールド504への読み取りアクセスを有するテナントシステム102のみが、その交換フィールド504の内容を決定でき得る。
【0044】
動作224において、トランザクション管理サービス302Bは、テナントシステム1022及び1023からの応答を監視して、トランザクションオブジェクト802に関して合意に達したか、又は合意に達するのに失敗したかを判定することができる。一実装において、合意管理サービス302Dは、トランザクションオブジェクト802に関してテナントシステム1022及び1023によっていつ合意に到達したかを判定する際に、トランザクション管理サービス302Bにより使用される閾値又はルールを定義することができる。例えば、いくつかの実装において、合意管理サービス302Dは、合意が、テナントシステム1022及び1023の全てがトランザクションオブジェクト802を立証/検証することを要することを示してもよく、一方で、他の実装において、合意管理サービス302Dは、合意が、テナントシステム1022及び1023のうち過半数がトランザクションオブジェクト802を立証/検証することを要することを示してもよい。いくつかの実装において、同意管理(consent management)サービス302Eは、トランザクションオブジェクト802の立証/検証が適切であるかを判定するために、テナントシステム1022及び1023により、詳細には、テナントシステム1022及び1023に関連づけられた仮想空間/組織3142及び3143により使用されるルール及び/又は動作を示す。例えば、同意管理サービス302Eは、トランザクションオブジェクト802がテナントシステム1021から発信され、テナントシステム1021により承認されたかどうかを判定するために、テナントシステム1021の公開鍵がトランザクションオブジェクト802内の署名及びメッセージと共に使用されることを示してもよい。
【0045】
動作226において、トランザクション管理サービス302B及びトランザクションキュー104Aは、テナントシステム1022及び1023からの合意の取得の失敗(例えば、合意管理サービス302Dにより定義/指示されるとおりの合意の取得の失敗)に応答して、トランザクションオブジェクト802を破棄することができる。いくつかの実装において、トランザクションオブジェクト802を破棄することは、トランザクションオブジェクト802及び対応する物理オブジェクト3061への改変(すなわち、物理オブジェクト3061への新しいレコード404の追加、又は物理オブジェクト3061への既存のレコード404の修正)がピアツーピアブロックチェーンネットワーク108により拒絶された(すなわち、ピアツーピアブロックチェーンネットワーク108における合意が達成/取得されなかった)ことを、テナントシステム1021に対して示すことを含んでもよい。トランザクションオブジェクト802及び対応する物理オブジェクトへの改変がピアツーピアブロックチェーンネットワーク108により拒絶されたとの通知の受信に応答して、仮想空間/組織3141は、トランザクションオブジェクト802に対応するシャドウオブジェクト3081内のレコード7041を削除することができる。
【0046】
動作228において、トランザクション管理サービス302Bは、リーダテナントシステム1021~1023のために、合意が達成されたトランザクションオブジェクト802及び/又はトランザクションオブジェクト802に対応するシャドウオブジェクト3081内のレコード7041をコミットすることができる。いくつかの実装において、リーダテナントシステム1021~1023は、メンバシップサービス302Aによりピアツーピアブロックチェーンネットワーク108内のテナントシステム1021~1023の中からランダムに選択されてもよい。リーダテナントシステム1021~1023が、テナントシステム1021(すなわち、動作212における物理オブジェクト3061への改変を引き起こし、あるいはその他の方法で該改変に関連づけられたテナントシステム1021~1023)であるとき、テナントシステム1021の仮想空間/組織3141内のトランザクション管理サービス302Bは、動作220においてテナントシステム1021のために、合意が達成されたトランザクションオブジェクト802に対応するシャドウオブジェクト3081内のレコード7041をコミットすることができる。この状況において、コミットは、シャドウオブジェクト3081からのレコード7041を物理オブジェクト3061に追加することを含んでもよい。リーダテナントシステム1021~1023が、テナントシステム1022又は1023であるとき、テナントシステム1022及び1023の対応する仮想空間/組織3142及び3143内のトランザクション管理サービス302Bは、動作220においてテナントシステム1022/1023のために、合意が達成されたトランザクションオブジェクト802をコミットすることができる。この状況において、コミットは、交換オブジェクト502又は対応するマッピングオブジェクト316により示されるように物理オブジェクト3062/3063内の対応するフィールド412/418にマッピングされたシャドウオブジェクト3081からのフィールド値706を含むレコード410/416を物理オブジェクト3062/3063に追加すること、又は物理オブジェクト3062/3063内のレコード410/416を修正することを含んでもよい。
【0047】
動作230において、トランザクション管理サービス302Bは、リーダテナントシステム102
1~102
3のために、トランザクションオブジェクト802に対応するピア台帳310
1~310
3内のエントリ/ブロックを追加することができる。詳細には、リーダテナントシステム102
1~102
3の仮想空間/組織314
1~314
3のトランザクション管理サービス302Bは、リーダテナントシステム102
1~102
3のために、トランザクションオブジェクト802に対応するピア台帳310
1~310
3内のエントリ/ブロックを追加してもよい。ピア台帳310
1~310
3に追加されるエントリ/ブロックは、いくつかの情報を含んでもよい。例えば、
図9に示すように、ピア台帳310
1内の各エントリ/ブロック904
1~904
Tは、ピア台帳310
1内の前のエントリ/ブロック904への参照、トランザクションオブジェクト802(1つ以上の他のトランザクションオブジェクトと共に)、及びノンス(すなわち、ピアツーピアブロックチェーンネットワーク108の要件を満たすために使用される任意の数字)を含んでもよい。
【0048】
動作232において、トランザクション管理サービス302B及び/又はトランザクションキュー104Aは、リーダテナントシステム1021~1023のために、トランザクションオブジェクト802を対応する物理オブジェクト3061~3063に対してコミットし、ブロック/エントリを対応するピア台帳3101~3103に追加するように、要求を送信し、あるいはその他の方法で他のテナントシステム1021~1023をトリガすることができる。詳細には、リーダテナントシステム1021~1023の仮想空間/組織3141~3143のトランザクション管理サービス302Bは、対応する物理オブジェクト3061~3063に対してトランザクションオブジェクト802をコミットし、対応するピア台帳3101~3103にブロック/エントリを追加するために、他のテナントシステム1021~1023の仮想空間/組織3141~3143のトランザクション管理サービス302Bに要求を渡し、又はその他の方法で利用可能にし、又はその他の方法で該トランザクション管理サービス302Bをトリガする。ピア台帳3101~3103は、コンピューティング環境100、300A、及び/又は300Bがデータの透明性及び監査可能性を維持することを可能にする。詳細には、マルチテナントサーバ104は、各トランザクションに対する不変性を、トランザクションをピア台帳3101~3103に記録/反映することにより提供し、該ピア台帳3101~3103は、全てのテナントシステム1021~1023にわたり複製される。上述のように、テナントシステム1021~1023は、トランザクション/トランザクションオブジェクト802を立証/検証するための合意メカニズムに参加し、トランザクション/トランザクションオブジェクト802が立証/検証された後にのみ、トランザクション/トランザクションオブジェクト802はピア台帳3101~3103にコミットされる。いくつかの実装において、ピア台帳3101~3103は、マークル有向非巡回グラフ(Merkle directed acyclic graph、DAG)構造に記憶されてもよい。マークルDAGは、Oracle(登録商標)及び/又はHBaseストアで表現されてもよい。データがピア台帳3101~3103にコミットされることに関連して、コミットされた後、又はコミットされると、関連物理オブジェクト3061~3063は、ピア台帳3101~3103内の最も最近のデータを用いて更新される。いくつかの実装において、ピア台帳3101~3103は、データを閲覧し又はその他の方法でピアツーピアブロックチェーンネットワーク108内で動作することができるテナント/テナントシステム1021~1023を記述するデータをさらに保持してもよい。
【0049】
動作234において、1つ以上のテナントシステム102は、対応するピア台帳310内の1つ以上の交換フィールド504を読み取るよう試みることができる。例えば、上記の例でテナントシステム1021~1023のピア台帳3101~3103に追加されたトランザクションオブジェクト802は、交換フィールド5041~5043を含んでいた。上記のように、テナントシステム1021~1023の各々は、対応するセキュリティオブジェクト3181~3183に示される、割り当てられた許可/特権レベルを有する。したがって、交換フィールド504に関連するテナントシステム1021~1023の許可/特権レベルは独立している。例えば、動作234において、テナントシステム1021の仮想空間/組織3141は、ピア台帳3101に記憶されたトランザクションオブジェクト802の交換フィールド5041を読み取るよう試みてもよい。テナントシステム1021のセキュリティオブジェクト3181が、交換フィールド5041を読み取るための許可鍵(すなわち、KEY_A)を含むため、テナントシステム1021の仮想空間/組織3141は、この許可鍵(すなわち、KEY_A)に基づいて、ピア台帳3101に記憶されたトランザクションオブジェクト802に対する交換フィールド5041の値を成功裏にデコードすることができる。同様に、テナントシステム1022のセキュリティオブジェクト3182は、交換フィールド5041を読み取るための許可鍵(すなわち、KEY_J)を含むため、テナントシステム1022の仮想空間/組織3142は、この許可鍵(すなわち、KEY_J)に基づいて、ピア台帳3102に記憶されたトランザクションオブジェクト802に対する交換フィールド5041の値を成功裏にデコードすることができる。しかしながら、テナントシステム1023のセキュリティオブジェクト3183は、交換フィールド5041を読み取るための許可鍵を含まないため、テナントシステム1023の仮想空間/組織3143は、ピア台帳3103に記憶されたトランザクションオブジェクト802に対する交換フィールド5041内の値を成功裏にデコードすることができない。
【0050】
上述のように、方法200は、マルチテナントサーバ104がテナントシステム1021~1023のためにピアツーピアブロックチェーンネットワーク108におけるデータを管理することを可能にする。詳細には、マルチテナントサーバ104により提供されるクラウド環境を使用して、承認されていないユーザ/テナント/ピアが機密データを見ることができないように、ピア台帳310に記憶されたトランザクションオブジェクト802内のデータを安全化することができる。
【0051】
いくつかの実装において、コンピューティング環境300A及び/又は300Bは、マルチテナントサーバ104の他のコンポーネントを実装するためのサービス及び/又はメタデータから構成されるプラットフォーム312の上に構築されてもよい。いくつかの実装において、ブロックチェーンサービス104Dは、各テナント/ピアに関連づけられたレコード及び項目を追跡するためのコインサービス302Fなどのさらなるサービスを含んでもよい。
【0052】
上記で用いられたように、用語「ユーザ」は、システム及び/又はサービスを使用するエンティティ(例えば、個人)を参照する一般的な用語である。マルチテナントアーキテクチャは、各テナントに、ソフトウェアインスタンスの専用シェアと、(典型的には)ユーザ管理、テナント特有の機能性、構成、カスタマイズ、非機能的プロパティ、関連アプリケーション等のためのテナント特有のデータを入力する能力を提供する。マルチテナンシー(Multi-tenancy)は、マルチインスタンスアーキテクチャと対照をなし、別個のソフトウェアインスタンスが異なるテナントのために動作する。テナントには、サービスを提供するソフトウェアインスタンスに対する特定の特権を有する共通のアクセスを共有するユーザのグループが含まれる。テナントは、組織(例えば、企業、企業内の部署等)でもよい。テナントは、システム及び/又はサービスに対する1つ以上の役割を有することができる。例えば、顧客関係管理(CRM)システム又はサービスの文脈において、テナントは、CRMシステム又はサービスを使用してベンダの1以上の顧客に関してテナントが有する情報を管理する、ベンダでもよい。別の例として、データアズアサービス(Data as a Service、DAAS)の文脈において、1つのテナントセットが、データを提供するベンダでもよく、別のテナントセットが、ベンダのデータのうち異なるもの又は全ての顧客でもよい。別の例として、プラットフォームアズアサービス(Platform as a Service、PAAS)の文脈において、1つのテナントセットが、アプリケーション/サービスを提供する第三者アプリケーション開発者でもよく、別のテナントセットが、第三者アプリケーション開発者のうち異なるもの又は全ての顧客でもよい。ユーザは、システム及び/又はサービスに対して1つ以上の役割を有することができる。いくつかの例を提供するために、ユーザは、テナント(例えば、ベンダ又は顧客)の代表者(「エンドユーザ」と呼ばれることもある)、システム及び/又はサービスを提供する企業の代表者(例えば、管理者)、及び/又はプラットフォームアズアサービス(PAAS)上でアプリケーションを作成及び維持している第三者アプリケーション開発者の代表者(例えば、プログラマ)でもよい。
【0053】
上記の実装の1つ以上の部分は、ソフトウェア、及び/又はソフトウェアとハードウェアの組み合わせを含んでもよい。電子デバイス(コンピューティングデバイス、コンピュータ等とも呼ばれる)は、プロセッサのセット上での実行のためのコード(これは、ソフトウェア命令から構成され、コンピュータプログラムコード又はコンピュータプログラムと呼ばれることもある)を記憶し、及び/又はデータを記憶するために、1つ以上のマシン読取可能記憶媒体(例えば、磁気ディスク、光ディスク、読取専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、ソリッドステートドライブ(SSD))に結合された1つ以上のプロセッサのセットなどの、ハードウェア及びソフトウェアを含む。例えば、電子デバイスは、不揮発性メモリ(より遅い読み取り/書き込み時間を有し、例えば、磁気ディスク、光ディスク、読取専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、SSD)及び揮発性メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM))を含んでもよく、ここで、不揮発性メモリは、電子デバイスがオフにされたとき又は電力がその他の方法で除去されたときでもコード/データを持続させ、電子デバイスは、動作の間、その電子デバイスのプロセッサのセットにより実行されるべきコードの部分を、その電子デバイスの不揮発性メモリから揮発性メモリにコピーし、なぜならば、揮発性メモリは、典型的には、より速い読み取り/書き込み時間を有するためである。別の例として、電子デバイスは、電子デバイスがオフにされたときコード/データを持続させ、かつ十分に速い読み取り/書き込み時間を有する不揮発性メモリ(例えば、相変化メモリ)を含んでもよく、それにより、コード/データは、実行されるべきコード/データの部分を揮発性メモリにコピーするのでなく、プロセッサのセットに直接提供する(例えば、プロセッサのセットのキャッシュにロードする)ことができ、換言すれば、この不揮発性メモリは、長期記憶装置及びメインメモリの双方として動作し、したがって、電子デバイスは、メインメモリのための揮発性メモリを全く有さず、あるいは少量のみ有してもよい。コード及び/又はデータをマシン読取可能記憶媒体に記憶することに追加で、典型的な電子デバイスは、1つ以上のマシン読取可能伝送媒体(キャリアとも呼ばれる)(例えば、電気的、光学的、無線、音響、又は他の形式の伝搬信号、例えば、搬送波、赤外線信号など)を介してコード及び/又はデータを伝送することができる。例えば、典型的な電子デバイスは、他の電子デバイスとのネットワーク接続を確立するため(伝搬信号を用いてコード及び/又はデータを送信及び/又は受信するため)に、1つ以上の物理ネットワークインターフェースのセットも含む。したがって、電子デバイスは、1つ以上のマシン読取可能媒体(コンピュータ読取可能媒体とも呼ばれる)を用いてコード及び/又はデータを(内部的に、及び/又はネットワークを介して他の電子デバイスとの間で)記憶及び送信することができる。
【0054】
電子デバイスは、様々な目的で使用される。例えば、電子デバイス(サーバ電子デバイスと呼ばれることもある)は、サービスと通信するためにクライアントソフトウェア(クライアントコード又はテナントシステムと呼ばれることもある)を実行する別の電子デバイス(クライアント電子デバイス、クライアントコンピューティングデバイス、又はクライアントデバイスと呼ばれることもある)にサービスを提供するために使用される1つ以上のサーバとして、当該電子デバイスに動作させるコードを実行することができる。サーバ及びクライアントの電子デバイスは、それぞれ、管理者(管理ユーザとしても知られる)及びエンドユーザの役割のユーザにより操作されてもよい。
【0055】
図10Aは、いくつかの例示的な実装による、電子デバイス1000を示すブロック図である。
図10Aは、1つ以上のプロセッサ1022のセットと、1つ以上のネットワークインターフェース1024のセット(無線及び/又は有線)と、ソフトウェア1028(1つ以上のプロセッサ1022のセットにより実行可能な命令を含む)を記憶された非一時的マシン読取可能記憶媒体1026とを備える、ハードウェア1020を含む。前述のテナントシステム102、並びにトランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dの各々は、1つ以上の電子デバイス1000に実装されてもよい。一実装において、1)テナントシステム102の各々は、1つ以上の電子デバイス1000のうち別個のものに実装される(例えば、ユーザにより操作されるユーザ電子デバイス内であり、ソフトウェア1028は、テナントシステム102を実現してトランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dとのインターフェースをとるためのソフトウェアを表す(例えば、Webブラウザ、ネイティブクライアント、ポータル、コマンドラインインターフェース、及び/又はシンプルオブジェクトアクセスプロトコル(Simple Object Access Protocol、SOAP)や表現状態転送(Representational State Transfer、REST)などのプロトコルに基づくアプリケーションプログラムインターフェース(API))。2)トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dは、1つ以上の電子デバイス1000のうち1つ以上の別個のセットにおいて実装される(例えば、1つ以上のサーバ電子デバイスのセットであり、ソフトウェア1028は、トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dを実現するためのソフトウェアを表す)。さらに、3)動作において、テナントシステム102並びにトランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dを実現する電子デバイスは、通信上(例えば、ネットワークにより)結合され、それらの間に(又は、1つ以上の他のレイヤを通じて)、提案された新しいレコード又は物理オブジェクト内の既存のレコードへの提案された修正をマルチテナントサーバ104にサブミットするための接続を確立する。電子デバイスの他の構成が、他の実装で使用されてもよい(例えば、一実装では、テナントシステム102及びマルチテナントサーバ104が単一の電子デバイス1000上に実装される)。
【0056】
計算仮想化を使用する電子デバイスにおいて、1つ以上のプロセッサ1022のセットは、典型的には、仮想化レイヤ1008及びソフトウェアコンテナ1004A~Rをインスタンス化するためのソフトウェアを実行する(例えば、オペレーティングシステムレベルの仮想化では、仮想化レイヤ1008は、各々が1つ以上のアプリケーションのセットを実行するために使用され得る複数のソフトウェアコンテナ1004A~R(別個のユーザ空間インスタンスを表し、仮想化エンジン、仮想プライベートサーバ、又はジェイル(jails)とも呼ばれる)の作成を可能にするオペレーティングシステムのカーネル(又は、ベースオペレーティングシステム上で実行されるシム(shim))を表す。完全仮想化では、仮想化レイヤ1008は、ハイパーバイザ(仮想マシンモニタ(VMM)と呼ばれることもある)、又はホストオペレーティングシステム上で実行されるハイパーバイザを表し、ソフトウェアコンテナ1004A~Rは各々、ハイパーバイザにより実行される仮想マシンと呼ばれるソフトウェアコンテナのしっかり分離された形式を表し、ゲストオペレーティングシステムを含んでもよい。準仮想化(para-virtualization)では、仮想マシンで動作しているオペレーティングシステム又はアプリケーションは、最適化の目的で仮想化の存在の認識することができる)。再びになるが、計算仮想化が使用される電子デバイスにおいて、動作の間、ソフトウェア1028のインスタンス(インスタンス1006Aとして示される)は、仮想化レイヤ1008上のソフトウェアコンテナ1004A内で実行される。計算仮想化が使用されない電子デバイスでは、ホストオペレーティングシステム上のインスタンス1006Aは、「ベアメタル」電子デバイス1000上で実行される。インスタンス1006Aのインスタンス化と、実装されている場合に仮想化レイヤ1008及びソフトウェアコンテナ1004A~Rは、まとめてソフトウェアインスタンス1002と呼ばれる。
【0057】
電子デバイスの代替的な実装は、上述したものから多くのバリエーションを有してもよい。例えば、カスタマイズされたハードウェア及び/又はアクセラレータが、電子デバイス内でさらに使用されてもよい。
【0058】
ネットワークデバイス(ND)は、ネットワーク上の他の電子デバイス(例えば、他のネットワークデバイス、ユーザ電子デバイス、サーバ電子デバイス)を通信上相互接続する電子デバイスである。いくつかのネットワークデバイスは、複数のネットワーキング機能(例えば、ルーティング、ブリッジング、スイッチング、レイヤ2集約、セッションボーダー制御、サービス品質、及び/又は加入者管理)のサポートを提供し、及び/又は複数のアプリケーションサービス(例えば、データ、音声、及びビデオ)のサポートを提供する「複数サービスネットワークデバイス」である。
【0059】
図10Bは、いくつかの実装による、テナントシステム102
1~102
3及びマルチテナントサーバ104が配置され得る一環境のブロック図である。システム1040は、トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dを含むサービス1042を提供するためのハードウェア(1つ以上の電子デバイスのセット)及びソフトウェアを含む。システム1040は、ネットワーク1082を介してユーザ電子デバイス1080A~Sに結合される。サービス1042は、1つ以上の他の組織(外部ユーザと呼ばれることもある)のために作業するユーザ1084A~Sのうち1以上に利用可能にされるオンデマンドサービスでもよく、それにより、これらの組織は、必ずしもシステムの構築及び/又は維持に関与する必要はないが、代わりに、必要とされるときに(例えば、ユーザ1084A~Sの要求で)サービス1042を使用する。サービス1042は、1つ以上のアプリケーションプログラミングインターフェース(API)(例えば、表現状態転送(REST)API)を介して互いに、及び/又はユーザ電子デバイス1080A~Sのうち1つ以上と通信してもよい。ユーザ電子デバイス1080A~Sは、ユーザ1084A~Sにより操作される。
【0060】
一実装において、システム1040は、顧客関係管理(CRM)サービス(例えば、salesforce.com,Inc.によるSales Cloud)、契約/提案/見積りサービス(例えば、salesforce.com,Inc.によるSalesforce CPQ)、顧客サポートサービス(例えば、salesforce.com,Inc.によるService Cloud及びField Service Lightning)、マーケティングサービス(例えば、salesforce.com,Inc.によるMarketing Cloud、Salesforce DMP、及びPardot)、コマースサービス(例えば、salesforce.com,Inc.によるCommerce Cloud Digital、Commerce Cloud Order Management、及びCommerce Cloud Store)、外部ビジネスデータソースとの通信(例えば、salesforce.com,Inc.によるSalesforce Connect)、生産性サービス(例えば、salesforce.com,Inc.によるQuip)、データベースアズアサービス(database as a service)(例えば、salesforce.com,Inc.によるDatabase.comTM)、データアズアサービス(Data as a Service、DAAS)(例えば、salesforce.com,Inc.によるData.com)、プラットフォームアズアサービス(Platform as a Service、PAAS)(例えば、実行ランタイム及びアプリケーション(アプリ)開発ツール;例えば、salesforce.com,Inc.によるHerokuTM Enterprise、Thunder、並びにForce.com(登録商標)及びLightningなど)、分析サービス(例えば、salesforce.com,Inc.によるEinstein Analytics、Sales Analytics、及び/又はService Analytics)、コミュニティサービス(例えば、salesforce.com,Inc.によるCommunity Cloud及びChatter)、モノのインターネット(Internet of Things、IoT)サービス(例えば、salesforce.com,Inc.によるSalesforce IoT及びIoT Cloud)、業界特有のサービス(例えば、salesforce.com,Inc.によるFinancial Services Cloud及びHealth Cloud)、及び/又はインフラストラクチャアズアサービス(Infrastructure as a Service、IAAS)(例えば、仮想マシン、サーバ、及び/又はストレージ)などの、複数のサービスをサポートするマルチテナントクラウドコンピューティングアーキテクチャである。例えば、システム1040は、アプリケーションプラットフォーム1044のプロバイダにより開発された1つ以上のアプリケーションを作成、管理、及び実行し、ユーザがユーザ電子デバイス1080A~Sのうち1つ以上を介してシステム1040にアクセスし、又は第三者アプリケーション開発者がユーザ電子デバイス1080A~Sのうち1つ以上を介してシステム1040にアクセスするPAASを可能にするアプリケーションプラットフォーム1044を含んでもよい。
【0061】
いくつかの実装において、サービス1042のうち1つ以上は、テナントデータ1048のための1つ以上のマルチテナントデータベース1046と、システム1040がアクセス可能なシステムデータ1052のためのシステムデータストレージ1050を利用してもよい。特定の実装において、システム1040は、サーバ電子デバイス上で実行され、任意のテナントに関連づけられた任意の承認されたユーザに対する要求を扱うように構成された(ユーザ及び/又はテナントの、特定のサーバへのサーバアフィニティはない)、1つ以上のサーバのセットを含む。ユーザ電子デバイス1080A~Sは、システム1040のサーバと通信して、システム1040によりホストされるテナントレベルのデータ及びシステムレベルのデータを要求及び更新し、応答して、システム1040(例えば、システム1040内の1つ以上のサーバ)は自動的に、1つ以上のマルチテナントデータベース1046及び/又はシステムデータストレージ1050からの所望の情報にアクセスするように設計された1つ以上の構造化問合せ言語(Structured Query Language、SQL)文(例えば、1つ以上のSQLクエリ)を生成してもよい。
【0062】
いくつかの実装において、サービス1042は、ユーザ電子デバイス1080A~Sからのクエリに応答して、及び、1)複数のテナントに共通する構成(例えば、フォーム、レポート、ワークフロー、ユーザアクセス特権、ビジネスロジック)を記述するメタデータ、及び/又は2)テナント特有であり、テナント特有の構成(例えば、テーブル、レポート、ダッシュボード、インターフェース等)を記述し、マルチテナントデータベースに記憶されるメタデータ、を含むメタデータに従って、実行時に動的に作成された仮想アプリケーションを使用して実装される。その目的のため、プログラムコード1060は、メタデータからアプリケーションデータを実現するランタイムエンジンでもよく、すなわち、コンパイルされたランタイムエンジン(システムカーネルとしても知られる)、テナントデータ、及びメタデータの明確な分離があり、これは、システムカーネルとテナント特有のアプリケーション及びスキーマとを独立して更新することを可能にし、事実上、あるものが他のものに影響を及ぼすリスクがない。さらに、一実装において、アプリケーションプラットフォーム1044は、アプリケーション開発者によるアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズムを含み、これは、保存ルーチンによりメタデータとして保存されてもよい。トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dを含むこのようなアプリケーションへの呼び出しは、プログラミング言語スタイルインターフェースを提供する手続き型言語/構造化オブジェクト問合せ言語(Procedural Language/Structured Object Query Language、PL/SOQL)を使用してコード化されてもよい。いくつかのPL/SOQL言語実装の詳細な説明は、2007年9月21日に出願されたCraig Weissmanによる「METHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICE」と題された米国特許7,730,478号において論じられている。アプリケーションへの呼び出しは、1つ以上のシステムプロセスにより検出されてもよく、該システムプロセスは、テナントが呼び出しを行うためのアプリケーションメタデータを取り出すこと、及びメタデータをソフトウェアコンテナ(例えば、仮想マシン)内のアプリケーションとして実行することを管理する。
【0063】
ネットワーク1082は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうちいずれか1つ又は任意の組み合わせでもよい。ネットワークは、電気電子技術者協会(Institute of Electrical and Electronics Engineers、IEEE)プロトコル、第3世代パートナーシッププロジェクト(3rd Generation Partnership Project、3GPP)プロトコル、又は類似の有線及び/又は無線プロトコルを含む1つ以上のネットワークプロトコルに準拠してもよく、システム1040とユーザ電子デバイス1080A~Sとの間でデータをルーティングするための1つ以上の中間デバイスを含んでもよい。
【0064】
各ユーザ電子デバイス1080A~S(例えば、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、パーソナルデジタルアシスタント(PDA)、スマートフォンなど)は、典型的には、システム1040により提供されたページ、フォーム、アプリケーション、及び他の情報と関連してディスプレイ(例えば、モニタ画面、液晶ディスプレイ(LCD)等)上に提供されたグラフィカルユーザインターフェース(GUI)と対話するために、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つ以上のユーザインターフェースデバイスを含む。例えば、ユーザインターフェースデバイスを使用して、システム1040によりホストされるデータ及びアプリケーションにアクセスし、記憶されたデータに対する検索を実行し、その他の方法でユーザ1084がユーザ1084に提示され得る様々なGUIページと対話できるようにすることができる。ユーザ電子デバイス1080A~Sは、TCP/IP(転送制御プロトコル及びインターネットプロトコル)を使用してシステム1040と通信し、より高いネットワークレベルでは、ハイパーテキスト転送プロトコル(HTTP)、FTP、アンドリューファイルシステム(Andrew File System、AFS)、無線アプリケーションプロトコル(WAP)、ファイル転送プロトコル(FTP)、ネットワークファイルシステム(NFS)、シンプルオブジェクトアクセスプロトコル(SOAP)や表現状態転送(REST)などのプロトコルに基づくアプリケーションプログラムインターフェース(API)などの、通信するための他のネットワーキングプロトコルを使用してもよい。HTTPが使用される一例において、1つ以上のユーザ電子デバイス1080A~Sは、システム1040のサーバとの間でHTTPメッセージを送信及び受信するために、一般に「ブラウザ」と呼ばれるHTTPクライアントを含んでもよく、ゆえに、ユーザ電子デバイス1080A~Sのユーザ1084は、ネットワーク1082を介してシステム1040からのそれに利用可能な情報、ページ、及びアプリケーションにアクセスし、処理し、閲覧することができる。
【0065】
上記説明では、より完全な理解を提供するために、リソース区分/共有/複製の実装、システムコンポーネントのタイプ及び相互関係、並びに論理区分/統合の選択などの、多数の特定の詳細が説明されている。しかしながら、当業者には、本発明がこのような特定の詳細なしに実施され得ることが理解されるであろう。他の例では、制御構造、論理実装、OPコード、オペランドを指定する手段、及び完全なソフトウェア命令シーケンスは詳細に示されておらず、なぜならば、当業者は、含まれる説明により、過度の実験なしに記載されているものを実装することができるためである。
【0066】
明細書中の「1つの実装」、「一実装」、「一例示的な実装」等への参照は、記載された実装が特定の特徴、構造、又は特性を含み得るが、あらゆる実装が必ずしも上記特定の特徴、構造、又は特性を含まなくてもよいことを示す。さらに、このようなフレーズは、必ずしも同じ実装を参照していない。さらに、特定の特徴、構造、又は特性がある実装に関連して記載されているとき、明示的に記載されているか否かにかかわらず、他の実装に関連してそのような特徴、構造、又は特性に影響を及ぼすことは当業者の知識の範囲内であることが提示される。
【0067】
破線境界で囲まれたテキスト及びブロック(例えば、大きいダッシュ、小さいダッシュ、ドット・ダッシュ、及びドット)は、本明細書において、いくつかの実装にさらなる特徴を追加する任意の動作及び/又は構造を説明するために用いられることがある。しかしながら、そのような表記は、これらが唯一の選択肢又は任意動作であること、及び/又は実線境界を有するブロックが特定の実装において任意でないことを意味するものとみなされるべきではない。
【0068】
以下の説明及び特許請求の範囲において、用語「結合される」がその派生語と共に用いられることがある。「結合される」は、互いに直接物理的又は電気的に接触している可能性又はそうでない可能性のある2つ以上の要素が、協働し又は互いに相互作用することを示すために用いられる。
【0069】
フロー図における動作は、他の図における例示的な実装を参照して説明されている。しかしながら、フロー図の動作は、他の図を参照して論じたもの以外の実装により実行することができ、これらの他の図を参照して論じた実装は、フロー図を参照して論じたものと異なる動作を実行することができる。
【0070】
図中のフロー図は、特定の実装により実行される特定の動作順序を示しているが、そのような順序は例示的であることを理解されたい(例えば、代替的な実装が、異なる順序で動作を実行する、特定の動作を組み合わせる、特定の動作を重ねるなどしてもよい)。
【0071】
上記説明はいくつかの例示的な実装を含むが、当業者は、本発明が説明された実装に限定されず、別記の特許請求の範囲の主旨及び範囲内で修正及び改変を実施できることを認識するであろう。したがって、本説明は、限定的でなく例示的なものである。