JP6720613B2 - 情報処理システム及び情報処理プログラム - Google Patents
情報処理システム及び情報処理プログラム Download PDFInfo
- Publication number
- JP6720613B2 JP6720613B2 JP2016058398A JP2016058398A JP6720613B2 JP 6720613 B2 JP6720613 B2 JP 6720613B2 JP 2016058398 A JP2016058398 A JP 2016058398A JP 2016058398 A JP2016058398 A JP 2016058398A JP 6720613 B2 JP6720613 B2 JP 6720613B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- request
- information processing
- authority
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
Description
しかし、その1箇所の記憶手段に負荷が集中し、その記憶手段が稼働していない場合は使用することができない。
そこで、本発明は、権限オブジェクトを比較して、要求に対応する処理を行う場合にあって、オブジェクトの情報を、少なくとも1つの情報処理装置内の記憶手段と複数の情報処理装置からアクセス可能な記憶手段の複数箇所で管理するようにした情報処理システム及び情報処理プログラムを提供することを目的としている。
請求項1の発明は、複数の情報処理装置を有し、少なくとも1つの情報処理装置は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置内の記憶手段で管理する第1の管理手段と、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置又は他の情報処理装置からアクセス可能な記憶手段で管理する第2の管理手段と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記第1の管理手段又は前記第2の管理手段により管理される対象オブジェクトに対する要求を、本情報処理装置又は他の情報処理装置から受け付ける受付手段と、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記対象オブジェクトの情報に対して、前記要求に対応する処理を行う処理手段を有し、前記処理手段は、前記要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、前記第1の管理手段を用いて該処理を行い、前記要求が、前記第1の管理手段が管理する記憶手段内の生成、更新、又は廃棄された情報を、前記第2の管理手段が管理する記憶手段に反映させる処理である場合は、前記第2の管理手段を用いて該処理を行い、本情報処理装置内のオブジェクトの変更の処理については権限の判定は不要とし、他の情報処理装置からのオブジェクトの変更の処理については、前記要求に付随して送付されるトークンによって請求される権限を逸脱する処理については失敗とする、ことを特徴とする情報処理システムである。
[1.情報処理装置100に備えられた機能の説明]
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態にしたがって、又はそれまでの状況・状態にしたがって定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、2以上の値(もちろんのことながら、全ての値も含む)が同じであってもよい。また、「Aである場合、Bをする」という意味を有する記載は、「Aであるか否かを判断し、Aであると判断した場合はBをする」の意味で用いる。ただし、Aであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(社会システム)にすぎないものは含まない。
また、各モジュールによる処理ごとに又はモジュール内で複数の処理を行う場合はその処理ごとに、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
データ格納モジュール110は、オブジェクト管理テーブル111、バリュー管理テーブル112を有しており、権限オブジェクト検証モジュール130、オブジェクト管理モジュール140と接続されている。
リクエスト受付モジュール120は、権限オブジェクト検証モジュール130と接続されている。
オブジェクト管理モジュール140は、配信用オブジェクト生成モジュール141を有しており、データ格納モジュール110、リクエスト処理モジュール150と接続されている。
リクエスト処理モジュール150は、権限オブジェクト検証モジュール130、オブジェクト管理モジュール140、処理結果提供モジュール160と接続されている。
処理結果提供モジュール160は、リクエスト処理モジュール150と接続されている。
図2は、本実施の形態を利用したシステム構成例を示す説明図である。
情報処理装置100A、第1端末装置250A、第2端末装置250B、第3端末装置250C、第4端末装置250D、認証装置280は、通信回線290を介してそれぞれ接続されている。第3端末装置250Cは、情報処理装置100Cを有している。第4端末装置250Dは、情報処理装置100Dを有している。通信回線290は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、情報処理装置100による機能は、クラウドサービスとして実現してもよい。
情報処理装置100を有していない第1端末装置250A、第2端末装置250Bの例は、リモートでのみ情報処理装置100Aを用いる場合を示している。情報処理装置100を有している第3端末装置250C、第4端末装置250Dの例は、リモートで情報処理装置100Aを用いる場合とローカルの情報処理装置100C、情報処理装置100Dを用いる場合を示している。[1]から[4]の説明では、主に、第1端末装置250A、第2端末装置250Bによる情報処理装置100Aの利用を示しており、[5]以降の説明では、第3端末装置250C、第4端末装置250Dによるリモート(情報処理装置100A)とローカル(情報処理装置100C、情報処理装置100D)での利用を示している。
次に、図6から図12に示されたシーケンス図に基づいて、情報処理システムで実行される処理の一例について詳細に説明する。
まず、図6に示したシーケンス図に基づいて、第1端末装置250Aと情報処理装置100とにより実行される配信用アクセストークンの生成処理の一例について説明する。まず、図6のフローにおいては、第1端末装置250Aはマスターデータ(masterCotent)の親オブジェクト(contentOwner)について子オブジェクトの生成、取得、更新、削除が可能なスコープが定められたアクセストークンT1(contentOwnerToken)を有することとする。
次に、図7に示したシーケンス図に基づいて、第2端末装置250Bと情報処理装置100により実行される、第2端末装置250Bが配信用オブジェクトのコンテンツを表示する処理の一例について説明する。以下のシーケンス例においては、第2端末装置250Bは、配信用オブジェクトの参照が可能なスコープが定められたアクセストークンtを有することとする。
次に、図8に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトの無効化処理の一例について説明する。以下のシーケンス例は、マスターデータの所有者(コンテンツオーナー)が配信用オブジェクトに無効化属性を付与することで配信用オブジェクトを無効化する例に相当する。
次に、図9に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトの無効化処理の第2の例について説明する。以下のシーケンス例においては、配信用オブジェクトの無効化を、配信用オブジェクトを削除することにより実行する。
次に、図10に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトの凍結処理について説明する。なお、凍結処理とは、予め定められた時点(例えば業務委託の終了時点)で配信用オブジェクトのマスターデータへの継続的な参照を終了させ、その時点で配信用オブジェクトの情報を固定化させる処理のことをいう。
次に、図11に示されるシーケンス図に基づき、第1端末装置250Aと情報処理装置100により実行される配信用オブジェクトに対する任意関数の追加処理について説明する。なお、以下のシーケンスの例においては、配信用オブジェクトへのアクセス時に認証装置における認証処理を行うための関数を追加することとする。
次に、図12に示されるシーケンス図に基づき、認証が追加された配信用オブジェクトを第2端末装置250Bが表示する際に実行される処理の一例について説明する。以下に説明するシーケンスの例は、認証装置280による認証が済んでいない場合に相当する。
本発明は以上説明した実施の形態に限定されるものではない。例えば、配信用オブジェクトは以下のように構成してもよい。
図13には、配信先ごとに配信用オブジェクトを作成した場合のオブジェクトの構成例を示した。図13に示すオブジェクトの木構造は、図3に示すオブジェクトの木構造と、第2ユーザへの配信オブジェクトである「childContent_2」オブジェクトD1323と、「childContent_2」オブジェクトを更新するための「childContentToken_2」オブジェクトD1324が追加されている点で相違し、その他の点で共通している。このように、配信先ごとに配信用オブジェクトを作成することにより、配信先ごとにカスタマイズされた内容での情報提供、制御の実行が可能となる。
図14には、配信先が属するテナント(組織)ごとにマスターデータの子オブジェクトを作成し、配信先をテナントの子オブジェクトとして構成した場合のオブジェクトの構成例を示した。「tenantA」D1321及び「tenantB」D1322はそれぞれ、「masterContent」D132の子オブジェクトである。そして、「tenantA」に属する配信先A1とA2に対して、それぞれ配信用オブジェクトである「childContentA1」D13211と「childContentA2」D13212を作成する。さらに、「tenantB」に属する配信先B1とB2に対して、それぞれ配信用オブジェクトである「childContentB1」D13221と「childContentB2」D13222を作成する。
図15には、配信先が属するテナントがさらに階層構造になっている場合に対応するオブジェクトの構成例を示した。図15に示されるように、「tenantA」D1321の子オブジェクトとして、「tenantX」D13213と、「tenantAToken」D13214とが作成される。ここで、「tenantAToken」D13214は、オーナーを「tenantA」、クライアントを「tenantX」、スコープをCRUDとするアクセストークンとする。これにより、テナントAは、「tenantA」の下にオブジェクトの子孫を作成することが可能となる。
図2の例を用いて前述したように、情報処理装置100を有している第3端末装置250C、第4端末装置250Dが、リモートで情報処理装置100Aを用いる場合とローカルの情報処理装置100C、情報処理装置100Dを用いる場合の例を示す。特に、記憶手段に関しては、リモート側を情報処理装置100Aとし、ローカル側をデータ格納モジュール110として説明する。
オブジェクト管理モジュール140は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、情報処理装置100で管理する。
そして、オブジェクト管理モジュール140は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、複数の端末装置250からアクセス可能な情報処理装置100Aで管理する。
リクエスト受付モジュール120は、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、データ格納モジュール110又は情報処理装置100Aにより管理される対象オブジェクトに対する要求を受け付ける。
リクエスト処理モジュール150は、権限情報を認可したオブジェクトである所有者オブジェクトと、権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、対象オブジェクトの情報に対して、要求に対応する処理を行う。
そして、リクエスト処理モジュール150は、要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、データ格納モジュール110を用いてその処理を行い、要求が、データ格納モジュール110内の生成、更新、又は廃棄された情報を、情報処理装置100Aに反映させる処理である場合は、情報処理装置100A内のデータ格納モジュール110に対してその処理を行う。
また、リクエスト処理モジュール150は、情報処理装置100Aにオブジェクトの情報の書き込みを始める前に、データ格納モジュール110内の対応するオブジェクトの情報の変更を禁止し、その書き込みが完了したときに、その禁止を解除するようにしてもよい。
また、処理結果提供モジュール160は、情報処理装置100A内のオブジェクトの情報に対して要求を行った利用者を記憶し、そのオブジェクトの情報の変更が行われた場合は、その利用者に通知を行うようにしてもよい。
しかし、大規模なデータ集約の基盤を実際に構築する場合、次に挙げる三点が問題となる。基本的には、「リモートのKVS(Key Value Store)とローカルなKVSを同期する」ということになるが、ファイルの変更履歴を記録・追跡するための分散型バージョン管理システムであるGitの場合のように、同期する対象が明確(ひとつのリポジトリに含まれる全オブジェクト)ではない。
(1)インターフェイスはサービスへのリクエストレスポンスであり、サービスが稼働していなければ利用できない。また、サービスへの負荷が集中する。リソース管理機能は、処理に必要な範囲のオブジェクトとデータのみで完結し、全オブジェクト及びデータのハンドリングとトークン検証を単一のリモートサービスで実行することは必須ではない。
例えば、多くのクラウド基盤では基本的なKVS機能はサービスとして提供されており、これらサービスの可用性は利用者の責務ではない。KVS機能によるアクセス(つまりput、get等のCRUD)をプロトタイプ継承によるトポロジカルな特権制御と矛盾なく両立できれば、サービス維持・運用の責務を負うこと無く、実質的に従来技術の効用を享受できる。また、スケーラビリティも自動的に増大できる。
(2)オブジェクト及びデータの保持部とCRUDのインターフェイスをリポジトリという。リポジトリがリモートにあることによるレイテンシーがユースケースによっては無視できない。例えば、50000台のデバイス情報をオブジェクトとして表現するとき、それらのオブジェクトに新たな属性情報(例えば、ある評価関数によるスコア評価値)を付与又は更新する場合、1オブジェクトあたり20回のオブジェクト取得・加工・変更等の処理を行う場合、オブジェクトのput/getの回数に換算すると1000000回のアクセスになる。レイテンシーが1msecのオーダーでも全体では1000秒の処理時間となり、バッチ的な処理となってしまう。
(3)スキャン操作等の非ルックアップ処理が行えない。例えば、従来技術でのオブジェクト識別子はケースによってはクレデンシャル情報であるため、一般的にルックアップしか許さないことは論理的に必須である一方、自己の所有オブジェクト(これは利用者自身のものであるため、利用者にとっては知り得ない情報ではない)に対してもこれらの制限が強制されるのは利便性・パフォーマンスの観点で引き合わない。識別子の紛失によるオブジェクトの放棄やオブジェクトのコレクションをオブジェクトとしてネストした場合の参照のオーバーヘッド等はその一例である。
なお、データ集約のユースケースでは、大きなデータセットを持っているサービス(データソース)がローカルにデータ加工した後でマスターのリモートにプッシュすることが効率的である。また、データを利用するクライアントの立場では、プルによって他のオーナーが更新したデータを取り込む必要がある。
そして、情報処理装置100Aは、リモートのデータを保持する。具体的には、KVSとしてデータを保持する。なお、識別子はデータ自身のハッシュ値とすればよい。ここでは保持された全てのキーの列挙を行うようなAPIは提供されない。また、保持手段は永続的な記憶を持ち、後述の実行手段の起動・終了を超えた寿命を持つ。
権限オブジェクト検証モジュール130は、リクエスト(要求)に含まれるトークンを検証し、成功すればスコープを取り出す。ここでトークンの検証が成功するためには、トークンは情報処理装置100Aに含まれる無効化されていないオブジェクトの識別子であり、トークンのクレームするオーナーのプロトタイプチェーンにトークンの指すオブジェクトのプロトタイプが含まれることが必要である。
データ格納モジュール110は、ローカルのオブジェクトを保持する。具体的には、KVSとしてオブジェクトを保持する。なお、識別子はランダムで推定できず偶然一致することもない。ここでは保持された全てのキーの列挙を行うような、キーのルックアップにとどまらない任意のAPIが利用できても構わない。
またデータ格納モジュール110は、ローカルのデータを保持する。具体的には、KVSとしてデータを保持する。なお、識別子はデータ自身のハッシュ値とすればよい。ここでは保持された全てのキーの列挙を行うような、キーのルックアップにとどまらない任意のAPIが利用できても構わない。
オブジェクト管理モジュール140は、変更オブジェクトのリストを保持する。データ格納モジュール110の保持する生成、更新、削除したオブジェクト(かつ、情報処理装置100Aへ未だ反映していないもの)のリストを保持する。
リクエスト処理モジュール150は、リクエストに対応する処理を行う。プロトタイプ継承されたオブジェクトがロードされプログラムが実行される。具体的には、メモリを備えた(JavaScript(登録商標)等の)実行環境である。リクエスト処理モジュール150は、情報処理装置100A、データ格納モジュール110のいずれに接続しても構わない。
また、オブジェクト管理モジュール140は、オブジェクトの更新を行う。ロードされたオブジェクト(ロード後の変更が許される)をデータ格納モジュール110に書き戻し(又は、新規にリクエスト処理モジュール150で生起したオブジェクトの場合は追加し)、変更オブジェクトのリストに書き戻した又は追加したオブジェクトを記録する。
オブジェクト管理モジュール140は、変更オブジェクトのプッシュを行う。変更オブジェクトのリストが記録したオブジェクトの集合の状態を、データ格納モジュール110から情報処理装置100Aに一括して反映する。
なお、データ格納モジュール110のローカルのオブジェクトの変更については権限の判定は不要であるが、一方、情報処理装置100Aのリモートのオブジェクトの変更については、付随して送付されるトークンによってクレームされる権限を逸脱する処理は失敗する。
情報処理装置100Aのリモートのオブジェクトの変更は、KVSの直接操作ではなく、リクエストを受信し、添付のトークンのスコープを実行する。情報処理装置100A内のリクエスト処理モジュール150を介して行ってもよい。この場合も当然、トークンによってクレームされる権限を逸脱する処理は失敗する。
(1)永続化処理(KVSへのアクセスを行う)
・put(k, v), get(k), del(k)
・bind(buf), resolve(etag), unbind(etag)
(2)実行処理(永続化処理はリモートとローカルの2種類がある)
・rs.gen(proto)
protoの子オブジェクトobjを生成し、そのオブジェクトobjを返す。
なお、永続化はせず、メモリにのみ存在する。
・rs.get(id)
実行環境に既にオブジェクトがロードされていれば、そのオブジェクトを返す。
ロードされておらず、ローカルからgetできればその値を実行環境にロードする。ローカルには無くリモートからgetできれば、その値をローカルにキャッシュし、実行環境にロードする。
また、ロードされたオブジェクトのプロトタイプを再帰的にrs.getする。
・rs.up(obj)
実行環境中のオブジェクトobjをローカルの永続化層にputする。
変更オブジェクトリストにobj.idを追加する。
・rs.down(id)
実行環境中にidのオブジェクトがロードされていれば、永続化層から再取得する。プロトタイプが別のオブジェクトに付け替えられていれば、そのプロトタイプをrs.getする。
・rs.bind(buf), rs.resolve(etag)
永続化手段のbind,resolveのラッパー(メモリへのロード・セーブを挟む)を行う。ここでラッパーとは、あるクラスや関数、データ型などが提供する機能やデータを含み、別の形で提供することである。
・rs.push()
ローカルの変更オブジェクトリストにあるオブジェクトの変更をリモートに反映する。反映が成功したオブジェクトのIDはリストから除去する。
・rs.pull()
リモートの変更オブジェクトのリスト(さらに、ローカル向けのリスト)にあるオブジェクトの変更をローカルに反映する。反映が成功したオブジェクトのIDはリストから除去する。
・(リモートの)オブジェクトツリーの一部にロック(変更禁止)をかける場合、トランザクション中のノードのルートにロックフラグを付与することで、その子孫達を一斉にロックする。
・トランザクションが完了した時に、ルートノードのロックフラグを解除することで、その子孫達のロックも一斉に解除される。
・具体的には、オブジェクト管理モジュール140が、変更オブジェクトをプッシュする場合に、リモートへの書き込みを始める前に、その変更オブジェクトに対応するローカルのオーナーオブジェクトにロックを付与し、リモートへの書き込みが完了したときに、ロックを解除する。また、オブジェクト管理モジュール140は、オブジェクトを取得する場合、情報処理装置100Aから取得したオブジェクトがロックされている場合は、ロード及びデータ格納モジュール110へのキャッシュは行わない。
・オブジェクトをCRUDした自前のKVSを持つピア(つまり、ローカルのオブジェクトとデータを保持するデータ格納モジュール110を有する端末装置250に対応)をオブジェクトごとに記憶しておき、オブジェクトに変更があった場合にそのピアに通知する。又は、ピアからの要求に応じて変更されたオブジェクトリストを渡せるようにする。
・具体的には、情報処理装置100A内のリモートのオブジェクトに対してCRUD操作を行ったピアを、オブジェクトの購読者属性(ここには購読者リストが記録される)に追加し、情報処理装置100Aのリモートのオブジェクトに対してCRUD操作(ただし、R(取得)操作は除く)が行われるときに、対象オブジェクトの購読者リストのピアに対して対象オブジェクトが更新されたことを通知する、又は、対象オブジェクトをピアのMutate属性(ここには変更されたオブジェクトリストが記録される)に追加する。なお、ここで購読者とは、CRUD操作の要求を行った利用者である。
・ファイルシステムの階層構造をオブジェクトのプロトタイプ継承関係にマップし、ルートの識別子を`.owner`に保持する。これによって、例えば、Git管理されたリポジトリと同様に直感的なオブジェクト管理、配布が可能となる。
・`.rs`ディレクトリにメタ情報やKVSをまとめる。例えば、Gitにおける`.git`ディレクトリと同様である。
・ファイルシステムへのマッピングの元に、従来技術のREST APIをローカルで起動する。これによって、ローカルなサービスを起動でき、テストや限定されたコンテンツ配布に利用できる。
従来技術(本実施の形態を用いない技術)は、リモートの処理装置に多数の端末装置がアクセスし、処理が集中しており、そのため、処理装置がボトルネックになっていた。クラスタ化等も実装又は運用に複雑性を惹起し、結局、処理装置がダウンすればサービス提供できないこととなる。また、セキュリティ要件からKVSはルックアップのみとなっていた。
本実施の形態は、分散リソースの基盤となり、データソースごとに自前の実行環境(第3端末装置250C内の情報処理装置100C)とKVSを具備し、生成、更新、廃棄については、リモートの処理装置(情報処理装置100A)とは無関係に動作する。例えば、リモートのKVSの可用性はクラウドサービス側に担保させればよい。
ローカルのKVSには、その利用者が所有するオブジェクト又は参照取得できた情報だけである。そのため、セキュリティ要件からくる制約が無くなり、任意のAPIが利用可能である。
なお、第3端末装置250Cとして、大規模なデータソースを扱うものであってもよい。
aws = require(’aws−sdk’)
なお、aws−sdkはクラウドとして提供されているWeb ServiceのSDK等が該当する。
ローカルのKVSは、次のように、SDK経由でアクセスする。
levelDB = require(’levelDB’)
なお、levelDBはリレーショナルデータベース管理システムにおけるライブラリ等が該当する。
KVSであるので、aws.put(key, value)やlevelDB.get(key)のようなAPIを持つ。
これらのAPIが、データ格納モジュール110、情報処理装置100Aにおけるオブジェクト又はデータ保持機能のKVSインターフェイスである。
また、オブジェクト管理モジュール140において、
オブジェクト取得機能である、rs.get(id)
オブジェクト更新機能である、rs.up(obj)
変更オブジェクトプッシュ機能である、rs.push()
等は、ローカル実行環境にロードされるリソース基盤ライブラリの提供するAPIとして実現できる。これらのAPIの動作例を示すフローチャートについては後述する。
本実施の形態は、これらのAPIを利用してKVSを操作する、ローカルの実行環境で動作するプログラムとしてもよい。
PUT処理によって、キーと値を指定してキーに対応する値を更新できる。GET処理によって、キーを指定して対応する値を取得できる。
オブジェクトストア、データストア、変更オブジェクトリストを、KVSテーブル1600として構成可能である。
オブジェクトストアは、例えば、ランダム生成された32バイトのオブジェクト識別子をキーとしてJavaScriptオブジェクトを値とする。
データストアは、例えば、バイト配列を値として、そのバイト配列のSHA−256値(32バイト)をキーとする。
変更オブジェクトリストは、例えば、変更されたオブジェクトの識別子を記録する。例えば、ここでは値は変更された時刻(又は日時(年、月、日、時、分、秒、秒以下、又はこれらの組み合わせであってもよい))とすればよい。
オブジェクト木については、図3の例で示した通りである。
ステップS1700では、オブジェクト生成処理を開始する。
ステップS1702では、protoの子オブジェクトobjを生成する。
ステップS1704では、idを生成する。具体的には、proto.idがある場合、obj.protoにproto.idをセットする。そして、obj.idにランダムに生成した識別子idをセットする。
ステップS1708では、オブジェクト識別子idのオブジェクトがローカル記憶装置(メモリ)に存在することをマークする。例えば、objsというキャッシュオブジェクトを用意して、objs[id] = objとする。
ステップS1710では、objを返却する。
ステップS1800では、オブジェクト取得処理を開始する。
ステップS1802では、オブジェクト識別子idのオブジェクトobjはロード済みか否かを判断し、ロード済みの場合はステップS1804へ進み、それ以外の場合はステップS1806へ進む。
ステップS1804では、objを返却し、処理を終了する(ステップS1899)。
ステップS1806では、オブジェクト識別子idのレコードはローカルなKVSにあるか否かを判断し、ある場合はステップS1808へ進み、それ以外の場合はステップS1814へ進む。
ステップS1808では、objをローカルなKVSからロードする。
ステップS1812では、objを返却し、処理を終了する(ステップS1899)。
ステップS1814では、オブジェクト識別子idのレコードはリモートのKVSにあるか否かを判断し、ある場合はステップS1816へ進み、それ以外の場合はステップS1822へ進む。
ステップS1816では、objをリモートのKVSからロードし、ローカルのKVSにセーブする。
ステップS1818では、オブジェクト識別子obj.protoのオブジェクトproto=get(obj.proto)をobjのプロトタイプにセット(再帰呼び出し)する。
ステップS1820では、objを返却し、処理を終了する(ステップS1899)。
ステップS1822では、オブジェクト識別子idのオブジェクトは無いのでundefinedを返す。
ステップS1900では、オブジェクト更新処理を開始する。
ステップS1902では、オブジェクトobjをローカルなKVSにセーブする。
ステップS1904では、オブジェクト識別子obj.idを変更オブジェクトリストにセーブする。
ステップS2000では、変更オブジェクトリストプッシュ処理を開始する。
ステップS2002では、変更オブジェクトリストidsとローカルの権限を表すトークンtokenを取得する。
ステップS2004では、リモートへの処理ストリームを作成する。
ステップS2006では、処理ストリームstreamとトークンをリモートのKVSに適用する。
ステップS2008では、処理ストリームが完了したら、変更オブジェクトリストをクリアする。
変更オブジェクトプッシュ「rs.push()」の呼び出し前におおもとのオブジェクト(情報処理装置100Aに記憶されているオブジェクト)にロック属性を付与し、呼び出し後にそのロック属性を除去する。
また、オブジェクト取得でロックされているオブジェクトはローカルのKVSにはキャッシュされず、ロードもされないようにする。
ローカルリポジトリを持つのがあるサービスだとすると、そのサービスが変更するのはそのサービスの所有するオブジェクトである。したがって、サービス自体を表すオブジェクトに属性を付与すると、その子孫の全てのオブジェクトはロック属性を持つことになる。図3の例を用いて説明すると、サービス対象となるオブジェクトが「root」オブジェクトD1であるとすると、「root」オブジェクトD1の子孫である「crudScope」オブジェクトD11等の全てのオブジェクトにおけるisLocked属性を全て「true」とする。
これによって、第三のローカル実行環境(そのオブジェクトを編集している端末装置250以外の端末装置250)がトランザクション中のオブジェクト取得を行い、中途半端な状態(編集中のオブジェクト)をロードしたり、ローカルのKVSにキャッシュすることを防ぐことができる。
ステップS2100では、変更オブジェクトリストプッシュ処理を開始する。
ステップS2102では、変更オブジェクトリストidsとローカルの権限を表すトークンtokenを取得する。
ステップS2104では、リモートへの処理ストリームを作成する。
ステップS2106では、[プロトタイプにisLocked属性を付与]とトークンをリモートのKVSに適用する。
ステップS2108では、処理ストリームstreamとトークンをリモートのKVSに適用する。
ステップS2110では、[プロトタイプにisLocked属性を除去]とトークンをリモートのKVSに適用する。
ステップS2012では、処理ストリームが完了したら、変更オブジェクトリストをクリアする。
ステップS2200では、オブジェクト取得処理を開始する。
ステップS2202では、オブジェクト識別子idのオブジェクトobjはロード済みか否かを判断し、ロード済みの場合はステップS2204へ進み、それ以外の場合はステップS2206へ進む。
ステップS2204では、objを返却し、処理を終了する(ステップS2299)。
ステップS2206では、オブジェクト識別子idのレコードはローカルなKVSにあるか否かを判断し、ある場合はステップS2208へ進み、それ以外の場合はステップS2214へ進む。
ステップS2208では、objをローカルなKVSからロードする。
ステップS2210では、オブジェクト識別子obj.protoのオブジェクトproto=get(obj.proto)をobjのプロトタイプにセット(再帰呼び出し)する。
ステップS2212では、objを返却し、処理を終了する(ステップS2299)。
ステップS2216では、objをリモートのKVSからロードし、ローカルのKVSにセーブする。
ステップS2218では、オブジェクト識別子obj.protoのオブジェクトproto=get(obj.proto)をobjのプロトタイプにセット(再帰呼び出し)する。
ステップS2220では、objがロックされているか否かを判断し、ロックされている場合はステップS2222へ進み、それ以外の場合はステップS2224へ進む。
ステップS2222では、ローカルのKVSへのセーブを破棄して例外をスローする。
ステップS2224では、objを返却し、処理を終了する(ステップS2299)。
ステップS2226では、オブジェクト識別子idのオブジェクトは無いのでundefinedを返す。
ローカルなKVSを持つエンティティがリモートのKVSにアクセスし、その後、リモートのKVSが変更されることで、リモートとローカルに不整合がおきる。つまり、リモートである情報処理装置100A内の情報が変更されているにもかかわらず、ローカルである第3端末装置250C内の情報は変更前の状態となってしまうことが生じる。
本実施の形態によって、リモートでの変更をローカルに伝達することを可能にする。
ローカルなKVSを持つエンティティがリモートのKVSにアクセスするときには、どのような権限(owner)で誰(client)がアクセスしているかの情報が必要になる。
ここでは、「e」がローカルKVSの識別子、「r」がリモートKVSにアクセスする権限の識別子とする。
リモートのKVSでは、購読者属性とMutate属性を新しく追加し、リモートのKVSでのCRUD操作に伴い、これらの属性を更新する。
ローカルなKVSを持つエンティティが操作したオブジェクトには、購読者属性が付与されて操作したエンティティを追加する。
購読者オブジェクト(購読者属性に追加されたエンティティ)には、Mutate属性を付与し、変更を反映すべきオブジェクトを追加する。
これらを示すKVSとして、例えば、オブジェクトストアKVSテーブル2300を用いる。図23は、オブジェクトストアKVSテーブル2300のデータ構造例を示す説明図である。オブジェクトストアKVSテーブル2300は、図16の例に示したKVSテーブル1600に購読者属性欄2330、Mutate属性欄2340を付加したものである。オブジェクトストアKVSテーブル2300は、キー欄2310、値欄2320、購読者属性欄2330、Mutate属性欄2340を有している。キー欄2310は、キーを記憶している。値欄2320は、そのキーに対応する値を記憶している。購読者属性欄2330は、そのキーに対応する購読者属性を記憶している。購読者属性として、例えば「そのオブジェクトを操作したエンティティのリスト」がある。Mutate属性欄2340は、そのキーに対応するMutate属性を記憶している。Mutate属性として、例えば「そのエンティティが反映すべき変更されたオブジェクトのリスト」がある。
ステップS2400では、リモートObject StoreへのPUT処理を開始する。
ステップS2402では、権限rは対象オブジェクトkのプロトタイプ(チェーンに含まれる)か否かを判断し、プロトタイプ(チェーンに含まれる)場合はステップS2404へ進み、それ以外の場合はステップS2406へ進む。
ステップS2404では、エンティティeをオブジェクトkの購読者リストに追加する。
ステップS2406では、処理を拒絶し、終了する(ステップS2499)。
ステップS2410では、購読者sは無効化されているか否かを判断し、無効化されている場合はステップS2412へ進み、それ以外の場合はステップS2414へ進む。
ステップS2412では、オブジェクトkの購読者リストからsを除去し、ステップS2408へ戻る。
ステップS2414では、購読者sがエンティティeに一致しているか否かを判断し、一致している場合はステップS2416へ進み、それ以外の場合はステップS2418へ進む。
ステップS2416では、購読者sの変更オブジェクトリストからkを除去し、ステップS2408へ戻る。
ステップS2418では、購読者sの変更オブジェクトリストにkを追加し、ステップS2408へ戻る。
ステップS2420では、put(k,v)を実行する。
ステップS2500では、リモートObject StoreへのGET処理を開始する。
ステップS2502では、エンティティeをオブジェクトkの購読者リストに追加する。
ステップS2504では、エンティティeの変更オブジェクトリストからkを除去する。
ステップS2506では、get(k)を実行する。
ステップS2600では、オブジェクト更新処理を開始する。
ステップS2602では、オブジェクト識別子idのオブジェクトobjがロードされているか否かを判断し、ロードされている場合はステップS2604へ進み、それ以外の場合(オブジェクト識別子idのオブジェクトobjがロードされていない場合)はステップS2610へ進む。
ステップS2606では、プロトタイプが変更されているか否かを判断し、変更されている場合はステップS2608へ進み、それ以外の場合は処理を終了する(ステップS2699)。
ステップS2608では、プロトタイプをrs.get(obj.id)し、それをobjのプロトタイプにセットする。
ステップS2610では、何も行わず、処理を終了する(ステップS2699)。
ステップS2700では、変更オブジェクトリストプル処理を開始する。
ステップS2702では、変更オブジェクトリストをリモートのKVSから取得する。
ステップS2704では、リモートへの処理ストリームを作成する。例えば、変更オブジェクトリストに含まれるオブジェクトを取得する。
ステップS2706では、処理ストリームstreamとトークンをリモートのKVSに適用する。
ステップS2708では、処理ストリームが完了したら、変更オブジェクトリストをクリアする。
図28は、本実施の形態による処理例(パスをオブジェクトにアタッチする処理)を示すフローチャートである。「attachPath(obj, path)」の処理である。オブジェクトobjにファイルシステム上のpathをアタッチする。
ファイルは、
{ type: {コンテント型},
etag: {ハッシュ値} }
という属性を持つオブジェクトで表現される。ディレクトリは、それがfoo, bar, buzを含むとすれば、
{ foo: {fooの指すオブジェクトの識別子},
bar: {barの指すオブジェクトの識別子},
bar: {bazの指すオブジェクトの識別子} }
という属性を持つオブジェクトで表現される。
ステップS2802では、pathを判断し、ファイルの場合はステップS2804へ進み、ディレクトリの場合はステップS2808へ進む。
ステップS2804では、ファイルの内容をDate Storeに保存する。
ステップS2806では、obj.type=コンテント型、obj.etag=ファイルの内容のハッシュ値として、objをObject Storeにセーブする。
ステップS2810では、objにパス名subに対応する属性が既にあるか否かを判断し、ある場合はステップS2812へ進み、ない場合はステップS2814へ進む。
ステップS2812では、それが指すオブジェクトにsubを再帰的にアタッチする。
ステップS2814では、subに対応するオブジェクトはobjの子として生成し、ディレクトリの階層構造がオブジェクトのプロトタイプ継承ツリーと一致するようにする。
ステップS2900では、ローカルリポジトリのinit&commit処理を開始する。
ステップS2902では、ワーキングディレクトリに「.rs」ディレクトリが無いか否かを判断し、無い場合はステップS2904へ進み、それ以外の場合はステップS2906へ進む。
ステップS2904では、ワーキングディレクトリに「.rs」ディレクトリを作る。
ステップS2906では、「.rs/owner」が無いか否かを判断し、無い場合はステップS2908へ進み、それ以外の場合はステップS2910へ進む。
ステップS2910では、IDが「.rs/owner」のオブジェクトをownerとする。
ステップS2912では、ownerにワーキングディレクトリをアタッチする。
ステップS2914では、「.rs/client」が無いか否かを判断し、無い場合はステップS2916へ進み、それ以外の場合はステップS2918へ進む。
ステップS2916では、ownerの子オブジェクトを生成・永続化し、そのIDを、「.rs/client」に書き込む。
ステップS2918では、IDが「.rs/client」のオブジェクトをclientとする。
ステップS2920では、clientにderefしたリーフをアタッチする。つまり、foo/bar/buzという構造のとき、
client = { ’foo/bar/buz’: オブジェクトbuzのID Z }
とする。アタッチでできるオブジェクトはネストしているため、キーを展開してリーフを並べることを行う。
具体的には、ローカルリポジトリの公開処理を説明する。
コマンドツールで「rs publish」とすると、ワーキングディレクトリを起点とした「http server」が起動する。なお、ワーキングディレクトリは既に「rs commit」済みとする。
このようなローカルREST APIサーバーを起動することで共用の公開サーバーに負荷を掛けず、公開サーバーと同じAPIを利用できる。また、ローカルな環境でデータやスコープを開発・テストし、完了後にrs.push()することで、共用公開サーバーにデプロイできる。もちろんのことながら、更新もできる。
より具体的には、リソース管理基盤のREST APIサービスは、情報処理システムAによって実現される。
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付ける受付手段と、前記権限オブジェクトに関連付けられた関数オブジェクトを取得する取得手段と、前記関数オブジェクトにより前記要求を処理する処理手段と、を含む情報処理システムAを用いる。
また、情報処理システムAは、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの情報の比較結果に基づいて、前記要求を受理するか否かを判断する判断手段を含み、前記処理手段は、前記要求を受理すると判断した場合に、前記関数オブジェクトにより前記要求を処理してもよい。
また、前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとが一致する場合に、前記要求を受理するようにしてもよい。
また、前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトの親であるオブジェクト、さらに該所有者オブジェクトの親の親であるオブジェクトを順次接続した経路の中に、前記権限オブジェクトの親であるオブジェクトが含まれる場合に、前記要求を受理するようにしてもよい。
また、前記判断手段は、前記権限オブジェクトが前記管理手段により管理されない場合には、前記要求を受理しないようにしてもよい。
また、前記判断手段は、前記権限オブジェクトが、前記権限情報を認可したオブジェクトである所有者オブジェクト、前記権限情報の委譲先を示すオブジェクトであるクライアントオブジェクト、前記権限情報により実行が許可される関数をそれぞれ指定するデータを含まない場合には、前記要求を受理しないようにしてもよい。
また、情報処理システムAは、関数のソースコードを含むデータオブジェクトを登録する手段と、所与の所有者オブジェクト、所与のクライアントオブジェクト、前記データオブジェクトを指定する情報を含む権限オブジェクトを生成する生成手段と、を含むようにしてもよい。
また、情報処理システムAは、前記権限オブジェクトに含まれる情報により指定される前記データオブジェクトに含まれる関数のソースコードに基づいて関数オブジェクトが生成できない場合には、前記要求を受理しないようにしてもよい。
また、前記取得手段は、前記権限オブジェクトに含まれる前記処理指定オブジェクトにより指定される前記データオブジェクトに含まれる関数のソースコードに基づいて生成された関数オブジェクトを取得するようにしてもよい。
{ owner: client.id,
client: aUser.id,
scope: readOnly.id }
を発行すればよい。
なお、図30に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図30に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続している形態でもよく、さらに図30に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器(携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む)、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読み出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray(登録商標) Disc)、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読み出し専用メモリ(ROM)、電気的消去及び書換可能な読み出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、SD(Secure Digital)メモリーカード等が含まれる。
そして、前記のプログラムの全体又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分又は全部であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
[A] それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記管理手段により管理される提供対象オブジェクトへの読み出し要求を受け付ける受付手段と、
前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記提供対象オブジェクトの情報を提供する提供手段と、を含み、
前記提供手段は、前記提供対象オブジェクトが有していないデータ項目については、前記提供対象オブジェクトの親やさらにその親を再帰的にたどる列に含まれる祖先オブジェクトのデータ項目の情報を提供する、ことを特徴とする情報処理システム。
[A]に記載の情報処理システム。
[A]又は[B]に記載の情報処理システム。
[A]から[C]のいずれか一項に記載の情報処理システム。
[A]から[D]のいずれか一項に記載の情報処理システム。
[E]に記載の情報処理システム。
[D]に記載の情報処理システム。
[A]から[G]のいずれか一項に記載の情報処理システム。
[D]に記載の情報処理システム。
[C]に記載の情報処理システム。
[C]に記載の情報処理システム。
[A]から[K]のいずれか一項に記載の情報処理システム。
[A]から[L]のいずれか一項に記載の情報処理システム。
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記管理手段により管理される提供対象オブジェクトへの読み出し要求を受け付ける受付手段と、
前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記提供対象オブジェクトの情報を提供する提供手段と、してコンピュータを機能させ、
前記提供手段を、前記提供対象オブジェクトが有していないデータ項目については、前記提供対象オブジェクトの親やさらにその親を再帰的にたどる列に含まれる祖先オブジェクトのデータ項目の情報を提供する、ように機能させるためのプログラム。
[A]及び[N]に記載の発明によれば、一のマスターデータについての提供内容を個別に制御できる。
110…データ格納モジュール
111…オブジェクト管理テーブル
112…バリュー管理テーブル
120…リクエスト受付モジュール
130…権限オブジェクト検証モジュール
140…オブジェクト管理モジュール
141…配信用オブジェクト生成モジュール
150…リクエスト処理モジュール
160…処理結果提供モジュール
250…端末装置
280…認証装置
290…通信回線
Claims (5)
- 複数の情報処理装置を有し、
少なくとも1つの情報処理装置は、
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置内の記憶手段で管理する第1の管理手段と、
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、本情報処理装置又は他の情報処理装置からアクセス可能な記憶手段で管理する第2の管理手段と、
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記第1の管理手段又は前記第2の管理手段により管理される対象オブジェクトに対する要求を、本情報処理装置又は他の情報処理装置から受け付ける受付手段と、
前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記対象オブジェクトの情報に対して、前記要求に対応する処理を行う処理手段
を有し、
前記処理手段は、前記要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、前記第1の管理手段を用いて該処理を行い、
前記要求が、前記第1の管理手段が管理する記憶手段内の生成、更新、又は廃棄された情報を、前記第2の管理手段が管理する記憶手段に反映させる処理である場合は、前記第2の管理手段を用いて該処理を行い、
本情報処理装置内のオブジェクトの変更の処理については権限の判定は不要とし、他の情報処理装置からのオブジェクトの変更の処理については、前記要求に付随して送付されるトークンによって請求される権限を逸脱する処理については失敗とする、
ことを特徴とする情報処理システム。 - 前記要求がオブジェクトの情報の変更を禁止する要求である場合は、該オブジェクトの子孫のオブジェクトの情報に対しても、変更を禁止する禁止手段
をさらに有することを特徴とする請求項1に記載の情報処理システム。 - 前記第2の管理手段が管理する記憶手段にオブジェクトの情報の書き込みを始める前に、前記第1の管理手段が管理する記憶手段内の対応するオブジェクトの情報の変更を禁止し、該書き込みが完了したときに、該禁止を解除する
ことを特徴とする請求項2に記載の情報処理システム。 - 前記第2の管理手段が管理する記憶手段内のオブジェクトの情報に対して要求を行った利用者を記憶し、該オブジェクトの情報の変更が行われた場合は、該利用者に通知を行う通知手段
をさらに有することを特徴とする請求項1から3のいずれか一項に記載の情報処理システム。 - コンピュータを、
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、前記コンピュータ内の記憶手段で管理する第1の管理手段と、
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を、前記コンピュータ又は他の情報処理装置からアクセス可能な記憶手段で管理する第2の管理手段と、
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む、前記第1の管理手段又は前記第2の管理手段により管理される対象オブジェクトに対する要求を、前記コンピュータ又は他の情報処理装置から受け付ける受付手段と、
前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの権限の比較結果に基づいて、前記対象オブジェクトの情報に対して、前記要求に対応する処理を行う処理手段
として機能させ、
前記処理手段は、前記要求が、オブジェクトの情報の生成、更新、又は廃棄の処理である場合は、前記第1の管理手段を用いて該処理を行い、
前記要求が、前記第1の管理手段が管理する記憶手段内の生成、更新、又は廃棄された情報を、前記第2の管理手段が管理する記憶手段に反映させる処理である場合は、前記第2の管理手段を用いて該処理を行い、
前記コンピュータ内のオブジェクトの変更の処理については権限の判定は不要とし、他の情報処理装置からのオブジェクトの変更の処理については、前記要求に付随して送付されるトークンによって請求される権限を逸脱する処理については失敗とする、
情報処理プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016058398A JP6720613B2 (ja) | 2016-03-23 | 2016-03-23 | 情報処理システム及び情報処理プログラム |
US15/257,124 US10657139B2 (en) | 2016-03-23 | 2016-09-06 | Information processing apparatus and non-transitory computer readable medium for distributed resource management |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016058398A JP6720613B2 (ja) | 2016-03-23 | 2016-03-23 | 情報処理システム及び情報処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017174074A JP2017174074A (ja) | 2017-09-28 |
JP6720613B2 true JP6720613B2 (ja) | 2020-07-08 |
Family
ID=59898785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016058398A Active JP6720613B2 (ja) | 2016-03-23 | 2016-03-23 | 情報処理システム及び情報処理プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10657139B2 (ja) |
JP (1) | JP6720613B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7119448B2 (ja) * | 2018-03-16 | 2022-08-17 | 富士フイルムビジネスイノベーション株式会社 | 情報処理装置及び情報処理プログラム |
US11537786B2 (en) * | 2020-11-16 | 2022-12-27 | Dropbox, Inc. | Generating fillable documents and fillable templates in a collaborative environment |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438549B1 (en) * | 1998-12-03 | 2002-08-20 | International Business Machines Corporation | Method for storing sparse hierarchical data in a relational database |
US6785674B2 (en) * | 2003-01-17 | 2004-08-31 | Intelitrac, Inc. | System and method for structuring data in a computer system |
JP4303101B2 (ja) * | 2003-12-26 | 2009-07-29 | 株式会社エヌ・ティ・ティ・ドコモ | 通信端末およびプログラム |
JP4174032B2 (ja) * | 2004-02-20 | 2008-10-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 設定装置、設定方法、プログラム、及び記録媒体 |
US8887271B2 (en) * | 2009-06-15 | 2014-11-11 | Sap Se | Method and system for managing object level security using an object definition hierarchy |
JP2011090415A (ja) * | 2009-10-21 | 2011-05-06 | Hitachi Ltd | 更新情報通知方法およびシステム |
JP2011118884A (ja) * | 2009-11-04 | 2011-06-16 | Fujitsu Ltd | 通信端末装置、ソフトウェア取得方法及びソフトウェア取得プログラム |
US8572126B2 (en) * | 2010-06-25 | 2013-10-29 | Educational Testing Service | Systems and methods for optimizing very large n-gram collections for speed and memory |
US20120023138A1 (en) * | 2010-07-26 | 2012-01-26 | International Business Machines Corporation | Deleting objects with group authority |
US9892203B2 (en) * | 2012-10-29 | 2018-02-13 | Dropbox, Inc. | Organizing network-stored content items into shared groups |
JP2014153746A (ja) * | 2013-02-05 | 2014-08-25 | Mitsubishi Electric Corp | ファイル共有システム及びファイル共有方法 |
JP5447722B1 (ja) * | 2013-07-17 | 2014-03-19 | 富士ゼロックス株式会社 | 情報処理システム及びプログラム |
US9270647B2 (en) * | 2013-12-06 | 2016-02-23 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
JP6136980B2 (ja) * | 2014-02-27 | 2017-05-31 | 富士ゼロックス株式会社 | 情報処理システム及びプログラム |
JP6225749B2 (ja) | 2014-02-27 | 2017-11-08 | 富士ゼロックス株式会社 | 情報処理システム及びプログラム |
US10394606B2 (en) * | 2014-09-30 | 2019-08-27 | Hewlett Packard Enterprise Development Lp | Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy |
-
2016
- 2016-03-23 JP JP2016058398A patent/JP6720613B2/ja active Active
- 2016-09-06 US US15/257,124 patent/US10657139B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20170277754A1 (en) | 2017-09-28 |
JP2017174074A (ja) | 2017-09-28 |
US10657139B2 (en) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110870253B (zh) | 使用分布式分类账管理公共软件组件生态系统的系统和方法 | |
US7930346B2 (en) | Security in peer to peer synchronization applications | |
JP2022521915A (ja) | 分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成 | |
CN101568919B (zh) | 具有分布式存储的联网计算机系统中的单个数据视图 | |
KR100959473B1 (ko) | 저장 플랫폼과 애플리케이션 프로그램 사이의 애플리케이션프로그래밍 인터페이스 | |
US7036149B2 (en) | Computer system | |
KR101024730B1 (ko) | 항목 기반 저장 플랫폼 내에서 데이터 모델링하기 위한시스템 및 방법 | |
WO2020168692A1 (zh) | 海量数据共享方法、开放共享平台及电子设备 | |
JP2008547118A (ja) | 異種アプリケーションのための統一権限付与 | |
JP2007299063A (ja) | 情報処理装置、情報処理方法 | |
JP4714788B2 (ja) | 装置構成統合情報管理プログラムおよび装置構成統合情報管理装置 | |
US20230342437A1 (en) | Blockchain-based system and method for publishing an operating system | |
JP6720613B2 (ja) | 情報処理システム及び情報処理プログラム | |
US11728928B2 (en) | Securely sharing public and private blockchain data | |
KR102109044B1 (ko) | 연구데이터 리포지터리 시스템 및 연구데이터 리포지터리 시스템의 동작 방법 | |
KR102132118B1 (ko) | 블록체인 기반 작업공간 제공 장치 및 방법 | |
TW200925889A (en) | Method and apparatus for managing lightweight directory access protocol information | |
RU2412461C2 (ru) | Системы и способы сопряжения прикладных программ с платформой хранения на основе статей | |
JP6467999B2 (ja) | 情報処理システム及びプログラム | |
CN117955701A (zh) | 实现数据安全交换的方法、系统和电子设备及存储介质 | |
CN117271441A (zh) | 实时数据网络系统及查询和处理分布式数据的方法 | |
Singh | Cloudsearch, Dell Cloud service application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190228 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200204 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200519 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200601 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6720613 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |