(57)【要約】  テナント識別子の置換のためのシステム、デバイス及び技術が開示される。記録を受信することができる。記録のテナント識別子の値が、記録のキー又は走査記述子から決定することができる。記録のキー内のテナント識別子の値は、テナント識別子の新しい値に置き換えることができる。記録の記録ヘッダに格納されたビットマップが、テナント識別子の符号化値を格納した記録の列を識別するために使用され得る。テナント識別子の符号化された新しい値を、記録ヘッダに格納されたビットマップによって識別されテナント識別子の置換が可能であることを示す属性を備える列に格納することができる。
2022500724.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実施される方法であって：
記録を受信するステップ；
前記記録のキー及び走査記述子の少なくとも１つから、前記記録についてのテナント識別子の値を決定するステップ；
前記記録のキー内の前記テナント識別子の値を新規テナント識別子の値に置き換えるステップ；
前記記録の記録ヘッダ内に格納されたビットマップを用いて、前記テナント識別子の符号化値を格納した前記記録の１つ以上の列を識別するステップ；及び
前記新規テナント識別子の符号化値を、１つ以上の列のうち、前記記録ヘッダ内に格納されたビットマップによって識別され、テナント識別子置換が可能であることを示す属性を備える列の中に格納するステップ；
を含む方法。
【請求項２】
前記ビットマップは、前記テナント識別子の前記符号化値を格納した前記記録の列の指示を備える、請求項１に記載の方法。
【請求項３】
前記テナント識別子の前記符号化値は前記記録ヘッダに格納され、
前記テナント識別子の前記符号化値を、前記１つ以上の列のうち、前記ビットマップによって識別され、テナント識別子置換が無効であることを示す属性を備える列の中に格納するステップ；
をさらに含む、請求項１に記載の方法。
【請求項４】
前記記録は、マルチテナントデータベースシステムの永続記憶装置から受信される、請求項１に記載の方法。
【請求項５】
前記記録は、マルチテナントデータベースシステムの作業記憶装置内で開梱される、請求項１に記載の方法。
【請求項６】
前記記録は、前記テナント識別子の前記値によって識別されるテナントによって所有されるデータベースから複製されたサンドボックスデータベースの一部であり、かつ
前記サンドボックスデータベースは、前記新規テナント識別子の値によって識別されるテナントによって所有される、
請求項１に記載の方法。
【請求項７】
コンピュータで実施される方法であって：
記録を受信するステップ；
前記記録のテナント識別子列からテナント識別子の符号化値を削除するステップ；
前記テナント識別子の前記符号化値が、前記記録の少なくとも１つの他の列に格納されていることを判定するステップ；
前記テナント識別子の前記符号化値が格納されている前記記録の列を識別するビットマップを生成するステップ；
前記ビットマップにより識別される前記記録の前記列から前記テナント識別子の前記符号化値を削除するステップ；及び
前記ビットマップと前記テナント識別子の前記符号化値を前記記録の記録ヘッダ内に格納するステップ；
を含む方法。
【請求項８】
前記ビットマップと前記テナント識別子の前記符号化値とが前記記録ヘッダ内に格納されていることを示すビットを、前記記録の前記記録ヘッダ内に格納するステップ；
をさらに含む、請求項７に記載の方法。
【請求項９】
前記テナント識別子の前記符号化値が前記記録の前記テナント識別子列から除去されたことを示すビットを、前記記録の前記記録ヘッダ内に格納するステップ；
をさらに含む、請求項７に記載の方法。
【請求項１０】
前記テナント識別子列を識別するテナント識別子列属性番号を、前記記録の前記記録ヘッダ内に格納するステップ；
をさらに含む、請求項７に記載の方法。
【請求項１１】
テナント識別子の置換のためにコンピュータに実装されるシステムであって：
永続記憶装置及び作業記憶装置を含む１つ以上の記憶デバイス；及び
前記永続記憶装置から記録を取り出し、該記録を前記作業記憶装置に書き込み、前記記録についてのテナント識別子の値を前記記録のキーと走査記述子の少なくとも１つから決定し、前記記録のキーの中の前記テナント識別子の前記値を新規テナント識別子の値に置き換え、前記記録の記録ヘッダに格納されたビットマップを用いて前記テナント識別子の符号化値を格納した前記記録の１つ以上の列を識別し、該１つ以上の列のうち前記記録ヘッダに格納された前記ビットマップにより識別されテナント識別子の置換が可能であることを示す属性を備える列に前記新規テナント識別子の符号化値を格納するプロセッサ；
を含むシステム。
【請求項１２】
前記ビットマップは、前記テナント識別子の前記符号化値を格納した前記記録の列の指示を備える、請求項１１に記載のシステム。
【請求項１３】
前記テナント識別子の前記符号化値は前記記録ヘッダに格納され、
前記プロセッサがさらに、前記テナント識別子の前記符号化値を、前記１つ以上の列のうち、前記ビットマップによって識別され、テナント識別子置換が無効であることを示す属性を備える列の中に格納する；
ことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記永続記憶装置は、マルチテナントデータベースシステムの一構成要素である、請求項１１に記載のシステム。
【請求項１５】
前記記録は、マルチテナントデータベースシステムの作業記憶装置内で開梱される、請求項１１に記載のシステム。
【請求項１６】
前記記録は、前記テナント識別子の前記値によって識別されるテナントによって所有されるデータベースから複製されたサンドボックスデータベースの一部であり、かつ
前記サンドボックスデータベースは、前記新規テナント識別子の値によって識別されるテナントによって所有される、
請求項１１に記載のシステム。
【請求項１７】
テナント識別子の置換のためにコンピュータに実装されるシステムであって：
永続記憶装置及び作業記憶装置を含む１つ以上の記憶デバイス；及び
前記永続記憶装置から記録を取り出し、該記録を前記作業記憶装置に書き込み、前記記録のテナント識別子列からテナント識別子の符号化値を除去し、前記テナント識別子の前記符号化値が前記記録の少なくとも１つの他の列に格納されていることを決定し、前記テナント識別子の前記符号化値が格納されている前記記録の列を識別するビットマップを生成し、該ビットマップにより識別される前記記録の列から前記テナント識別子の前記符号化値を除去し、前記ビットマップ及び前記テナント識別子の前記符号化値を前記記録の記録ヘッダ内に格納するプロセッサ；
を含むシステム。
【請求項１８】
前記プロセッサは、前記記録の前記記録ヘッダ内に、前記ビットマップ及び前記テナント識別子の前記符号化値が前記記録ヘッダ内に格納されていることを示すビットをさらに格納する、請求項１７に記載のシステム。
【請求項１９】
前記プロセッサは、前記記録の前記記録ヘッダ内に、前記テナント識別子の前記符号化値が前記記録の前記テナント識別子列から除去されたことを示すビットをさらに格納する、請求項１７に記載のシステム。
【請求項２０】
前記プロセッサは、前記記録ヘッダ内に、前記テナント識別子列を識別するテナント識別子列属性番号をさらに格納する、請求項１７に記載のシステム。
【請求項２１】
１つ又は複数のコンピュータ及び１つ又は複数の記憶デバイスを含むシステムであり、前記１つ又は複数のコンピュータによって実行されると、
記録を受信するステップ；
前記記録のキー及び走査記述子の少なくとも１つから、前記記録についてのテナント識別子の値を決定するステップ；
前記記録のキー内の前記テナント識別子の値を新規テナント識別子の値に置き換えるステップ；
前記記録の記録ヘッダ内に格納されたビットマップを用いて、前記テナント識別子の符号化値を格納した前記記録の１つ以上の列を識別するステップ；及び
前記新規テナント識別子の符号化値を、１つ以上の列のうち、前記記録ヘッダ内に格納されたビットマップによって識別され、テナント識別子置換が可能であることを示す属性を備える列の中に格納するステップ；
を含む動作を前記１つ又は複数のコンピュータに動作を実行させることができる命令を前記記憶デバイスが記憶しているシステム。
【請求項２２】
１つ又は複数のコンピュータ及び１つ又は複数の記憶デバイスを含むシステムであり、前記１つ又は複数のコンピュータによって実行されると、
記録を受信するステップ；
前記記録のテナント識別子列からテナント識別子の符号化値を削除するステップ；
前記テナント識別子の前記符号化値が、前記記録の少なくとも１つの他の列に格納されていることを判定するステップ；
前記テナント識別子の前記符号化値が格納されている前記記録の列を識別するビットマップを生成するステップ；
前記ビットマップにより識別される前記記録の前記列から前記テナント識別子の前記符号化値を削除するステップ；及び
前記ビットマップと前記テナント識別子の前記符号化値を前記記録の記録ヘッダ内に格納するステップ；
を含む動作を前記１つ又は複数のコンピュータに動作を実行させることができる命令を前記記憶デバイスが記憶しているシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テナント識別子の置換のための方法及びシステムに関する。
【背景技術】
【０００２】
マルチテナントデータベースの記録には、その記録を所有するテナント（tenants）を示すテナント識別子（tenant identifiers）が含まれる場合がある。ある状況では、あるテナントに属する記録は、その記録に含まれるテナント識別子を新しいテナント識別子に置き換える必要が生じることがある。記録にすでに格納されているテナント識別子を、記録のグループのために、新しいテナント識別子に置換（translation）することは、計算集約的（computational intensive）であってもよい。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書に開示される技術は、テナント識別子の置換を可能にし、データベース記録の所有者を識別するために使用されるテナント識別子のより効率的な置換を可能にし得る。テナント識別子の値を格納するテナント識別子列を含む記録は、テナント識別子列からテナント識別子の値を削除することができる。テナント識別子の値が、テナント識別子列以外の記録の列に、例えば符号化形式で格納されている場合、記録のどの列がテナント識別子の値を格納しているかを示すビットマップを作成することができる。次に、テナント識別子の値を、テナント識別子の値を格納している記録の列から削除することができる。テナント識別子とビットマップの値は、記録の記録ヘッダに格納することができる。また、記録には、マルチテナントデータベース内の記録を識別するキーを含めることもできる。記録のキーには、テナント識別子の値を含めることができる。テナント識別子の値は、その値をその列から削除した記録が開梱されるときに、記録のキーから、又は記録を識別したクエリの走査記述子から取得することができる。記録についてテナント識別子の置換が必要な場合、記録のキーのテナント識別子の値を新しい値、すなわち新規テナント識別子に置き換えることができる。記録ヘッダ内のビットマップを、以前にテナント識別子の値を格納していた記録の列を識別するために使用することができる。識別された列のメタデータをチェックして、その列でテナント識別子置換が可能になっているかどうかを判定することができる。テナント識別子の新しい値は、メタデータがテナント識別子の置換が可能であることを示すビットマップにより識別される列の値として使用することができる。ビットマップで識別される列のうち、メタデータがテナント識別子の置換を必要としないことを示す列は、記録の記録ヘッダから取り出されたテナント識別子の値をその列の値として持つことができる。
【０００４】
テナント識別子は、データベースシステムに格納された記録の所有者を識別するために使用され得る。テナントに割り当てられたテナント識別子の値は、データベースシステムに格納される可能性のあるテナントに属するすべての記録のキーの一部として使用することができる。テナント識別子の値は、例えば、英数字ストリングとして表すことができる。
【０００５】
データベースシステムがマルチテナントデータベースシステムである場合、テナントの各々に固有のテナント識別子を割り当てることができる。マルチテナンシーは、種々のテナント、例えば、ユーザ、ユーザのグループ又は組織が、種々のテナント間で共有され得るデータベースシステム上のソフトウェアツール又はインスタンスを介して、データベースシステム内のそれら自身の記録にアクセスすることを可能にする。各テナントの記録は、そのテナントに設定された記録の一部とすることができる。データベースは、例えば、リレーショナルデータベース、階層データベース、又は任意の他の適切なデータベースタイプであってもよい。データベースシステムに格納される全ての記録は、例えば、ログ構造化結合ツリーを含む、任意の適切な構造に格納することができる。
【０００６】
データベースシステムに格納された記録は、キーを含んでもよい。キーは、記録の識別子、例えば、主キーであってもよく、例えば、英数字シーケンスのような任意の適切な形式であってもよい。キーの一部は、記録に関する情報を提供することができる。例えば、キーの一部は、記録が属するテナントのテナント識別子の値である。キーの他の部分は、例えば、記録の値が行の内容である場合に、テーブル番号及び行の識別を識別することができる。
【０００７】
記録には値を含めることができる。記録の値は、例えば、列ごとに１つの値を持つタプルとして格納された、リレーショナルデータベースの1つのテーブルの一行内の列の内容であってもよい。タプルとして格納される値は、例えば、バイナリ符号化を使用して符号化されてもよい。記録の中には、タプルで符号化された記録を所有するテナントのテナント識別子の値を、テナント識別子の符号化された値として格納するものがある。テナント識別子の符号化値は、例えば、記録のテナント識別子列に格納され得る。テナント識別子の符号化値はまた、テナント識別子列ではないかもしれない記録の他の列に格納されてもよい。
【０００８】
状況によっては、記録のテナント識別子を置換する必要があるかもしれない。テナント識別子置換は、記録中のテナント識別子の値を新しい値、すなわち新規テナント識別子に置き換えることができる。例えば、テナントの記録集合内の記録がコピーされて、テナントの記録集合の全部又は一部の複製（clone）を作成する場合、例えばサンドボックス化のために、テナント識別子置換を使用して、コピーされた記録に新しいテナント識別子を割り当てることができる。これにより、複製元のテナントの記録集合内の記録とは無関係に、テナントがサンドボックスデータベース内の記録を使用することができる。
【０００９】
より効率的なテナント識別子の置換を可能にするために、データベースシステムに格納された記録を修正することができる。記録は、そのテナント識別子列から除去されたテナント識別子の符号化値を有し得る。テナント識別子列の属性番号は、記録の記録ヘッダに格納してもよい。記録ヘッダに記録タイプ指示子を設定してもよい。記録タイプ指示子は、記録がテナント識別子列から除去されたテナント識別子の符号化された値を持つことを示すために、「１」又は「真」に設定され得るビットであり得る。テナント識別子の符号化値をテナント識別子列以外の列にも格納する記録が、ビットマップを生成することができる。記録に対して生成されるビットマップは、記録のどの列がテナント識別子の符号化された値を格納しているかを示すことができる。次いで、テナント識別子の符号化値は、テナント識別子の符号化値を格納した記録の列から除去され得る。テナント識別子及びビットマップの符号化値は、記録の記録ヘッダに格納されてもよい。ビットマップ指示子は、ビットマップとテナント識別子の符号化値の両方の存在を示すために、記録ヘッダ内に設定されてもよい。ビットマップ指示子は、ビットマップとテナント識別子の符号化された値を記録ヘッダが格納することを示すために、ビットであってもよく、「１」にセットされてもよいし、「真」であってもよい。これは、結果として、その列にテナント識別子の値、又はテナント識別子の符号化値を格納しない記録を生じる可能性がある。
【００１０】
ビットマップは、任意の適切なフォーマットであってもよい。例えば、記録のビットマップは、記録の列の個数に等しいか、又は１だけ小さい桁数を持つバイナリ文字列として格納されてもよい。バイナリ文字列の各ビットは、記録の列に対応する可能性があるため、記録のすべての列、又はテナント識別子の列ではないすべての列に対してバイナリ文字列のビットが存在する可能性がある。ビットマップが生成されると、列に対応するビットは、その列がテナント識別子の符号化値を格納する場合は１に、その列がテナント識別子の符号化値を格納しない場合は０に設定され得る。
【００１１】
記録は、例えば、記録がデータベースシステムの永続的記憶装置に書き込まれる前に、記録の記憶域内表現に梱包されるときに、記録の列からテナント識別子の値を除去するように修正されてもよい。
【００１２】
テナント識別子の符号化値をその列から除去した記録が永続記憶装置からデータベースシステムの作業メモリに読み込まれるとき、記録のテナント識別子列と共に使用されるテナント識別子の値は、記録のキーから、又は記録を識別するクエリの走査記述子から取り出され得る。例えば、記録のキーは、記録を所有するテナントに対するテナント識別子の値を部分的に含む英数字ストリングであってもよい。テナント識別子の値は、記録のキーから取得できる。データベースシステムに提出されたクエリに対する走査記述子は、クエリが応答可能な記録を見つけるために実行されるデータベース内の記録を所有するテナントに対するテナント識別子の値も含むことができる。走査記述子は、例えば、データベースシステム上で実行される実行装置からテナント識別子の値を受け取ることができる。テナント識別子の値は、記録が応答したクエリの走査記述子から取得することができる。キー又は走査記述子から検索されたテナント識別子の値は、符号化されてもよく、その結果得られたテナント識別子の符号化された値は、記録がデータベースシステムの作業メモリ内にある間に、記録のテナント識別子列を埋めるために使用されてもよい。記録のテナント識別子列は、記録ヘッダに格納されているテナント識別子列の属性番号によって識別される。記録の記録ヘッダがビットマップを格納する場合、記録が作業メモリ内にある間に、テナント識別子の符号化値を使用して、ビットマップによって、テナント識別子の符号化値を以前に格納したものとして識別される列を埋めることができる。記録が永続記憶装置に転送される前に作業メモリ内で梱包される場合、テナント識別子の符号化された値は、再度、テナント識別子列から及び記録が梱包される前に格納されている他の任意の列から除去され得る。
【００１３】
記録についてテナント識別子の置換が必要な場合、記録のキーにあるテナント識別子の値は、新しいテナント識別子の新しい値に置き換えることができる。例えば、記録のキーはデータベースシステムの実行者によって書き換えられ、テナント識別子の値をテナント識別子の新しい値で置き換えることができる。このことにより、データベースシステムによって記録の所有者として識別されるテナントと、その記録が属するテナント記録集合とが変更される可能性がある。例えば、テナントの記録集合がサンドボックス化のために複製される場合、テナントの記録集合からコピーされた記録は、サンドボックスデータベースを形成するために、テナントの記録集合内の記録とは別に、サンドボックスデータベース内の記録を処理できるようにするために、新しいテナント識別子が必要となる場合がある。テナント識別子の新しい値を使用して、サンドボックスデータベースの記録のキーのテナント識別子の値を置き換えることができる。テナント識別子の新しい値でキーを書き換えた記録が作業メモリに読み込まれると、データベースシステムはテナント識別子の新しい値を符号化し、テナント識別子の符号化された新しい値を使用して、記録のテナント識別子列を埋めることができる。記録のテナント識別子列は、記録の記録ヘッダに格納されているテーブル識別子列の属性番号によって識別される。
【００１４】
データベースシステムの実行装置は、記録がデータベースシステムの作業メモリにコピーされるときに、以前にテナント識別子の符号化された値を格納した記録の列を埋めてもよい。記録内のこのような列の存在は、記録ヘッダ内のビットマップ指示子ビットの値によって示されてもよく、例えば、記録ヘッダ内のテナント識別子のビットマップと符号化値の両方の存在を示すために、ビットマップ指示子ビットは１に設定されてもよい。記録の記録ヘッダに格納されたビットマップは、テナント識別子の符号化された値を格納した列を識別するために使用され得る。ビットマップがあらかじめテナント識別子の符号化値を格納していることを示す記録の列については、その列のメタデータにアクセスして、そのタイプの列に対してテナント識別子変換が可能かどうかを判定することができる。
【００１５】
列のメタデータは、データベースシステムのシステムカタログの一部になる場合がある。たとえば、列の種類をシステムカタログに格納することができる。システムカタログは、例えばブール変数の形式で、テナント識別子置換がそのタイプの列に対して可能であるかどうかの指示を含むことができる、全てのタイプの列に対するメタデータを含むことができる。テナント識別子の置換は、データベースシステムのセカンダリインデックスの一部であるいかなるタイプの列に対しても可能にすることはできない。
【００１６】
メタデータが、記録のビットマップによって識別される列の列タイプに対してテナント識別子置換が可能であることを示している場合、データベースシステムの実行装置は、キー又は走査記述子から、符号化され、記入されるべきテナント識別子の新しい値を列の値として取り出すことができる。メタデータが、ビットマップによって識別される列の列タイプに対してテナント識別子置換が可能でないことを示す場合、データベースシステムの実行装置は、記録ヘッダからテナント識別子の符号化された値を取り出して、列の値として使用することができる。記録ヘッダからのテナント識別子の符号化値は、たとえキー中のテナント識別子の値が新しいテナント識別子の新しい値に置き換えられていても、テナント識別子の元の値の符号化であってもよい。このことにより、以前にテナント識別子の元の値の符号化を格納していたが、もはや記録のコピーにテナント識別子の値を格納していない記録の列において、元の値又は新しい値のいずれか、テナント識別子の適切な値の使用が可能になる。
【００１７】
例えば、列が二次インデックスの一部であるため、テナント識別子の置換が可能でない列タイプの記録ヘッダ内のビットマップによって識別される記録の列については、データベースアプリケーションがテナント識別子の置換を適用するかどうかを決定することができる。データベースアプリケーションは、データベースシステムと対話するために使用されるアプリケーションであってもよい。例えば、データベースアプリケーションを実行する計算装置は、テナントによってデータベースシステム内のそのデータベースにアクセスするために使用されてもよい。
【００１８】
幾つかの実施形態では、テナント識別子の置換を必要とするかもしれない記録を見つけるために使用されるかもしれない規則的なデータベースインデックスがあるかもしれないし、或いはテナント識別子の置換を必要とするかもしれない記録の数が、例えばそれらがデータベースの小さなテーブルの記録であるかもしれないので、小さいかもしれない。通常のデータベースインデックスは、二次インデックスで使用される列のように、置換が可能でない可能性のある列を記録に含める場合に使用される。更新コマンドは、テナントの元の記録から複製化された記録が、例えば、データベースアプリケーションを介してアクセスするためにユーザに利用可能にされる前に、テナント識別子置換を必要とするかもしれない記録を更新することができるデータベースシステムによって実行されてもよい。更新コマンドは、正規のデータベースインデックスによってインデックス付けされた記録の全ての列、又は、テナント識別子置換を必要とするかもしれない記録の全てをウォーキングし、テナント識別子の符号化された値に一致する列内の任意の値をテナント識別子の符号化された新しい値に置き換えることによって、テナント識別子置換を実行することができる。
【００１９】
開示された主題のさらなる理解を提供するために含まれる添付の図面は、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、開示された主題事項の実施形態を説明し、詳細な説明と共に、開示された主題事項の実施形態の原理を説明するのに役立つ。開示された主題事項の基本的理解及びそれが実施され得る種々の方法のために必要である以上に詳細な構造的詳細を示す試みは行われない。
【図面の簡単な説明】
【００２０】
【図１】開示された主題の実施形態に従ったテナント識別子の置換のための例示システムを示す。
【図２Ａ】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
【図２Ｂ】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
【図２Ｃ】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
【図３】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
【図４】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
【図５Ａ】開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。
【図５Ｂ】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
【図５Ｃ】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
【図５Ｄ】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
【図６】開示された主題の実施形態に従ったテナント識別子の置換に適した例示的構成を示す。
【図７】開示された主題の実施に従ったテナント識別子の置換に適した例示的な手順を示す。
【図８】開示された主題の実施に従ったテナント識別子の置換に適した例示的な手順を示す。
【図９】開示された主題の実施形態に従ったコンピュータを示す。
【図１０】開示された主題の実施形態に従ったネットワーク構成を示す。
【発明を実施するための形態】
【００２１】
図１は、開示された主題の実施形態に従ったテナント識別子の置換のための例示システムを示す。データベースシステム１００は、テナント識別子の置換のために、例えば、図９に記載されたコンピュータ２０又はその構成要素のような任意の適切な計算装置を含むことができる。データベースシステム１００は、ラップトップ、デスクトップ、個々のサーバ、サーバ・クラスタ、サーバ・ファーム、又は分散サーバ・システム上に実装されてもよく、或いは仮想計算装置若しくはシステムとして、又は物理的システムと仮想システムとの任意の適切な組み合わせとして実装されてもよい。データベースシステム１００は、コンピューティング・システム及びネットワーク・インフラストラクチャの一部であってもよく、或いは、他のサーバ・システムをみ得るより大きなサーバ・ネットワークを含む、コンピューティング・システム及びネットワーク・インフラストラクチャに接続してもよい。データベースシステム１００は、例えば、互いに通信可能な任意の数のサーバ・システムを含むことができ、任意の適切な方法で通信可能である。例えば、データベースシステム１００の複数のサーバ・システムは、任意の適切なネットワークを介して接続されてもよい。そのようなネットワークは、LANとWANとの任意の適切な組み合わせであってもよく、任意のプライベート・ネットワークとインターネットとの任意の組み合わせを含む。データベースシステム１００は、データベース実行装置１１０及び記憶装置１４０を含んでもよい。記憶装置１４０は、永続記憶装置１４２及び作業記憶装置１４４を含むことができる。記録１５０及びシステムカタログ１６０が、永続記憶装置１４２内に記憶することができる。
【００２２】
データベース実行装置１１０は、データベースシステム１００上に記憶されたデータベースと対話して管理するための、データベースシステム１００のハードウェア及びソフトウェアの任意の適切な組み合わせであってもよい。データベースシステム１００は、例えば、多数のテナントのためのデータベースを記憶することができるマルチテナントのデータベースシステムであってもよい。記録１５０は、データベースシステム１００の多数のテナントのためのデータベースの記録を含むことができる。データベース実行装置１１０は、走査記述子（scan descriptor）を伴う受信された問い合わせ又はクエリ（query）に基づいて、あるテナントのために記録１５０から記録を検索することができ、記録１５０からの記録を操作することができる。例えば、データベース実行装置１１０は、例えば、サンドボックスデータベースの創設中にテナントの記録集合を複製（clone）する場合に、永続記憶装置１４２から作業記憶装置１５０に記録をコピーし、新しい値で記録を更新し、作業記憶装置１５０から永続記憶装置１４２へと記録をマージし、記録１５０内の記録の新しいコピーを創設することができる。
【００２３】
永続的記憶装置１４２は、記録１５０及びシステムカタログ１６０のような、データの永続的記憶のためのハードウェア及びソフトウェアの任意の適切な組み合わせとすることができる。例えば、永続記憶装置１４２は、ハードドライブ、固体ドライブその他の形態の永続データ記憶装置を含んでもよい。永続的記憶装置１４２は、任意の数の計算装置に分散されてもよい。作業記憶装置１４４は、永続的又は非永続的なデータを記憶するためのハードウェア及びソフトウェアの任意の適切な組み合わせとすることができ、記録１５０からの記録を永続的記憶装置１４２の外側で操作することを可能にするために使用することができる。例えば、作業記憶装置１４４は、ハードドライブ、固体ドライブ、ランダム・アクセス・メモリ、又は永続的であっても非永続的であってもよい他の形態のデータ記憶装置を含んでもよい。
【００２４】
記録１５０は、データベースシステム１００の種々のテナントのデータベースの記録を含むことができる。記録１５０内の記録は、その記録の所有者を識別するためのテナント識別子を含んでもよい。あるテナントに割り当てられたテナント識別子は、データベース内に格納され得る、テナントに属するすべての記録のキーの一部として使用することができる。あるテナント識別子の値は、例えば、英数字ストリングとして表すことができる。データベースシステム１００のテナントの各々に固有又は一意のテナント識別子を割り当てることができる。マルチテナンシーは、種々のテナント、例えば、ユーザ、ユーザのグループ又は組織が、種々のテナント間で共有され得るデータベースシステム１００上のソフトウェアツール又はインスタンスを介して、データベースシステム１００内のそれら自身の記録にアクセスすることを可能にし得る。記録１５０に格納された記録を含む各テナントのための記録集合（record set）は、例えば、リレーショナルデータベース、階層データベース又は任意の他の適切なデータベースタイプであってもよい。記録１５０は、データベースシステム１００の永続記憶装置１４２内に、例えば、対数構造化結合ツリー（Log-Structured Merge (LSM)）を含む任意の適切な構造で格納することができる。記録は不変に保存することができるので、記録が創設された後に記録を更新すると、保存されている記録の前のバージョンに如何なる変更も加えることなく、記録の新しいバージョンが創設される。
【００２５】
データベースシステム１００内に格納された記録１５０からの記録は、キーを含んでもよい。キーは、記録の識別子、例えば、主キー（primary key）であってもよく、例えば、英数字シーケンスのような任意の適切な形式であってもよい。キーの一部は、記録に関する情報を提供することができる。例えば、キーの一部は、記録が属するテナントのテナント識別子である。キーの他の部分は、例えば、記録の値が行（row）の内容である場合に、テーブル番号及び行の識別を識別することができる。
【００２６】
記録には値を含めることができる。記録の値は、例えば、列（column）ごとに１つの値を持つタプル（tuple）として格納される、リレーショナルデータベースの１つのテーブルの一行内の複数列の内容であってもよい。タプルとして格納される値は、例えば、バイナリ符号化を使用して符号化（encoded）されてもよい。記録によっては、タプル内の記録を所有するテナントのテナント識別子の符号化値を格納する場合がある。テナント識別子の符号化値は、例えば、記録のうちテナント識別子列内に格納され得る。テナント識別子の符号化値はまた、テナント識別子列ではないかもしれない、記録の他の列に格納されてもよい。
【００２７】
システムカタログ１６０は、データベースシステム１００内に格納されるテナントの記録集合のためのメタデータを含んでもよい。例えば、システムカタログ１６０は、テナントの記録集合について記録１５０の記録内で使用される様々な列タイプのプロパティを記述するメタデータを含んでもよい。
【００２８】
図２Ａは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。記録１５０からの記録２００が、例えばデータベースシステム１００へのクエリに応答して、データベース実行装置１１０によって作業記憶装置１４４にコピーすることができる。データベース実行装置１１０は、例えば、記録２００のタプルを複数列へと展開するなどして、記録２００を開梱又はアンパック（unpack）することができる。記録２００は、キー２１０、記録ヘッダ２２０、及び値２３０を含んでもよい。キー２１０は、テナントの記録集合内の記録２００を識別するために使用されるキーであってもよく、テナント識別子２１１及びキーデータ２１２を含んでもよい。テナント識別子２１１は、その記録２００を所有するテナントについてのテナント識別子２１１の値であってもよい。キーデータ２１２は、例えば、記録２００についてのテーブル番号及び該テーブルの行の識別など、キー２１０に含まれる他のデータであってもよい。キー２１１は、テナント識別子２１１とキーデータ２１２との連結であり得る英数字ストリングの形態で格納され得る。
【００２９】
記録ヘッダ２２０は、記録２００の一部であってよく、メタデータと、値２３０の外側にある記録２００の他の追加データとを格納することができる。例えば、記録ヘッダ２００は、記録２００のプロパティを示すために、例えば「１」、「真」、「０」又は「偽」に設定することができるビットとして、指示子（indicators）を含んでもよい。
【００３０】
記録２００の値２３０は、記録２００の複数列内に格納された値を含んでもよい。値２３０は、タプルを形成し得る。記録２００の列は、例えばキーデータ２１２で識別されるものとして、記録２００が属するテナントの記録集合のテーブルの列に基づくことができる。例えば、列は、テナント識別子列２３１及びデータ列２３２、２３３、２３４及び２３５であってもよい。テナント識別子列２３１は、テナント識別子２１１の値の符号化であってもよい、符号化テナント識別子２４１を格納する列であってもよい。符号化は、例えば、バイナリ符号化であってもよい。データ列２３２、２３３、２３４及び２３５は、記録のための様々なタイプのデータを格納する列であってもよく、例えば、文字ストリングのセット又は変化する長さの文字ストリング、又は数字でよい。例えば、データ列２３２は、文字ストリング又は数字のような値の符号化であり得る列値２４２を格納することができる。データ列２３５は、文字列又は数字のような値の符号化であってもよい列値２４５を格納することができる。テナントのための記録１５０のいくつかの記録において、テナント識別子の符号化値は、テナント識別子列ではない記録の列内に格納されてもよい。例えば、記録２００は、テナント識別子列２４１に加えて、符号化されたテナント識別子２４１をデータ列２３３及び２３４内に格納することができる。
【００３１】
図２Ｂは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データ実行装置１１０は、作業記憶装置１４４内にある記録２００のような記録を、テナント識別子のより効率的な置換を可能にする形式に変換することができ、その後、記録がパックされ、永続記憶装置１４２に記憶される。データベース実行装置１１０は、テナント識別子列２３１から符号化されたテナント識別子２４１を除去することができ、それによりテナント識別子列２３１によって格納された値が空の値になり得る。データベース実行装置１１０は、記録ヘッダ２２０内にテナント識別子列属性番号（tenant identifier column attribute number）２２１を格納することができる。テナント識別子列属性番号２２１は、値２３０内のテナント識別子列２３１を識別するために使用され得る。データベース実行装置１１０は、記録タイプ指示子２２２を「１」又は「真」に設定することができる。記録タイプ指示子（record type indicator）２２２は、記録２００がテナント識別子列２３１から符号化テナント識別子２４１を除去した場合を示すために使用され得るビットのような指示子であってもよい。もし記録２００が符号化テナント識別子２４１を値２３０の他の列のいずれにも含まなかった場合には、データベース実行装置１１０は、永続的記憶装置１４２内の記録１５０と共に記憶するために、記録２００内に梱包又はパック（pack）する。
【００３２】
図２Ｃは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置１１０は、値２３０内の残りの列を検査して、いずれかの列が符号化されたテナント識別子２４１を格納しているかどうかを判定することができる。データベース実行装置１１０は、符号化テナント識別子２４１がデータ列２３３及びデータ列２３４に格納されていることを見出すことができる。データベース実行装置１１０は、データ列２３３及びデータ列２３４から符号化されたテナント識別子２４１を除去し、それにより両方の列が空の値を格納することができる。データベース実行装置１１０は、符号化テナント識別子２４１を記録２００の記録ヘッダ２２０内へと書き込むことができる。データベース実行装置は、ビットマップ２２４を生成することができる。
【００３３】
ビットマップ２２４は、テナント識別子列２３１の外側の記録２００の値２３０のうち、符号化されたテナント識別子２４１を格納していた列を識別することができる。例えば、記録２００のビットマップ２２４は「００１１０」であってもよく、これは、テナント識別子列２３１の外側の列のうち、第３及び第４の列、すなわちデータ列２３３及びデータ列２３４が符号化されたテナント識別子２４１を格納していたことを示す。ビットマップ２２４は、記録ヘッダ２２０に書き込むことができる。
【００３４】
データベース実行装置１１０は、ビットマップ指示子２２５を「１」又は「真」に設定することができる。ビットマップ指示子２２５は、例えば、記録ヘッダ２２０がビットマップ２２４のようなビットマップと、符号化テナント識別子２４１のようなテナント識別子の符号化値とを格納しているかどうかを示すビットであってもよい。
【００３５】
図３は、開示された主題の実施形態に従ったテナント識別子の置換のための例示的な構成を示す。データベース実行装置１１０は、記録２００の形式を変更した後、記録２００を梱包し、それを記録１５０とともにデータベースシステム１００の永続記憶装置１４２内に格納することができる。記録２００は、作業記憶装置１４４から除去することができる。
【００３６】
図４は、開示された主題の実施形態に従ったテナント識別子の置換のための例示的な構成を示す。データベースシステム１００内のテナントの記録集合が、例えば、サンドボックスデータベースを創設するために複製（cloned）されてもよい。データベース実行装置１１０は、永続的記憶装置１４２内の記録１５０から、作業記憶装置１４４へ、テナントの記録集合の記録をコピーすることができる。例えば、データベース実行装置１１０は、記録２００を記録４００として作業記憶装置へとコピーすることができる。記録２００内の梱包されたデータ、例えば、値２３０に対する値を含むタプルは、記録２００が記録４００として作業記憶装置へとコピーされるときに、拡張（expanded）され得る。
【００３７】
図５Ａは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。記録４００は、記録２００のコピーであってもよく、キー４１０、記録ヘッダ４２０及び値４３０を含んでもよい。キー４１０は、テナント識別子２１１及びキーデータ２１２を含むキー２１０のコピーであってもよい。記録ヘッダ４２０は、記録ヘッダ２２０のコピーであってもよく、テナント識別子属性番号２２１、記録タイプ指示子２２２、符号化テナント識別子２４１、ビットマップ２２４及びビットマップ指示子２２５を含んでもよい。値４３０は、値２３０のコピーであってよく、空値を格納するテナント識別子列２３１、列値２４２を格納するデータ列２３２、空値を格納するデータ列２３３、空値を格納するデータ列２３４、列値２４５を格納するデータ列２３５を含む。
【００３８】
図５Ｂは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置１１０は、記録２００を含むテナントの記録集合からの記録から複製（cloned）されたサンドボックスデータベースで使用するための記録４００を準備するために、記録４００のテナント識別子の置換を実行することができる。テナント識別子の置換は、サンドボックスデータベース内の記録と、該サンドボックスデータベースを創設するために複製がなされたテナントの記録集合内の記録との間の衝突（conflict）を防ぐために必要とされる場合がある。
【００３９】
データベース実行装置１１０は、記録４００のコピー元である記録２００を所有するテナントについてのテナント識別子の値を決定することができる。データベース実行装置１１０によるテナント識別子の値の決定は、キー４１０から、又はデータベースシステム１００によって受信され記録２００が応答したクエリの走査記述子（scan descriptor）から、例えば、サンドボックスデータベースを創設するために複製するために記録を位置づけるために使用される走査記述子から実行できる。次いで、データベース実行装置１１０は、テナント識別子のための新しい値を、例えば新規テナント識別子４１１を使用して、キー４１０内のテナント識別子、例えばテナント識別子２１１の値を置き換えることができる。新規テナント識別子４１１は、テナント識別子２１１の値とは異なるテナント識別子の値であってもよく、新規テナントが記録４００を所有していることを示す。新規テナント識別子４１１によって表される新規テナントは、テナント識別子２１１によって表されるテナントと同一の実体（entity）、例えば、同一のユーザ、ユーザのグループ又は組織であってもよく、或いは異なる実体であってもよい。例えば、組織全体がテナント識別子２１１によって表されてもよく、その組織のサブセットのみがテナント識別子４１１によって表されてもよい。このことにより、既存のテナントの記録集合の複製であるサンドボックスデータベースへのアクセスを有する人及び組織を含む実体に対する制御が可能となり、サンドボックスデータベースとテナントの記録集合とへのアクセスを分離できる。
【００４０】
データベース実行装置１１０は、ビットマップ指示子２２５をチェックすることができる。ビットマップ指示子２２５が「０」又は「偽」に設定された場合、データベース実行装置１１０は、記録４００についてのテナント識別子の置換を完了することができる。次いで、データベース実行装置１１０は、新規テナント識別子４１１を符号化し、符号化したものをテナント識別子列２３１（テナント識別子列属性番号２２１を用いて識別される）の中に格納し、記録４００をサンドボックスデータベースの一部として利用可能にする。
【００４１】
図５Ｃは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置１１０は、記録ヘッダ４２０内のビットマップ指示子２２５をチェックすることができる。ビットマップ指示子２２５は、記録ヘッダ４２０がビットマップと符号化されたテナント識別子の両方を記憶することを示す「１」又は「真」に設定することができる。
【００４２】
データベース実行装置１１０は、例えば「００１１０」であってよいビットマップ２２４をチェックして、値４３０内のどの列が符号化されたテナント識別子２４１を以前に格納していたかを決定することができる。データベース実行装置１１０は、データ列２３３及び２３４が符号化テナント識別子２４１を以前に格納していたことを決定することができる。データベース実行装置１１０は、システムカタログ１６０からの列メタデータをチェックして、データ列２３３及び２３４の列タイプについてテナント識別子置換が可能（enabled）又は不能（disabled）であるかどうかを判断することができる。列メタデータは、データ列２３３の列タイプについてはテナント識別子置換が可能であるが、データ列２３４の列タイプに対しては不能であることを示すことができる。データベース実行装置１１０は、テナント識別子の符号化された新しい値である新規識別子４１１を、符号化された新規テナント識別子４４１として、データ列２３３内に格納することができる。
【００４３】
データベース実行装置は、記録ヘッダ４２０から符号化テナント識別子２４１をコピーし、符号化テナント識別子２４１をデータ列２３４へと書き込むことができる。データベース実行装置はまた、符号化された新規テナント識別子４４１をテナント識別子列２３１へと書き込むことができる。テナント識別子列２３１は、テナント識別子列属性番号２２１を使用して識別することができる。このことにより、データベースシステム１００上で実行することができる記録４００のためのテナント識別子の置換の一部を、結果としてデータベースの破損を生じさせることなく、完了させることができる。記録４００は、例えば、データベースシステム４００と対話するために使用され得るデータベースアプリケーションによってアクセスできるようにすることができる。
【００４４】
図５Ｄは、開示された主題の実施形態に従ったテナント識別子の置換のための例示的構成を示す。データベース実行装置１１０は、記録４００を梱包し記録１５０と共に永続記憶装置１４２内に格納するために、記録４００を準備することができる。このことは、テナント識別子列２３１及びデータ列２３３から符号化された新規テナント識別子４４１を除去し、データ列２３４から符号化されたテナント識別子２４１を除去することによって達成される。また、データベース実行装置１１０は、ビットマップ２２４を再度生成することもできる。例えば、ビットマップ２２４は、記録４００の列のうち、テナント識別子列２３１の外側の列で、符号化された新規テナント識別子４４１のコピーが発生したことに基づいて再生成され得る。
【００４５】
図６は、開示された主題の実施形態に従ったテナント識別子の置換のための例示的な構成を示す。データベース実行装置１１０は、記録４００のテナント識別子の置換を完了した後、記録４００を梱包し、それを記録１５０と共にデータベースシステム１００の永続記憶装置１４２内に格納することができる。記録４００は、作業記憶装置１４４から除去することができる。
【００４６】
図７は、開示された主題の実施形態に従ったテナント識別子の置換に適した例示的な手順を示す。ステップ７０２において、テナント識別子の符号化値を記録のテナント識別子列から除去することができる。例えば、データ実行装置１１０は、永続的記憶装置１４２から作業記憶装置１４４へと記録２００をコピーし、符号化されたテナント識別子２４１をテナント識別子列２３１から除去することができる。
【００４７】
ステップ７０４において、テナント識別子の符号化値が記録の任意の追加の列に格納されている場合には、フローはステップ７０６に進むことができる。そうでなければ、フローはステップ７１４に進み、そこで記録のための記録タイプ指示子が設定されることができる。例えば、データベース実行装置１１０は、記録２００の値２３０の列をチェックして、符号化されたテナント識別子２４１をまだ格納しているものがあるかどうかを判定することができる。
【００４８】
ステップ７０６において、テナント識別子の符号化された値を格納する列を識別するビットマップが生成され得る。例えば、データベース実行装置１１０は、符号化テナント識別子２４１を格納するものとして、記録２００のデータ列２３３及び２３４を識別することができるビットマップ２２４を生成することができる。
【００４９】
ステップ７０８において、テナント識別子の符号化値は、それが格納される任意の追加の列から除去され得る。例えば、データベース実行装置１１０は、符号化されたテナント識別子２４１を記録２００のデータ列２３３及び２３４から除去することができる。
【００５０】
ステップ７１０において、ビットマップ及びテナント識別子の符号化値は、記録ヘッダに格納されることができる。例えば、データベース実行装置１１０は、ビットマップ２２４及び符号化テナント識別子２４１を記録２００の記録ヘッダ２２０に書き込むことができる。
【００５１】
ステップ７１２において、記録ヘッダ内のビットマップ指示子を「真」に設定することができる。例えば、データベース実行装置１１０は、ビットマップ２２４及び符号化テナント識別子２４１が両方とも記録２００の記録ヘッダ２２０に格納されていることを示すために、記録ヘッダ２２０内のビットマップ指示子２２５を「１」又は「真」に設定することができる。
【００５２】
ステップ７１４において、記録ヘッダ内の記録タイプ指示子を「真」に設定することができる。例えば、データベース実行装置１１０は、記録２００の値２３０のうち、全ての列から格納した符号化テナント識別子２４１を除去したことを示すために、記録タイプ指示子２２２を「１」又は「真」に設定することができる。
【００５３】
図８は、開示された主題の実施形態に従ったテナント識別子の置換に適した例示的な手順を示す。ステップ８０２において、テナント識別子の値が決定され得る。例えば、データベース実行装置１１０は、サンドボックスデータベースを創設するためのテナントの記録集合の複製の一部として、記録２００を記録４００として作業記憶装置１４４へとコピーしたかも知れない。データベース実行装置１１０は、記録４００のテナント識別子の置換を実行して、それをサンドボックスデータベースでの使用のために準備することができる。データベース実行装置１１０は、例えば、キー４１０からテナント識別子２１１を読み取るか、或いは記録２００が応答したクエリで使用された走査記述子からテナント識別子２１１を検索することによって、テナント識別子２１１を決定することができる。
【００５４】
ステップ８０４において、テナント識別子の値は、キー内で、テナント識別子の新しい値に置き換えることができる。例えば、データベース実行装置１１０は、キー４１０内のテナント識別子２１１を新規テナント識別子４１１に置き換えることができる。新規テナント識別子４１１は、記録２００のコピーとして記録４００を含み得るサンドボックスデータベースのために使用される新しいテナント識別子のための新しい値であってよい。
【００５５】
ステップ８０６において、もしビットマップ指示子が記録ヘッダ内に設定されている場合には、フローはステップ８０８に進むことができる。そうでなければ、フローは、ステップ８０８に進むことができ、そこでテナント識別子列は、テナント識別子の新しい値の符号化で満たされ得る。例えば、データベース実行装置１１０は、記録ヘッダ４３０内のビットマップ指示子２２５をチェックして、ビットマップ指示子２２５が「真」又は「１」に設定されているのか、或いは「偽」又は「０」に設定されているのかを判断することができる。
【００５６】
ステップ８０８において、ビットマップ内で識別され、置換が可能でない（複数の）列を、記録ヘッダからのテナント識別子の符号化された値で埋めることができる。例えば、データベース実行装置１１０は、データ列２３３及び２３４についてのメタデータをチェックすることができ、これは、符号化テナント識別子２４１を以前に格納したものとして、ビットマップ２２４によって示され得る。メタデータは、テナント識別子置換がデータ列２３４に対して可能ではないことを示すことができる。データベース実行装置１１０は、符号化テナント識別子２４１を記録ヘッダ２２０からコピーし、それをデータ列２３４に書き込むことができる。
【００５７】
ステップ８１０において、ビットマップ内で識別され、置換が可能である（複数の）列を、テナント識別子の符号化された新しい値で埋めることができる。例えば、データベース実行装置１１０は、データ列２３３及び２３４のメタデータをチェックすることができ、これは、ビットマップ２２４によって、符号化されたテナント識別子２４１を以前に格納したものとして示され得る。メタデータは、データ列２３３に対してテナント識別子置換が可能であることを示すことができる。データベース実行装置１１０は、例えば、キー４１０からの、又はメモリに保持されている新規テナント識別子４１１を符号化し、符号化された新規テナント識別子４４１をデータ列２３３に書き込むことができる。
【００５８】
ステップ８１２において、テナント識別子列は、符号化された新規テナント識別子で埋められてもよい。例えば、データベース実行装置１１０は、新規符号化テナント識別子４４１をテナント識別子列２３１に書き込むことができ、これは、記録ヘッダ２２０内のテナント識別子列属性番号２２１に基づいて識別することができる。
【００５９】
本開示の主題の実施形態は、種々の構成要素及びネットワークアーキテクチャにおいて実施され、それらと共に使用され得る。図９は、ここで開示されている主題の実施形態を実施するのに適した例示的なコンピュータ２０である。本明細書でさらに詳細に説明するように、コンピュータ２０は、マルチコンピュータのネットワーク内の単一のコンピュータであってよい。図９に示すように、コンピュータは、中央コンポーネント３０（例えば、サーバ、クラウドサーバ、データベースなど）と通信することができる。中央コンポーネント３０は、第２コンピュータ３１のような１つ又は複数の他のコンピュータと通信することができる。本実施態様に従って、中央コンポーネント３０へと及び／又は中央コンポーネント３０から得られた情報は、各コンピュータについて分離することができ、それによりコンピュータ２０がコンピュータ３１と情報を共有しないようにできる。変形的に又は追加的に、コンピュータ２０は、第２コンピュータ３１と直接通信することができる。
【００６０】
コンピュータ(例えば、ユーザコンピュータ、エンタープライズコンピュータ等)２０は、バス２１を含む。バス２１は、中央プロセッサ２４のようなコンピュータ２０の主要構成要素と、メモリ２７（典型的には、RAM、フラッシュRAM等も含むことができる）と、入力／出力コントローラ２８と、ディスプレイ又はタッチスクリーンのようなユーザディスプレイ２２と、１つ以上のコントローラ及びキーボード、マウス、Wi-Fi／セルラ無線、タッチスクリーン、マイクロフォン／スピーカ等のような関連するユーザ入力又は装置とを含むユーザインターフェース２６とを相互接続する。バス２１は、I/Oコントローラ２８と、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SANデバイス、SCSIデバイス等のような固定記憶装置２３と、光ディスク、フラッシュドライブ等を制御及び受信するように動作するリムーバブル媒体構成要素２５とに密接に接続することができる。
【００６１】
バス２１は、中央プロセッサ２４とメモリ２７との間のデータ通信を可能にする。メモリ２７は、前述したように、読み出し専用メモリ（ROM）又はフラッシュメモリ(どちらも図示せず)、及びランダムアクセスメモリ(RAM)を含んでもよい。RAMは、オペレーティング・システム及びアプリケーション・プログラムがロードされるメイン・メモリを含むことができる。ROM又はフラッシュメモリは、とりわけ、周辺構成要素との相互作用のような基本的なハードウェア動作を制御する基本入出力システム（BIOS）を含むことができる。コンピュータ２０に常駐するアプリケーションは、ハードディスクドライブ（例えば、固定記憶装置２３）、光学式ドライブ、フロッピーディスク、又は他の記憶媒体２５のようなコンピュータ読取可能媒体上に記憶され、これを介してアクセスすることができる。
【００６２】
固定記憶装置２３は、コンピュータ２０と一体化されていてもよいし、他のインターフェースを介して分離されてアクセスされてもよい。ネットワークインターフェース２９は、電話リンクを介して遠隔サーバへの直接接続、インターネットサービスプロバイダ（ISP）を介してインターネットへの接続、直接ネットワークリンクを介して遠隔サーバへの直接接続、又はPOP又は他の技術を介してインターネットへの接続を提供することができる。ネットワークインターフェース２９は、デジタルセルラ電話接続、セルラ・デジタル・パケット・データ（CDPD）接続、デジタル衛星データ接続などを含む無線技術を使用して、そのような接続を提供することができる。例えば、ネットワークインターフェース２９は、図１０に示すように、１つ又は複数のローカル、広域又は他のネットワークを介して、コンピュータを他のコンピュータと通信させることができる。
【００６３】
多くの他の装置又は構成要素(図示せず)は、同様の方法(例えば、ドキュメントスキャナ、デジタルカメラなど)で接続することができる。反対に、本開示を実施するために、図９に示された全ての構成要素が存在する必要はない。これらの構成要素は、示されたものとは異なる方法で相互接続することができる。図９に示すようなコンピュータの動作は、当技術分野では容易に知られており、本出願では詳細に説明しない。本開示を実施するためのコードは、メモリ２７、固定記憶装置２３、リムーバブル媒体２５のうちの１つ以上、又は遠隔記憶場所のようなコンピュータ読取可能記憶媒体内に格納することができる。
【００６４】
図１０は、開示された主題の実施形態に従ったネットワーク配置例を示す。コンピュータ、マイクロコンピュータ、ローカルコンピュータ、スマートフォン、タブレットコンピューティングデバイス、エンタープライズデバイスなどの１つ又は複数のクライアント１０、１１は、１つ又は複数のネットワーク７（例えば、電力分配ネットワーク）を介して他のデバイスに接続することができる。ネットワークは、ローカルネットワーク、広域ネットワーク、インターネット、又は任意の他の適切な単一通信ネットワーク又は複数ネットワークであってもよく、有線及び／又は無線ネットワークを含む任意の適切なプラットフォーム上で実施することができる。クライアントは、１つ以上のサーバ１３及び／又はデータベース１５と通信することができる。これらの装置は、クライアント１０、１１によって直接アクセス可能であってもよく、或いはサーバ１３がデータベース１５に格納されたリソースへのアクセスを提供する場合のように、１つ以上の他の装置が中間アクセスを提供してもよい。クライアント１０、１１はまた、遠隔プラットフォーム１７又は遠隔プラットフォーム１７によって提供されるサービス、例えばクラウドコンピューティング配列及びサービスにアクセスすることができる。遠隔プラットフォーム１７は、１つ以上のサーバ１３及び／又はデータベース１５を含んでもよい。第１のクライアントからの、又は第１のクライアントに関する情報はそのクライアントに限定されてもよい。例えば、クライアント１０に関する情報はクライアント１１とは共有されない。変形的に、第１のクライアントからの、又は第１のクライアントに関する情報は、他のクライアントと共有する前に、匿名化してもよい。例えば、クライアント１０に関する如何なるクライアント識別情報も、クライアント１０に関連するクライアント１１に提供される情報から除去することができる。
【００６５】
より一般的には、現在開示されている主題の種々の実施形態は、これらのプロセスを実施するためのコンピュータに実装されたプロセス及び装置の形態を含んでもよく、又はそれらの形態で実施されてもよい。また、実施形態は、フロッピーディスケット、CD-ROM、ハードドライブ、USB (ユニバーサルシリアルバス)ドライブ、又は他の任意の機械可読記憶媒体のような非一時的及び／又は有形媒体に実装された命令を含むコンピュータプログラムコードを有するコンピュータプログラムプロダクトの形態で実施することもでき、コンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは開示された主題の実施形態を実施するための装置となる。また、実施形態は、コンピュータプログラムコードの形態で実施することもでき、例えば、記憶媒体に記憶されるか、コンピュータにロードされ、かつ／或いは、コンピュータによって実行されるか、或いは、電気配線若しくはケーブルを介して、ファイバオプティクスを介して、又は、電磁放射線を介して、ある伝送媒体を介して送信されるかにかかわらず、コンピュータプログラムコードは、コンピュータにロードされ、コンピュータによって実行されると、コンピュータが開示された主題の実施形態を実施するための装置となる。汎用マイクロプロセッサで実施されるとき、コンピュータプログラムコードのセグメントが、特定の論理回路を作り出すようにマイクロプロセッサを構成する。幾つかの構成では、コンピュータ可読記憶媒体上に記憶された一組のコンピュータ可読命令は、汎用プロセッサによって実施することができ、汎用プロセッサ又は汎用プロセッサを含む装置を、命令を実施又は実行するように構成された専用装置に変換することができる。実施形態は、汎用マイクロプロセッサ及び／又はハードウェア及び／又はファームウェアにおける開示された主題の実施形態に従って技法の全部又は一部を実施する特定用途向け集積回路などのプロセッサを含み得るハードウェアを使用して実施され得る。プロセッサは、RAM、ROM、フラッシュメモリ、ハードディスク、又は電子情報を記憶することができる他の任意のデバイスなどのメモリに結合することができる。メモリは、開示された主題の実施形態に従って技術を実行するために、プロセッサによって実行されるように適合された命令を記憶することができる。
【００６６】
上の記述は、説明の目的のために、特定の実施形態を参照して記述されている。しかしながら、上記の例示的な記述は、網羅的であること、又は開示された主題の実施を開示された正確な形態に限定することを意図したものではない。上記の教示を考慮すると、多くの修正及び変形が可能である。実施形態は、開示された主題の実施の原理及びそれらの実際の用途を説明するために選択され、説明され、それにより、当業者は、意図された特定の用途に適した様々な修正を施した様々な実施形態と同様に、それらの実施を利用することができる。
【図１】
2022500724.tif 000003
【図２Ａ】
2022500724.tif 000004
【図２Ｂ】
2022500724.tif 000005
【図２Ｃ】
2022500724.tif 000006
【図３】
2022500724.tif 000007
【図４】
2022500724.tif 000008
【図５Ａ】
2022500724.tif 000009
【図５Ｂ】
2022500724.tif 000010
【図５Ｃ】
2022500724.tif 000011
【図５Ｄ】
2022500724.tif 000012
【図６】
2022500724.tif 000013
【図７】
2022500724.tif 000014
【図８】
2022500724.tif 000015
【図９】
2022500724.tif 000016
【図１０】
2022500724.tif 000017
【国際調査報告】
2022500724.tif 000018
2022500724.tif 000019