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

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

7147054マルチテナントブロックチェーンネットワークにおける軽量ノード
<>
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図1
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図2A
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図2B
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図3A
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図3B
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図4
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図5
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図6
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図7
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図8
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図9
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図10A
  • -マルチテナントブロックチェーンネットワークにおける軽量ノード 図10B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-26
(45)【発行日】2022-10-04
(54)【発明の名称】マルチテナントブロックチェーンネットワークにおける軽量ノード
(51)【国際特許分類】
   G06F 21/62 20130101AFI20220927BHJP
【FI】
G06F21/62 318
【請求項の数】 18
(21)【出願番号】P 2021515118
(86)(22)【出願日】2019-09-18
(65)【公表番号】
(43)【公表日】2022-01-06
(86)【国際出願番号】 US2019051781
(87)【国際公開番号】W WO2020061224
(87)【国際公開日】2020-03-26
【審査請求日】2022-08-01
(31)【優先権主張番号】62/733,523
(32)【優先日】2018-09-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/228,501
(32)【優先日】2018-12-20
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース ドット コム インコーポレイティッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】パドマナバーン,プリトヴィ クリシュナン
(72)【発明者】
【氏名】ヴェリセッティ,シュリ ナガ ディープティ
(72)【発明者】
【氏名】フォスディック,ブレント
(72)【発明者】
【氏名】カルヴィン,フィリップ ノーマン
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2017/0213210(US,A1)
【文献】国際公開第2017/024071(WO,A1)
【文献】特表2018-533103(JP,A)
【文献】米国特許第8326876(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60-64
(57)【特許請求の範囲】
【請求項1】
分散ネットワークにおけるマルチテナントサーバにより、データを管理する方法であって、前記マルチテナントサーバは、テナントシステムのセット及び非テナントシステムのセットを含む前記分散ネットワーク内の前記テナントシステムのセット及びピアのためのマルチテナント環境を管理し、当該方法は、
前記マルチテナントサーバにより、前記分散ネットワーク内のオブジェクトを修正するためのテナントトランザクション要求を受信するステップであり、前記テナントトランザクション要求は、前記テナントシステムのセット内のテナントシステムから受信され、前記非テナントシステムのセットからの非テナントシステムから受信される非テナントトランザクション要求に基づく、ステップと、
前記テナントシステム及び前記非テナントシステムのために前記マルチテナントサーバにより、交換オブジェクト及び前記テナントトランザクション要求に基づいてトランザクションオブジェクトを生成するステップと、
前記テナントシステムのために前記マルチテナントサーバにより、前記トランザクションオブジェクトを前記分散ネットワーク内の前記テナントシステムのセット及び前記非テナントシステムのセットに利用可能にして、前記分散ネットワーク内の前記オブジェクトを修正するための合意を得るよう試みるステップと、
を含む方法。
【請求項2】
前記分散ネットワーク内の前記テナントシステムのセット及び前記非テナントシステムのセットからの承認に基づいて前記マルチテナントサーバにより、前記分散ネットワーク内で前記トランザクションオブジェクトについて、前記分散ネットワーク内の前記オブジェクトを修正することを含み、合意に達したと判定するステップ、
をさらに含む請求項1に記載の方法。
【請求項3】
前記マルチテナントサーバは、前記テナントシステムのセットのために前記トランザクションオブジェクトの承認を提供するブロックチェーンサービスを含む、請求項2に記載の方法。
【請求項4】
前記非テナントシステムのセットは、前記マルチテナントサーバの前記ブロックチェーンサービスと別個の、前記トランザクションオブジェクトの承認を提供する、請求項3に記載の方法。
【請求項5】
合意の判定に応答して、前記分散ネットワーク内の前記オブジェクトに対する修正をコミットするステップと、
合意の判定に応答して、前記分散ネットワーク内の前記オブジェクトに対する前記修正のコミットに基づいて、前記分散ネットワーク内の前記テナントシステムのピア台帳にブロックを追加するステップと、
をさらに含む請求項2乃至4のうちいずれか1項に記載の方法。
【請求項6】
前記非テナントシステムのピア台帳は、前記テナントシステムのピア台帳に含まれるブロックのサブセットを含む、請求項5に記載の方法。
【請求項7】
前記テナントシステムは、前記分散ネットワークが確立されるとき、又は前記非テナントシステムが前記分散ネットワークに加わるとき、前記非テナントトランザクション要求を扱う前記非テナントシステムに関連づけられる、請求項1乃至6のうちいずれか1項に記載の方法。
【請求項8】
前記マルチテナントサーバにより、前記分散ネットワークのための前記交換オブジェクトを生成するステップであり、前記交換オブジェクトは、交換フィールドのセット、及び、前記交換フィールドのセット内の交換フィールドと前記テナントシステムのセット内のテナントシステムに関連づけられたオブジェクトのフィールドとの間のマッピングを含む、ステップ、
をさらに含み、
前記トランザクションオブジェクトは、前記テナントトランザクション要求に基づいて前記交換フィールドのセットのためのフィールド値のセットを含む、請求項1乃至6のうちいずれか1項に記載の方法。
【請求項9】
ルチテナントサーバのプロセッサに
散ネットワーク内のオブジェクトを修正するためのテナントトランザクション要求を受信することであり、前記マルチテナントサーバは、前記分散ネットワークと、テナントシステムのセット及び非テナントシステムのセットを含む前記分散ネットワーク内の前記テナントシステムのセット及びピアのためのマルチテナント環境とを管理し、前記テナントトランザクション要求は、前記テナントシステムのセット内のテナントシステムから受信され、前記非テナントシステムのセットからの非テナントシステムから受信される非テナントトランザクション要求に基づく、ことと、
前記テナントシステム及び前記非テナントシステムのために、交換オブジェクト及び前記テナントトランザクション要求に基づいてトランザクションオブジェクトを生成することと、
前記テナントシステムのために、前記トランザクションオブジェクトを前記分散ネットワーク内の前記テナントシステムのセット及び前記非テナントシステムのセットに利用可能にして、前記分散ネットワーク内の前記オブジェクトを修正するための合意を得るよう試みることと、
の動作を実行させる、コンピュータプログラム
【請求項10】
前記動作は、
前記分散ネットワーク内の前記テナントシステムのセット及び前記非テナントシステムのセットからの承認に基づいて、前記分散ネットワーク内で前記トランザクションオブジェクトについて、前記分散ネットワーク内の前記オブジェクトを修正することを含み、合意に達したと判定すること、
をさらに含む、請求項9に記載のコンピュータプログラム
【請求項11】
前記マルチテナントサーバは、前記テナントシステムのセットのために前記トランザクションオブジェクトの承認を提供するブロックチェーンサービスを含み、
前記非テナントシステムのセットは、前記マルチテナントサーバの前記ブロックチェーンサービスと別個の、前記トランザクションオブジェクトの承認を提供する、請求項10に記載のコンピュータプログラム
【請求項12】
前記動作は、
合意の判定に応答して、前記分散ネットワーク内の前記オブジェクトに対する修正をコミットすることと、
合意の判定に応答して、前記分散ネットワーク内の前記オブジェクトに対する前記修正のコミットに基づいて、前記分散ネットワーク内の前記テナントシステムのピア台帳にブロックを追加することと、
をさらに含み、
前記非テナントシステムのピア台帳は、前記テナントシステムのピア台帳に含まれるブロックのサブセットを含む、請求項10に記載のコンピュータプログラム
【請求項13】
前記テナントシステムは、前記分散ネットワークが確立されるとき、又は前記非テナントシステムが前記分散ネットワークに加わるとき、前記非テナントトランザクション要求を扱う前記非テナントシステムに関連づけられる、請求項9乃至12のうちいずれか1項に記載のコンピュータプログラム。
【請求項14】
前記動作は、
前記分散ネットワークのための前記交換オブジェクトを生成することであり、前記交換オブジェクトは、交換フィールドのセット、及び、前記交換フィールドのセット内の交換フィールドと前記テナントシステムのセット内のテナントシステムに関連づけられたオブジェクトのフィールドとの間のマッピングを含む
ことをさらに含み、
前記トランザクションオブジェクトは、前記テナントトランザクション要求に基づいて前記交換フィールドのセットのためのフィールド値のセットを含む、請求項9乃至13のうちいずれか1項に記載のコンピュータプログラム。
【請求項15】
分散ネットワークにおいてデータを管理するマルチテナントサーバであって、前記マルチテナントサーバは、前記分散ネットワークと、テナントシステムのセット及び非テナントシステムのセットを含む前記分散ネットワーク内の前記テナントシステムのセット及びピアのためのマルチテナント環境とを管理し、前記マルチテナントサーバは、
プロセッサと、
命令を記憶するメモリと、を備え、
前記命令は、前記プロセッサにより実行されたとき前記プロセッサに、
前記分散ネットワーク内のオブジェクトを修正するためのテナントトランザクション要求を受信することであり、前記テナントトランザクション要求は、前記テナントシステムのセット内のテナントシステムから受信され、前記非テナントシステムのセットからの非テナントシステムから受信される非テナントトランザクション要求に基づ
前記テナントシステム及び前記非テナントシステムのために、交換オブジェクト及び前記テナントトランザクション要求に基づいてトランザクションオブジェクトを生成
前記テナントシステムのために、前記トランザクションオブジェクトを前記分散ネットワーク内の前記テナントシステムのセット及び前記非テナントシステムのセットに利用可能にして、前記分散ネットワーク内の前記オブジェクトを修正するための合意を得るよう試み
ことをさせる、マルチテナントサーバ。
【請求項16】
前記命令はさらに、前記プロセッサに、
前記分散ネットワーク内の前記テナントシステムのセット及び前記非テナントシステムのセットからの承認に基づいて、前記分散ネットワーク内で前記トランザクションオブジェクトについて、前記分散ネットワーク内の前記オブジェクトを修正することを含み、合意に達したと判定す
ことをさせる、請求項1に記載のマルチテナントサーバ。
【請求項17】
前記マルチテナントサーバは、前記テナントシステムのセットのために前記トランザクションオブジェクトの承認を提供するブロックチェーンサービスを含み、
前記非テナントシステムのセットは、前記マルチテナントサーバの前記ブロックチェーンサービスと別個の、前記トランザクションオブジェクトの承認を提供する、請求項1に記載のマルチテナントサーバ。
【請求項18】
前記命令はさらに、前記プロセッサに、
合意の判定に応答して、前記分散ネットワーク内の前記オブジェクトに対する修正をコミットし、
合意の判定に応答して、前記分散ネットワーク内の前記オブジェクトに対する前記修正のコミットに基づいて、前記分散ネットワーク内の前記テナントシステムのピア台帳にブロックを追加する
ことをさせ、
前記非テナントシステムのピア台帳は、前記テナントシステムのピア台帳に含まれるブロックのサブセットを含む、請求項16に記載のマルチテナントサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2018年12月20日に出願された米国特許出願第16/228,501号及び2018年9月19日に出願された米国仮出願第62/733,523号の利益を主張し、これらは参照により本明細書に組み込まれる。
【0002】
[技術分野]
1つ以上の実装がデータ管理の分野に関し、より具体的には、マルチテナントブロックチェーンネットワークにおける軽量ノードの管理に関する。
【背景技術】
【0003】
ブロックチェーンは、暗号法を用いてリンク及び安全化されるレコード/ブロックの、継続的に拡張するリストである。詳細には、ブロックチェーン内のあらゆるブロックは、直前のブロックの暗号ハッシュ、現在のブロックのタイムスタンプ、及びトランザクションデータ(例えば、ブロックチェーンネットワーク内のピアに関連づけられた情報の追加/修正)を含むことができる。さらに、ブロックチェーンは、チェーンに追加される新しいブロックを立証/検証するシステムを介してピアツーピアネットワークを通じて共有及び管理することができ、それにより、ブロックチェーン内のブロックは、全ての後続ブロックの改変なしに改変することができず、これは、ネットワークの合意を必要とする。このアーキテクチャは、暗号法の使用を通じてブロック内に記憶された情報のセキュリティ、ピアツーピアネットワークの使用を通じた情報の共有/分散、ブロック追加のコンセンサスの使用を通じた信頼性、並びに暗号法の使用、ブロックのチェーン化/リンク、及びピア分散を通じてブロック内に記憶された情報の不変性(immutability)を可能にする(例えば、ブロックチェーンネットワークの各ピアは、ネットワーク内の全ての立証/検証されたトランザクションの台帳を維持することができる)。
【0004】
ブロックチェーンアーキテクチャと対照的に、マルチテナントクラウドアーキテクチャは、共通のデータベース又は他のデータ構造における情報の集中化に依存している。クラウドベースのアーキテクチャは、ブロックチェーンアーキテクチャと比較して、テナントから多くの管理機能を除去して代わりにこれらの機能を集中化システムに集める能力を含む多くの利点を提供するが、これらのアーキテクチャは、データのテナント間通信の間、同じレベルの情報のセキュリティ、信頼性、及び不変性を提供しない。
【図面の簡単な説明】
【0005】
以下の図は、同様の要素を参照するために同様の参照番号を使用している。以下の図は様々な例示的な実装を示すが、代替的な実装が別記の特許請求の範囲の主旨及び範囲内である。
図1】一例示的な実装による、マルチテナントサーバを含むコンピューティング環境を示すブロック図を示す。
図2A】一例示的な実装による、テナントシステム及び非テナントシステムの双方を有するピアツーピアブロックチェーンネットワークにおいてマルチテナントサーバがデータを管理する方法を示す。
図2B】一例示的な実装による、テナントシステム及び非テナントシステムの双方を有するピアツーピアブロックチェーンネットワークにおいてデータを管理するマルチテナントサーバのための方法を示す。
図3A】一例示的な実装による、テナントシステムごとの別個のブロックチェーンサービスのセットを含むコンピューティング環境を示す。
図3B】別の例示的な実装による、共有ブロックチェーンサービスのセットを含むコンピューティング環境を示す。
図4】一例示的な実装による、テナントシステムのセットに対応する物理オブジェクトを示す。
図5】一例示的な実装による、交換フィールドと物理オブジェクトのフィールドとの間のマッピングのセットを含む交換オブジェクトを示す。
図6】一例示的な実装による、テナントシステムに対応するシャドウオブジェクトの一例を示す。
図7】一例示的な実装による、トランザクションオブジェクトの一例を示す。
図8】一例示的な実装による、エントリ/ブロックのセットを含むブロックチェーンの一例を示す。
図9】一例示的な実装による、非テナントシステムの物理オブジェクト及びピア台帳の一例を示す。
図10A】一例示的な実装による電子デバイスを示す。
図10B】一例示的な実装による、コンピューティング環境及びサーバが実装され得る環境のブロック図を示す。
【発明を実施するための形態】
【0006】
図1は、一例示的な実装による、コンピューティング環境100を示すブロック図である。コンピューティング環境100は、システム102A及び102B、マルチテナントサーバ104、並びに通信ネットワークのセット106を含む。この例示的なコンピューティング環境100において、システム102A及び102Bは、ピアツーピアブロックチェーンネットワーク108の一部であり得、マルチテナントサーバ104は、トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dを介して、ピアツーピアブロックチェーンネットワーク108内のシステム102A及び102Bのデータ及びトランザクションを管理するためのクラウド環境を提供する。図1に示す構成において、ピアツーピアブロックチェーンネットワーク108は、テナントシステム102A(例えば、テナントシステム102A及び102A)及び非テナントシステム102B(例えば、非テナントシステム102B及び102B)の双方を含む。
【0007】
本明細書に記載されるように、テナントシステム102Aは、マルチテナントサーバ104により管理されるマルチテナント環境/システムの一部である。例えば、マルチテナントサーバ104は、テナントシステム102Aに関連づけられたユーザ/テナントがデータを記憶し及び/又は取り出すことができるマルチテナントデータベース管理システム(DBMS)を管理することができる。マルチテナントDBMSは、DBMSのハードウェア及びソフトウェアの様々な要素が1つ以上のテナントにより共有され得るシステムを指す。例えば、所与のサーバ(例えば、マルチテナントサーバ104)は、多数のテナントに対する要求を同時に処理することができ、所与のデータベーステーブルは、潜在的に一層多数のテナントに対するレコードを記憶することができる。テナントシステム102Aと対照的に、非テナントシステム102Bは、マルチテナントサーバ104により管理されるマルチテナント環境/システムの一部ではない。詳細には、非テナントシステム102Bのユーザは、マルチテナントサーバ104により管理されるマルチテナント環境/システムに参加するために、マルチテナントサーバ104と契約しておらず、あるいはマルチテナントサーバ104に申し込んでいない。したがって、マルチテナントサーバ104は、非テナントシステム102Bのためのデータを直接管理せず、かつ/あるいは、非テナントシステム102Bに向けられた部分/パーティションを含まない。
【0008】
2つのテナントシステム102A(例えば、テナントシステム102A及び102A)及び2つの非テナントシステム102B(例えば、非テナントシステム102B及び102B)を含む4つのシステム102で示されているが、ピアツーピアブロックチェーンネットワーク108は、任意の数のシステム102を含んでもよい。詳細には、ピアツーピアブロックチェーンネットワーク108は、任意の数のテナントシステム102A及び任意の数の非テナントシステム102Bを含んでもよい。
【0009】
以下でより詳細に説明するように、テナントシステム102Aのトランザクション生成器110は、(1)テナントシステム102Aに関連づけられた物理オブジェクトに新しいレコードを追加/挿入するか、又は(2)テナントシステム102Aに関連づけられた物理オブジェクトの既存のレコードを修正/更新する要求を生成することができる。物理オブジェクトは、レコードごとのフィールドのセットを含むことができ、対応するテナントシステム102Aに関連づけられたマルチテナントサーバ104のテナントレベルオブジェクト104Bの部分/パーティションに記憶され、それにより、物理オブジェクトは、テナントシステム102Aのみがアクセス可能である(例えば、テナントシステム102Aは、テナントシステム102Aの物理オブジェクトに対して読み取り又は書き込みを許可されない)。要求は、テナントシステム102Aに関連づけられたテナントレベルオブジェクト104Bの部分/パーティション内のシャドウオブジェクトにおけるレコードの追加をもたらし得る。シャドウオブジェクトは、物理オブジェクトに対してコミットされていないデータ(すなわち、ピアツーピアブロックチェーンネットワーク108内のピア間における合意がまだ達成されていないデータ)を表す。シャドウオブジェクトは、トランザクションオブジェクトを生成するためにトランザクションキュー104Aにより使用されてもよく、該トランザクションオブジェクトは、テナントシステム102の物理オブジェクトへの提案された追加/修正のための合意を受け取るために、他のテナントシステム102A及び非テナントシステム102Bに分散され/利用可能にされる。
【0010】
一実装において、トランザクションオブジェクトのフィールドのセットは、物理オブジェクトのフィールドのサブセットであり、トランザクションオブジェクトのフィールドのセットは、ネットワークレベルオブジェクト104Cに含まれる交換オブジェクト(exchange object)により定義される。この実装において、交換オブジェクトは、交換フィールドのセットを含むことができ、これは、トランザクションオブジェクトに含まれることになり、交換オブジェクトの各交換フィールドは、テナントシステム102Aの物理オブジェクト内のフィールドにマッピングされる。例えば、テナントシステム102Aの物理オブジェクトは、フィールドA~Dを含んでもよく、テナントシステム102Aの物理オブジェクトは、フィールドE~Hを含んでもよい。この例において、ピアツーピアブロックチェーンネットワーク108の交換オブジェクトの第1の交換フィールドは、テナントシステム102AのフィールドB及びテナントシステム102AのフィールドFにマッピングされてもよい。同様に、ピアツーピアブロックチェーンネットワーク108の交換オブジェクトの第2の交換フィールドは、テナントシステム102AのフィールドC及びテナントシステム102AのフィールドEにマッピングされてもよい。したがって、テナントシステム102Aの物理オブジェクトのためのレコードを追加/修正する提案を受信したとき、対応するトランザクションオブジェクトは、提案された物理/シャドウオブジェクトのフィールドBからの値を有する第1の交換フィールドと、提案された物理/シャドウオブジェクトのフィールドCからの値を有する第2の交換フィールドとを含む。交換オブジェクトは、ピアツーピアブロックチェーンネットワーク108において立証(verification)/検証(validation)目的でマッピングメタデータを介して一様なトランザクションオブジェクトを提供する一方で、テナントシステム102Aがピアツーピアブロックチェーンネットワーク108内の他のテナント/ピアに対して情報の特定部分のみを見せることを可能にする(例えば、物理オブジェクト内の機密情報/フィールドは、トランザクションオブジェクトに含まれなくてもよく、該トランザクションオブジェクトは、ピアツーピアブロックチェーンネットワーク108内のシステム102間で分散され、後に分散台帳に含まれる)。
【0011】
本明細書に記載されるように、マルチテナントサーバ104は、システム102のためにピアツーピアブロックチェーンネットワーク108の機能の多くを実行することができる。詳細には、マルチテナントサーバ104は、テナントシステム102Aの各々のための仮想空間/組織(organization)を含むことができる。各仮想空間/組織は、対応するテナントシステム102Aのためのデータ及びアプリケーション/サービスを含むことができ、他のテナントシステム102Aの全ての他の仮想空間/組織から論理的に別個である。例えば、各仮想空間/組織は、それぞれのテナント/テナントシステム102Aに対応するテナントレベルオブジェクト104Bと、ブロックチェーンサービス104Dの別個のインスタンス化又はブロックチェーンサービス104Dへの別個のアクセスを含んでもよい。この構成/アーキテクチャにおいて、各テナントシステム102Aのための仮想空間/組織は、対応するテナントシステム102Aのために1つ以上のブロックチェーン機能/動作を実行することができる。例えば、テナントシステム102Aからの、テナントシステム102Aの物理オブジェクトに新しいレコードを追加/挿入するか又は該物理オブジェクトの既存のレコードを修正/更新する要求の受信に応答して、マルチテナントサーバ104は、マルチテナントサーバ104内のテナントシステム102Aの仮想空間/組織にシャドウオブジェクトレコードを生成することができる。応答して、トランザクションキュー104Aは、シャドウオブジェクト内のレコードに対応するトランザクションオブジェクトを、ピアツーピアブロックチェーンネットワーク108の交換オブジェクトと、トランザクションオブジェクトが他のテナントシステム102Aの仮想空間/組織に分散され又はその他の方法で利用可能にされ得るようにする、テナントシステム102Aの暗号鍵のセットとを使用して、生成することができる。他のテナントシステム102Aの仮想空間/組織は、その後、トランザクションオブジェクトを分析して、検証/立証が適切であるかどうかを判定してもよい。
【0012】
いくつかの実装において、非テナントシステム102Bが、ピアツーピアブロックチェーンネットワーク108における合意動作に寄与することができる。例えば、トランザクションキュー104Aは、テナントシステム102Aに追加で、非テナントシステム102Bにトランザクションオブジェクトを分散させてもよい。例えば、非テナントシステム102B及び102Bの合意ユニット116及び116は、それぞれ、トランザクションオブジェクトを分析して、検証/立証が適切であるかどうかを判定し、適切な応答をトランザクションキュー104Aに送信してもよい。
【0013】
トランザクションキュー104Aは、テナントシステム102Aの仮想空間/組織及び/又は非テナントシステム102Bの合意ユニット116からの検証/立証を待機することができ、それにより、テナントシステム102Aの物理オブジェクトへの提案された改変のための合意が達成される。この合意に応答して、リーダ(leader)テナントシステム102Aの仮想空間/組織は、(1)このリーダテナントシステム102Aの対応する物理オブジェクトにおいて(適宜)レコードを追加/挿入し、又はレコードを修正し、(2)対応するエントリ/ブロックをこのリーダテナントシステム102Aの分散台帳に追加/挿入することができる。その後、リーダテナントシステム102Aの仮想空間/組織は、他の/残りのテナントシステム102Aの仮想空間/組織に対して、それらの物理オブジェクトに対する変更を(交換オブジェクト内に定義されたマッピングに基づいて)コミットし、及び/又は対応するエントリ/ブロックをこれらの他の/残りのテナントシステム102Aの台帳に追加するように、要求を送信することができる。いくつかの実装において、物理オブジェクトへの変更をコミットし、及び/又は対応するエントリ/ブロックを台帳に追加する要求は、マルチテナントサーバ104により提供されるクラウド環境により、直接か、又は関連づけられたテナントシステム102Aを通じてかのいずれかで、非テナントシステム102Bに転送することができる。例えば、各非テナントシステム102Bは、テナントシステム102Aとペアにされ、あるいはその他の方法で関連づけられてもよい。この実装において、テナントシステム102Aは(直接か、又はマルチテナントサーバ104により提供される仮想空間を介してかのいずれかで)、関連づけられた非テナントシステム102Bに要求を転送する。一実装において、非テナントシステム102Bは、分散台帳のサブセットのみを分散される。例えば、分散台帳のうち、非テナントシステム102Bに関わるか、又は非テナントシステム102Bが非テナントシステム102Bに関連づけられた物理オブジェクトへの更新を理解するために必要な部分のみが、対応する非テナントシステム102Bに提供されてもよい。
【0014】
一実装において、非テナントシステム102Bは、ピアツーピアブロックチェーンネットワーク108においてトランザクションを直接開始することを許可されない。詳細には、非テナントシステム102Bは、マルチテナントサーバ104により管理されるマルチテナント環境/システム内のテナントでないため、マルチテナントサーバ104により管理されるピアツーピアブロックチェーンネットワーク108におけるトランザクションは、テナントシステム102Aにより開始される。したがって、以下でより詳細に説明するように、非テナントシステム102Bは、ピアツーピアブロックチェーンネットワーク108におけるトランザクションを生成するための初期要求をテナントシステム102Aの1つに送信することができる。例えば、非テナントシステム102Bの非テナント要求生成器114は、初期/非テナントトランザクション要求をテナントシステム102Aに送信して、ピアツーピアブロックチェーンネットワーク108内のトランザクションを生成することができる。この例において、非テナントシステム102Bは、テナントシステム102Aに関連づけられる。この関連づけは、ピアツーピアブロックチェーンネットワーク108を確立すると、又は非テナントシステム102Bがピアツーピアブロックチェーンネットワーク108に参加すると確立されてもよい。テナントシステム102Aの要求受信器112による非テナントトランザクション要求の受信に応答して、テナントシステム102Aのトランザクション生成器110は、ピアツーピアブロックチェーンネットワーク108におけるトランザクションを開始するために、トランザクション要求をマルチテナントサーバ104に送信することができる。テナントシステム102Aに関連づけられたマルチテナントサーバ104の仮想空間/組織は、マルチテナントサーバ104の他の要素(例えば、トランザクションキュー104A)と関連して、その後、トランザクションオブジェクトを生成し、トランザクションのための合意を得るよう試みるプロセスを開始することができる。
【0015】
上述のように、及び以下でより詳細に説明するように、マルチテナントサーバ104により提供されるクラウド環境(例えば、マルチテナントサーバ104により提供される仮想空間/組織)は、テナントシステム102A及び非テナントシステム102Bを含むシステム102間のブロックチェーントランザクションを管理するために使用することができる。したがって、マルチテナントサーバ104により実装されるクラウド環境は、ピアツーピアブロックチェーンネットワーク108の機能性/動作を集中化しながら、テナント間通信の間、ブロックチェーンネットワークと同じレベルの情報のセキュリティ、信頼性、及び不変性を提供する。さらに、マルチテナントサーバ104を含むコンピューティング環境100は、ピアツーピアブロックチェーンネットワーク108を実装して、ピアツーピアブロックチェーンネットワーク108におけるテナントシステム102A及び非テナントシステム102Bの双方の参加を可能にする。
【0016】
次に、図1のコンピューティング環境100の各要素を、例として以下でより詳細に説明する。いくつかの実装において、コンピューティング環境100は、図1に示されているものより多くの要素を含んでもよい。したがって、図1のコンピューティング環境100は、単に例示目的のものである。
【0017】
図1に示すように、及び上述したように、システム102(例えば、テナントシステム102A及び非テナントシステム102B)及びマルチテナントサーバ104は、1つ以上の通信ネットワーク106のセットを通じて接続されてもよい。1つ以上の通信ネットワーク106のセットは、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネットなどのグローバルエリアネットワーク(GAN)、又はそのようなネットワークの組み合わせでもよい。別の実装において、システム102及びマルチテナントサーバ104は、有線又は無線媒体を介して互いへの直接接続を維持してもよい。
【0018】
システム102の各々は、1以上のユーザにより操作され得るコンピューティングシステムでもよい。例えば、システム102の各々は、パーソナルコンピュータ(PC)、ワークステーション、ラップトップコンピュータ、タブレットコンピュータ、モバイルフォン、スマートフォン、パーソナルデジタルアシスタント(PDA)などでもよい。以下でより詳細に説明するように、システム102は、マルチテナントサーバ104と通信してデータを修正/追加/記憶し、取り出すことができる。
【0019】
システム102(クライアント、ピア、又はユーザシステムと呼ばれることもある)は各々、ウェブページにおいて提示されたインターフェースを含むインターフェース(例えば、グラフィカルユーザインターフェース(GUI))をユーザに提示するための画面/ディスプレイ(例えば、液晶ディスプレイ(LCD))を含んでもよい。以下でより詳細に説明するように、テナントシステム102Aの各々は、物理オブジェクトを改変する(例えば、物理オブジェクトにおける新しいレコードの追加、又は物理オブジェクト内の既存レコードの修正)ためにユーザから(例えば、ユーザインターフェースを介して)又は非テナントシステム102Bから(例えば、非テナントシステム102Bの非テナント要求生成器114及びテナントシステム102Aの要求受信器112を介して)入力を受け取り、改変のためにピアツーピアブロックネットワーク108内の他のシステム102から合意(例えば、立証/検証)を得るプロセスをトリガするための、対応するトランザクション生成器110を含んでもよい。
【0020】
テナントシステム102Aは各々、マルチテナントサーバ104により管理される1つ以上の組織/テナントに関連づけることができる。例えば、テナントシステム102Aのユーザは、第1の組織/テナントの顧客でもよく、テナントシステム102Aのユーザは、第2の組織/テナントの顧客でもよい。組織/テナントは、そこに記憶されたデータへのアクセスをユーザにテナントシステム102Aを介して提供するためのマルチテナントサーバ104の管理者と契約した任意の会社、法人、機関、協会、又は社会でもよい。
【0021】
テナントシステム102Aと対照的に、非テナントシステム102Bは、マルチテナントサーバ104により管理される組織/テナントに関連づけられていない。以下でより詳細に説明するように、非テナントシステム102Bは、マルチテナントサーバ104により管理される組織/テナントに関連づけられていないため、非テナントシステム102Bは、テナントシステム102Aと同じ許可又は機能性を提供されなくてもよく、あるいは該許可又は機能性に関連づけられていなくてもよい。例えば、非テナントシステム102Bは、マルチテナントサーバ104により管理されるピアツーピアブロックチェーンネットワーク108においてトランザクションを直接開始することができない。代わりに、非テナントシステム102Bは各々、ピアツーピアブロックチェーンネットワーク108においてトランザクションを開始するためのテナントシステム102Aに関連づける。したがって、非テナントシステム102Bは、非テナントトランザクション要求を生成し、関連づけられたテナントシステム102Aに送信する非テナント要求生成器114を含んでもよい。以下でより詳細に説明するように、関連づけられたテナントシステム102Aは、非テナントシステム102Bから受信した非テナントトランザクション要求に基づいてテナントトランザクション要求を生成することができる。
【0022】
一実装において、マルチテナントサーバ104は、システム102及び通信ネットワーク106を介してリソースへのアクセスをユーザに提供する任意のコンピューティングデバイスでもよい。例えば、マルチテナントサーバ104は、1つ以上の物理オブジェクト、及び/又は物理オブジェクトに対する変更を記述する1つ以上の対応する分散ピア台帳内のデータへのアクセスを、システム102のユーザに提供することができる。例えば、テナントシステム102Aの物理オブジェクトは、医療ラボレポートに対応してもよい。この例示的な実装において、物理オブジェクト内のレコードは、ラボレポート識別子フィールド、患者名フィールド、ラボネットワーク識別子フィールド、ラボ検査識別子フィールド、患者識別子フィールド、及び社会保障番号フィールドを含んでもよい。システム102の物理オブジェクトに対して改変/変更が望まれるとき(例えば、物理オブジェクトへの新しいレコードの追加、又は物理オブジェクト内の既存レコードの修正)、マルチテナントサーバ104は、トランザクションキュー104A、テナントレベルオブジェクト104B、ネットワークレベルオブジェクト104C、及びブロックチェーンサービス104Dを使用して、ピアツーピアブロックチェーンネットワーク108においてこれらの改変(例えば、システム102に関連づけられた物理オブジェクト及び分散台帳に反映される改変)を行うよう試みる。
【0023】
マルチテナントサーバ104は、マルチテナントシステムのハードウェア及びソフトウェアの様々な要素を含んでもよい。本明細書で用いられるとき、用語「マルチテナントシステム」は、ハードウェア及びソフトウェアの様々な要素が1つ以上のテナントにより共有され得るシステムを指す。例えば、マルチテナントサーバ104は、多数のテナントに対する要求を同時に処理することができ、所与のデータベーステーブルは、潜在的に一層多数のテナントに対するレコードを記憶することができる。マルチテナントサーバ104は、システムのハードウェア又はソフトウェアインフラストラクチャなどの、アプリケーションを実行可能にするフレームワーク(例えば、サービス及びメタデータ)を含むアプリケーションプラットフォームを含んでもよい。一実装において、マルチテナントサーバ104は、各テナントシステム102Aのデータ/オブジェクト及びサービスのための別個の仮想空間/組織(部分又はパーティションと呼ばれることもある)を含む。例えば、各テナントシステム102Aは、別個の仮想空間/組織を割り当てられてもよい。各仮想空間/組織は、マルチテナントサーバ104内の論理パーティションであり、対応するテナントシステム102Aのためにマルチテナントサーバ104により使用されるサービス(例えばブロックチェーンサービス104D)に追加で、そのテナントシステム102Aのみがアクセス可能であって他のテナントシステム102Aがアクセス不可能である別個のテナントレベルオブジェクト104Bを含む(例えば、テナントシステム102Aは、他のテナントシステム102Aのテナントレベルオブジェクト104Bを読み取る及び/又は書き込むことができない)。
【0024】
図1に示すように、ピアツーピアブロックチェーンネットワーク108は、非テナントシステム102Bと共に、各々がテナント/ピアを表すテナントシステム102Aを含んでもよい。図1に示すピアツーピアブロックチェーンネットワーク108は、ブロックチェーンネットワーク108内のピアの表現である。いくつかの実施形態において、ピアツーピアブロックチェーンネットワーク108は、システム102からの入力/要求を用いてマルチテナントサーバ104により制御される分散ネットワークとみなされてもよい。
【0025】
次に、図2A及び図2Bを参照し、ピアツーピアブロックチェーンネットワーク108内のデータを管理するマルチテナントサーバ104について、いくつかの実装による方法200を説明する。詳細には、マルチテナントサーバ104により提供されるマルチテナントクラウド環境は、テナントシステム102Aと非テナントシステム102Bとの間のブロックチェーントランザクションを管理するために使用することができる。したがって、方法200は、テナントシステム102A及び非テナントシステム102Bの双方についてピアツーピアブロックチェーンネットワーク108の機能性/動作を集中化しながら、テナント間及びテナント対非テナント通信の間、クラウド環境がブロックチェーンネットワークと同じレベルの情報のセキュリティ、信頼性、及び不変性を提供することを可能にする。いくつかの実装において、以下でより詳細に説明するように、非テナントシステム102Bは、ピアツーピアブロックチェーンネットワーク108において縮小された特権又は可能な動作のセットを提供されてもよく、なぜならば、非テナントシステム102Bは、マルチテナントサーバ104により管理されるマルチテナント環境/システム内のテナントでないためである。
【0026】
方法200は、図1に示す例示的なコンピューティング環境100、図3Aに示す例示的なコンピューティング環境300A、及び/又は図3Bに示す例示的なコンピューティング環境300Bに関連して説明される。しかしながら、他の実装において、方法200は、マルチテナントサーバ104の異なる実装を含む他の環境で動作してもよい。
【0027】
上述したように、図2A及び図2Bのフロー図における動作は、他の図の例示的な実装を参照して説明される。しかしながら、フロー図の動作は、他の図を参照して論じたもの以外の実装により実行でき、これらの他の図を参照して論じた実装は、フロー図を参照して論じたものと異なる動作を実行できることを理解されたい。
【0028】
図2A及び図2Bでは特定の順序で記載及び図示されているが、方法200の動作はこの順序に限定されない。例えば、方法200の動作のうち1つ以上が、異なる順序で、又は部分的若しくは完全に重なる時間に実行されてもよい。したがって、方法200の説明及び図示は、例示目的のものであり、特定の実装に制限することは意図されない。
【0029】
図2A及び図2Bに示すように、方法200は、動作202で開始することができ、ブロックチェーンサービス104Dのメンバシップサービス302Aが、ピアツーピアブロックチェーンネットワーク108に対してピアのセットを決定及び/又は追加する。いくつかの実装において、ピアツーピアブロックチェーンネットワーク108は、ネットワークオブジェクト304Aにおいて識別され、ピアツーピアブロックチェーンネットワーク108のピアは、ピアオブジェクト304Bにおいて識別される。例えば、メンバシップサービス302Aは、動作202においてピアオブジェクト304Bを調査することにより、ピアツーピアブロックチェーンネットワーク108内のピアのセットを決定することができる。いくつかの実装において、ピアツーピアブロックチェーンネットワーク108にピアを追加することは、ピアツーピアブロックチェーンネットワーク108内の現在のピアからの立証/検証のプロセスを通じての合意を必要としてもよい。図1の例示的なコンピューティング環境100、図3Aの例示的なコンピューティング環境300A、及び図3Bの例示的なコンピューティング環境300Bにおいて、メンバシップサービス302Aは、動作202において、ピアツーピアブロックチェーンネットワーク108がシステム102A、102A、102B、及び102Bを含むと決定し、これらは各々、ピアツーピアブロックチェーンネットワーク108のピアをそれぞれ表す。
【0030】
上述のように、テナントシステム102Aの各々は、マルチテナントサーバ104内に別個の仮想空間/組織を含むことができる。各仮想空間/組織は、対応するテナントシステム102Aのためにマルチテナントサーバ104により使用されるサービス(例えば、ブロックチェーンサービス104D)に追加で、そのテナントシステム102Aのみがアクセス可能であって他のシステム102がアクセス不可能である別個のテナントレベルオブジェクト104Bを含む(例えば、システム102は、別のシステム102のテナントレベルオブジェクト104Bを読み取る及び/又は書き込むことができない)。例えば、図3Aに示すように、各テナントシステム102Aは、対応するテナントレベルオブジェクト104B及び104B(例えば、物理オブジェクト306及び306、シャドウオブジェクト308及び308、ピア台帳310及び310、並びにマッピングオブジェクト316及び316)とブロックチェーンサービス104D及び104Dとを有する、別個の仮想空間/組織314及び314に関連づけられてもよい。図3Aでは、各仮想空間/組織314及び314に対してブロックチェーンサービス104D及び104Dの別個のインスタンス化として示すが、各仮想空間/組織314及び314は、代わりに、図3Bに示すように、ブロックチェーンサービス104Dの単一のインスタンス化への別個のアクセスを有してもよい。
【0031】
動作204において、メンバシップサービス302Aは、ピアツーピアブロックチェーンネットワーク108内の各ピアのための公開鍵(public keys、PK)及び秘密/シークレット鍵(private/secret keys、SK)のセットを生成することができる。一実装において、公開鍵は、決定された秘密鍵に基づいて生成される。例えば、一方向暗号ハッシュ関数(例えば、SHA256)を使用して、対応する秘密鍵に基づいてシステム102の公開鍵を生成してもよい。いくつかの実装において、公開鍵と秘密/シークレット鍵は、テナントシステム102Aに対してのみ生成され、なぜならば、これらが、ピアツーピアブロックチェーンネットワーク108においてトランザクションを直接開始し得る唯一のシステム102であるからである。一実装において、公開鍵及び秘密/シークレット鍵は、メンバシップサービス302Aにより、動作204における生成に続いてウォレットオブジェクト304Cに記憶されてもよい。以下でより詳細に説明するように、トランザクションキュー104Aは、対応するテナントシステム102Aのトランザクションオブジェクトを生成するために、ウォレットオブジェクト304Cに記憶された秘密/シークレット鍵を利用することができる。詳細には、秘密/シークレット鍵は、ピアツーピアブロックチェーンネットワーク108により使用されるトランザクションの暗号要素を実装するために、トランザクションキュー104Aにより使用されてもよい。
【0032】
動作206において、メンバシップサービス302Aは、ピアツーピアブロックチェーンネットワーク108のための交換オブジェクトを決定することができる。一実装において、交換オブジェクトは、交換フィールドのセット、及び、各交換フィールドとテナントシステム102Aの物理オブジェクト内のフィールドとの間のマッピングを定義するマッピングメタデータにより定義される。例えば、図4は、テナントシステム102A及び102Aに対する物理オブジェクト306及び306をそれぞれ示す。この例において、テナントシステム102Aに対応する物理オブジェクト306は、フィールド406~406から構成されるレコード404~404を含み、各レコード404~404は、各フィールド406~406の値4081,1~M,Nを含む。同様に、テナントシステム102Aに対応する物理オブジェクト306は、フィールド412~412から構成されるレコード410~410を含み、各レコード410~410は、各フィールド412~412の値4141,1~G,Hを含む。物理オブジェクト306及び306の各々は、任意のタイプのデータを表すことができる。例えば、テナントシステム102Aは、医療ラボラトリ内で動作し、あるいはその他の方法で医療ラボラトリに対応してもよい。この例において、物理オブジェクト306は、医療ラボレポートを表すことができる(例えば、レコード404~404の各々は、別個の医療ラボレポートに対応してもよい)。テナントシステム102Aは、医院内で動作し、あるいはその他の方法で医院に対応してもよい。この例において、物理オブジェクト306は、患者ファイルを表すことができる(例えば、レコード410~410の各々は、別個の患者ファイルに対応してもよい)。
【0033】
図4に示す例示的な物理オブジェクト306及び306では、メンバシップサービス302Aは、図5に示すような交換オブジェクト502を決定することができ、これは、デジタル資産オブジェクト304Dに記憶することができる。図5に示すように、交換オブジェクト502は、交換フィールド504~504と、交換フィールド504を物理オブジェクト306のフィールドにマッピングするマッピングメタデータとにより定義される。この構成において、交換フィールド504は、物理オブジェクト306のフィールド406及び物理オブジェクト306のフィールド412にマッピングする。交換フィールド504は、物理オブジェクト306のフィールド406及び物理オブジェクト306のフィールド412にマッピングする。交換フィールド504は、物理オブジェクト306のフィールド406及び物理オブジェクト306のフィールド412にマッピングする。したがって、交換オブジェクト502のマッピングメタデータは、交換フィールド504を物理オブジェクト306のフィールドにマッピング/リンクする。いくつかの実装において、交換フィールド504~504の数(すなわち、P)は、(1)物理オブジェクト306内のフィールド406~406の数(すなわち、N)、及び/又は(2)物理オブジェクト306内のフィールド412~412の数(すなわち、H)未満である。したがって、テナントシステム102A及び/又は非テナントシステム102Bの間で分散されることになる生成されたトランザクションオブジェクトと、分散ピア台帳310に含まれる対応するデータ/情報は、機密データを含まなくてもよい(すなわち、交換フィールド504にマッピングされないフィールド406及び412内のデータ)。
【0034】
交換フィールド504の、物理オブジェクト306及び306のフィールド406及び412へのマッピングは、物理オブジェクト306及び306のフィールド406及び412間の関係を示す。例えば、物理オブジェクト306が医療ラボレポートを表し、物理オブジェクト306が患者ファイルを表す上記の例を用いると、物理オブジェクト306のフィールド406は、対応する医療ラボレポートが生成された患者識別子に対応することができ、物理オブジェクト306のフィールド412は、対応する患者ファイルが表す患者識別子に対応することができる。図5に示すように、及び上述のように、これらのフィールド406及び412は同じ交換フィールド504にマッピングされ、これらのフィールド406及び412が類似のデータを表す(例えば、フィールド406及び412は双方とも患者識別子を表す)ことを示している。
【0035】
いくつかの実装において、各ピア及び/又は対応するテナントシステム102Aは、ブロックチェーンネットワーク108を含む複数のブロックチェーンネットワークの一部でもよい。これらのブロックチェーンネットワークの各々は、ブロックチェーンネットワーク108との重複メンバシップを含んでもよく、かつ/あるいはさらなるピアを含んでもよい。いくつかの実装において、ネットワークオブジェクト304Aは、マルチテナントサーバ104により管理される各ブロックチェーンネットワークの識別子を含んでもよく、ピアオブジェクト304Bは、マルチテナントサーバ104により管理されるブロックチェーンネットワーク内の各ピアの識別子を含んでもよく、ウォレットオブジェクト304Cは、マルチテナントサーバ104により管理されるブロックチェーンネットワーク内の各ピア及び/又はテナントシステム102の鍵を含んでもよく、デジタル資産オブジェクト304Dは、マルチテナントサーバ104により管理される各ブロックチェーンネットワークの交換オブジェクト502を含んでもよい。
【0036】
動作208において、各非テナントシステム102Bは、テナントシステム102Aとの関連づけ/関係を確立することができる。例えば、図3A及び図3Bに示すように、非テナントシステム102Bは、テナントシステム102Aとの関連づけ/関係を確立することができ、非テナントシステム102Bは、テナントシステム102Aとの関連づけ/関係を確立することができる。以下でより詳細に説明するように、非テナントシステム102Bとテナントシステム102Aとの間のこの関連づけ/関係は、非テナントシステム102Bが、マルチテナントサーバ104により管理されるピアツーピアブロックチェーンネットワーク108においてトランザクションを間接的に開始することを可能にする。詳細には、非テナントシステム102Bが、マルチテナントサーバ104により管理されるマルチテナントシステム/環境のテナントでないにもかかわらず、非テナントシステム102Bは、対応するテナントシステム102Aを介して、マルチテナントサーバ104により管理されるピアツーピアブロックチェーンネットワーク108におけるトランザクションを間接的に開始することができる。
【0037】
動作210において、非テナントシステム102Bの非テナント要求生成器114は、非テナントトランザクション要求を生成し、関連づけられたテナントシステム102Aに送信することができる。例えば、例示的なコンピューティング環境300A及び/又は300Bにおいて、非テナントシステム102Bは、テナントシステム102Aに関連づけられる。方法200を説明する目的で用いられるこの例において、非テナントシステム102Bの非テナント要求生成器114は、動作210において非テナントトランザクション要求を生成し、この非テナントトランザクション要求をテナントシステム102Aに送信することができる。非テナントトランザクション要求は、非テナントシステム102Bにより、ピアツーピアブロックチェーンネットワーク108におけるトランザクションを開始するために使用することができる。非テナントシステム102Bのトランザクションは、ピアツーピアブロックチェーンネットワーク108においてトランザクションについて合意すると、非テナントシステム102Bの物理オブジェクトを修正するよう試みることができる。
【0038】
動作212において、関連づけられたテナントシステム102Aは、非テナントトランザクション要求を受信する。詳細には、テナントシステム102Aの要求受信器112は、動作212において非テナントトランザクション要求を受信する。
【0039】
動作214において、テナントシステム102Aのトランザクション生成器110は、ピアツーピアブロックチェーンネットワーク108におけるトランザクションを開始するために、トランザクション要求(「テナントトランザクション要求」と呼ばれることもある)を生成し、マルチテナントサーバ104に送信することができる。
【0040】
動作216において、ブロックチェーンサービス104Dのトランザクション管理サービス302Bは、テナントシステム102Aからトランザクション要求を受信することができる。トランザクション要求は、(1)物理オブジェクト306に追加するための提案された新しいレコード、又は(2)物理オブジェクト306の既存のレコードへの修正を含む。例えば、上記の例に記載されるように、物理オブジェクト306は、医療ラボレポートに対応することができ、テナントシステム102Aに関連づけられた仮想空間/組織314のトランザクション管理サービス302Bは、動作216において、新しいラボレポートレコード404を追加するトランザクション要求を受け取ることができる。別の例では、再びになるが、物理オブジェクト306は、医療ラボレポートに対応することができ、仮想空間/組織314のトランザクション管理サービス302Bは、動作216において、既存のラボレポートレコード404を修正する要求を受け取ることができる。物理オブジェクト306への提案された改変は、非テナントトランザクション要求に引き起こされ、記述される。説明の目的で、方法200は、仮想空間/組織314のトランザクション管理サービス302Bが動作216においてレコードを物理オブジェクト306に追加するトランザクション要求を受信することに関連して説明される。しかしながら、方法200は、物理オブジェクト306の修正に関して同様の方法で機能し得る。
【0041】
動作218において、テナントシステム102Aの仮想空間/組織314のトランザクション管理サービス302Bは、シャドウオブジェクト308に、動作216の新しいレコードに対応するレコードを生成する。シャドウオブジェクト308は、テナントシステム102Aに対応することができ、物理オブジェクト306の全てのフィールド406~406を含むことができる。テナントシステム102Aの対応するピア台帳310にも表現されるコミットされたデータ(例えば、テナントシステム102Aの物理オブジェクト306のレコード404への追加/修正)を記憶する物理オブジェクト306と対照的に、シャドウオブジェクト308は、物理オブジェクト306へのコミットされていないデータを表す。以下でより詳細に説明するように、テナントシステム102Aのシャドウオブジェクト308内のデータは、物理オブジェクト306に対してコミットされ、テナントシステム102Aのピア台帳310により表現される前に、他のテナントシステム102A及び非テナントシステム102Bによる合意を通じて検証/立証される必要がある。このコミット及び表現は、以下でより詳細に説明するように、物理オブジェクト306、非テナントシステム102Bの物理オブジェクト、ピア台帳310、及び非テナントシステム102Bのピア台帳にも拡張することができる。
【0042】
図6は、一例示的な実装による、テナントシステム102A及び物理オブジェクト306に対応するシャドウオブジェクト308の一例を示す。図示のように、シャドウオブジェクト308は、物理オブジェクト306に対する2つの別個の提案された改変に対応する2つのレコード604及び604を含む。例えば、第1のレコード604は、物理オブジェクト306内のレコード404の追加/挿入に対応し、第2のレコード604は、物理オブジェクト306内の新たに追加/挿入されたレコード404のためのフィールド値408の修正/更新に対応する。例えば、第1のレコード604は、医療ラボレポートに対応するレコード404の追加/挿入を提案してもよく、一方で、第2のレコード604は、新しい医療ラボレポートレコード404のいくつかのフィールド値408の修正(例えば、医療ラボレポートのステータスに対応するフィールド値408の修正/更新)を提案してもよい。
【0043】
動作220において、イベント管理サービス302C及び/又はトランザクションキュー104Aは、(1)動作218でシャドウオブジェクト308に追加されたレコード604、及び(2)ピアツーピアブロックチェーンネットワーク108の交換オブジェクト502に基づいて、トランザクションオブジェクトを生成することができる。詳細には、トランザクションオブジェクトは、交換フィールド504~504の各々のための値を含んでもよく、トランザクションオブジェクトは、動作218においてシャドウオブジェクト308に追加されたレコード604からのデータ/フィールド値を、対応する交換フィールド504~504に含む。例えば、図7は、一例示的な実装による、トランザクションオブジェクト702の一例を示す。
【0044】
図7に示すように、トランザクションオブジェクト702は、交換オブジェクト502の全ての交換フィールド504~504と、交換フィールド504~504と物理オブジェクト306のフィールド406との間のマッピングに基づく適切な位置における、シャドウオブジェクト308内のレコード604からのフィールド値606とを含む。レコード604に関連して示されているが、別個のトランザクションオブジェクト702がレコード604に対して生成されてもよい。後述するように、例示の目的で以降用いられるトランザクションオブジェクト702は、提案されたレコード404をコミットするためのブロックチェーンネットワーク108内の合意があるかを判定するために(例えば、トランザクションオブジェクト702を立証/検証するために)、他のテナントシステム102A及び非テナントシステム102Bに渡され、あるいはその他の方法で利用可能にされ得る。
【0045】
一実装において、トランザクションオブジェクト702の生成は、(1)シャドウオブジェクト308からのレコード604、(2)トランザクションオブジェクト702の一意割り当て識別子(例えば、トランザクションオブジェクト702が生成されるときこれらに順次割り当てられる識別子)、及び(3)テナントシステム102Aの秘密鍵(すなわち、改変を提案するテナントシステム102Aの秘密鍵)に基づいて、トランザクションオブジェクトに署名を追加することを含んでもよい。例えば、レコード604とトランザクションオブジェクト702の一意割り当て識別子をマージし、あるいはその他の方法で一緒に組み合わせて、単一のメッセージを形成することができ、テナントシステム102Aの秘密鍵を使用して、メッセージを(例えば、SHA256などの一方向暗号ハッシュ関数を使用して)暗号化し、デジタル署名を形成することができる。したがって、トランザクションオブジェクト702は、テナントシステム102Aの秘密鍵を使用して生成された署名と共に、シャドウオブジェクト308からのレコード604を含む。
【0046】
動作222において、イベント管理サービス302C及びトランザクションキュー104Aは、トランザクションオブジェクト702を他のテナントシステム102A及び非テナントシステム102Bに利用可能にすることができる。いくつかの実装において、トランザクションオブジェクト702を他のテナントシステム102Aに利用可能にすることは、トランザクションキュー104Aがトランザクションオブジェクト702を、テナントシステム102Aがアクセス可能なマルチテナントサーバ104の部分/パーティションに配置することを含む。例えば、上述のように、マルチテナントサーバ104は、テナントシステム102Aの各々について別個の仮想空間/組織314を含んでもよい。各仮想空間/組織314は、そのテナントシステム102Aのみがアクセス可能であって他のテナントシステム102Aがアクセス不可能であるデータ及びサービスを含む。動作222において、マルチテナントサーバ104は、テナントシステム102Aの仮想空間/組織314からテナントシステム102Aの仮想空間/組織314Aにトランザクションオブジェクト702を渡すことができ、それにより、テナントシステム102Aの仮想空間/組織314は、可能な立証/検証のためにトランザクションオブジェクト702を処理/分析することができる。
【0047】
上述のように、イベント管理サービス302C及びトランザクションキュー104Aは、他のテナントシステム102Aに追加で、動作222において、トランザクションオブジェクト702を非テナントシステム102Bに利用可能にすることもできる。例えば、マルチテナントサーバ104は、トランザクションオブジェクト702を非テナントシステム102Bに送信することができ、それにより、トランザクションオブジェクト702は、非テナントシステム102Bの合意ユニット116により受信することができる。
【0048】
動作224において、トランザクション管理サービス302Bは、テナントシステム102A及び非テナントシステム102Bからの応答を監視して、トランザクションオブジェクト702に関して合意に達したか、又は合意に達するのに失敗したかを判定することができる。一実装において、合意管理サービス302Dは、トランザクションオブジェクト702に関してテナントシステム102A及び非テナントシステム102Bによっていつ合意に到達したかを判定する際に、トランザクション管理サービス302Bにより使用される閾値又はルールを定義することができる。例えば、いくつかの実装において、合意管理サービス302Dは、合意が、システム102A、102B、及び102Bの全てがトランザクションオブジェクト702を立証/検証することを要することを示してもよく、一方で、他の実装において、合意管理サービス302Dは、合意が、システム102A、102B、及び102Bのうち過半数がトランザクションオブジェクト702を立証/検証することを要することを示してもよい。いくつかの実装において、同意管理(consent management)サービス302Eは、トランザクションオブジェクト702の立証/検証が適切であるかを判定するために、システム102A、102B、及び102Bにより、詳細には、テナントシステム102Aに関連づけられた仮想空間/組織314並びに非テナントシステム102B及び102Bに関連づけられた合意ユニット116及び116により使用されるルール及び/又は動作を示す。例えば、同意管理サービス302Eは、トランザクションオブジェクト702がテナントシステム102Aから発信され、テナントシステム102Aにより承認されたかどうかを判定するために、テナントシステム102Aの公開鍵がトランザクションオブジェクト702内の署名及びメッセージと共に使用されることを示してもよい。
【0049】
動作226において、トランザクション管理サービス302B及びトランザクションキュー104Aは、システム102A、102B、及び102Bからの合意の取得の失敗(例えば、合意管理サービス302Dにより定義/指示されるとおりの合意の取得の失敗)に応答して、トランザクションオブジェクト702を破棄することができる。いくつかの実装において、トランザクションオブジェクト702を破棄することは、トランザクションオブジェクト702及び対応する物理オブジェクト306への改変(すなわち、物理オブジェクト306への新しいレコード404の追加、又は物理オブジェクト306への既存のレコード404の修正)がピアツーピアブロックチェーンネットワーク108により拒絶された(すなわち、ピアツーピアブロックチェーンネットワーク108における合意が達成/取得されなかった)ことを、テナントシステム102Aに対して示すことを含んでもよい。この通知は、その後、非テナントシステムトランザクション要求を介して動作210でトランザクションオブジェクト702を間接的に開始した非テナントシステム102Bに転送されてもよい。トランザクションオブジェクト702及び対応する物理オブジェクトへの改変がピアツーピアブロックチェーンネットワーク108により拒絶されたとの通知の受信に応答して、仮想空間/組織314は、トランザクションオブジェクト702に対応するシャドウオブジェクト308内のレコード604を削除することができる。
【0050】
動作228において、トランザクション管理サービス302Bは、リーダテナントシステム102Aのために、合意が達成されたトランザクションオブジェクト702及び/又はトランザクションオブジェクト702に対応するシャドウオブジェクト308内のレコード604をコミットすることができる。いくつかの実装において、リーダテナントシステム102Aは、メンバシップサービス302Aによりピアツーピアブロックチェーンネットワーク108内のテナントシステム102Aの中からランダムに選択されてもよい。リーダテナントシステム102Aが、テナントシステム102A(すなわち、物理オブジェクト306への改変を引き起こし、あるいはその他の方法で該改変に関連づけられたテナントシステム102A)であるとき、テナントシステム102Aの仮想空間/組織314内のトランザクション管理サービス302Bは、動作228においてテナントシステム102Aのために、合意が達成されたトランザクションオブジェクト702に対応するシャドウオブジェクト308内のレコード604をコミットすることができる。この状況において、コミットは、シャドウオブジェクト308からのレコード604を物理オブジェクト306に追加することを含んでもよい。リーダテナントシステム102Aが、テナントシステム102Aであるとき、テナントシステム102Aの対応する仮想空間/組織314内のトランザクション管理サービス302Bは、動作228においてテナントシステム102Aのために、合意が達成されたトランザクションオブジェクト702をコミットすることができる。この状況において、コミットは、交換オブジェクト502又は対応するマッピングオブジェクト316により示されるように物理オブジェクト306内の対応するフィールド412にマッピングされたシャドウオブジェクト308からのフィールド値606を含むレコード410を物理オブジェクト306に追加すること、又は物理オブジェクト306内のレコード410を修正することを含んでもよい。
【0051】
動作230において、トランザクション管理サービス302Bは、リーダテナントシステム102Aのために、トランザクションオブジェクト702に対応するピア台帳310内のエントリ/ブロックを追加することができる。詳細には、リーダテナントシステム102Aの仮想空間/組織314のトランザクション管理サービス302Bは、リーダテナントシステム102Aのために、トランザクションオブジェクト702に対応するピア台帳310内のエントリ/ブロックを追加してもよい。ピア台帳310に追加されるエントリ/ブロックは、いくつかの情報を含んでもよい。例えば、図8に示すように、ピア台帳310内の各エントリ/ブロック804~804は、ピア台帳802内の前のエントリ/ブロック804への参照、トランザクションオブジェクト702(1つ以上の他のトランザクションオブジェクトと共に)、及びノンス(すなわち、ピアツーピアブロックチェーンネットワーク108の要件を満たすために使用される任意の数字)を含んでもよい。
【0052】
動作232において、トランザクション管理サービス302B及び/又はトランザクションキュー104Aは、リーダテナントシステム102Aのために、トランザクションオブジェクト702を対応する物理オブジェクトに対してコミットし、対応するピア台帳にブロック/エントリを追加するように(例えば、物理オブジェクト306及びピア台帳310)、要求を送信し、あるいはその他の方法で他のシステム102をトリガすることができる。例えば、図9に示すように、各非テナントシステム102Bは、対応する非テナントシステム102Bにより維持される物理オブジェクト306(例えば、物理オブジェクト306及び306)及びピア台帳310(例えば、ピア台帳310及び310)を含んでもよい。いくつかの実装において、非テナントシステム102Bのピア台帳310は、非テナントシステム102Bに関連するトランザクションに対応するブロックのみを維持し、あるいはその他の方法で含む。したがって、非テナントシステム102Bのピア台帳310(例えば、ピア台帳310及び310)は、テナントシステム102Bのピア台帳310からの情報/ブロックのサブセット(例えば、ピア台帳310及び310)を含んでもよい。ピア台帳310は、コンピューティング環境100、300A、及び/又は300Bがデータの透明性及び監査可能性を維持することを可能にする。詳細には、マルチテナントサーバ104は、各トランザクションに対する不変性を、トランザクションをピア台帳310に記録/反映することにより提供し、該ピア台帳310は、全てのシステム102にわたり複製される。いくつかの実装において、ピア台帳310は、マークル有向非巡回グラフ(Merkle directed acyclic graph、DAG)構造に記憶されてもよい。マークルDAGは、Oracle(登録商標)及び/又はHBaseストアで表現されてもよい。データがピア台帳310にコミットされることに関連して、コミットされた後、又はコミットされると、関連物理オブジェクト306は、ピア台帳310内の最も最近のデータを用いて更新される。
【0053】
上述のように、方法200は、マルチテナントサーバ104がテナントシステム102A及び非テナントシステム102Bのためにピアツーピアブロックチェーンネットワーク108におけるデータを管理することを可能にする。詳細には、マルチテナントサーバ104により提供されるクラウド環境を使用して、マルチテナントサーバ104により管理されるシステム102と、マルチテナントサーバ104により管理されていないシステム102との間のブロックチェーントランザクションを管理することができる。したがって、方法200は、ピアツーピアブロックチェーンネットワーク108の機能性/動作を集中化しながら、テナント間及びテナント内通信の間、クラウド環境がブロックチェーンネットワークと同じレベルの情報のセキュリティ、信頼性、及び不変性を提供することを可能にする。
【0054】
いくつかの実装において、コンピューティング環境300A及び/又は300Bは、マルチテナントサーバ104の他のコンポーネントを実装するためのサービス及び/又はメタデータから構成されるプラットフォーム312の上に構築されてもよい。いくつかの実装において、ブロックチェーンサービス104Dは、各テナント/ピアに関連づけられたレコード及び項目を追跡するためのコインサービス302Fなどのさらなるサービスを含んでもよい。
【0055】
上記で用いられたように、用語「ユーザ」は、システム及び/又はサービスを使用するエンティティ(例えば、個人)を参照する一般的な用語である。マルチテナントアーキテクチャは、各テナントに、ソフトウェアインスタンスの専用シェアと、(典型的には)ユーザ管理、テナント特有の機能性、構成、カスタマイズ、非機能的プロパティ、関連アプリケーション等のためのテナント特有のデータを入力する能力を提供する。マルチテナンシー(Multi-tenancy)は、マルチインスタンスアーキテクチャと対照をなし、別個のソフトウェアインスタンスが異なるテナントのために動作する。テナントには、サービスを提供するソフトウェアインスタンスに対する特定の特権を有する共通のアクセスを共有するユーザのグループが含まれる。テナントは、組織(例えば、企業、企業内の部署等)でもよい。テナントは、システム及び/又はサービスに対する1つ以上の役割を有することができる。例えば、顧客関係管理(CRM)システム又はサービスの文脈において、テナントは、CRMシステム又はサービスを使用してベンダの1以上の顧客に関してテナントが有する情報を管理する、ベンダでもよい。別の例として、データアズアサービス(Data as a Service、DAAS)の文脈において、1つのテナントセットが、データを提供するベンダでもよく、別のテナントセットが、ベンダのデータのうち異なるもの又は全ての顧客でもよい。別の例として、プラットフォームアズアサービス(Platform as a Service、PAAS)の文脈において、1つのテナントセットが、アプリケーション/サービスを提供する第三者アプリケーション開発者でもよく、別のテナントセットが、第三者アプリケーション開発者のうち異なるもの又は全ての顧客でもよい。ユーザは、システム及び/又はサービスに対して1つ以上の役割を有することができる。いくつかの例を提供するために、ユーザは、テナント(例えば、ベンダ又は顧客)の代表者(「エンドユーザ」と呼ばれることもある)、システム及び/又はサービスを提供する企業の代表者(例えば、管理者)、及び/又はプラットフォームアズアサービス(PAAS)上でアプリケーションを作成及び維持している第三者アプリケーション開発者の代表者(例えば、プログラマ)でもよい。
【0056】
上記の実装の1つ以上の部分は、ソフトウェア、及び/又はソフトウェアとハードウェアの組み合わせを含んでもよい。電子デバイス(コンピューティングデバイス、コンピュータ等とも呼ばれる)は、プロセッサのセット上での実行のためのコード(これは、ソフトウェア命令から構成され、コンピュータプログラムコード又はコンピュータプログラムと呼ばれることもある)を記憶し、及び/又はデータを記憶するために、1つ以上のマシン読取可能記憶媒体(例えば、磁気ディスク、光ディスク、読取専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、ソリッドステートドライブ(SSD))に結合された1つ以上のプロセッサのセットなどの、ハードウェア及びソフトウェアを含む。例えば、電子デバイスは、不揮発性メモリ(より遅い読み取り/書き込み時間を有し、例えば、磁気ディスク、光ディスク、読取専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、SSD)及び揮発性メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM))を含んでもよく、ここで、不揮発性メモリは、電子デバイスがオフにされたとき又は電力がその他の方法で除去されたときでもコード/データを持続させ、電子デバイスは、動作の間、その電子デバイスのプロセッサのセットにより実行されるべきコードの部分を、その電子デバイスの不揮発性メモリから揮発性メモリにコピーし、なぜならば、揮発性メモリは、典型的には、より速い読み取り/書き込み時間を有するためである。別の例として、電子デバイスは、電子デバイスがオフにされたときコード/データを持続させ、かつ十分に速い読み取り/書き込み時間を有する不揮発性メモリ(例えば、相変化メモリ)を含んでもよく、それにより、コード/データは、実行されるべきコード/データの部分を揮発性メモリにコピーするのでなく、プロセッサのセットに直接提供する(例えば、プロセッサのセットのキャッシュにロードする)ことができ、換言すれば、この不揮発性メモリは、長期記憶装置及びメインメモリの双方として動作し、したがって、電子デバイスは、メインメモリのための揮発性メモリを全く有さず、あるいは少量のみ有してもよい。コード及び/又はデータをマシン読取可能記憶媒体に記憶することに追加で、典型的な電子デバイスは、1つ以上のマシン読取可能伝送媒体(キャリアとも呼ばれる)(例えば、電気的、光学的、無線、音響、又は他の形式の伝搬信号、例えば、搬送波、赤外線信号など)を介してコード及び/又はデータを伝送することができる。例えば、典型的な電子デバイスは、他の電子デバイスとのネットワーク接続を確立するため(伝搬信号を用いてコード及び/又はデータを送信及び/又は受信するため)に、1つ以上の物理ネットワークインターフェースのセットも含む。したがって、電子デバイスは、1つ以上のマシン読取可能媒体(コンピュータ読取可能媒体とも呼ばれる)を用いてコード及び/又はデータを(内部的に、及び/又はネットワークを介して他の電子デバイスとの間で)記憶及び送信することができる。
【0057】
電子デバイスは、様々な目的で使用される。例えば、電子デバイス(サーバ電子デバイスと呼ばれることもある)は、サービスと通信するためにクライアントソフトウェア(クライアントコード又はテナントシステムと呼ばれることもある)を実行する別の電子デバイス(クライアント電子デバイス、クライアントコンピューティングデバイス、又はクライアントデバイスと呼ばれることもある)にサービスを提供するために使用される1つ以上のサーバとして、当該電子デバイスに動作させるコードを実行することができる。サーバ及びクライアントの電子デバイスは、それぞれ、管理者(管理ユーザとしても知られる)及びエンドユーザの役割のユーザにより操作されてもよい。
【0058】
図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上に実装される)。
【0059】
計算仮想化を使用する電子デバイスにおいて、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と呼ばれる。
【0060】
電子デバイスの代替的な実装は、上述したものから多くのバリエーションを有してもよい。例えば、カスタマイズされたハードウェア及び/又はアクセラレータが、電子デバイス内でさらに使用されてもよい。
【0061】
ネットワークデバイス(ND)は、ネットワーク上の他の電子デバイス(例えば、他のネットワークデバイス、ユーザ電子デバイス、サーバ電子デバイス)を通信上相互接続する電子デバイスである。いくつかのネットワークデバイスは、複数のネットワーキング機能(例えば、ルーティング、ブリッジング、スイッチング、レイヤ2集約、セッションボーダー制御、サービス品質、及び/又は加入者管理)のサポートを提供し、及び/又は複数のアプリケーションサービス(例えば、データ、音声、及びビデオ)のサポートを提供する「複数サービスネットワークデバイス」である。
【0062】
図10Bは、いくつかの実装による、システム102及びマルチテナントサーバ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により操作される。
【0063】
一実装において、システム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を含んでもよい。
【0064】
いくつかの実装において、サービス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クエリ)を生成してもよい。
【0065】
いくつかの実装において、サービス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つ以上のシステムプロセスにより検出されてもよく、該システムプロセスは、テナントが呼び出しを行うためのアプリケーションメタデータを取り出すこと、及びメタデータをソフトウェアコンテナ(例えば、仮想マシン)内のアプリケーションとして実行することを管理する。
【0066】
ネットワーク1082は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうちいずれか1つ又は任意の組み合わせでもよい。ネットワークは、電気電子技術者協会(Institute of Electrical and Electronics Engineers、IEEE)プロトコル、第3世代パートナーシッププロジェクト(3rd Generation Partnership Project、3GPP)プロトコル、又は類似の有線及び/又は無線プロトコルを含む1つ以上のネットワークプロトコルに準拠してもよく、システム1040とユーザ電子デバイス1080A~Sとの間でデータをルーティングするための1つ以上の中間デバイスを含んでもよい。
【0067】
各ユーザ電子デバイス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からのそれに利用可能な情報、ページ、及びアプリケーションにアクセスし、処理し、閲覧することができる。
【0068】
上記説明では、より完全な理解を提供するために、リソース区分/共有/複製の実装、システムコンポーネントのタイプ及び相互関係、並びに論理区分/統合の選択などの、多数の特定の詳細が説明されている。しかしながら、当業者には、本発明がこのような特定の詳細なしに実施され得ることが理解されるであろう。他の例では、制御構造、論理実装、OPコード、オペランドを指定する手段、及び完全なソフトウェア命令シーケンスは詳細に示されておらず、なぜならば、当業者は、含まれる説明により、過度の実験なしに記載されているものを実装することができるためである。
【0069】
明細書中の「1つの実装」、「一実装」、「一例示的な実装」等への参照は、記載された実装が特定の特徴、構造、又は特性を含み得るが、あらゆる実装が必ずしも上記特定の特徴、構造、又は特性を含まなくてもよいことを示す。さらに、このようなフレーズは、必ずしも同じ実装を参照していない。さらに、特定の特徴、構造、又は特性がある実装に関連して記載されているとき、明示的に記載されているか否かにかかわらず、他の実装に関連してそのような特徴、構造、又は特性に影響を及ぼすことは当業者の知識の範囲内であることが提示される。
【0070】
破線境界で囲まれたテキスト及びブロック(例えば、大きいダッシュ、小さいダッシュ、ドット・ダッシュ、及びドット)は、本明細書において、いくつかの実装にさらなる特徴を追加する任意の動作及び/又は構造を説明するために用いられることがある。しかしながら、そのような表記は、これらが唯一の選択肢又は任意動作であること、及び/又は実線境界を有するブロックが特定の実装において任意でないことを意味するものとみなされるべきではない。
【0071】
以下の説明及び特許請求の範囲において、用語「結合される」がその派生語と共に用いられることがある。「結合される」は、互いに直接物理的又は電気的に接触している可能性又はそうでない可能性のある2つ以上の要素が、協働し又は互いに相互作用することを示すために用いられる。
【0072】
フロー図における動作は、他の図における例示的な実装を参照して説明されている。しかしながら、フロー図の動作は、他の図を参照して論じたもの以外の実装により実行することができ、これらの他の図を参照して論じた実装は、フロー図を参照して論じたものと異なる動作を実行することができる。
【0073】
図中のフロー図は、特定の実装により実行される特定の動作順序を示しているが、そのような順序は例示的であることを理解されたい(例えば、代替的な実装が、異なる順序で動作を実行する、特定の動作を組み合わせる、特定の動作を重ねるなどしてもよい)。
【0074】
上記説明はいくつかの例示的な実装を含むが、当業者は、本発明が説明された実装に限定されず、別記の特許請求の範囲の主旨及び範囲内で修正及び改変を実施できることを認識するであろう。したがって、本説明は、限定的でなく例示的なものである。
図1
図2A
図2B
図3A
図3B
図4
図5
図6
図7
図8
図9
図10A
図10B