JP2015138298A - 管理装置、その制御方法およびコンピュータプログラム - Google Patents
管理装置、その制御方法およびコンピュータプログラム Download PDFInfo
- Publication number
- JP2015138298A JP2015138298A JP2014008080A JP2014008080A JP2015138298A JP 2015138298 A JP2015138298 A JP 2015138298A JP 2014008080 A JP2014008080 A JP 2014008080A JP 2014008080 A JP2014008080 A JP 2014008080A JP 2015138298 A JP2015138298 A JP 2015138298A
- Authority
- JP
- Japan
- Prior art keywords
- data
- query
- deletion
- acquisition
- database
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】クエリの形式に応じて非同期でデータが削除される場合に、クライアントから受信したデータ取得依頼に対し、非同期による削除対象のデータが含まれないようにデータを制御する管理装置を提供すること。
【解決手段】管理装置111は、データベース112に対し非同期でデータを削除するよう指示し、削除クエリを受信したことに応じて、クライアント100から受信したデータベース112からデータを取得するための取得クエリにより取得されることとなるデータの中に、削除クエリにより削除されるデータが含まれないよう取得クエリの検索条件を変更するための情報を保存する。管理装置111は、取得クエリを受信したことに応じて、保存された情報を基に取得クエリの検索条件を変更しデータベース112からデータを取得する。
【選択図】 図2
【解決手段】管理装置111は、データベース112に対し非同期でデータを削除するよう指示し、削除クエリを受信したことに応じて、クライアント100から受信したデータベース112からデータを取得するための取得クエリにより取得されることとなるデータの中に、削除クエリにより削除されるデータが含まれないよう取得クエリの検索条件を変更するための情報を保存する。管理装置111は、取得クエリを受信したことに応じて、保存された情報を基に取得クエリの検索条件を変更しデータベース112からデータを取得する。
【選択図】 図2
Description
本発明は、クライアント装置から受け付けたリクエストに応じてデータベースに対してデータを取得または削除しデータを管理する技術に関する。
クラウドサービスの普及に伴い、ネットワーク経由で各種データの管理を行うデータ管理システムが提案されている。このようなシステムでは、複数のクライアント装置とデータ管理システムとが、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどを介して互いに接続されている。近年では、OData(Open Data Protocol)と呼ばれるWebデータプロトコルのように、Web上のデータベースリソースに対する検索条件をクエリオプション形式を用いてフレキシブルに指定できる技術も広く一般化してきている。ODataでは、URIにクエリオプションを記述でき、フィルタオプションを用いることでデータベースが管理するデータの取得、削除などの検索条件を指定できる。フィルタオプションでは、論理演算子や比較演算子、算術演算子を複数組み合わせて使うことができる。このような技術を適用することにより、クライアント装置は、ネットワーク経由でデータ管理システムに対して、任意の複雑な検索条件でデータを登録したり削除することができる。
このようなクライアント−サーバ型のデータ管理システムにおいて、管理システムが大量のデータを処理する場合がある。管理システムは、データベースに対する登録、更新、削除処理が遅い場合には、クライアント装置へ応答を早く返すためにしばしばバッチ処理で処理する形態を採る。この形態では、データ管理システムは、クライアント装置からのリクエスト受信時にデータベースに対する処理の内容をファイルやテーブルに記録し、その時点でクライアント装置へ応答を返す。そして、データ管理システムの別のバックグラウンドの処理で、ファイルやテーブルに記録された内容を読み込み、データベースに対する処理を実行する。
しかし、このようなバッチ処理では、データベースへの反映がクライアント装置に応答を返すタイミングより遅れる。そのため、クライアント装置からは削除処理が終了しているように見えても当該データを取得できてしまう、といった不整合が起こりうる。一般的に、データベースへの反映遅れに伴う不整合を防止するため、削除対象のデータを取得できないような対策が行われる。多くの処理をバッチ処理で実行させようとすると、バックグラウンドでのバッチ処理の負荷が増大するだけでなく、この不整合を防止する管理が複雑になる。そのため、データベースに対する処理の時間が問題にならないのであれば、クライアント装置からのリクエスト受信時にデータベースに対する処理までを完了させるリアルタイム処理で実行させることが望ましい。
このような場合を鑑み、特許文献1は、データベースに対する登録、更新、削除処理に要する時間を推計し、その推計値に応じてリアルタイム処理とバッチ処理とを切り替える方法を提案している。データベースに対する処理が早く終わると推定される処理をバッチ処理にしないことで、データベースへの登録や更新、削除を迅速に行うとともに、バッチ処理の負荷も軽減させることができる。
データベースに対するデータ削除の条件を、ODataのようにクエリオプション形式でフレキシブルに指定できるようにした場合、その削除条件によって時間がかかるケースが存在する。特許文献1に開示された技術は、クライアント装置からのデータの削除リクエストにおいて、削除対象のデータ件数が予めわかっていることを前提としている。削除対象のデータ件数情報に基づいてレコード操作の処理時間を推計し、それによってリアルタイム処理とバッチ処理とを切り替えるようにしている。しかしながら、データベースに対する削除条件をクエリオプション形式を用いてフレキシブルに指定できる場合、クエリオプションの条件文からは削除対象のレコード数を把握することが困難である。また、削除条件をフレキシブルに指定できるため、バッチ処理とした場合のデータベースへの反映遅れに伴う不整合の対策も困難となる。
本発明は、クエリの形式に応じて非同期でデータが削除される場合に、クライアントから受信したデータ取得依頼に対し、非同期による削除対象のデータが含まれないようにデータを制御する管理装置を提供することを目的とする。
本発明の一実施形態の管理装置は、データベースに対し非同期でデータを削除するよう指示する指示手段と、削除クエリを受信したことに応じて、クライアントから受信した前記データベースからデータを取得するための取得クエリにより取得されることとなるデータの中に、前記削除クエリにより削除されるデータが含まれないよう前記取得クエリの検索条件を変更するための情報を保存する保存手段と、前記取得クエリを受信したことに応じて、前記保存手段により保存された情報を基に前記取得クエリの検索条件を変更し前記データベースからデータを取得する取得手段と、を備える。
本発明の管理装置によれば、クエリの形式に応じて非同期でデータが削除される場合に、クライアントから受信したデータ取得依頼に対し、非同期による削除対象のデータが含まれないようにデータを制御することが可能となる。また、クエリオプション形式を用いてフレキシブルに指定できるようにした場合でも非同期で一部のデータが削除されるため、クライアント装置からのリクエストに対するレスポンス効率を向上させることが可能となる。
(実施例1)
以下、本発明を実施するための形態について図面を用いて説明する。図1は、本発明の一実施形態に係るシステム構成例を示す図である。クライアント装置100とデータ管理システム110は、互いに通信回線120を介して接続されている。クライアント装置100は、ユーザが直接操作するPCや、ユーザにサービスを提供するアプリケーションサーバなどが想定される。データ管理システム110に接続されるクライアント装置100は、複数存在しても良い。
以下、本発明を実施するための形態について図面を用いて説明する。図1は、本発明の一実施形態に係るシステム構成例を示す図である。クライアント装置100とデータ管理システム110は、互いに通信回線120を介して接続されている。クライアント装置100は、ユーザが直接操作するPCや、ユーザにサービスを提供するアプリケーションサーバなどが想定される。データ管理システム110に接続されるクライアント装置100は、複数存在しても良い。
データ管理システム110は、ウェブサーバ111とデータベースサーバ112とから構成され、ユーザにサービスを提供するための各種データを格納し、管理する。ウェブサーバ111は、通信回線120とファイアウォールなどを介して接続され、クライアント装置100から、データの取得や登録、削除のリクエストを受け付ける。データベースサーバ112は、データベースに格納された各種データの取得や登録、削除の処理を行う。また、データベースサーバ112は、クライアント装置100がリクエストによって操作できるデータのほか、データ管理システム110が動作するのに必要な管理データも保持する。
これらデータの管理には、多くの場合、Microsoft社のSQL ServerやOracle社のOracle Databaseに代表されるデータベース管理システムが用いられる。なお、データ管理システム110の構成はこれに限られるものではなく、1台のサーバでこれら機能を構成していても良く、冗長化構成のために複数のサーバに分散した構成を採るようにしても良い。通信回線120は、LANやWAN、インターネットなどが想定され、有線であっても無線であっても良い。
図2は、データ管理システム110のソフトウェア構成の中で、特に本発明に係る部分のソフトウェア構成を表す図である。ウェブサーバ111、データベースサーバ112が備える各CPUは、図2に示すソフトウェアプログラムをウェブサーバ111、データベースサーバ112が備える各HDDまたはROMに記憶している。ウェブサーバ111、データベースサーバ112の各CPUは、当該プログラムをワークメモリとして機能する各RAMにロードし、実行することにより図2に示す各種機能を実現する。
図2に示すように、データ管理システム110のウェブサーバ111は、リクエスト受信部201、リクエスト解析部202、検索条件判別部203、削除条件記録部204、リアルタイム削除部205を備える。また、ウェブサーバ111は、削除処理結果送信部206、バッチ削除部207、取得部208、取得処理結果送信部209を備える。また、データベースサーバ112は、複数のデータテーブル211と削除条件テーブル212を備える。リクエスト受信部201は、クライアント装置100からデータの取得、登録、削除などのリクエストを受け付ける。リクエストは、ネットワーク経由で例えばHTTPを使用して送信される。
本実施例では、URIの記述にWebデータプロトコルであるODataを適用した例を元に説明する。図3(A)と図3(B)は、クライアント装置100がデータ管理システム110にHTTPで送信するリクエストの一部の例を表す図である。クライアント装置100からのリクエストには、データ種別の情報、検索条件、データ種別に対する操作種別の情報(取得、登録、削除の分類)が含まれる。図3(A)、図3(B)の例では、URI300、350がデータの削除クエリや取得クエリとして機能し、データ種別や検索条件が指定される。
ホストネーム部301、351は、データ管理システム110のウェブサーバ111を特定するFQDN(Fully Qualified Domain Name)を表す。図3(A)の例では、ウェブサーバ111のFQDNが”hostname”であることを示す。リソースネーム部302、352は、取得、登録、削除対象のデータ種別を特定するためのリソースパス及びリソース名を表す。また、リクエスト元の識別情報、例えば販売会社のテナントIDもリソースネーム部302、352に含まれる。”$filter”句に続く検索条件部303、353は、操作対象のデータ種別に対する検索条件であることを示している。
OData形式のクエリオプションでは、”eq”(等しい)、”ne”(等しくない)、”gt”(大なり)などの比較演算子、”add”(加算)などの算術演算子などを複数組み合わせ、複雑な条件を指定できる。その他、クエリオプションは、”and”(And条件)や”or”(Or条件)などを組み合わせることもできる。また、データ操作関数として、日付形式のデータに対しては”month()”(月要素)や”year()”(年要素)といった日付操作関数を用いて条件を指定することができる。さらに、文字列形式のデータに対しては”startswith()”(前方一致)といった文字列操作関数を用いて条件を指定することもできる。
URI300は、リソースネーム部302で指定されたデータ種別”resourcename”のうち、検索条件部303で指定された条件に合致するデータに対してのリクエストであることを示す。検索条件部303は、評価対象311、演算子312、評価値313から構成され、「UserIDに対応する”Received”データの年要素が”2010”より小さいこと」を検索条件としていることを示す。同様に、URI350は、リソースネーム部352で指定されたデータ種別”resourcename”のうち、検索条件部353で指定された条件に合致するデータに対してのリクエストであることを示す。検索条件部353は、演算子を複数組み合わせて構成されており、「”UserID”が”UID”で始まること」かつ「”Received”の年要素が”2010”より小さいこと」を検索条件としていることを示す。そして、HTTPメソッドにPOST(登録)、GET(取得)、またはDELETE(削除)などが指定され、登録操作なのか取得操作なのか、または削除操作なのかといった操作種別が判別される。
クライアント装置100は、HTTPメソッドを指定してこのURIに送信することで、データ管理システム110に対して、データの登録、取得、削除の操作を指示する。なお、本実施例ではURIのクエリオプションで操作対象のデータ種別に対する検索条件を指定したが、HTTPボディに指定するなど他の形式であっても良い。
リクエスト解析部202は、リクエスト受信部201が受信したリクエスト内容を解析する。前述のリクエスト指定の例では、HTTPメソッドから操作種別を、URIからデータ種別の特定と検索条件の抽出を行う。検索条件判別部203は、操作種別が削除操作である場合に、検索条件が所定形式であるかによって、バッチ処理で削除を行うか判別する。
本発明では、大量データを処理する場合などデータベースサーバ112での削除処理が遅い場合を考慮している。従って、データ管理システム110は、クライアント装置100へ応答を早く返すために、バッチ処理で対応可能な削除処理をバッチ処理で行うように構成される。
バッチ処理の場合には、データベースへの削除の反映がクライアント装置100に応答を返すタイミングより遅れるため、バッチ処理で削除する対象のデータをクライアント装置100から取得できないような対策が必要である。削除処理の検索条件の記述が複雑な場合にはその対策が困難となるため、本発明のデータ管理システム110は対策が容易な形式の場合に絞ってバッチ処理を行う。
具体的には、例えば、検索条件判別部203は、検索条件が「評価対象、演算子、評価値」の1組のみの形式である場合、バッチ処理を行うと判別する。この例に従えば、図3(A)の検索条件部303は、「評価対象、演算子、評価値」の1組のみの形式であり、検索条件判別部203はバッチ処理で削除を行うと判別する。一方、図3(B)の検索条件部353は”and“で結ばれた2つの評価値を含む。よって「評価対象、演算子、評価値」の1組のみの形式ではないため、検索条件判別部203はバッチ処理ではなく、リアルタイム処理で削除を行うと判別する。
なお、所定形式であるかの判別条件は、この例に限ったものではなく、例えば評価対象や演算子を限定して定めるようにしても良い。また、データ種別によって判別条件を変えるようにしても良いし、検索条件の形式に関わらず全ての削除処理をリアルタイム処理で行うデータ種別が存在していても良い。削除条件記録部204は、リクエスト解析部202で抽出した検索条件を、データベースサーバ112の削除条件テーブル212に保存する。この抽出された検索条件が、クライアント装置100から受信した取得クエリにより取得されることとなるデータの中に、削除クエリにより削除されるデータが含まれないよう検索条件を変更するための情報として使用される。
図4は、データベースサーバ112の削除条件テーブル212の一例を表す図である。削除条件テーブル400は、バッチ処理で削除を行う対象のデータ種別ごとに用意される。削除条件テーブル400は、評価対象401、演算子402、評価値403などのフィールドを持ち、バッチ処理で削除を行う対象の検索条件をこれらフィールドの組み合わせで記録できるように構成している。図3(A)の例の場合、削除条件記録部204は、検索条件部303を削除条件テーブル400にレコードを追加して記録する。具体的には、削除条件記録部204は、評価対象401を”year(Received)”、演算子402を”lt”、評価値403を”2010”とするレコードを、削除条件テーブル400に追加する。
リアルタイム削除部205は、リクエスト解析部202が特定・抽出したデータ種別と検索条件に従って、データベースサーバ112のデータテーブル211の対象データを削除する命令文を生成し、実行する。削除処理結果送信部206は、データ管理システム110が削除処理を受け付けた結果をクライアント装置100に送信する。ここで削除処理結果送信部206は、バッチ処理でデータを削除する場合には削除条件記録部204が記録した結果を、リアルタイム処理でデータを削除する場合にはリアルタイム削除部205が削除処理を実行した結果をクライアント装置100に送信する。
バッチ削除部207は、クライアント装置100からリクエストの受信とは非同期に、データ管理システム内の別のバックグラウンドで、定期的あるいは不定期に処理を実行する。バッチ削除部207は毎日の所定の時刻に起動しても良いし、削除条件記録部204の削除条件テーブル212への記録処理をトリガーに起動しても良い。バッチ削除部207は、データベースサーバ112の削除条件テーブル212を読み込み、削除条件テーブル212の内容に従って、データベースサーバ112のデータテーブル211の対象データを削除する命令文を生成し、実行する。
取得部208は、操作種別が取得操作である場合に、リクエスト解析部202が特定・抽出したデータ種別と検索条件に従って、データベースサーバ112のデータテーブル211から対象データを取得する命令文を生成し、実行する。取得操作に対しては、クライアント装置100へ取得したデータを返却する必要があるため、取得部208は検索条件の指定に関わらずリアルタイムに処理を行う。またこのとき取得部208は、削除条件テーブル212にレコードが存在する場合には、バッチ処理で削除する対象のデータをクライアント装置100から取得させないようにするため、削除条件テーブル212のレコードから除外条件を生成する。取得部208は、生成した除外条件を検索条件に追加してデータを取得する命令文を生成する。
取得処理結果送信部209は、取得部208が取得処理を実行した結果をクライアント装置100に送信する。このとき、取得部208が取得処理を実行した結果、検索条件に該当するデータが存在した場合には、取得処理結果送信部209はそのデータをHTTPで送信可能な形式に生成し、送信する。HTTPで送信可能な形式とは、例えばHTTPのボディに指定可能な形式であって、XML形式やJSON形式、CSV形式などが想定される。
図5は、データ管理システム110のリクエスト受信時の処理を示すフローチャートである。以下、図5のフローチャートに従って、クライアント装置100からリクエストを受信した際のデータ管理システム110の処理を説明する。リクエスト受信部201がクライアント装置100からリクエストを受信すると、リクエスト解析部202がリクエストのHTTPメソッドから操作種別を特定する(ステップS501)。
また、リクエスト解析部202がリクエストURIを解析してデータ種別を特定し(ステップS502)、検索条件を抽出する(ステップS503)。ステップS501で特定した操作種別によって処理は分岐し(ステップS504)、操作種別が削除操作である場合には、検索条件判別部203により検索条件がバッチ処理を行う所定の形式であるかを判別する(ステップS505)。
ステップS505で検索条件がバッチ処理を行う形式であると判別すると、削除条件記録部204は検索条件を削除条件テーブル212に記録する(ステップS506)。バッチ処理でデータを削除する場合は、データベースサーバ112への削除処理の実行を待たずに、削除処理結果送信部206が削除条件記録部204の処理結果をクライアント装置100に送信して(ステップS507)、リクエスト受信時の処理を終了する。
一方、ステップS505で検索条件がバッチ削除を行う形式ではないと判別すると、リアルタイム削除部205が対象のデータを削除する命令文を生成する(ステップS508)。リアルタイム削除部205は、データベースサーバ112に生成した命令文を発行し、データ削除を実行する(ステップS509)。そして、削除処理結果送信部206が命令文の実行結果をクライアント装置100に送信して(ステップS507)、リクエスト受信時の処理を終了する。
ステップS504で操作種別が取得操作である場合には、取得部208がリクエスト解析部202で特定・抽出したデータ種別と検索条件に従って、データテーブル211の対象データを取得する。取得部208は、まず削除条件テーブル212を参照し、削除条件テーブル212にレコードが存在するかを確認する(ステップS510)。ステップS510でレコードが存在することを確認した場合、取得部208は、削除条件テーブル212のレコードから除外条件を生成する(ステップS511)。図4に示すテーブルが確認された場合、”UserID”が”'UID00001'”に等しいデータ及び、”year(Received)”が”2010”より小さいデータを除外する必要がある。除外条件の生成は、図6(A)に示す演算子変換ロジックテーブル600を参照することにより行われる。
図6(A)は、取得部208がステップS511で参照する演算子変換ロジックテーブルの一例を表す図である。演算子変換ロジックテーブル600は、演算子601と変換後演算子602のフィールドを持つ。変換後演算子602は、演算子601の否定に相当する演算子である。取得部208は、削除条件テーブル212から取得した演算子を、演算子変換ロジックテーブル600に従って演算子601に対応する変換後演算子602に置換することにより、除外条件を生成する。
図6(B)は、取得部208が図4の削除条件テーブル400から生成した除外条件の例である。図4の例の場合、1レコード目の演算子402が”eq”であることから、演算子601”eq”に対応する変換後演算子602は”ne”と決定される。これにより、削除条件テーブル400の1レコード目に対する除外条件として除外条件651を生成する。削除条件テーブル212に複数のレコードが存在する場合は、それら全てについて同様に除外条件を生成する。
取得部208はさらに、削除条件テーブル400の2レコード目に対する除外条件として除外条件652を生成する。取得部208は、これらを演算子”and”を用いて結合した除外条件650を、リクエストURIから抽出した検索条件に付加する(ステップS512)。そして取得部208は、対象のデータを取得する命令文を生成し(ステップS513)、データベースサーバ112にその命令文を発行し、実行することによりデータを取得する(ステップS514)。ステップS514でデータを取得すると、取得処理結果送信部209は取得したデータをクライアント装置100に送信して(ステップS515)、リクエスト受信時の処理を終了する。
なお、クライアント装置100は複数のUserIDを指定してデータ取得リクエストを行うことが一般的である。例えば、クライアント装置100がユーザID00001に対応するデータをデータ管理システム110から削除し、その後、ユーザID00001及びユーザID00002に対応するデータをデータ管理システム110から取得する例を考える。この場合、図6(B)に示す(UserID ne UID00001)と(year(Received)ge 2010)は()で閉じられることとなる。つまり、((UserID ne UID00001) and (year(Received)ge 2010))と記述される。これにより、2010年より前のユーザID00002に対応するデータの取得が確保される。
また、クライアント装置100が、ユーザID00001及びユーザID00002に対応する、2013年までのデータをデータ管理システム110から取得する例を考える。この場合も、(UserID ne UID00001)と(year(Received)ge 2010)は()で閉じられることとなる。これにより、2010年より前のユーザID00001に対応するデータを除外しつつ2010年より後であって2013年までのユーザID00001に対応するデータの取得が確保される。
図7は、データ管理システム110のバッチ処理での削除処理を示すフローチャートである。以下、図7のフローチャートに従って、バッチ処理でのデータ管理システム110の削除処理を説明する。バッチ処理は、クライアント装置100からリクエストを受信したのとは非同期に、例えば夜間の特定の時刻といった定期的に自動的に起動される。
バッチ処理が起動されると、まずバッチ削除部207は、削除条件テーブル212にレコードが存在するかを確認する(ステップS701)。削除条件テーブル212にレコードが存在しない場合には、バッチ処理で削除する対象のデータが存在しないためそのままバッチ処理を終了する。
ステップS701で削除条件テーブル212にレコードが存在する場合は、バッチ削除部207は、削除条件テーブル212のレコードを取得し、取得したレコードからデータを削除する命令文を生成する(ステップS702)。ステップS702で生成した命令文は、データベースサーバ112に発行され、実行される(ステップS703)。図4に示す例では、UserIDが“UID00001”である識別情報に紐付けられた2010年よりも前のデータが、バッチ処理で削除される。
ステップS703でデータの削除に成功すると、バッチ削除部207は、削除に成功した対象のレコードを削除条件テーブル212から削除して(ステップS704)、バッチ処理を終了する。ここで、削除条件テーブル212に複数のレコードが存在する場合は、ステップS702〜S704の一連の処理を1レコードずつ繰り返し実行するようにしても良いし、演算子”or”を用いて連結して条件を生成し、一度に削除するようにしても良い。
以上、本発明の管理装置によれば、クエリの形式に応じて非同期でデータが削除される場合に、クライアントから受信したデータ取得依頼に対し、非同期による削除対象のデータが含まれないようにデータを制御することが可能となる。従って、ODataのようにデータベースリソースに対しての削除条件をフレキシブルに指定できるようにした場合であっても、条件に応じてリアルタイム処理とバッチ処理とを切り替えられる。バッチ処理で対応可能な削除条件の場合に絞ってバッチ処理で行うため、データベースへの反映遅れに伴う不整合を防止しながら、一部をバッチ処理にすることでクライアント装置へのレスポンス効率を向上させることが可能となる。
(実施例2)
第一の実施例においては、クライアント装置100によらず、クライアント装置100がリクエストによって操作できるデータの範囲が変わらないことを前提とした。しかし、複数のユーザがデータ管理システム110を共有する場合には、ユーザが操作できるデータの範囲を限定することがある。例えば、データベースサーバ112におけるデータ領域をテナントごとに分割し、データ管理システム110としてテナント分離を実現しているような場合である。クライアント装置100またはクライアント装置100が所属するグループに対して権限が設定され、アクセスできるデータの範囲が限定される場合も同様である。そこで実施例2では、データ管理システム110としてテナント分離が実現されている場合に、クライアント装置100からのリクエストに応じて管理装置がデータベースからデータを取得または削除する実施形態について説明する。
第一の実施例においては、クライアント装置100によらず、クライアント装置100がリクエストによって操作できるデータの範囲が変わらないことを前提とした。しかし、複数のユーザがデータ管理システム110を共有する場合には、ユーザが操作できるデータの範囲を限定することがある。例えば、データベースサーバ112におけるデータ領域をテナントごとに分割し、データ管理システム110としてテナント分離を実現しているような場合である。クライアント装置100またはクライアント装置100が所属するグループに対して権限が設定され、アクセスできるデータの範囲が限定される場合も同様である。そこで実施例2では、データ管理システム110としてテナント分離が実現されている場合に、クライアント装置100からのリクエストに応じて管理装置がデータベースからデータを取得または削除する実施形態について説明する。
本実施例のシステム全体の概略図は、図1とほぼ同一である。図8は、データ管理システム110のソフトウェア構成の中で、特に本発明に係る部分のソフトウェア構成を表す図である。データ管理システム110のソフトウェア構成の中で本実施例において特徴的な部分を、図8を用いて説明する。
クライアント装置認証部801は、リクエスト受信部201が受信したリクエストに含まれる認証情報の有効性を検証することにより、リクエスト送信元のクライアント装置100を認証する。認証情報とは、クライアント装置100に割り振られたIDとパスワードのようなものでも良いし、別途認証サーバ(図示せず)がクライアント装置100に発行したトークンのようなものであっても良い。認証情報の有効性検証は、クライアント装置100から受信したID情報がデータ管理システム110に登録されたID情報と一致するか否かにより確認されても良いし、前述の認証サーバに問い合わせを行うことで実現されても良い。
認可確認部802は、リクエストに含まれる認証情報からクライアント装置100の所属テナント情報やクライアント装置100に割り当てられたロールを特定し、クライアント装置100が該リクエストの操作権限を有しているかを確認する。ロールとは、クライアント装置100がデータ管理システム110に対して実行できる操作の権限を定義した情報である。例えば、管理者ロール、顧客ロールなどが定義され、それぞれのロールに対して、クライアント装置100が許可されたデータ種別や操作種別があらかじめ設定される。
認可確認部802は、ロールにより制限されるデータ種別や操作種別と、テナント分離の仕組みで所属テナント情報により制限されるデータの範囲により、該リクエストを実行しても良いかを判断する。また、本実施例において削除条件記録部204は、リクエスト解析部202で抽出した検索条件に加えて、認可確認部802が特定した所属テナント情報を、データベースサーバ112の削除条件テーブル212に記録する。
図9は、本実施例におけるデータベースサーバ112の削除条件テーブル212の一例を表す図である。削除条件テーブル900は、バッチ処理で削除を行う対象のデータ種別ごとに用意される。削除条件テーブル900は、所属テナントID901、評価対象902、演算子903、評価値904などのフィールドを持ち、バッチ処理で削除を行う対象の検索条件及び所属テナント情報を、これらフィールドの組み合わせで記録できるように構成している。
図3(A)に示すクエリ例の場合、削除条件記録部204は、検索条件部303及び認可確認部802により特定した所属テナント情報を、削除条件テーブル900のレコードに追加して記録する。具体的には、所属テナントID901に認可確認部802で特定した所属テナント情報を設定し、評価対象902、演算子903、評価値904に検索条件部303の情報をそれぞれ指定したレコードを、削除条件テーブル900に追加する。
図10および図11は、本実施例におけるデータ管理システム110のリクエスト受信時の処理を示すフローチャートである。以下、図10および図11のフローチャートに従って、クライアント装置100からリクエストを受信した際のデータ管理システム110の処理の中で、本実施例において特徴的な部分を説明する。
リクエスト受信部201がクライアント装置100からリクエストを受信すると、クライアント装置認証部801がリクエストに含まれる認証情報から認証情報の有効性を検証する(ステップS1001)。ステップS1001で認証情報の有効性検証に失敗したならばステップS1002で処理は分岐し、クライアント装置100へ認証に失敗した情報を送信して(ステップS1003)、以降の処理を中止する。
ステップS1001で認証情報の有効性検証に成功すると、リクエスト解析部202が続くステップS501〜S503で、リクエストから操作種別とデータ種別を特定し、検索条件を抽出する。そして、認可確認部802が認証情報からクライアント装置100の所属テナント情報やロールを特定する(ステップS1004)。ステップS1004で特定したクライアント装置100の所属テナント情報やロールが、ステップS502で特定したデータ種別に対するステップS501で特定した操作種別の操作権限を有しているかを確認する(ステップS1005)。換言すると、データベースに対するデータの削除や取得は、認証情報に基づいて、クライアント装置100に許可されたデータに限定される。ここでは、ロールにより制限されるデータ種別や操作種別と、所属テナント情報により制限されるデータの範囲により、該リクエストを実行しても良いかを判断する。
ステップS1005で操作権限を有していると確認できなかったならば図11のステップS1006で処理は分岐し、クライアント装置100へ操作権限を有していないという情報を送信して(ステップS1007)、以降の処理を中止する。ステップS1005で操作権限を有していると確認すると、ステップS501で特定した操作種別によって処理は分岐する(ステップS504)。
操作種別が削除操作である場合には、検索条件判別部203は検索条件がバッチ処理を行う所定の形式であるかを判別する(ステップS505)。ステップS505で検索条件がバッチ処理を行う形式であると判別すると、削除条件記録部204は検索条件とともにステップS1004で特定した所属テナント情報を削除条件テーブル212に記録する(ステップS1008)。バッチ処理での削除の場合は、データベースサーバ112への削除処理の実行を待たずに、削除処理結果送信部206が削除条件記録部204の処理結果をクライアント装置100に送信して(ステップS507)、リクエスト受信時の処理を終了する。
一方、ステップS505で検索条件がバッチ削除を行う形式ではないと判別すると、リアルタイム削除部205が対象のデータを削除する命令文を生成し(ステップS508)、データベースサーバ112にその命令文を発行し、実行する(ステップS509)。このとき命令文は、ステップS1004で特定した所属テナントに範囲を限定するよう、実行される。そして、削除処理結果送信部206がその命令文の実行結果をクライアント装置100に送信して(ステップS507)、リクエスト受信時の処理を終了する。
ステップS504で操作種別が取得操作である場合には、取得部208がリクエスト解析部202で特定・抽出したデータ種別と検索条件に従って、データテーブル211の対象データを取得する。そこにおいて取得部208は、まず削除条件テーブル212を参照し、削除条件テーブル212にレコードが存在するかを確認する(ステップS510)。
ステップS510でレコードが存在することを確認した場合、取得部208は、削除条件テーブル212のレコードから除外条件を生成する(ステップS511)。このとき、ステップS1004で特定した所属テナントに関係するレコードのみを対象とする。ステップS1004で特定した所属テナントが「1001」であったとすると、図9の例の場合、取得部208は所属テナントID901が一致する1レコード目のみを対象に除外条件を生成する。
取得部208は、ステップS511で生成した除外条件650を、リクエストURIから抽出した検索条件に付加する(ステップS512)。そして取得部208は、対象のデータを取得する命令文を生成し(ステップS513)、データベースサーバ112にその命令文を発行し、実行することによりデータを取得する(ステップS514)。このとき命令文は、ステップS1004で特定した所属テナントに範囲を限定するよう、実行される。ステップS514でデータを取得すると、取得処理結果送信部209は取得したデータをクライアント装置100に送信して(ステップS515)、リクエスト受信時の処理を終了する。
以上、実施例2では、データ管理システム110としてテナント分離が実現されているような場合であっても、条件に応じてリアルタイム処理とバッチ処理とを切り替えられる。バッチ処理で対応可能な削除条件の場合に絞ってバッチ処理で行うため、データベースへの反映遅れに伴う不整合を防止しながら、一部をバッチ処理にすることでクライアント装置へのレスポンス効率を向上させることが可能となる。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
Claims (8)
- データベースに対し非同期でデータを削除するよう指示する指示手段と、
削除クエリを受信したことに応じて、クライアントから受信した前記データベースからデータを取得するための取得クエリにより取得されることとなるデータの中に、前記削除クエリにより削除されるデータが含まれないよう前記取得クエリの検索条件を変更するための情報を保存する保存手段と、
前記取得クエリを受信したことに応じて、前記保存手段により保存された情報を基に前記取得クエリの検索条件を変更し前記データベースからデータを取得する取得手段と、を備える
ことを特徴とする管理装置。 - 前記指示手段は、前記削除クエリが所定形式であれば前記データベースに対し非同期でデータを削除するよう指示し、前記所定形式でなければ前記データベースに対し同期でデータを削除するように指示する
ことを特徴とする請求項1に記載の管理装置。 - 前記取得クエリの検索条件を変更するための情報は前記削除クエリに含まれる情報であり、
前記取得手段は、前記削除クエリにより削除されるデータを前記取得クエリにより取得されることとなるデータから除外する除外条件を生成し、当該除外条件を前記検索条件に追加して前記取得クエリの検索条件を変更する
ことを特徴とする請求項1または2に記載の管理装置。 - 前記保存手段は、前記データを識別するための識別情報に紐付けて前記データを保存しており、
前記指示手段は、前記削除クエリが所定形式であれば、前記削除クエリにより特定される識別情報に紐付けられたデータをバッチ処理で削除するように前記データベースに対して指示する
ことを特徴とする請求項2または3に記載の管理装置。 - 前記指示手段は、前記削除クエリに含まれる評価対象、演算子および評価値から構成されるクエリオプションに基づいて前記所定形式であるかを判断する
ことを特徴とする請求項4に記載の管理装置。 - 前記クライアントを認証する認証手段を備え、
前記データベースに対する前記データの削除または取得は、前記認証の結果、前記クライアントに許可された前記識別情報に対応するデータに限定される
ことを特徴とする請求項1乃至5のいずれか一項に記載の管理装置。 - データベースに対し非同期でデータを削除するよう指示する指示工程と、
削除クエリを受信したことに応じて、クライアントから受信した前記データベースからデータを取得するための取得クエリにより取得されることとなるデータの中に、前記削除クエリにより削除されるデータが含まれないよう前記取得クエリの検索条件を変更するための情報を保存する保存工程と、
前記取得クエリを受信したことに応じて、前記保存手段により保存された情報を基に前記取得クエリの検索条件を変更し前記データベースからデータを取得する取得工程と、を有する
ことを特徴とする管理装置の制御方法。 - 請求項7に記載の制御方法をコンピュータにより実行させることを特徴とするコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014008080A JP2015138298A (ja) | 2014-01-20 | 2014-01-20 | 管理装置、その制御方法およびコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014008080A JP2015138298A (ja) | 2014-01-20 | 2014-01-20 | 管理装置、その制御方法およびコンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015138298A true JP2015138298A (ja) | 2015-07-30 |
Family
ID=53769282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014008080A Pending JP2015138298A (ja) | 2014-01-20 | 2014-01-20 | 管理装置、その制御方法およびコンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015138298A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783556A (zh) * | 2021-01-06 | 2021-05-11 | 南阳理工学院 | 信息处理方法、信息处理装置及终端设备 |
-
2014
- 2014-01-20 JP JP2014008080A patent/JP2015138298A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783556A (zh) * | 2021-01-06 | 2021-05-11 | 南阳理工学院 | 信息处理方法、信息处理装置及终端设备 |
CN112783556B (zh) * | 2021-01-06 | 2023-04-07 | 南阳理工学院 | 信息处理方法、信息处理装置及终端设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11783059B2 (en) | Collection folder for collecting file submissions | |
KR102026225B1 (ko) | 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법 | |
CN112597472B (zh) | 单点登录方法、装置及存储介质 | |
US11082226B2 (en) | Zero-knowledge identity verification in a distributed computing system | |
EP3251048B1 (en) | Executing an operation over file repositories located in different authentication domains using a representational state transfer (rest)-compliant client | |
US20200287719A1 (en) | Zero-knowledge identity verification in a distributed computing system | |
US9712536B2 (en) | Access control device, access control method, and program | |
GB2559835A (en) | Systems and methods for providing access to a data file stored at a data storage system | |
US11403027B2 (en) | Technology for governance of data retention and transfer | |
WO2019114097A1 (zh) | 基于区块链的分布式存储方法 | |
US20130219461A1 (en) | Authentication collaboration system, id provider device, and program | |
US9706007B2 (en) | System and method for querying disparate data sources in real time | |
JP6161827B2 (ja) | クライアントアプリケーションがコンテンツ管理システム上のユーザアカウントにアクセスすることの予備認証 | |
Henze et al. | Towards data handling requirements-aware cloud computing | |
JP6312330B2 (ja) | 文書同期化方法、コンピュータプログラムおよびその記録媒体 | |
CN111988295A (zh) | 一种数据库审计方法、装置、web服务器、数据库审计系统和存储介质 | |
EP3000049B1 (en) | System and method to provide document management on a public document system | |
CN114629921A (zh) | 云平台及其提供的对象存储服务的桶管理方法 | |
US9021558B2 (en) | User authentication based on network context | |
US9940451B2 (en) | Relay apparatus, system, relay method, and non-transitory computer readable medium | |
US20170235924A1 (en) | System and Network for Controlling Content and Accessibility | |
JP2015138298A (ja) | 管理装置、その制御方法およびコンピュータプログラム | |
US11803569B2 (en) | Computer system and method for accessing user data that is distributed within a multi-zone computing platform | |
KR102584597B1 (ko) | 데이터베이스에 대한 api 기반의 접근 제어 시스템 및 방법 | |
US10691821B2 (en) | Method and system for managing and tracking content dissemination in an enterprise |