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

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

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

<>
  • 特許-テナント識別子の置換 図1
  • 特許-テナント識別子の置換 図2A
  • 特許-テナント識別子の置換 図2B
  • 特許-テナント識別子の置換 図2C
  • 特許-テナント識別子の置換 図3
  • 特許-テナント識別子の置換 図4
  • 特許-テナント識別子の置換 図5A
  • 特許-テナント識別子の置換 図5B
  • 特許-テナント識別子の置換 図5C
  • 特許-テナント識別子の置換 図5D
  • 特許-テナント識別子の置換 図6
  • 特許-テナント識別子の置換 図7
  • 特許-テナント識別子の置換 図8
  • 特許-テナント識別子の置換 図9
  • 特許-テナント識別子の置換 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】テナント識別子の置換
(51)【国際特許分類】
   G06F 16/22 20190101AFI20231225BHJP
【FI】
G06F16/22
【請求項の数】 22
(21)【出願番号】P 2021505234
(86)(22)【出願日】2019-09-23
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 US2019052455
(87)【国際公開番号】W WO2020068682
(87)【国際公開日】2020-04-02
【審査請求日】2022-09-12
(31)【優先権主張番号】16/139,889
(32)【優先日】2018-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ファンガネル,トーマス
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特表2020-502626(JP,A)
【文献】国際公開第2018/089344(WO,A1)
【文献】米国特許出願公開第2006/0085485(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
コンピュータで実施される方法であって:
記録を受信するステップ;
前記記録のキー及び走査記述子の少なくとも1つから、前記記録についてのテナント識別子の値を決定するステップ;
前記記録のキー内の前記テナント識別子の値を新規テナント識別子の値に置き換えるステップ;
前記記録の記録ヘッダ内に格納されたビットマップを用いて、前記テナント識別子の符号化値を格納した前記記録の1つ以上の列を識別するステップ;及び
前記新規テナント識別子の符号化値を、1つ以上の列のうち、前記記録ヘッダ内に格納されたビットマップによって識別され、テナント識別子置換が可能であることを示す属性を備える列の中に格納するステップ;
を含む方法。
【請求項2】
前記ビットマップは、前記テナント識別子の前記符号化値を格納した前記記録の列の指示を備える、請求項1に記載の方法。
【請求項3】
前記テナント識別子の前記符号化値は前記記録ヘッダに格納され、
前記テナント識別子の前記符号化値を、前記1つ以上の列のうち、前記ビットマップによって識別され、テナント識別子置換が無効であることを示す属性を備える列の中に格納するステップ;
をさらに含む、請求項1に記載の方法。
【請求項4】
前記記録は、マルチテナントデータベースシステムの永続記憶装置から受信される、請求項1に記載の方法。
【請求項5】
前記記録は、マルチテナントデータベースシステムの作業記憶装置内で開梱される、請求項1に記載の方法。
【請求項6】
前記記録は、前記テナント識別子の前記値によって識別されるテナントによって所有されるデータベースから複製されたサンドボックスデータベースの一部であり、かつ
前記サンドボックスデータベースは、前記新規テナント識別子の値によって識別されるテナントによって所有される、
請求項1に記載の方法。
【請求項7】
コンピュータで実施される方法であって:
記録を受信するステップ;
前記記録のテナント識別子列からテナント識別子の符号化値を削除するステップ;
前記テナント識別子の前記符号化値が、前記記録の少なくとも1つの他の列に格納されていることを判定するステップ;
前記テナント識別子の前記符号化値が格納されている前記記録の列を識別するビットマップを生成するステップ;
前記ビットマップにより識別される前記記録の前記列から前記テナント識別子の前記符号化値を削除するステップ;及び
前記ビットマップと前記テナント識別子の前記符号化値を前記記録の記録ヘッダ内に格納するステップ;
を含む方法。
【請求項8】
前記ビットマップと前記テナント識別子の前記符号化値とが前記記録ヘッダ内に格納されていることを示すビットを、前記記録の前記記録ヘッダ内に格納するステップ;
をさらに含む、請求項7に記載の方法。
【請求項9】
前記テナント識別子の前記符号化値が前記記録の前記テナント識別子列から除去されたことを示すビットを、前記記録の前記記録ヘッダ内に格納するステップ;
をさらに含む、請求項7に記載の方法。
【請求項10】
前記テナント識別子列を識別するテナント識別子列属性番号を、前記記録の前記記録ヘッダ内に格納するステップ;
をさらに含む、請求項7に記載の方法。
【請求項11】
テナント識別子の置換のためにコンピュータに実装されるシステムであって:
永続記憶装置及び作業記憶装置を含む1つ以上の記憶デバイス;及び
前記永続記憶装置から記録を取り出し、該記録を前記作業記憶装置に書き込み、前記記録についてのテナント識別子の値を前記記録のキーと走査記述子の少なくとも1つから決定し、前記記録のキーの中の前記テナント識別子の前記値を新規テナント識別子の値に置き換え、前記記録の記録ヘッダに格納されたビットマップを用いて前記テナント識別子の符号化値を格納した前記記録の1つ以上の列を識別し、該1つ以上の列のうち前記記録ヘッダに格納された前記ビットマップにより識別されテナント識別子の置換が可能であることを示す属性を備える列に前記新規テナント識別子の符号化値を格納するプロセッサ;
を含むシステム。
【請求項12】
前記ビットマップは、前記テナント識別子の前記符号化値を格納した前記記録の列の指示を備える、請求項11に記載のシステム。
【請求項13】
前記テナント識別子の前記符号化値は前記記録ヘッダに格納され、
前記プロセッサがさらに、前記テナント識別子の前記符号化値を、前記1つ以上の列のうち、前記ビットマップによって識別され、テナント識別子置換が無効であることを示す属性を備える列の中に格納する;
ことを特徴とする請求項11に記載のシステム。
【請求項14】
前記永続記憶装置は、マルチテナントデータベースシステムの一構成要素である、請求項11に記載のシステム。
【請求項15】
前記記録は、マルチテナントデータベースシステムの作業記憶装置内で開梱される、請求項11に記載のシステム。
【請求項16】
前記記録は、前記テナント識別子の前記値によって識別されるテナントによって所有されるデータベースから複製されたサンドボックスデータベースの一部であり、かつ
前記サンドボックスデータベースは、前記新規テナント識別子の値によって識別されるテナントによって所有される、
請求項11に記載のシステム。
【請求項17】
テナント識別子の置換のためにコンピュータに実装されるシステムであって:
永続記憶装置及び作業記憶装置を含む1つ以上の記憶デバイス;及び
前記永続記憶装置から記録を取り出し、該記録を前記作業記憶装置に書き込み、前記記録のテナント識別子列からテナント識別子の符号化値を除去し、前記テナント識別子の前記符号化値が前記記録の少なくとも1つの他の列に格納されていることを決定し、前記テナント識別子の前記符号化値が格納されている前記記録の列を識別するビットマップを生成し、該ビットマップにより識別される前記記録の列から前記テナント識別子の前記符号化値を除去し、前記ビットマップ及び前記テナント識別子の前記符号化値を前記記録の記録ヘッダ内に格納するプロセッサ;
を含むシステム。
【請求項18】
前記プロセッサは、前記記録の前記記録ヘッダ内に、前記ビットマップ及び前記テナント識別子の前記符号化値が前記記録ヘッダ内に格納されていることを示すビットをさらに格納する、請求項17に記載のシステム。
【請求項19】
前記プロセッサは、前記記録の前記記録ヘッダ内に、前記テナント識別子の前記符号化値が前記記録の前記テナント識別子列から除去されたことを示すビットをさらに格納する、請求項17に記載のシステム。
【請求項20】
前記プロセッサは、前記記録ヘッダ内に、前記テナント識別子列を識別するテナント識別子列属性番号をさらに格納する、請求項17に記載のシステム。
【請求項21】
1つ又は複数のコンピュータ及び1つ又は複数の記憶デバイスを含むシステムであり、前記1つ又は複数のコンピュータによって実行されると、
記録を受信するステップ;
前記記録のキー及び走査記述子の少なくとも1つから、前記記録についてのテナント識別子の値を決定するステップ;
前記記録のキー内の前記テナント識別子の値を新規テナント識別子の値に置き換えるステップ;
前記記録の記録ヘッダ内に格納されたビットマップを用いて、前記テナント識別子の符号化値を格納した前記記録の1つ以上の列を識別するステップ;及び
前記新規テナント識別子の符号化値を、1つ以上の列のうち、前記記録ヘッダ内に格納されたビットマップによって識別され、テナント識別子置換が可能であることを示す属性を備える列の中に格納するステップ;
を含む動作を前記1つ又は複数のコンピュータに動作を実行させることができる命令を前記記憶デバイスが記憶しているシステム。
【請求項22】
1つ又は複数のコンピュータ及び1つ又は複数の記憶デバイスを含むシステムであり、前記1つ又は複数のコンピュータによって実行されると、
記録を受信するステップ;
前記記録のテナント識別子列からテナント識別子の符号化値を削除するステップ;
前記テナント識別子の前記符号化値が、前記記録の少なくとも1つの他の列に格納されていることを判定するステップ;
前記テナント識別子の前記符号化値が格納されている前記記録の列を識別するビットマップを生成するステップ;
前記ビットマップにより識別される前記記録の前記列から前記テナント識別子の前記符号化値を削除するステップ;及び
前記ビットマップと前記テナント識別子の前記符号化値を前記記録の記録ヘッダ内に格納するステップ;
を含む動作を前記1つ又は複数のコンピュータに動作を実行させることができる命令を前記記憶デバイスが記憶しているシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テナント識別子の置換のための方法及びシステムに関する。
【背景技術】
【0002】
マルチテナントデータベースの記録には、その記録を所有するテナント(tenants)を示すテナント識別子(tenant identifiers)が含まれる場合がある。ある状況では、あるテナントに属する記録は、その記録に含まれるテナント識別子を新しいテナント識別子に置き換える必要が生じることがある。記録にすでに格納されているテナント識別子を、記録のグループのために、新しいテナント識別子に置換(translation)することは、計算集約的(computational intensive)であってもよい。
【発明の概要】
【課題を解決するための手段】
【0003】
本明細書に開示される技術は、テナント識別子の置換を可能にし、データベース記録の所有者を識別するために使用されるテナント識別子のより効率的な置換を可能にし得る。テナント識別子の値を格納するテナント識別子列を含む記録は、テナント識別子列からテナント識別子の値を削除することができる。テナント識別子の値が、テナント識別子列以外の記録の列に、例えば符号化形式で格納されている場合、記録のどの列がテナント識別子の値を格納しているかを示すビットマップを作成することができる。次に、テナント識別子の値を、テナント識別子の値を格納している記録の列から削除することができる。テナント識別子とビットマップの値は、記録の記録ヘッダに格納することができる。また、記録には、マルチテナントデータベース内の記録を識別するキーを含めることもできる。記録のキーには、テナント識別子の値を含めることができる。テナント識別子の値は、その値をその列から削除した記録が開梱されるときに、記録のキーから、又は記録を識別したクエリの走査記述子から取得することができる。記録についてテナント識別子の置換が必要な場合、記録のキーのテナント識別子の値を新しい値、すなわち新規テナント識別子に置き換えることができる。記録ヘッダ内のビットマップを、以前にテナント識別子の値を格納していた記録の列を識別するために使用することができる。識別された列のメタデータをチェックして、その列でテナント識別子置換が可能になっているかどうかを判定することができる。テナント識別子の新しい値は、メタデータがテナント識別子の置換が可能であることを示すビットマップにより識別される列の値として使用することができる。ビットマップで識別される列のうち、メタデータがテナント識別子の置換を必要としないことを示す列は、記録の記録ヘッダから取り出されたテナント識別子の値をその列の値として持つことができる。
【0004】
テナント識別子は、データベースシステムに格納された記録の所有者を識別するために使用され得る。テナントに割り当てられたテナント識別子の値は、データベースシステムに格納される可能性のあるテナントに属するすべての記録のキーの一部として使用することができる。テナント識別子の値は、例えば、英数字ストリングとして表すことができる。
【0005】
データベースシステムがマルチテナントデータベースシステムである場合、テナントの各々に固有のテナント識別子を割り当てることができる。マルチテナンシーは、種々のテナント、例えば、ユーザ、ユーザのグループ又は組織が、種々のテナント間で共有され得るデータベースシステム上のソフトウェアツール又はインスタンスを介して、データベースシステム内のそれら自身の記録にアクセスすることを可能にする。各テナントの記録は、そのテナントに設定された記録の一部とすることができる。データベースは、例えば、リレーショナルデータベース、階層データベース、又は任意の他の適切なデータベースタイプであってもよい。データベースシステムに格納される全ての記録は、例えば、ログ構造化結合ツリーを含む、任意の適切な構造に格納することができる。
【0006】
データベースシステムに格納された記録は、キーを含んでもよい。キーは、記録の識別子、例えば、主キーであってもよく、例えば、英数字シーケンスのような任意の適切な形式であってもよい。キーの一部は、記録に関する情報を提供することができる。例えば、キーの一部は、記録が属するテナントのテナント識別子の値である。キーの他の部分は、例えば、記録の値が行の内容である場合に、テーブル番号及び行の識別を識別することができる。
【0007】
記録には値を含めることができる。記録の値は、例えば、列ごとに1つの値を持つタプルとして格納された、リレーショナルデータベースの1つのテーブルの一行内の列の内容であってもよい。タプルとして格納される値は、例えば、バイナリ符号化を使用して符号化されてもよい。記録の中には、タプルで符号化された記録を所有するテナントのテナント識別子の値を、テナント識別子の符号化された値として格納するものがある。テナント識別子の符号化値は、例えば、記録のテナント識別子列に格納され得る。テナント識別子の符号化値はまた、テナント識別子列ではないかもしれない記録の他の列に格納されてもよい。
【0008】
状況によっては、記録のテナント識別子を置換する必要があるかもしれない。テナント識別子置換は、記録中のテナント識別子の値を新しい値、すなわち新規テナント識別子に置き換えることができる。例えば、テナントの記録集合内の記録がコピーされて、テナントの記録集合の全部又は一部の複製(clone)を作成する場合、例えばサンドボックス化のために、テナント識別子置換を使用して、コピーされた記録に新しいテナント識別子を割り当てることができる。これにより、複製元のテナントの記録集合内の記録とは無関係に、テナントがサンドボックスデータベース内の記録を使用することができる。
【0009】
より効率的なテナント識別子の置換を可能にするために、データベースシステムに格納された記録を修正することができる。記録は、そのテナント識別子列から除去されたテナント識別子の符号化値を有し得る。テナント識別子列の属性番号は、記録の記録ヘッダに格納してもよい。記録ヘッダに記録タイプ指示子を設定してもよい。記録タイプ指示子は、記録がテナント識別子列から除去されたテナント識別子の符号化された値を持つことを示すために、「1」又は「真」に設定され得るビットであり得る。テナント識別子の符号化値をテナント識別子列以外の列にも格納する記録が、ビットマップを生成することができる。記録に対して生成されるビットマップは、記録のどの列がテナント識別子の符号化された値を格納しているかを示すことができる。次いで、テナント識別子の符号化値は、テナント識別子の符号化値を格納した記録の列から除去され得る。テナント識別子及びビットマップの符号化値は、記録の記録ヘッダに格納されてもよい。ビットマップ指示子は、ビットマップとテナント識別子の符号化値の両方の存在を示すために、記録ヘッダ内に設定されてもよい。ビットマップ指示子は、ビットマップとテナント識別子の符号化された値を記録ヘッダが格納することを示すために、ビットであってもよく、「1」にセットされてもよいし、「真」であってもよい。これは、結果として、その列にテナント識別子の値、又はテナント識別子の符号化値を格納しない記録を生じる可能性がある。
【0010】
ビットマップは、任意の適切なフォーマットであってもよい。例えば、記録のビットマップは、記録の列の個数に等しいか、又は1だけ小さい桁数を持つバイナリ文字列として格納されてもよい。バイナリ文字列の各ビットは、記録の列に対応する可能性があるため、記録のすべての列、又はテナント識別子の列ではないすべての列に対してバイナリ文字列のビットが存在する可能性がある。ビットマップが生成されると、列に対応するビットは、その列がテナント識別子の符号化値を格納する場合は1に、その列がテナント識別子の符号化値を格納しない場合は0に設定され得る。
【0011】
記録は、例えば、記録がデータベースシステムの永続的記憶装置に書き込まれる前に、記録の記憶域内表現に梱包されるときに、記録の列からテナント識別子の値を除去するように修正されてもよい。
【0012】
テナント識別子の符号化値をその列から除去した記録が永続記憶装置からデータベースシステムの作業メモリに読み込まれるとき、記録のテナント識別子列と共に使用されるテナント識別子の値は、記録のキーから、又は記録を識別するクエリの走査記述子から取り出され得る。例えば、記録のキーは、記録を所有するテナントに対するテナント識別子の値を部分的に含む英数字ストリングであってもよい。テナント識別子の値は、記録のキーから取得できる。データベースシステムに提出されたクエリに対する走査記述子は、クエリが応答可能な記録を見つけるために実行されるデータベース内の記録を所有するテナントに対するテナント識別子の値も含むことができる。走査記述子は、例えば、データベースシステム上で実行される実行装置からテナント識別子の値を受け取ることができる。テナント識別子の値は、記録が応答したクエリの走査記述子から取得することができる。キー又は走査記述子から検索されたテナント識別子の値は、符号化されてもよく、その結果得られたテナント識別子の符号化された値は、記録がデータベースシステムの作業メモリ内にある間に、記録のテナント識別子列を埋めるために使用されてもよい。記録のテナント識別子列は、記録ヘッダに格納されているテナント識別子列の属性番号によって識別される。記録の記録ヘッダがビットマップを格納する場合、記録が作業メモリ内にある間に、テナント識別子の符号化値を使用して、ビットマップによって、テナント識別子の符号化値を以前に格納したものとして識別される列を埋めることができる。記録が永続記憶装置に転送される前に作業メモリ内で梱包される場合、テナント識別子の符号化された値は、再度、テナント識別子列から及び記録が梱包される前に格納されている他の任意の列から除去され得る。
【0013】
記録についてテナント識別子の置換が必要な場合、記録のキーにあるテナント識別子の値は、新しいテナント識別子の新しい値に置き換えることができる。例えば、記録のキーはデータベースシステムの実行者によって書き換えられ、テナント識別子の値をテナント識別子の新しい値で置き換えることができる。このことにより、データベースシステムによって記録の所有者として識別されるテナントと、その記録が属するテナント記録集合とが変更される可能性がある。例えば、テナントの記録集合がサンドボックス化のために複製される場合、テナントの記録集合からコピーされた記録は、サンドボックスデータベースを形成するために、テナントの記録集合内の記録とは別に、サンドボックスデータベース内の記録を処理できるようにするために、新しいテナント識別子が必要となる場合がある。テナント識別子の新しい値を使用して、サンドボックスデータベースの記録のキーのテナント識別子の値を置き換えることができる。テナント識別子の新しい値でキーを書き換えた記録が作業メモリに読み込まれると、データベースシステムはテナント識別子の新しい値を符号化し、テナント識別子の符号化された新しい値を使用して、記録のテナント識別子列を埋めることができる。記録のテナント識別子列は、記録の記録ヘッダに格納されているテーブル識別子列の属性番号によって識別される。
【0014】
データベースシステムの実行装置は、記録がデータベースシステムの作業メモリにコピーされるときに、以前にテナント識別子の符号化された値を格納した記録の列を埋めてもよい。記録内のこのような列の存在は、記録ヘッダ内のビットマップ指示子ビットの値によって示されてもよく、例えば、記録ヘッダ内のテナント識別子のビットマップと符号化値の両方の存在を示すために、ビットマップ指示子ビットは1に設定されてもよい。記録の記録ヘッダに格納されたビットマップは、テナント識別子の符号化された値を格納した列を識別するために使用され得る。ビットマップがあらかじめテナント識別子の符号化値を格納していることを示す記録の列については、その列のメタデータにアクセスして、そのタイプの列に対してテナント識別子変換が可能かどうかを判定することができる。
【0015】
列のメタデータは、データベースシステムのシステムカタログの一部になる場合がある。たとえば、列の種類をシステムカタログに格納することができる。システムカタログは、例えばブール変数の形式で、テナント識別子置換がそのタイプの列に対して可能であるかどうかの指示を含むことができる、全てのタイプの列に対するメタデータを含むことができる。テナント識別子の置換は、データベースシステムのセカンダリインデックスの一部であるいかなるタイプの列に対しても可能にすることはできない。
【0016】
メタデータが、記録のビットマップによって識別される列の列タイプに対してテナント識別子置換が可能であることを示している場合、データベースシステムの実行装置は、キー又は走査記述子から、符号化され、記入されるべきテナント識別子の新しい値を列の値として取り出すことができる。メタデータが、ビットマップによって識別される列の列タイプに対してテナント識別子置換が可能でないことを示す場合、データベースシステムの実行装置は、記録ヘッダからテナント識別子の符号化された値を取り出して、列の値として使用することができる。記録ヘッダからのテナント識別子の符号化値は、たとえキー中のテナント識別子の値が新しいテナント識別子の新しい値に置き換えられていても、テナント識別子の元の値の符号化であってもよい。このことにより、以前にテナント識別子の元の値の符号化を格納していたが、もはや記録のコピーにテナント識別子の値を格納していない記録の列において、元の値又は新しい値のいずれか、テナント識別子の適切な値の使用が可能になる。
【0017】
例えば、列が二次インデックスの一部であるため、テナント識別子の置換が可能でない列タイプの記録ヘッダ内のビットマップによって識別される記録の列については、データベースアプリケーションがテナント識別子の置換を適用するかどうかを決定することができる。データベースアプリケーションは、データベースシステムと対話するために使用されるアプリケーションであってもよい。例えば、データベースアプリケーションを実行する計算装置は、テナントによってデータベースシステム内のそのデータベースにアクセスするために使用されてもよい。
【0018】
幾つかの実施形態では、テナント識別子の置換を必要とするかもしれない記録を見つけるために使用されるかもしれない規則的なデータベースインデックスがあるかもしれないし、或いはテナント識別子の置換を必要とするかもしれない記録の数が、例えばそれらがデータベースの小さなテーブルの記録であるかもしれないので、小さいかもしれない。通常のデータベースインデックスは、二次インデックスで使用される列のように、置換が可能でない可能性のある列を記録に含める場合に使用される。更新コマンドは、テナントの元の記録から複製化された記録が、例えば、データベースアプリケーションを介してアクセスするためにユーザに利用可能にされる前に、テナント識別子置換を必要とするかもしれない記録を更新することができるデータベースシステムによって実行されてもよい。更新コマンドは、正規のデータベースインデックスによってインデックス付けされた記録の全ての列、又は、テナント識別子置換を必要とするかもしれない記録の全てをウォーキングし、テナント識別子の符号化された値に一致する列内の任意の値をテナント識別子の符号化された新しい値に置き換えることによって、テナント識別子置換を実行することができる。
【0019】
開示された主題のさらなる理解を提供するために含まれる添付の図面は、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、開示された主題事項の実施形態を説明し、詳細な説明と共に、開示された主題事項の実施形態の原理を説明するのに役立つ。開示された主題事項の基本的理解及びそれが実施され得る種々の方法のために必要である以上に詳細な構造的詳細を示す試みは行われない。
【図面の簡単な説明】
【0020】
図1】開示された主題の実施形態に従ったテナント識別子の置換のための例示システムを示す。
図2A】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
図2B】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
図2C】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
図3】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
図4】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
図5A】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
図5B】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
図5C】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
図5D】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
図6】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
図7】開示された主題の実施に従ったテナント識別子の置換に適した例示的な手順を示す。
図8】開示された主題の実施に従ったテナント識別子の置換に適した例示的な手順を示す。
図9】開示された主題の実施形態に従ったコンピュータを示す。
図10】開示された主題の実施形態に従ったネットワーク構成を示す。
【発明を実施するための形態】
【0021】
図1は、開示された主題の実施形態に従ったテナント識別子の置換のための例示システムを示す。データベースシステム100は、テナント識別子の置換のために、例えば、図9に記載されたコンピュータ20又はその構成要素のような任意の適切な計算装置を含むことができる。データベースシステム100は、ラップトップ、デスクトップ、個々のサーバ、サーバ・クラスタ、サーバ・ファーム、又は分散サーバ・システム上に実装されてもよく、或いは仮想計算装置若しくはシステムとして、又は物理的システムと仮想システムとの任意の適切な組み合わせとして実装されてもよい。データベースシステム100は、コンピューティング・システム及びネットワーク・インフラストラクチャの一部であってもよく、或いは、他のサーバ・システムをみ得るより大きなサーバ・ネットワークを含む、コンピューティング・システム及びネットワーク・インフラストラクチャに接続してもよい。データベースシステム100は、例えば、互いに通信可能な任意の数のサーバ・システムを含むことができ、任意の適切な方法で通信可能である。例えば、データベースシステム100の複数のサーバ・システムは、任意の適切なネットワークを介して接続されてもよい。そのようなネットワークは、LANとWANとの任意の適切な組み合わせであってもよく、任意のプライベート・ネットワークとインターネットとの任意の組み合わせを含む。データベースシステム100は、データベース実行装置110及び記憶装置140を含んでもよい。記憶装置140は、永続記憶装置142及び作業記憶装置144を含むことができる。記録150及びシステムカタログ160が、永続記憶装置142内に記憶することができる。
【0022】
データベース実行装置110は、データベースシステム100上に記憶されたデータベースと対話して管理するための、データベースシステム100のハードウェア及びソフトウェアの任意の適切な組み合わせであってもよい。データベースシステム100は、例えば、多数のテナントのためのデータベースを記憶することができるマルチテナントのデータベースシステムであってもよい。記録150は、データベースシステム100の多数のテナントのためのデータベースの記録を含むことができる。データベース実行装置110は、走査記述子(scan descriptor)を伴う受信された問い合わせ又はクエリ(query)に基づいて、あるテナントのために記録150から記録を検索することができ、記録150からの記録を操作することができる。例えば、データベース実行装置110は、例えば、サンドボックスデータベースの創設中にテナントの記録集合を複製(clone)する場合に、永続記憶装置142から作業記憶装置150に記録をコピーし、新しい値で記録を更新し、作業記憶装置150から永続記憶装置142へと記録をマージし、記録150内の記録の新しいコピーを創設することができる。
【0023】
永続的記憶装置142は、記録150及びシステムカタログ160のような、データの永続的記憶のためのハードウェア及びソフトウェアの任意の適切な組み合わせとすることができる。例えば、永続記憶装置142は、ハードドライブ、固体ドライブその他の形態の永続データ記憶装置を含んでもよい。永続的記憶装置142は、任意の数の計算装置に分散されてもよい。作業記憶装置144は、永続的又は非永続的なデータを記憶するためのハードウェア及びソフトウェアの任意の適切な組み合わせとすることができ、記録150からの記録を永続的記憶装置142の外側で操作することを可能にするために使用することができる。例えば、作業記憶装置144は、ハードドライブ、固体ドライブ、ランダム・アクセス・メモリ、又は永続的であっても非永続的であってもよい他の形態のデータ記憶装置を含んでもよい。
【0024】
記録150は、データベースシステム100の種々のテナントのデータベースの記録を含むことができる。記録150内の記録は、その記録の所有者を識別するためのテナント識別子を含んでもよい。あるテナントに割り当てられたテナント識別子は、データベース内に格納され得る、テナントに属するすべての記録のキーの一部として使用することができる。あるテナント識別子の値は、例えば、英数字ストリングとして表すことができる。データベースシステム100のテナントの各々に固有又は一意のテナント識別子を割り当てることができる。マルチテナンシーは、種々のテナント、例えば、ユーザ、ユーザのグループ又は組織が、種々のテナント間で共有され得るデータベースシステム100上のソフトウェアツール又はインスタンスを介して、データベースシステム100内のそれら自身の記録にアクセスすることを可能にし得る。記録150に格納された記録を含む各テナントのための記録集合(record set)は、例えば、リレーショナルデータベース、階層データベース又は任意の他の適切なデータベースタイプであってもよい。記録150は、データベースシステム100の永続記憶装置142内に、例えば、対数構造化結合ツリー(Log-Structured Merge (LSM))を含む任意の適切な構造で格納することができる。記録は不変に保存することができるので、記録が創設された後に記録を更新すると、保存されている記録の前のバージョンに如何なる変更も加えることなく、記録の新しいバージョンが創設される。
【0025】
データベースシステム100内に格納された記録150からの記録は、キーを含んでもよい。キーは、記録の識別子、例えば、主キー(primary key)であってもよく、例えば、英数字シーケンスのような任意の適切な形式であってもよい。キーの一部は、記録に関する情報を提供することができる。例えば、キーの一部は、記録が属するテナントのテナント識別子である。キーの他の部分は、例えば、記録の値が行(row)の内容である場合に、テーブル番号及び行の識別を識別することができる。
【0026】
記録には値を含めることができる。記録の値は、例えば、列(column)ごとに1つの値を持つタプル(tuple)として格納される、リレーショナルデータベースの1つのテーブルの一行内の複数列の内容であってもよい。タプルとして格納される値は、例えば、バイナリ符号化を使用して符号化(encoded)されてもよい。記録によっては、タプル内の記録を所有するテナントのテナント識別子の符号化値を格納する場合がある。テナント識別子の符号化値は、例えば、記録のうちテナント識別子列内に格納され得る。テナント識別子の符号化値はまた、テナント識別子列ではないかもしれない、記録の他の列に格納されてもよい。
【0027】
システムカタログ160は、データベースシステム100内に格納されるテナントの記録集合のためのメタデータを含んでもよい。例えば、システムカタログ160は、テナントの記録集合について記録150の記録内で使用される様々な列タイプのプロパティを記述するメタデータを含んでもよい。
【0028】
図2Aは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。記録150からの記録200が、例えばデータベースシステム100へのクエリに応答して、データベース実行装置110によって作業記憶装置144にコピーすることができる。データベース実行装置110は、例えば、記録200のタプルを複数列へと展開するなどして、記録200を開梱又はアンパック(unpack)することができる。記録200は、キー210、記録ヘッダ220、及び値230を含んでもよい。キー210は、テナントの記録集合内の記録200を識別するために使用されるキーであってもよく、テナント識別子211及びキーデータ212を含んでもよい。テナント識別子211は、その記録200を所有するテナントについてのテナント識別子211の値であってもよい。キーデータ212は、例えば、記録200についてのテーブル番号及び該テーブルの行の識別など、キー210に含まれる他のデータであってもよい。キー211は、テナント識別子211とキーデータ212との連結であり得る英数字ストリングの形態で格納され得る。
【0029】
記録ヘッダ220は、記録200の一部であってよく、メタデータと、値230の外側にある記録200の他の追加データとを格納することができる。例えば、記録ヘッダ200は、記録200のプロパティを示すために、例えば「1」、「真」、「0」又は「偽」に設定することができるビットとして、指示子(indicators)を含んでもよい。
【0030】
記録200の値230は、記録200の複数列内に格納された値を含んでもよい。値230は、タプルを形成し得る。記録200の列は、例えばキーデータ212で識別されるものとして、記録200が属するテナントの記録集合のテーブルの列に基づくことができる。例えば、列は、テナント識別子列231及びデータ列232、233、234及び235であってもよい。テナント識別子列231は、テナント識別子211の値の符号化であってもよい、符号化テナント識別子241を格納する列であってもよい。符号化は、例えば、バイナリ符号化であってもよい。データ列232、233、234及び235は、記録のための様々なタイプのデータを格納する列であってもよく、例えば、文字ストリングのセット又は変化する長さの文字ストリング、又は数字でよい。例えば、データ列232は、文字ストリング又は数字のような値の符号化であり得る列値242を格納することができる。データ列235は、文字列又は数字のような値の符号化であってもよい列値245を格納することができる。テナントのための記録150のいくつかの記録において、テナント識別子の符号化値は、テナント識別子列ではない記録の列内に格納されてもよい。例えば、記録200は、テナント識別子列241に加えて、符号化されたテナント識別子241をデータ列233及び234内に格納することができる。
【0031】
図2Bは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データ実行装置110は、作業記憶装置144内にある記録200のような記録を、テナント識別子のより効率的な置換を可能にする形式に変換することができ、その後、記録がパックされ、永続記憶装置142に記憶される。データベース実行装置110は、テナント識別子列231から符号化されたテナント識別子241を除去することができ、それによりテナント識別子列231によって格納された値が空の値になり得る。データベース実行装置110は、記録ヘッダ220内にテナント識別子列属性番号(tenant identifier column attribute number)221を格納することができる。テナント識別子列属性番号221は、値230内のテナント識別子列231を識別するために使用され得る。データベース実行装置110は、記録タイプ指示子222を「1」又は「真」に設定することができる。記録タイプ指示子(record type indicator)222は、記録200がテナント識別子列231から符号化テナント識別子241を除去した場合を示すために使用され得るビットのような指示子であってもよい。もし記録200が符号化テナント識別子241を値230の他の列のいずれにも含まなかった場合には、データベース実行装置110は、永続的記憶装置142内の記録150と共に記憶するために、記録200内に梱包又はパック(pack)する。
【0032】
図2Cは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置110は、値230内の残りの列を検査して、いずれかの列が符号化されたテナント識別子241を格納しているかどうかを判定することができる。データベース実行装置110は、符号化テナント識別子241がデータ列233及びデータ列234に格納されていることを見出すことができる。データベース実行装置110は、データ列233及びデータ列234から符号化されたテナント識別子241を除去し、それにより両方の列が空の値を格納することができる。データベース実行装置110は、符号化テナント識別子241を記録200の記録ヘッダ220内へと書き込むことができる。データベース実行装置は、ビットマップ224を生成することができる。
【0033】
ビットマップ224は、テナント識別子列231の外側の記録200の値230のうち、符号化されたテナント識別子241を格納していた列を識別することができる。例えば、記録200のビットマップ224は「00110」であってもよく、これは、テナント識別子列231の外側の列のうち、第3及び第4の列、すなわちデータ列233及びデータ列234が符号化されたテナント識別子241を格納していたことを示す。ビットマップ224は、記録ヘッダ220に書き込むことができる。
【0034】
データベース実行装置110は、ビットマップ指示子225を「1」又は「真」に設定することができる。ビットマップ指示子225は、例えば、記録ヘッダ220がビットマップ224のようなビットマップと、符号化テナント識別子241のようなテナント識別子の符号化値とを格納しているかどうかを示すビットであってもよい。
【0035】
図3は、開示された主題の実施形態に従ったテナント識別子の置換のための例示的な構成を示す。データベース実行装置110は、記録200の形式を変更した後、記録200を梱包し、それを記録150とともにデータベースシステム100の永続記憶装置142内に格納することができる。記録200は、作業記憶装置144から除去することができる。
【0036】
図4は、開示された主題の実施形態に従ったテナント識別子の置換のための例示的な構成を示す。データベースシステム100内のテナントの記録集合が、例えば、サンドボックスデータベースを創設するために複製(cloned)されてもよい。データベース実行装置110は、永続的記憶装置142内の記録150から、作業記憶装置144へ、テナントの記録集合の記録をコピーすることができる。例えば、データベース実行装置110は、記録200を記録400として作業記憶装置へとコピーすることができる。記録200内の梱包されたデータ、例えば、値230に対する値を含むタプルは、記録200が記録400として作業記憶装置へとコピーされるときに、拡張(expanded)され得る。
【0037】
図5Aは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。記録400は、記録200のコピーであってもよく、キー410、記録ヘッダ420及び値430を含んでもよい。キー410は、テナント識別子211及びキーデータ212を含むキー210のコピーであってもよい。記録ヘッダ420は、記録ヘッダ220のコピーであってもよく、テナント識別子属性番号221、記録タイプ指示子222、符号化テナント識別子241、ビットマップ224及びビットマップ指示子225を含んでもよい。値430は、値230のコピーであってよく、空値を格納するテナント識別子列231、列値242を格納するデータ列232、空値を格納するデータ列233、空値を格納するデータ列234、列値245を格納するデータ列235を含む。
【0038】
図5Bは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置110は、記録200を含むテナントの記録集合からの記録から複製(cloned)されたサンドボックスデータベースで使用するための記録400を準備するために、記録400のテナント識別子の置換を実行することができる。テナント識別子の置換は、サンドボックスデータベース内の記録と、該サンドボックスデータベースを創設するために複製がなされたテナントの記録集合内の記録との間の衝突(conflict)を防ぐために必要とされる場合がある。
【0039】
データベース実行装置110は、記録400のコピー元である記録200を所有するテナントについてのテナント識別子の値を決定することができる。データベース実行装置110によるテナント識別子の値の決定は、キー410から、又はデータベースシステム100によって受信され記録200が応答したクエリの走査記述子(scan descriptor)から、例えば、サンドボックスデータベースを創設するために複製するために記録を位置づけるために使用される走査記述子から実行できる。次いで、データベース実行装置110は、テナント識別子のための新しい値を、例えば新規テナント識別子411を使用して、キー410内のテナント識別子、例えばテナント識別子211の値を置き換えることができる。新規テナント識別子411は、テナント識別子211の値とは異なるテナント識別子の値であってもよく、新規テナントが記録400を所有していることを示す。新規テナント識別子411によって表される新規テナントは、テナント識別子211によって表されるテナントと同一の実体(entity)、例えば、同一のユーザ、ユーザのグループ又は組織であってもよく、或いは異なる実体であってもよい。例えば、組織全体がテナント識別子211によって表されてもよく、その組織のサブセットのみがテナント識別子411によって表されてもよい。このことにより、既存のテナントの記録集合の複製であるサンドボックスデータベースへのアクセスを有する人及び組織を含む実体に対する制御が可能となり、サンドボックスデータベースとテナントの記録集合とへのアクセスを分離できる。
【0040】
データベース実行装置110は、ビットマップ指示子225をチェックすることができる。ビットマップ指示子225が「0」又は「偽」に設定された場合、データベース実行装置110は、記録400についてのテナント識別子の置換を完了することができる。次いで、データベース実行装置110は、新規テナント識別子411を符号化し、符号化したものをテナント識別子列231(テナント識別子列属性番号221を用いて識別される)の中に格納し、記録400をサンドボックスデータベースの一部として利用可能にする。
【0041】
図5Cは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置110は、記録ヘッダ420内のビットマップ指示子225をチェックすることができる。ビットマップ指示子225は、記録ヘッダ420がビットマップと符号化されたテナント識別子の両方を記憶することを示す「1」又は「真」に設定することができる。
【0042】
データベース実行装置110は、例えば「00110」であってよいビットマップ224をチェックして、値430内のどの列が符号化されたテナント識別子241を以前に格納していたかを決定することができる。データベース実行装置110は、データ列233及び234が符号化テナント識別子241を以前に格納していたことを決定することができる。データベース実行装置110は、システムカタログ160からの列メタデータをチェックして、データ列233及び234の列タイプについてテナント識別子置換が可能(enabled)又は不能(disabled)であるかどうかを判断することができる。列メタデータは、データ列233の列タイプについてはテナント識別子置換が可能であるが、データ列234の列タイプに対しては不能であることを示すことができる。データベース実行装置110は、テナント識別子の符号化された新しい値である新規識別子411を、符号化された新規テナント識別子441として、データ列233内に格納することができる。
【0043】
データベース実行装置は、記録ヘッダ420から符号化テナント識別子241をコピーし、符号化テナント識別子241をデータ列234へと書き込むことができる。データベース実行装置はまた、符号化された新規テナント識別子441をテナント識別子列231へと書き込むことができる。テナント識別子列231は、テナント識別子列属性番号221を使用して識別することができる。このことにより、データベースシステム100上で実行することができる記録400のためのテナント識別子の置換の一部を、結果としてデータベースの破損を生じさせることなく、完了させることができる。記録400は、例えば、データベースシステム400と対話するために使用され得るデータベースアプリケーションによってアクセスできるようにすることができる。
【0044】
図5Dは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置110は、記録400を梱包し記録150と共に永続記憶装置142内に格納するために、記録400を準備することができる。このことは、テナント識別子列231及びデータ列233から符号化された新規テナント識別子441を除去し、データ列234から符号化されたテナント識別子241を除去することによって達成される。また、データベース実行装置110は、ビットマップ224を再度生成することもできる。例えば、ビットマップ224は、記録400の列のうち、テナント識別子列231の外側の列で、符号化された新規テナント識別子441のコピーが発生したことに基づいて再生成され得る。
【0045】
図6は、開示された主題の実施形態に従ったテナント識別子の置換のための例示的な構成を示す。データベース実行装置110は、記録400のテナント識別子の置換を完了した後、記録400を梱包し、それを記録150と共にデータベースシステム100の永続記憶装置142内に格納することができる。記録400は、作業記憶装置144から除去することができる。
【0046】
図7は、開示された主題の実施形態に従ったテナント識別子の置換に適した例示的な手順を示す。ステップ702において、テナント識別子の符号化値を記録のテナント識別子列から除去することができる。例えば、データ実行装置110は、永続的記憶装置142から作業記憶装置144へと記録200をコピーし、符号化されたテナント識別子241をテナント識別子列231から除去することができる。
【0047】
ステップ704において、テナント識別子の符号化値が記録の任意の追加の列に格納されている場合には、フローはステップ706に進むことができる。そうでなければ、フローはステップ714に進み、そこで記録のための記録タイプ指示子が設定されることができる。例えば、データベース実行装置110は、記録200の値230の列をチェックして、符号化されたテナント識別子241をまだ格納しているものがあるかどうかを判定することができる。
【0048】
ステップ706において、テナント識別子の符号化された値を格納する列を識別するビットマップが生成され得る。例えば、データベース実行装置110は、符号化テナント識別子241を格納するものとして、記録200のデータ列233及び234を識別することができるビットマップ224を生成することができる。
【0049】
ステップ708において、テナント識別子の符号化値は、それが格納される任意の追加の列から除去され得る。例えば、データベース実行装置110は、符号化されたテナント識別子241を記録200のデータ列233及び234から除去することができる。
【0050】
ステップ710において、ビットマップ及びテナント識別子の符号化値は、記録ヘッダに格納されることができる。例えば、データベース実行装置110は、ビットマップ224及び符号化テナント識別子241を記録200の記録ヘッダ220に書き込むことができる。
【0051】
ステップ712において、記録ヘッダ内のビットマップ指示子を「真」に設定することができる。例えば、データベース実行装置110は、ビットマップ224及び符号化テナント識別子241が両方とも記録200の記録ヘッダ220に格納されていることを示すために、記録ヘッダ220内のビットマップ指示子225を「1」又は「真」に設定することができる。
【0052】
ステップ714において、記録ヘッダ内の記録タイプ指示子を「真」に設定することができる。例えば、データベース実行装置110は、記録200の値230のうち、全ての列から格納した符号化テナント識別子241を除去したことを示すために、記録タイプ指示子222を「1」又は「真」に設定することができる。
【0053】
図8は、開示された主題の実施形態に従ったテナント識別子の置換に適した例示的な手順を示す。ステップ802において、テナント識別子の値が決定され得る。例えば、データベース実行装置110は、サンドボックスデータベースを創設するためのテナントの記録集合の複製の一部として、記録200を記録400として作業記憶装置144へとコピーしたかも知れない。データベース実行装置110は、記録400のテナント識別子の置換を実行して、それをサンドボックスデータベースでの使用のために準備することができる。データベース実行装置110は、例えば、キー410からテナント識別子211を読み取るか、或いは記録200が応答したクエリで使用された走査記述子からテナント識別子211を検索することによって、テナント識別子211を決定することができる。
【0054】
ステップ804において、テナント識別子の値は、キー内で、テナント識別子の新しい値に置き換えることができる。例えば、データベース実行装置110は、キー410内のテナント識別子211を新規テナント識別子411に置き換えることができる。新規テナント識別子411は、記録200のコピーとして記録400を含み得るサンドボックスデータベースのために使用される新しいテナント識別子のための新しい値であってよい。
【0055】
ステップ806において、もしビットマップ指示子が記録ヘッダ内に設定されている場合には、フローはステップ808に進むことができる。そうでなければ、フローは、ステップ808に進むことができ、そこでテナント識別子列は、テナント識別子の新しい値の符号化で満たされ得る。例えば、データベース実行装置110は、記録ヘッダ430内のビットマップ指示子225をチェックして、ビットマップ指示子225が「真」又は「1」に設定されているのか、或いは「偽」又は「0」に設定されているのかを判断することができる。
【0056】
ステップ808において、ビットマップ内で識別され、置換が可能でない(複数の)列を、記録ヘッダからのテナント識別子の符号化された値で埋めることができる。例えば、データベース実行装置110は、データ列233及び234についてのメタデータをチェックすることができ、これは、符号化テナント識別子241を以前に格納したものとして、ビットマップ224によって示され得る。メタデータは、テナント識別子置換がデータ列234に対して可能ではないことを示すことができる。データベース実行装置110は、符号化テナント識別子241を記録ヘッダ220からコピーし、それをデータ列234に書き込むことができる。
【0057】
ステップ810において、ビットマップ内で識別され、置換が可能である(複数の)列を、テナント識別子の符号化された新しい値で埋めることができる。例えば、データベース実行装置110は、データ列233及び234のメタデータをチェックすることができ、これは、ビットマップ224によって、符号化されたテナント識別子241を以前に格納したものとして示され得る。メタデータは、データ列233に対してテナント識別子置換が可能であることを示すことができる。データベース実行装置110は、例えば、キー410からの、又はメモリに保持されている新規テナント識別子411を符号化し、符号化された新規テナント識別子441をデータ列233に書き込むことができる。
【0058】
ステップ812において、テナント識別子列は、符号化された新規テナント識別子で埋められてもよい。例えば、データベース実行装置110は、新規符号化テナント識別子441をテナント識別子列231に書き込むことができ、これは、記録ヘッダ220内のテナント識別子列属性番号221に基づいて識別することができる。
【0059】
本開示の主題の実施形態は、種々の構成要素及びネットワークアーキテクチャにおいて実施され、それらと共に使用され得る。図9は、ここで開示されている主題の実施形態を実施するのに適した例示的なコンピュータ20である。本明細書でさらに詳細に説明するように、コンピュータ20は、マルチコンピュータのネットワーク内の単一のコンピュータであってよい。図9に示すように、コンピュータは、中央コンポーネント30(例えば、サーバ、クラウドサーバ、データベースなど)と通信することができる。中央コンポーネント30は、第2コンピュータ31のような1つ又は複数の他のコンピュータと通信することができる。本実施態様に従って、中央コンポーネント30へと及び/又は中央コンポーネント30から得られた情報は、各コンピュータについて分離することができ、それによりコンピュータ20がコンピュータ31と情報を共有しないようにできる。変形的に又は追加的に、コンピュータ20は、第2コンピュータ31と直接通信することができる。
【0060】
コンピュータ(例えば、ユーザコンピュータ、エンタープライズコンピュータ等)20は、バス21を含む。バス21は、中央プロセッサ24のようなコンピュータ20の主要構成要素と、メモリ27(典型的には、RAM、フラッシュRAM等も含むことができる)と、入力/出力コントローラ28と、ディスプレイ又はタッチスクリーンのようなユーザディスプレイ22と、1つ以上のコントローラ及びキーボード、マウス、Wi-Fi/セルラ無線、タッチスクリーン、マイクロフォン/スピーカ等のような関連するユーザ入力又は装置とを含むユーザインターフェース26とを相互接続する。バス21は、I/Oコントローラ28と、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SANデバイス、SCSIデバイス等のような固定記憶装置23と、光ディスク、フラッシュドライブ等を制御及び受信するように動作するリムーバブル媒体構成要素25とに密接に接続することができる。
【0061】
バス21は、中央プロセッサ24とメモリ27との間のデータ通信を可能にする。メモリ27は、前述したように、読み出し専用メモリ(ROM)又はフラッシュメモリ(どちらも図示せず)、及びランダムアクセスメモリ(RAM)を含んでもよい。RAMは、オペレーティング・システム及びアプリケーション・プログラムがロードされるメイン・メモリを含むことができる。ROM又はフラッシュメモリは、とりわけ、周辺構成要素との相互作用のような基本的なハードウェア動作を制御する基本入出力システム(BIOS)を含むことができる。コンピュータ20に常駐するアプリケーションは、ハードディスクドライブ(例えば、固定記憶装置23)、光学式ドライブ、フロッピーディスク、又は他の記憶媒体25のようなコンピュータ読取可能媒体上に記憶され、これを介してアクセスすることができる。
【0062】
固定記憶装置23は、コンピュータ20と一体化されていてもよいし、他のインターフェースを介して分離されてアクセスされてもよい。ネットワークインターフェース29は、電話リンクを介して遠隔サーバへの直接接続、インターネットサービスプロバイダ(ISP)を介してインターネットへの接続、直接ネットワークリンクを介して遠隔サーバへの直接接続、又はPOP又は他の技術を介してインターネットへの接続を提供することができる。ネットワークインターフェース29は、デジタルセルラ電話接続、セルラ・デジタル・パケット・データ(CDPD)接続、デジタル衛星データ接続などを含む無線技術を使用して、そのような接続を提供することができる。例えば、ネットワークインターフェース29は、図10に示すように、1つ又は複数のローカル、広域又は他のネットワークを介して、コンピュータを他のコンピュータと通信させることができる。
【0063】
多くの他の装置又は構成要素(図示せず)は、同様の方法(例えば、ドキュメントスキャナ、デジタルカメラなど)で接続することができる。反対に、本開示を実施するために、図9に示された全ての構成要素が存在する必要はない。これらの構成要素は、示されたものとは異なる方法で相互接続することができる。図9に示すようなコンピュータの動作は、当技術分野では容易に知られており、本出願では詳細に説明しない。本開示を実施するためのコードは、メモリ27、固定記憶装置23、リムーバブル媒体25のうちの1つ以上、又は遠隔記憶場所のようなコンピュータ読取可能記憶媒体内に格納することができる。
【0064】
図10は、開示された主題の実施形態に従ったネットワーク配置例を示す。コンピュータ、マイクロコンピュータ、ローカルコンピュータ、スマートフォン、タブレットコンピューティングデバイス、エンタープライズデバイスなどの1つ又は複数のクライアント10、11は、1つ又は複数のネットワーク7(例えば、電力分配ネットワーク)を介して他のデバイスに接続することができる。ネットワークは、ローカルネットワーク、広域ネットワーク、インターネット、又は任意の他の適切な単一通信ネットワーク又は複数ネットワークであってもよく、有線及び/又は無線ネットワークを含む任意の適切なプラットフォーム上で実施することができる。クライアントは、1つ以上のサーバ13及び/又はデータベース15と通信することができる。これらの装置は、クライアント10、11によって直接アクセス可能であってもよく、或いはサーバ13がデータベース15に格納されたリソースへのアクセスを提供する場合のように、1つ以上の他の装置が中間アクセスを提供してもよい。クライアント10、11はまた、遠隔プラットフォーム17又は遠隔プラットフォーム17によって提供されるサービス、例えばクラウドコンピューティング配列及びサービスにアクセスすることができる。遠隔プラットフォーム17は、1つ以上のサーバ13及び/又はデータベース15を含んでもよい。第1のクライアントからの、又は第1のクライアントに関する情報はそのクライアントに限定されてもよい。例えば、クライアント10に関する情報はクライアント11とは共有されない。変形的に、第1のクライアントからの、又は第1のクライアントに関する情報は、他のクライアントと共有する前に、匿名化してもよい。例えば、クライアント10に関する如何なるクライアント識別情報も、クライアント10に関連するクライアント11に提供される情報から除去することができる。
【0065】
より一般的には、現在開示されている主題の種々の実施形態は、これらのプロセスを実施するためのコンピュータに実装されたプロセス及び装置の形態を含んでもよく、又はそれらの形態で実施されてもよい。また、実施形態は、フロッピーディスケット、CD-ROM、ハードドライブ、USB (ユニバーサルシリアルバス)ドライブ、又は他の任意の機械可読記憶媒体のような非一時的及び/又は有形媒体に実装された命令を含むコンピュータプログラムコードを有するコンピュータプログラムプロダクトの形態で実施することもでき、コンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは開示された主題の実施形態を実施するための装置となる。また、実施形態は、コンピュータプログラムコードの形態で実施することもでき、例えば、記憶媒体に記憶されるか、コンピュータにロードされ、かつ/或いは、コンピュータによって実行されるか、或いは、電気配線若しくはケーブルを介して、ファイバオプティクスを介して、又は、電磁放射線を介して、ある伝送媒体を介して送信されるかにかかわらず、コンピュータプログラムコードは、コンピュータにロードされ、コンピュータによって実行されると、コンピュータが開示された主題の実施形態を実施するための装置となる。汎用マイクロプロセッサで実施されるとき、コンピュータプログラムコードのセグメントが、特定の論理回路を作り出すようにマイクロプロセッサを構成する。幾つかの構成では、コンピュータ可読記憶媒体上に記憶された一組のコンピュータ可読命令は、汎用プロセッサによって実施することができ、汎用プロセッサ又は汎用プロセッサを含む装置を、命令を実施又は実行するように構成された専用装置に変換することができる。実施形態は、汎用マイクロプロセッサ及び/又はハードウェア及び/又はファームウェアにおける開示された主題の実施形態に従って技法の全部又は一部を実施する特定用途向け集積回路などのプロセッサを含み得るハードウェアを使用して実施され得る。プロセッサは、RAM、ROM、フラッシュメモリ、ハードディスク、又は電子情報を記憶することができる他の任意のデバイスなどのメモリに結合することができる。メモリは、開示された主題の実施形態に従って技術を実行するために、プロセッサによって実行されるように適合された命令を記憶することができる。
【0066】
上の記述は、説明の目的のために、特定の実施形態を参照して記述されている。しかしながら、上記の例示的な記述は、網羅的であること、又は開示された主題の実施を開示された正確な形態に限定することを意図したものではない。上記の教示を考慮すると、多くの修正及び変形が可能である。実施形態は、開示された主題の実施の原理及びそれらの実際の用途を説明するために選択され、説明され、それにより、当業者は、意図された特定の用途に適した様々な修正を施した様々な実施形態と同様に、それらの実施を利用することができる。
図1
図2A
図2B
図2C
図3
図4
図5A
図5B
図5C
図5D
図6
図7
図8
図9
図10