(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-12-18
(45)【発行日】2024-12-26
(54)【発明の名称】収集装置、収集方法、および、プログラム
(51)【国際特許分類】
G06F 16/23 20190101AFI20241219BHJP
G06Q 50/10 20120101ALN20241219BHJP
【FI】
G06F16/23
G06Q50/10
(21)【出願番号】P 2023170755
(22)【出願日】2023-09-29
【審査請求日】2023-09-29
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】100110135
【氏名又は名称】石井 裕一郎
(74)【代理人】
【識別番号】100132883
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100163452
【氏名又は名称】南郷 邦臣
(74)【代理人】
【識別番号】100180312
【氏名又は名称】早川 牧子
(72)【発明者】
【氏名】中村 征史
(72)【発明者】
【氏名】モヒル アンシュル
(72)【発明者】
【氏名】ベセディン アレクセイ
(72)【発明者】
【氏名】ンザジャヨ ジョシュア
【審査官】原 秀人
(56)【参考文献】
【文献】特開2013-057996(JP,A)
【文献】特開2016-099983(JP,A)
【文献】特開2018-041258(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06Q 50/10
(57)【特許請求の範囲】
【請求項1】
複数のサービスにおけるユーザの情報を収集してユーザデータベースに格納する収集装置であって、
前記複数のサービスそれぞれにおける前記ユーザの情報は、各前記サービスに係るそれぞれのサービスデータベースが記憶するサービスレコードに格納され、
前記ユーザデータベースが有するユーザレコードには、前記ユーザ毎に、前記複数のサービスそれぞれの前記サービスレコードに由来する情報が格納され、
処理対象のサービスに係る前記サービスデータベースから、前記サービスレコードを取得するサービスレコード取得部と、
前記サービスレコード取得部により取得された前記処理対象のサービスに係るサービスレコードに基づいて、前記ユーザレコードを更新するユーザレコード更新部と、
を備え、
前記ユーザレコード更新部は、
前記ユーザレコードを更新する更新処理を開始する際に、
前記複数のサービスのうち、前記更新処理が既に開始されて未だ終了していないサービスの該更新処理の残りの作業量を集計し、
前記処理対象のサービスに係るサービスレコードに基づく前記更新処理において、前記ユーザ毎に、前記ユーザレコードに対する更新が必要か否かを判定し、更新が不要と判定されたユーザの前記更新処理をスキップする判定処理を行うか否かを、前記集計された残りの作業量に応じて判定する、
収集装置。
【請求項2】
前記ユーザレコード更新部は、前記サービスレコード取得部により取得された前記サービスレコードに基づいて、前記ユーザ毎に前記ユーザレコードを更新する更新命令を、命令キューに追加することにより、前記更新処理を開始する、
請求項1に記載の収集装置。
【請求項3】
前記ユーザレコード更新部は、前記更新命令が蓄積される前記命令キューに基づき、前記更新処理が未終了の前記サービスの数、未終了の前記更新処理に要する予測時間、前記更新処理が未終了のユーザレコード数、前記命令キューの長さの内、少なくとも1つを集計し、集計結果に基づいて、前記判定処理を行うか否かを判定する、
請求項2に記載の収集装置。
【請求項4】
前記ユーザレコード更新部は、前記判定処理を行うと判定された場合、
前記ユーザデータベースから、前記サービスレコード取得部により取得された前記サービスレコードに対応付けられるユーザレコードを取得し、該サービスレコードと該ユーザレコードとをユーザ毎に対比することにより、該ユーザレコードに対する更新が必要か否かをユーザ毎に判定する、
請求項1から3のいずれか1項に記載の収集装置。
【請求項5】
前記ユーザレコード更新部は、前記判定処理を行うと判定されて該判定処理を実行した場合、
前記サービスレコード取得部により取得された前記サービスレコードの総数と、前記判定処理によりスキップされた前記サービスレコードのスキップ数とを記録し、
次回の前記処理対象のサービスにおける前記更新処理において、記録された前記サービスレコードの総数に対する前記スキップ数の割合を示すスキップ率を算出し、算出したスキップ率に応じて、前記判定処理を行うか否かを決定する、
請求項1または2に記載の収集装置。
【請求項6】
前記ユーザレコード更新部は、算出された前記スキップ率により、
(A)前記処理対象の全サービスレコードに基づく前記更新処理に要する時間と、(B)該処理対象の全サービスレコードに対して前記判定処理を行って、更新が必要と判定されたサービスレコードのみに基づく前記更新処理に要する時間と、を算出し、前記(A)の時間より、前記(B)の時間が少ないと判定された場合、前記判定処理を行うと決定する、
請求項5に記載の収集装置。
【請求項7】
前記ユーザレコード更新部は、前記判定処理を行わないと決定された場合、
前記サービスレコード取得部により取得された前記サービスレコードに含まれる全ユーザのサービスレコードに基づいて、前記ユーザレコードを更新する、
請求項1または2に記載の収集装置。
【請求項8】
複数のサービスにおけるユーザの情報を収集してユーザデータベースに格納する収集装置であるコンピュータが、
処理対象のサービスに係るサービスデータベースから、前記複数のサービスそれぞれにおける前記ユーザの情報を格納するサービスレコードを取得するステップと、
取得された前記処理対象のサービスに係るサービスレコードに基づいて、前記ユーザデータベースに記憶され、前記ユーザ毎に、前記複数のサービスそれぞれの前記サービスレコードに由来する情報が格納されるユーザレコードを更新するステップと、
を含み、
前記ユーザレコードを更新するステップは、
前記ユーザレコードを更新する更新処理を開始する際に、
前記複数のサービスのうち、前記更新処理が既に開始されて未だ終了していないサービスの該更新処理の残りの作業量を集計し、
前記処理対象のサービスに係るサービスレコードに基づく前記更新処理において、前記ユーザ毎に、前記ユーザレコードに対する更新が必要か否かを判定し、更新が不要と判定されたユーザの前記更新処理をスキップする判定処理を行うか否かを、前記集計された残りの作業量に応じて判定する、
収集方法。
【請求項9】
複数のサービスにおけるユーザの情報を収集してユーザデータベースに格納する収集装置であるコンピュータに、
処理対象のサービスに係るサービスデータベースから、前記複数のサービスそれぞれにおける前記ユーザの情報を格納するサービスレコードを取得する処理と、
取得された前記処理対象のサービスに係るサービスレコードに基づいて、前記ユーザデータベースに記憶され、前記ユーザ毎に、前記複数のサービスそれぞれの前記サービスレコードに由来する情報が格納されるユーザレコードを更新する処理と、
を実行させ、
前記ユーザレコードを更新する処理は、
前記ユーザレコードを更新する更新処理を開始する際に、
前記複数のサービスのうち、前記更新処理が既に開始されて未だ終了していないサービスの該更新処理の残りの作業量を集計し、
前記処理対象のサービスに係るサービスレコードに基づく前記更新処理において、前記ユーザ毎に、前記ユーザレコードに対する更新が必要か否かを判定し、更新が不要と判定されたユーザの前記更新処理をスキップする判定処理を行うか否かを、前記集計された残りの作業量に応じて判定する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、収集装置、収集方法、および、プログラムに関する。
【背景技術】
【0002】
インターネット上で提供されるサービスにおけるユーザの情報を収集して蓄積し、蓄積された情報を活用する技術が知られている。
【0003】
例えば、特許文献1には、ユーザ端末から、ユーザにより閲覧された閲覧済みコンテンツの閲覧データを収集し、収集したユーザ毎の閲覧データをデータベースへの格納対象リストに追加して、所定の時間間隔で閲覧データをデータベースに追加する情報処理装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
この情報処理装置は、収集した全ユーザの閲覧データをデータベースに追加するため、閲覧データを収集してからデータベースに追加するまでに時間がかかる。そのため、ユーザの情報を収集してデータベースに蓄積する処理を効率良く進めるという観点からは改善の余地があった。
【0006】
また、複数のサービスを提供する事業者においては、収集するユーザの情報がより膨大になるため、ユーザの情報を収集してデータベースに蓄積する処理をより効率良く進めることのできる技術が求められていた。
【0007】
本発明は、上記実状に鑑みてなされたもので、複数のサービスのユーザの情報を収集してデータベースに蓄積する処理を効率良く進めることのできる収集装置、収集方法、および、プログラムを提供する。
【課題を解決するための手段】
【0008】
上記の課題を解決するため、本発明に係る収集装置は、
複数のサービスにおけるユーザの情報を収集してユーザデータベースに格納する収集装置であって、
前記複数のサービスそれぞれにおける前記ユーザの情報は、各前記サービスに係るそれぞれのサービスデータベースが記憶するサービスレコードに格納され、
前記ユーザデータベースが有するユーザレコードには、前記ユーザ毎に、前記複数のサービスそれぞれの前記サービスレコードに由来する情報が格納され、
処理対象のサービスに係る前記サービスデータベースから、前記サービスレコードを取得するサービスレコード取得部と、
前記サービスレコード取得部により取得された前記処理対象のサービスに係るサービスレコードに基づいて、前記ユーザレコードを更新するユーザレコード更新部と、
を備え、
前記ユーザレコード更新部は、
前記ユーザレコードを更新する更新処理を開始する際に、
前記複数のサービスのうち、前記更新処理が既に開始されて未だ終了していないサービスの該更新処理の残りの作業量を集計し、
前記処理対象のサービスに係るサービスレコードに基づく前記更新処理において、前記ユーザ毎に、前記ユーザレコードに対する更新が必要か否かを判定し、更新が不要と判定されたユーザの前記更新処理をスキップする判定処理を行うか否かを、前記集計された残りの作業量に応じて判定する。
【発明の効果】
【0009】
本発明によれば、複数のサービスのユーザの情報を収集してデータベースに蓄積する処理を効率良く進めることのできる収集装置、収集方法、および、プログラムを提供することができる。
【図面の簡単な説明】
【0010】
【
図1】収集装置と他の機器の連携を示す説明図である。
【
図2】収集装置が実行する処理を説明する図である。
【
図4】サービスデータベースにより生成されるサービスレコードの一例を示す図である。
【
図5】ユーザデータベースに記憶されるユーザレコードの一例を示す図である。
【
図6】収集装置の機能的な構成を示す説明図である。
【
図7】収集装置が備える命令キューの一例を示す図である。
【
図8】更新指示部によるサービスレコードとユーザレコードとを対比する処理を説明する図である。
【
図10】ユーザレコード更新処理のフローチャートである。
【
図11】ユーザレコード更新処理の別の例のフローチャートである。
【
図12】次回の更新処理におけるステップS104のフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、本実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0012】
(収集装置とプログラムの関係)
本実施形態に係る収集装置は、インターネット上で提供されるサービスにおけるユーザのアクセス履歴を含むユーザ情報を記憶する複数のサービスデータベースから、それぞれのサービスにおけるユーザ情報を収集し、収集したユーザ情報に基づいて、複数のサービスそれぞれのユーザ毎のユーザ情報を記憶するユーザデータベースを更新するものである。ここで、ユーザ情報とは、各ユーザの操作や属性を示す情報である。収集装置は、1台もしくは複数台のサーバ装置(サーバコンピュータ)により構成される。
【0013】
本実施形態に係る収集装置は、プログラムをコンピュータに実行させることにより実現するのが一般的であるが、専用電子回路により処理を実行させることも可能である。このほか、コンピュータと専用電子回路の中間形態として、プログラムを電子回路の設計スクリプトにコンパイルして、当該設計スクリプトに基づいて電子回路を動的に構成するFPGA(Field Programmable Gate Array)などの技術を適用することにより、本実施形態に係る収集装置を構成することも可能である。
【0014】
本実施形態に係る収集装置は、データベースと通信をする1台又は複数台のサーバコンピュータが、1つ又は複数のサーバプログラムにより実現される各機能を実行することによって実現される。
【0015】
一般に、サーバコンピュータで実行されるプログラムは、コンパクトティスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)、フラッシュメモリ、半導体メモリ等のコンピュータ読み取り可能な非一時的(non-transitory)情報記録媒体に記録することができる。この情報記録媒体は、サーバコンピュータとは独立して配布・販売することもできる。
【0016】
サーバコンピュータでは、フラッシュメモリやハードディスク等の非一時的(non-transitory)情報記録媒体に記録されたプログラムを、一時的(temporary)記憶装置であるRAM(Random Access Memory)に読み出してから、読み出されたプログラムに含まれる指令をCPU(Central Processing Unit)が実行する。ただし、ROMとRAMを一つのメモリ空間にマッピングして実行することが可能なアーキテクチャでは、ROMに格納されたプログラムに含まれる指令を、直接CPUが読み出して実行する。
【0017】
さらに、サーバプログラムは、当該プログラムが実行されるコンピュータとは独立して、コンピュータ通信網等の一時的(temporary)伝送媒体を介して、事業者が管理する配布サーバ等からサーバコンピュータや端末コンピュータ等へ配布・販売することができる。
【0018】
なお、収集装置が複数のコンピュータにより構成される場合には、各コンピュータで動作するプログラムは、互いに異なる機能を有しつつ協働する、互いに異なる複数のサーバプログラムということになる。そこで当該複数のプログラムを合わせたものは、収集装置を実現するためのシステムプログラムと考えることができる。
【0019】
(全体構成)
図1は、収集装置と他の機器との連携を示す説明図である。以下、本図を参照して説明する。
【0020】
収集装置100は、複数のサービスデータベース200a、200b、200c、・・・と、ユーザデータベース300と、通信ネットワーク400を介して接続されている。通信ネットワーク400は、様々なタイプのネットワークを含み得る。例えば、ローカルエリアネットワーク(LAN)インターネット等の広域ネットワーク(WAN)、公衆交換電話ネットワーク(PSTN)などのテレコミュニケーションネットワーク、無線ネットワーク、公衆交換ネットワーク、衛星ネットワーク、セルラーネットワーク、公衆陸上移動体通信網(PLMN)、メトロポリタンエリアネットワーク(MAN)、プライベートネットワーク、アドホックネットワーク、イントラネット、光ファイバベースのネットワークなど、及び/又は、これら又は他のタイプのネットワークの組み合わせである。なお、以下では、サービスデータベース200a、200b、200c、・・・を総称して、サービスデータベース200ともいう。
【0021】
収集装置100は、例えば、インターネット上で複数のサービス提供サイトを運営する事業者等が運用するものである。ここで、
図2を用いて、収集装置100が実行する処理の概要を説明する。
図2に例示する通り、収集装置100は、サービスデータベース200a、200b、200c、・・・から、ユーザがユーザ端末を用いて各サービス提供サイトにアクセスしたアクセス履歴を含むユーザ情報を格納するサービスレコードを収集する。収集装置100は、収集したサービスレコードに基づき、ユーザ毎、かつ、サービス毎にユーザ情報を管理するユーザデータベース300に記憶されているユーザレコードを更新する。このように、ユーザレコードには、サービスレコードに基づく(由来する)情報が格納される。
【0022】
収集装置100は、ユーザデータベース300に記憶されている、あるサービスのユーザレコードを更新する際、更新処理が開始され、未だ終了していない他のサービスに係る更新処理の残りの作業量を集計する。収集装置100は、集計された残りの作業量に基づき、ユーザ毎にサービスレコードとユーザレコードとを対比して、更新が必要か否かを判定する判定処理を行うか否かを判定する。収集装置100は、判定処理を行うと決定した場合、サービスデータベース200から収集したサービスレコードとユーザデータベース300に記憶されているユーザレコードとをユーザ毎に対比して、ユーザ毎に更新が必要か否かを判定する。収集装置100は、更新が不要と判定したユーザのユーザレコードに対する更新処理をスキップし、更新が必要と判定したユーザのユーザレコードのみを、収集したサービスレコードにより更新する。一方、収集装置100は、判定処理を行わないと決定した場合、サービスデータベース200から収集した全サービスレコードそれぞれに対応するユーザレコードを更新する。
【0023】
図1に戻り、サービスデータベース200は、各サービス提供サイトにおけるアクセス履歴を含むユーザ情報をユーザ毎に格納するサービスレコードを記憶する。サービスデータベース200は、それぞれのサービスを提供するサービス提供サーバ(図示せず)が備えるHDD(hard disk drive)、SSD(Solid State Drive)などの記憶装置により実現される。各サービス提供サーバは、ユーザが各サービス提供サイトにアクセスしたログデータであるアクセスログデータを記録する。ここで、サービスIDが「A001」であるサービスのアクセスログデータの例を
図3に示す。
図3に例示する通り、アクセスログデータは、ユーザを一意に識別する情報である「ユーザID」、ユーザがサービス提供サイトにアクセスした日時を示す「アクセス日時」等の情報を含む。なお、アクセスログデータは、
図3の例に限られず、任意の情報を含んでよい。例えば、商品の購入履歴、獲得したポイント履歴等のアクティビティ情報が蓄積されてもよい。また、サービス毎に異なる情報を含むログデータが記録されてもよい。
【0024】
サービスデータベース200には、日毎、週毎、月毎など任意の集計期間毎にアクセスログデータを集計した集計結果が格納される。ここで、サービスIDが「A001」であるサービスのサービスデータベース200の例を
図4に示す。
図4に例示する通り、サービスデータベース200は、表形式のデータベースであり、サービスデータベース200を構成する各行のサービスレコードは、ユーザを一意に識別する情報である「ユーザID」、集計期間内にユーザがサービス提供サイトにアクセスした回数を示す「アクセス数」等の情報を含む。なお、ユーザレコードに格納される情報は、
図4の例に限られず、任意の情報が格納されてよい。例えば、サービスを一意に識別するためのサービスID、集計期間内の最終アクセス日時、集計期間内にユーザが獲得したポイント数、集計期間内にユーザが購入した商品数、購入金額等の情報が格納されてもよい。
【0025】
図1に戻り、ユーザデータベース300は、複数のサービスそれぞれにおけるユーザ毎のアクセス履歴を含むユーザ情報を格納するユーザレコードを記憶する。ユーザデータベース300は、データベースサーバ、クラウドサーバ等により実現される。ここで、ユーザデータベース300の例を
図5に示す。
図5に例示する通り、ユーザデータベース300は、表形式のデータベースであり、ユーザデータベース300を構成する各行のユーザレコードは、サービスを一意に識別する情報である「サービスID」、ユーザを一意に識別する情報である「ユーザID」、ユーザの集計期間内のアクセス回数を示す「アクセス数」等の情報を含む。なお、ユーザレコードに格納される情報は、
図5の例に限られず、サービスデータベース200と同様に、最終アクセス日時、獲得されたポイント数、購入された商品数、購入金額等の情報が格納されてもよいし、ユーザの氏名、住所、ユーザの属性情報などが格納されてもよい。
【0026】
(収集装置の機能構成)
次に、
図6を用いて、収集装置100の機能的な構成を説明する。収集装置100は、サービスレコード取得部110と、サービスレコード記憶部120と、ユーザレコード更新部130と、を備える。
【0027】
サービスレコード取得部110は、サービスデータベース200a、200b、200c、・・・からサービスレコードを取得する。具体的に、サービスレコード取得部110は、間欠的に、定期的に、もしくは、各サービスデータベース200に記憶されるサービスレコードが更新されたことが検知されると、各サービスデータベース200からサービスレコードを取得し、取得したサービスレコードを、サービスレコード記憶部120に記憶させる。サービスレコード取得部110は、サービスデータベース200に記憶されるサービスレコードの数に応じて、全サービスレコードを一括で取得してもよいし、10レコードずつ、100レコードずつ等の任意の単位数毎にサービスレコードを取得してもよい。
【0028】
図6に戻り、サービスレコード記憶部120は、サービスレコード取得部110により取得されたサービスレコードを記憶する。具体的に、サービスレコード記憶部120は、取得されたサービスレコードと、このサービスレコードの取得元であるサービスデータベース200を一意に識別するためのサービスIDとを関連付けて記憶する。例えば、
図2に例示する通り、サービスデータベース200aからサービスレコードを取得した場合、サービスレコード記憶部120は、取得したサービスレコードと、サービスデータベース200aのサービスID「A001」と、を関連付けて記憶する。
【0029】
図6に戻り、ユーザレコード更新部130は、残作業量集計部131と、判定部132と、更新指示部133と、を備え、サービスレコード取得部110により取得されたサービスレコードに基づき、ユーザデータベース300に記憶されるユーザレコードを更新する。
【0030】
残作業量集計部131は、あるサービスのサービスレコードに基づいて、ユーザレコードを更新する処理を開始する際に、更新処理が既に開始され、処理が未終了のサービスに係る更新処理の残りの作業量である残作業量を集計する。具体的に、残作業量集計部131は、更新命令を格納する命令キューにキューイングされた更新命令に基づき、例えば、更新処理が未終了のサービス数、未終了の更新処理が完了するまでの予測時間、更新処理が未終了のレコード数、命令キューにキューイングされた更新命令の数を示すキュー長等を集計するといった任意の方法により残作業量を集計する。残作業量集計部131の処理の詳細については後述する。
【0031】
判定部132は、残作業量集計部131により集計された残作業量に基づき、ユーザ毎にサービスレコードとユーザレコードとを対比して、更新が必要か否かを判定する判定処理を実行するか否かを判定する。具体的に、判定部132は、例えば、残作業量集計部131により集計された残作業量が設定された閾値以上の場合、判定処理を実行すると判定し、閾値未満の場合、判定処理を実行しないと判定する。判定部132は、判定結果を更新指示部133に通知する。
【0032】
更新指示部133は、判定部132による判定結果に基づき、ユーザレコードを更新する更新命令を生成して、更新命令を格納する命令キューに追加する。命令キューは、例えば、更新命令をFIFO(First in First out)のリスト構造で保持するものであり、収集装置100の記憶部14に構築される。
図7に例示する通り、命令キューは、ユーザを一意に識別するための「ユーザID」、サービスを一意に識別するための「サービスID」、更新対象のユーザ情報を一意に識別するための識別情報と更新後の値を示す「ユーザ情報:[value]」などの情報を含む。
【0033】
具体的に、判定部132により、判定処理を実行すると通知された場合、更新指示部133は、ユーザデータベース300にアクセスして最新のユーザレコードを読み出す。次に、
図8に例示する通り、更新指示部133は、ユーザ毎に、サービスレコード、および、ユーザレコードのユーザ情報を対比する。更新指示部133は、ユーザレコードのユーザ情報がサービスレコードのユーザ情報と異なる場合、更新が必要と判定して、
図7に例示する通り、当該ユーザのユーザレコードを更新する更新命令を生成して、命令キューの末尾に追加する。一方、更新指示部133は、ユーザレコードのユーザ情報がサービスレコードのユーザ情報と同じ場合、更新は不要と判定して、当該ユーザのユーザレコードを更新する更新命令を生成せずにスキップする。ユーザレコード更新部130は、命令キューから、先頭の更新命令を取り出して、更新命令に従い更新処理を順次実行する。
【0034】
一方、判定部132により、判定処理を実行しないと通知された場合、更新指示部133は、サービスレコード取得部110により取得された全てのサービスレコードそれぞれにより、対応するユーザレコードを更新する更新命令をレコードの数分生成して、順次命令キューの末尾に追加する。
【0035】
(収集装置の物理構成)
以上説明した機能的構成を有する収集装置100は、物理的に、
図9に示すように、プログラムに従った処理を実行するCPU11と、揮発性メモリであるRAM12と、不揮発性メモリであるROM13と、データを記憶する記憶部14と、情報の入力を受け付ける入力部15と、情報を可視化して表示する表示部16と、情報の送受信を行う通信部17と、を備え、これらが内部バス99を介して接続されている。
【0036】
CPU11は、記憶部14に記憶されたプログラムをRAM12に読み出して実行することにより、各種処理を実行する。CPU11は、プログラムにより提供される主要な機能として、サービスレコード取得部110、ユーザレコード更新部130による各処理を実行する。
【0037】
RAM12は、CPU11のワークエリアとして使用される。ROM13は、収集装置100の基本動作のためにCPU11が実行する制御プログラム、BIOS(Basic Input Output System)等を記憶する。
【0038】
記憶部14は、ハードディスクドライブを備え、CPU11が実行するプログラムを記憶し、プログラム実行の際に使用される各種データを記憶する。記憶部14は、サービスレコード記憶部120として機能する。
【0039】
入力部15は、キーボード、マウス、通信装置等を備えるユーザインタフェースである。表示部16は情報を可視化して表示する液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ等の表示装置である。
【0040】
通信部17は、ネットワークに接続する網終端装置または無線通信装置、およびそれらと接続するシリアルインタフェースまたはLANインタフェースである。
【0041】
(ユーザレコード更新処理)
続いて、収集装置100の動作について
図10、
図11を参照して説明する。
図10は、サービスデータベース200から、全サービスレコードを一括で取得して、対応するユーザレコードをそれぞれ更新するユーザレコード更新処理の流れを説明するフローチャートである。
図11は、サービスデータベース200から、任意の単位数のサービスレコードを順次取得して、対応するユーザレコードをそれぞれ更新するユーザレコード更新処理の流れを説明するフローチャートである。収集装置100は、例えば、管理者の設定により、データサイズが小さいサービスデータベース200においては、
図10に例示するフローチャートによりユーザレコード更新処理を実行し、データサイズが大きいサービスデータベース200においては、
図11に例示するフローチャートによりユーザレコード更新処理を実行する。
【0042】
まず、
図10を参照して、全サービスレコードを一括で取得する場合のユーザレコード更新処理について説明する。このユーザレコード更新処理は、例えば、収集装置100がユーザレコード更新処理を開始するための指示を受け付けると開始する。
【0043】
サービスレコード取得部110は、サービスデータベース200a、200b、200c、・・・のうち、いずれかのサービスデータベース200の更新が完了したか否かを判定する(ステップS101)。具体的に、サービスレコード取得部110は、いずれかのサービスデータベース200の更新が完了したことを通知する信号(以下、更新完了信号という。)を待ち受ける。サービスレコード取得部110は、更新完了信号を受信することによりサービスデータベース200が更新されたことを検知して(ステップS101;Yes)、更新が完了したサービスデータベース200を取得する(ステップS102)。サービスレコード取得部110は、取得した、
図4に例示するサービスデータベース200を、サービスレコード記憶部120に記憶させる。
【0044】
一方、サービスレコード取得部110は、更新完了信号を受信しない場合、いずれのサービスデータベース200も更新されていないと判定して(ステップS101;No)、ステップS101に戻り、更新完了信号を待ち受ける。なお、サービスレコード取得部110は、間欠的に、または、定期的に、サービスデータベース200a、200b、200c、・・・を取得してもよいし、前回の取得日時とサービスデータベース200の更新日時とを比較して、更新されたと判定されたサービスデータベース200を取得してもよい。
【0045】
ステップS102にて、サービスデータベース200を取得すると、残作業量集計部131は、未終了の更新処理の残りの作業量を集計する(ステップS103)。具体的に、残作業量集計部131は、
図7に例示する命令キューにキューイングされている更新命令に基づいて、更新処理が未終了のサービス数、未終了の更新処理が終了するまでの予測時間、更新処理が未終了象のレコード数、命令キューにキューイングされた更新命令の数を示すキュー長等を算出することにより、残りの作業量を集計する。
【0046】
残作業量集計部131は、更新処理が未終了のサービス数を算出する場合、命令キューに含まれるサービスIDの数を算出する。また、残作業量集計部131は、未終了の更新処理が終了するまでの予測時間を算出する場合、1つの更新命令に基づく更新処理を実行するのに要する時間に、命令キューにキューイングされた更新命令の数を乗算することで予測時間を算出する。また、残作業量集計部131は、更新処理が未終了のレコード数を算出する場合、命令キューに含まれるサービスIDとユーザIDとの組み合わせの数を算出する。また、残作業量集計部131は、キュー長を算出する場合、命令キューにキューイングされた更新命令の数を算出する。
【0047】
次に、判定部132は、ステップS103での残作業量集計部131の集計結果に基づき、ユーザ毎にサービスレコードとユーザレコードとを対比して、更新が必要か否かを判定する判定処理を実行するか否かを判定する(ステップS104)。具体的に、判定部132は、残作業量集計部131により集計された残作業量が設定された閾値を上回る場合、判定処理を実行すると判定し、閾値以下の場合、判定処理を実行しないと判定する。判定部132は、判定結果を更新指示部133に通知する。
【0048】
判定部132により、判定処理を実行すると判定された場合(ステップS104;Yes)、更新指示部133は、ステップS102で取得されたサービスデータベース200内の全サービスレコードに対して、ステップS106~ステップS108の処理を繰り返し実行する(ステップS105)。
【0049】
ステップS106において、更新指示部133は、未処理のサービスレコードを読み出し、読み出したサービスレコードに対応するユーザレコードをユーザデータベース300から取得する(ステップS106)。具体的に、更新指示部133は、読み出したサービスレコードに関連付けられたサービスID、および、読み出したサービスレコードに格納されたユーザIDに一致するユーザレコードを取得する。
【0050】
次に、ステップS107において、更新指示部133は、サービスレコードと、ユーザレコードのユーザ情報を対比し、ユーザ情報が同じか否かを判定する(ステップS107)。
図8に例示する通り、例えば、ユーザID「X0001」の、サービスID「A001」のサービスレコードとユーザレコードとを対比する際、サービスレコードに格納されたユーザID「X0001」のアクセス数「20」と、ユーザレコードに格納されたユーザID「X0001」のアクセス数「10」と、を対比する。更新指示部133は、ユーザレコードのユーザ情報がサービスレコードのユーザ情報と異なる場合(ステップS107;No)、更新が必要と判定して、当該ユーザのユーザレコードを更新する更新命令を生成して、命令キューの末尾に追加する(ステップS108)。具体的に、上述したユーザID「X0001」の場合、ユーザレコードのサービスID「A001」のアクセス数「10」を、サービスレコードのアクセス数「20」に更新する命令を生成して、命令キューの末尾に追加する。
【0051】
一方、更新指示部133は、ユーザレコードのユーザ情報がサービスレコードのユーザ情報と同じである場合(ステップS107;Yes)、更新は不要と判定して、当該ユーザのユーザレコードを更新する更新命令を生成せずにスキップする。
【0052】
図10に戻り、ステップS109にて、更新指示部133は、ステップS102で取得したサービスデータベース200に含まれる全てのサービスレコードに対して、ループ1の処理を実行したか否かを判定する(ステップS109)。更新指示部133は、未処理のサービスレコードがあると判定すると、未処理のサービスレコードに対するループ1の処理を実行し、更新が必要と判定されたユーザレコードを更新する更新命令を生成して、順次命令キューの末尾に追加する。
【0053】
一方、更新指示部133は、ステップS109にて、全てのユーザに対してループ1の処理を実行したと判定すると、ステップS110に移行する。更新指示部133は、ループ1のループ処理で処理したサービスレコードの総数、すなわち、ステップS101で取得されたサービスレコードに含まれるレコード数と、ステップS107にて、更新命令の生成をスキップすると判定されたユーザの数であるスキップ数と、を記憶部14に保存して(ステップS110)、ステップS101に戻る。
【0054】
ステップS104に戻り、判定部132により、判定処理を実行しないと判定された場合(ステップS104;No)、更新指示部133は、サービスレコード取得部110により取得されたサービスレコードに含まれる全てのユーザのサービスレコードにより、各ユーザのユーザレコードを更新する更新命令を全ユーザの数分生成して、順次命令キューの末尾に追加する(ステップS111)。更新指示部133は、全ユーザの更新命令を命令キューに追加し終えると、ステップS101に戻る。
【0055】
ユーザレコード更新部130は、更新指示部133により追加された更新命令を、先頭から読み出して、ユーザレコードを順次更新する。
【0056】
なお、次回の更新処理において、ステップS104にて、判定部132は、前回の更新処理のステップS110で記憶された、サービスレコードの総数とスキップ数とから算出されるスキップ率に基づき、(A)判定処理を行わない場合の更新処理に要する時間と(B)判定処理を行う場合の更新処理に要する時間とを対比することにより、判定処理を実行するか否かを判定してもよい。(A)の時間は、処理対象の全サービスレコードに基づく更新処理に要する時間であり、(B)の時間は、処理対象の全サービスレコードに対する判定処理に要する時間と、更新が必要と判定されたサービスレコードのみに基づく更新処理に要する時間との総和である。この場合の、ステップS104の処理の詳細について、
図12を参照して以下説明する。
【0057】
まず、判定部132は、前回の更新処理で処理したサービスレコードの総数とスキップ数とを、記憶部14から取得する(ステップS1041)。次に、判定部132は、サービスレコードの総数に対するスキップ数の割合であるスキップ率を算出する(ステップS1042)。
【0058】
次に、判定部132は、ステップS1042により算出されたスキップ率に基づき、以下の式(1)、式(2)により、(A)判定処理を行わない場合の更新処理に要する時間、(B)判定処理を行う場合の更新処理に要する時間をそれぞれ算出して、(B)の時間が(A)の時間未満であるか否かを判定する(ステップS1043)。
【0059】
(判定処理を行わない場合の更新処理に要する時間)
=(処理対象の全サービスレコード数)×(1つのサービスレコード当たりの更新処理にかかる時間) 式(1)
【0060】
(判定処理を行う場合の更新処理に要する時間)
=((処理対象の全サービスレコード数)×(1つのサービスレコードに対する判定処理にかかる時間))+(処理対象の全サービスレコード数)×(1-スキップ率)×(1つのサービスレコード当たりの更新処理にかかる時間) 式(2)
【0061】
なお、上記式(1)、(2)において、1つのサービスレコード当たりの更新処理にかかる時間は、例えば、1つのサービスレコードに基づく更新命令を生成する処理に要する時間であり、1つのサービスレコードに対する判定処理にかかる時間は、1つのサービスレコードに対するユーザレコードを読み出して、サービスレコードとユーザレコードとを対比する処理に要する時間である。例えば、収集装置100を運用する前の事前準備段階において、1つのサービスレコードに基づく更新命令を生成する処理に要する時間、および、1つのサービスレコードに対する判定処理にかかる時間それぞれを計測し、計測値を用いて、これらの時間を設定してもよい。また、ステップS110、または、ステップS111の後に、収集装置100の動作ログを確認してそれぞれの時間を計算して記憶し、次回の判定処理の際に、記憶された1つのサービスレコードに基づく更新命令を生成する処理に要する時間と1つのサービスレコードに対する判定処理にかかる時間とを用いて(A)の時間と(B)の時間を求めてもよい。また、過去複数回の収集装置100の動作ログを用いて計算された、1つのサービスレコードに基づく更新命令を生成する処理に要する時間と1つのサービスレコードに対する判定処理にかかる時間とから、最尤推定法などを用いて、それぞれの推定値を求め、求めた推定値を用いて(A)の時間と(B)の時間を求めてもよい。
【0062】
なお、ステップS1043において、ステップS1042にて算出されたスキップ率が閾値より大きいか否かを判定してもよい。閾値は、80%、90%など任意の値が設定されてもよい。また、例えば、以下の式(3)により、(A)判定処理を行わない場合の更新処理に要する時間>(B)判定処理を行う場合の更新処理に要する時間を満たす最小のスキップ率が閾値として設定されてもよい。
【0063】
(処理対象の全サービスレコード数)×(1つのサービスレコード当たりの更新処理にかかる時間) > ((処理対象の全サービスレコード数)×(1つのサービスレコードに対する判定処理にかかる時間)) + (処理対象の全サービスレコード数)×(1-スキップ率)×(1つのサービスレコード当たりの更新処理にかかる時間) 式(3)
【0064】
判定部132は、(B)判定処理を行う場合の更新処理に要する時間が(A)判定処理を行わない場合の更新処理に要する時間未満であると判定した場合(ステップS1043;Yes)、判定処理を行うと決定し(ステップS1044)、(B)判定処理を行う場合の更新処理に要する時間が(A)判定処理を行わない場合の更新処理に要する時間以上と判定した場合(ステップS1043;No)、判定処理を行わないと決定する(ステップS1045)。
【0065】
次に、
図11を参照して、サービスレコードを単位数毎で取得する場合のユーザレコード更新処理について説明する。なお、
図10に例示するフローチャートと共通のステップを含むため、相違点を中心に説明する。
【0066】
ステップS201において、ステップS101と同様の処理により、サービスデータベース200a、200b、200c、・・・のうち、いずれかのサービスデータベース200の更新が完了したか否かを判定する(ステップS201)。
【0067】
次に、ステップS202において、ユーザレコード更新部130は、ステップS201で、更新が完了されたと判定されたサービスデータベース200内の全てのサービスレコードに対して、ステップS203~ステップS212の処理を繰り返し実行する(ステップS202)。
【0068】
ステップS203にて、サービスレコード取得部110は、サービスデータベース200から、未処理のサービスレコードを単位数取得する(ステップS203)。
【0069】
次に、収集装置100は、ステップS203で取得した単位数のサービスレコード毎に、ステップS103~ステップS109と同様のステップであるステップS204~ステップS210を実行する。ステップS210では、更新指示部133は、ステップS203で取得した全サービスレコードに対してループ3の処理を実行したか否かを判定し、全サービスレコードに対してループ3の処理を実行したと判定するまでループ3の処理を繰り返し実行する。
【0070】
次に、ステップS211にて、ユーザレコード更新部130は、ステップS201で、更新が完了されたと判定されたサービスデータベース200内の全てのサービスレコードに対して、ループ2の処理を実行したか否かを判定し、全サービスレコードに対してループ2の処理を実行したと判定するまでループ2の処理を繰り返し実行する。
【0071】
次に、更新指示部133は、ステップS110と同様の処理により、ループ2の処理で、処理したサービスレコードの総数と、更新命令の生成をスキップすると判定されたレコードの数であるスキップ数と、を記憶部14に記憶させて(ステップS213)、ステップS201に戻る。
【0072】
以上のように、収集装置100は、ユーザレコードを更新する更新処理を開始する際に、命令キューに格納されている未処理の更新処理の作業量を集計し、集計結果に基づき、ユーザ毎に更新の必要性を判定する判定処理を実行するか否かを判定する。未処理の更新処理の作業量が多い場合、収集装置100は、判定処理を実行すると判定して、更新が必要ではないユーザの更新命令を生成せずにスキップして、更新が必要なユーザの更新命令のみを生成して命令キューに追加する。一方、未処理の更新処理の作業量が少ない場合、収集装置100は、判定処理を実行しないと判定して、全サービスレコードそれぞれに対応するユーザレコードの更新命令を生成して命令キューに追加する。したがって、あるサービスの更新処理開始時における、既に開始されて未処理の更新処理の作業量に応じて、全サービスレコードそれぞれに対応するユーザレコードの更新命令を生成するか、更新の必要があるサービスレコードに対応するユーザレコードのみの更新命令を生成するかが判定されるため、複数のサービスのユーザの情報を収集してデータベースに蓄積する処理を効率良く進めることが可能となる。
【0073】
(変形例)
上記の実施形態において、サービスデータベース200は、各サービスを提供するサービス提供サーバの内部に構築されるものとして説明したが、それに限られず、サービス提供サーバとネットワークを介してアクセス可能な外部のデータベースサーバ、クラウドサーバ等として構築されてもよい。
【0074】
また、上記の実施形態において、ユーザデータベース300は、データベースサーバ、クラウドサーバ等により実現されるものとして説明したが、収集装置100の記憶部14により実現されてもよい。
【0075】
また、上記の実施形態において、収集装置100は、1つの命令キューを備え、1つの命令キューから更新命令を読み出して、更新処理を実行するものとして説明したが、収集装置100は、複数の命令キューを備え、それぞれの命令キューから更新命令を取り出して、複数の更新処理を並行して実行してもよい。その場合、命令キュー毎にサービスの対応付けを設定して、設定された対応付けに基づいて、各サービスの更新命令がそれぞれの命令キューに追加されればよい。
【0076】
また、収集装置100等によって実行されるプログラムは、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、MO(Magneto-Optical Disk)、USBメモリ、メモリカード等のコンピュータ読み取り可能な記録媒体に格納して配布することも可能である。そして、かかるプログラムを特定の又は汎用のコンピュータにインストールすることによって、当該コンピュータを上記の実施形態における収集装置100として機能させることも可能である。
【0077】
また、上記のプログラムをインターネットといった通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。また、通信ネットワークを介してプログラムを転送しながら起動実行することによっても、上述の処理を達成することができる。さらに、プログラムの全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながらプログラムを実行することによっても、上述の処理を達成することができる。
【0078】
なお、上述の機能を、OS(Operating System)が分担して実現する場合又はOSとアプリケーションとの協働により実現する場合等には、OS以外の部分のみを上記の記録媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
【0079】
以下、本開示の諸態様を付記としてまとめて記載する。
【0080】
(付記1)
複数のサービスにおけるユーザの情報を収集してユーザデータベースに格納する収集装置であって、
前記複数のサービスそれぞれにおける前記ユーザの情報は、各前記サービスに係るそれぞれのサービスデータベースが記憶するサービスレコードに格納され、
前記ユーザデータベースが有するユーザレコードには、前記ユーザ毎に、前記複数のサービスそれぞれの前記サービスレコードに由来する情報が格納され、
処理対象のサービスに係る前記サービスデータベースから、前記サービスレコードを取得するサービスレコード取得部と、
前記サービスレコード取得部により取得された前記処理対象のサービスに係るサービスレコードに基づいて、前記ユーザレコードを更新するユーザレコード更新部と、
を備え、
前記ユーザレコード更新部は、
前記ユーザレコードを更新する更新処理を開始する際に、
前記複数のサービスのうち、前記更新処理が既に開始されて未だ終了していないサービスの該更新処理の残りの作業量を集計し、
前記処理対象のサービスに係るサービスレコードに基づく前記更新処理において、前記ユーザ毎に、前記ユーザレコードに対する更新が必要か否かを判定し、更新が不要と判定されたユーザの前記更新処理をスキップする判定処理を行うか否かを、前記集計された残りの作業量に応じて判定する、
収集装置。
【0081】
(付記2)
前記ユーザレコード更新部は、前記サービスレコード取得部により取得された前記サービスレコードに基づいて、前記ユーザ毎に前記ユーザレコードを更新する更新命令を、命令キューに追加することにより、前記更新処理を開始する、
付記1に記載の収集装置。
【0082】
(付記3)
前記ユーザレコード更新部は、前記更新命令が蓄積される前記命令キューに基づき、前記更新処理が未終了の前記サービスの数、未終了の前記更新処理に要する予測時間、前記更新処理が未終了のユーザレコード数、前記命令キューの長さの内、少なくとも1つを集計し、集計結果に基づいて、前記判定処理を行うか否かを判定する、
付記2に記載の収集装置。
【0083】
(付記4)
前記ユーザレコード更新部は、前記判定処理を行うと判定された場合、
前記ユーザデータベースから、前記サービスレコード取得部により取得された前記サービスレコードに対応付けられるユーザレコードを取得し、該サービスレコードと該ユーザレコードとをユーザ毎に対比することにより、該ユーザレコードに対する更新が必要か否かをユーザ毎に判定する、
付記1から3のいずれか1つに記載の収集装置。
【0084】
(付記5)
前記ユーザレコード更新部は、前記判定処理を行うと判定されて該判定処理を実行した場合、
前記サービスレコード取得部により取得された前記サービスレコードの総数と、前記判定処理によりスキップされた前記サービスレコードのスキップ数とを記録し、
次回の前記処理対象のサービスにおける前記更新処理において、記録された前記サービスレコードの総数に対する前記スキップ数の割合を示すスキップ率を算出し、算出したスキップ率に応じて、前記判定処理を行うか否かを決定する、
付記1から4のいずれか1つに記載の収集装置。
【0085】
(付記6)
前記ユーザレコード更新部は、算出された前記スキップ率により、
(A)前記処理対象の全サービスレコードに基づく前記更新処理に要する時間と、(B)該処理対象の全サービスレコードに対して前記判定処理を行って、更新が必要と判定されたサービスレコードのみに基づく前記更新処理に要する時間と、を算出し、前記(A)の時間より、前記(B)の時間が少ないと判定された場合、前記判定処理を行うと決定する、
付記5に記載の収集装置。
【0086】
(付記7)
前記ユーザレコード更新部は、前記判定処理を行わないと決定された場合、
前記サービスレコード取得部により取得された前記サービスレコードに含まれる全ユーザのサービスレコードに基づいて、前記ユーザレコードを更新する、
付記1から6のいずれか1つに記載の収集装置。
【0087】
(付記8)
複数のサービスにおけるユーザの情報を収集してユーザデータベースに格納する収集装置であるコンピュータが、
処理対象のサービスに係るサービスデータベースから、前記複数のサービスそれぞれにおける前記ユーザの情報を格納するサービスレコードを取得するステップと、
取得された前記処理対象のサービスに係るサービスレコードに基づいて、前記ユーザデータベースに記憶され、前記ユーザ毎に、前記複数のサービスそれぞれの前記サービスレコードに由来する情報が格納されるユーザレコードを更新するステップと、
を含み、
前記ユーザレコードを更新するステップは、
前記ユーザレコードを更新する更新処理を開始する際に、
前記複数のサービスのうち、前記更新処理が既に開始されて未だ終了していないサービスの該更新処理の残りの作業量を集計し、
前記処理対象のサービスに係るサービスレコードに基づく前記更新処理において、前記ユーザ毎に、前記ユーザレコードに対する更新が必要か否かを判定し、更新が不要と判定されたユーザの前記更新処理をスキップする判定処理を行うか否かを、前記集計された残りの作業量に応じて判定する、
収集方法。
【0088】
(付記9)
複数のサービスにおけるユーザの情報を収集してユーザデータベースに格納する収集装置であるコンピュータに、
処理対象のサービスに係るサービスデータベースから、前記複数のサービスそれぞれにおける前記ユーザの情報を格納するサービスレコードを取得する処理と、
取得された前記処理対象のサービスに係るサービスレコードに基づいて、前記ユーザデータベースに記憶され、前記ユーザ毎に、前記複数のサービスそれぞれの前記サービスレコードに由来する情報が格納されるユーザレコードを更新する処理と、
を実行させ、
前記ユーザレコードを更新する処理は、
前記ユーザレコードを更新する更新処理を開始する際に、
前記複数のサービスのうち、前記更新処理が既に開始されて未だ終了していないサービスの該更新処理の残りの作業量を集計し、
前記処理対象のサービスに係るサービスレコードに基づく前記更新処理において、前記ユーザ毎に、前記ユーザレコードに対する更新が必要か否かを判定し、更新が不要と判定されたユーザの前記更新処理をスキップする判定処理を行うか否かを、前記集計された残りの作業量に応じて判定する、
プログラム。
【0089】
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この開示を説明するためのものであり、本開示の範囲を限定するものではない。すなわち、本開示の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、この開示の範囲内とみなされる。
【産業上の利用可能性】
【0090】
本発明は、複数のサービスのユーザの情報をサービスデータベースから収集してユーザデータベースに蓄積する収集装置、収集方法、及びプログラムに好適に採用され得る。
【符号の説明】
【0091】
100 収集装置、200,200a、200b,200c サービスデータベース、300 ユーザデータベース、400 通信ネットワーク、110 サービスレコード取得部、120 サービスレコード記憶部、130 ユーザレコード更新部、131 残作業量集計部、132 判定部、133 更新指示部、11 CPU、12 RAM、13 ROM、14 記憶部、15 入力部、16 表示部、17 通信部、99 内部バス
【要約】
【課題】複数のサービスのユーザの情報を収集してデータベースに蓄積する処理を効率良く進めることのできる収集装置、収集方法、および、プログラムを提供する。
【解決手段】収集装置100は、処理対象のサービスに係るサービスデータベース200から、サービスレコードを取得するサービスレコード取得部110と、取得されたサービスレコードに基づいて、ユーザレコードを更新するユーザレコード更新部130と、を備え、ユーザレコード更新部130は、ユーザレコードを更新する更新処理を開始する際に、複数のサービスのうち、更新処理が既に開始されて未だ終了していないサービスの更新処理の残りの作業量を集計し、処理対象のサービスに係るサービスレコードに基づく更新処理において、判定処理を行うか否かを、集計された残りの作業量に応じて判定する。
【選択図】
図6