JP2023104403A - 制御方法、制御プログラム及び情報処理装置 - Google Patents

制御方法、制御プログラム及び情報処理装置 Download PDF

Info

Publication number
JP2023104403A
JP2023104403A JP2022005363A JP2022005363A JP2023104403A JP 2023104403 A JP2023104403 A JP 2023104403A JP 2022005363 A JP2022005363 A JP 2022005363A JP 2022005363 A JP2022005363 A JP 2022005363A JP 2023104403 A JP2023104403 A JP 2023104403A
Authority
JP
Japan
Prior art keywords
data
initialization
message queue
processing unit
update
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
Application number
JP2022005363A
Other languages
English (en)
Inventor
浩一 尾上
Koichi Onoue
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022005363A priority Critical patent/JP2023104403A/ja
Priority to US17/978,359 priority patent/US20230229533A1/en
Publication of JP2023104403A publication Critical patent/JP2023104403A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データ提供を効率的に行なう制御方法、制御プログラム及び情報処理装置を提供する。【解決手段】データ利用者が提供するサービスに関するデータの更新に応じて生成される更新差分データを第1のメッセージキューに送信し、データ利用者の装置からサービスに関するデータの初期化要求を受け付けて、初期化要求に応じた時点でのサービスに関するデータを、第1のメッセージキューとは異なる第2のメッセージキューに送信する処理をコンピュータに実行させる。【選択図】図20

Description

本発明は、制御方法、制御プログラム及び情報処理装置に関する。
近年、自社データだけでは新たなビジネス領域の開拓や新たな価値の創造が難しくなっている。そこで、自社データとともに他社のデータを利用して、新たなビジネス領域や価値の創造を目指す試みが検討されている。例えば、外部の組織とデータ共有をする組織はそうでない組織に比べて3倍以上の経済利益を得ることが可能であるといった統計データも存在する。ここでは、データを提供する外部の組織を「データ提供者」、データ提供者から提供されたデータを利用してエンドユーザにサービスを提供する組織を「データ利用者」と呼ぶ。
データ提供者からデータ利用者へのデータの流通手法として、メッセージキューを介したデータの流通手法が考えられる。例えば、既存のメッセージキューシステムとして、Apache Kafka(登録商標)、RabbitMQ(登録商標)、Amazon SQS(登録商標)、Microsoft Message Queuing(登録商標)などが存在する。
メッセージキューを介したデータの流通手法とは、データ提供者がデータの生成時及び更新時にメッセージキューへデータを送信し、データ利用者はメッセージキューからデータを受信してデータの生成及び更新を行なう技術である。
データ利用者は、データの利用開始時にその時点での最新状態のデータの全体を複製したデータを取得する。従来、データ利用者は、データを最初に取得する場合、生成時の初期状態のデータをメッセージキューから取得し、さらにその時点までの更新差分データを取得したデータに適用することで最新状態のデータの複製を得ていた。データを取得する場合にその時点での最新状態のデータの全体を複製したデータを取得することをデータの初期化と呼ぶ。その後、データ更新時には、更新差分データがメッセージキューによりデータ利用者に対して提供され、データ利用者は、更新差分データを用いて、複製したデータを更新して最新の状態とする。
このようにデータの流通にメッセージキューを用いる利点として以下のようなものが存在する。1つには、データ提供者は同じデータを提供するデータ利用者が増えることによるデータ流通のための追加の設定を省略することができるといった利点がある。これは、データ提供者がデータ利用者ではなくメッセージキューにデータを送信し、且つ、データ提供者とデータ利用者との通信を1対多で行うことができることを理由とする。また、他には、データ利用者は都合の良いタイミングでデータをメッセージキューから取得できるといった利点がある。すなわち、データ提供者とデータ利用者との間で、非同期にデータを共有できる。これは、データ利用者がデータ提供者ではなくメッセージキューからデータを受信することを理由とする。
なお、メッセージキューを介したデータ流通技術として、複数のアプリケーションから非同期に送られたデータをメッセージキューで一時的に保存して、設定された最大遅延時間に達したときに一括でIoTデバイス群に送信する技術が提案されている。
国際公開第2017/051667号
しかしながら、メッセージキューを介してデータを流通させる場合、提供データの作成直後からの更新差分を用いて、利用者側でデータを複製した場合、データ初期化時の全ての差分適用の実行時間が、差分の数に比例して大きくなってしまう。言い換えれば、データ利用者は、最初の接続時にデータ全体を取得することになるが、メッセージキューに含まれる更新差分データの数が多いと更新回数数が多くなるためデータの複製に時間がかかってしまう。また、メッセージキューに送信されたデータには保有のための有効期限があり永続的には残らないため、データ利用者はデータの複製が困難になる場合がある。言い換えれば、有効期限の切れたデータが存在する場合、データ利用者はデータを完全に複製することが困難となる。したがって、効率的なデータ提供は困難である。
また、メッセージキューで一時的に保存したデータを最大遅延時間に達したときに一括で送信する技術では、データ利用者によるデータ初期化時のデータの複製については考慮されていない。そのためこの技術を用いても、データ初期化時の差分適用までの実行時間の短縮や、有効期限の切れたデータによるデータ複製の失敗回避は困難である。したがって、効率的なデータ提供は困難である。
開示の技術は、上記に鑑みてなされたものであって、データ提供を効率的に行なう制御方法、制御プログラム及び情報処理装置を提供することを目的とする。
本願の開示する制御方法、制御プログラム及び情報処理装置の一つの態様において、データ利用者が提供するサービスに関するデータの更新に応じて生成される更新差分データを第1のメッセージキューに送信し、前記データ利用者の装置から前記サービスに関するデータの初期化要求を受け付けて、前記初期化要求に応じた時点での前記サービスに関するデータを、前記第1のメッセージキューとは異なる第2のメッセージキューに送信する処理をコンピュータに実行させる。
1つの側面では、本発明は、データ提供を効率的に行なうことができる。
図1は、データ提供システムのブロック図である。 図2は、初期化処理開始要求及び初期化処理終了要求の一例を示す図である。 図3は、初期化応答の一例を示す図である。 図4は、初期化中利用者リストの一例を示す図である。 図5は、転送データの一例を示す図である。 図6は、初期化データが存在する場合の初期化処理の流れを説明するための第1の図である。 図7は、初期化データが存在する場合の初期化処理の流れを説明するための第2の図である。 図8は、初期化データが存在する場合の初期化処理の流れを説明するための第3の図である。 図9は、初期化データが存在する場合の初期化処理の流れを説明するための第4の図である。 図10は、初期化データが存在する場合の初期化処理の流れを説明するための第5の図である。 図11は、初期化データが存在する場合の初期化処理の流れを説明するための第6の図である。 図12は、初期化データが存在する場合の初期化処理の流れを説明するための第7の図である。 図13は、初期化データが存在する場合の初期化処理の流れを説明するための第8の図である。 図14は、初期化データが存在する場合の初期化処理の流れを説明するための第9の図である。 図15は、初期化データが存在する場合の初期化処理の流れを説明するための第10の図である。 図16は、初期化データが存在しない場合の初期化処理の流れを説明するための第1の図である。 図17は、初期化データが存在しない場合の初期化処理の流れを説明するための第2の図である。 図18は、初期化データが存在しない場合の初期化処理の流れを説明するための第3の図である。 図19は、初期化データが存在しない場合の初期化処理の流れを説明するための第4の図である。 図20は、提供者サーバにおける初期化処理のフローチャートである。 図21は、提供者サーバにおける更新処理のフローチャートである。 図22は、利用者サーバにおける初期化処理のフローチャートである。 図23は、利用者サーバにおける更新処理のフローチャートである。 図24は、コンピュータのハードウェア構成図である。
以下に、本願の開示する制御方法、制御プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する制御方法、制御プログラム及び情報処理装置が限定されるものではない。
図1は、データ提供システムのブロック図である。データ提供システム1は、提供者サーバ10,メッセージキューサーバ20及び利用者サーバ30を有する。利用者サーバ30は、提供者サーバ10からメッセージキューサーバ20を介して提供されるデータを用いてデータ利用者が行うサービスに関するデータの複製を取得する。データ利用者がサービスに利用するデータのその時点での最新状態のデータ全体の複製を取得する処理を、データの初期化と呼ぶ。例えば、データ利用者は、サービスを開始するにあたり、そのサービスに利用するデータ全体をデータ提供者から最初に取得するが、その際にデータの初期化を行なう。データの初期化において複製に利用されるデータを初期化データと呼ぶ。利用者サーバ30は、実際には提供者サーバ10が保持するデータの複製を得るが、以下の説明では、利用者サーバ30が提供者サーバ10からデータを取得するとして説明する場合がある。
提供者サーバ10は、データ提供者が提供するデータの送信に用いる情報処理装置である。提供者サーバ10は、初期化処理部11、更新処理部12及び記憶部13を有する。
記憶部13は、各種データを格納する記憶装置である。記憶部13は、例えば、初期化中利用者リスト131及びデータ132を格納する。
初期化中利用者リスト131は、初期化データの転送に使用される初期化データ転送用メッセージキュー23を利用するデータ利用者のリストである。初期化中利用者リスト131には、初期化データ転送用メッセージキュー23を使用中のデータ利用者が初期化処理部11により登録される。
データ132は、データ利用者が複製を取得するための元となるデータ提供者が保持するデータである。初期状態のデータ132は、提供者サーバ10により生成されたり他の装置から取得されたりすることにより得られる。その後、データ132は初期状態から随時更新される。データ132は、更新が行われた場合には最新のデータであり、初期化時にデータ利用者に対して提供される初期化データとして用いられる。データ132には、最終更新時のタイムスタンプが付加される。
初期化処理部11は、初期化要求用メッセージキュー21を介して利用者サーバ30から送信された初期化処理開始要求を受信する。図2は、初期化処理開始要求及び初期化処理終了要求の一例を示す図である。初期化処理開始要求は、例えば、図2のシンタックス101で表されるように、要求内容及びデータ利用者の識別子を含む。シンタックス101において、要求内容は「開始(start)」であり、識別子は「consumer-001」である。データ利用者の識別子は、利用者サーバ30で動作するデータの受信を行なうデータ利用者プログラムの識別子ということもできる。
この初期処理開始要求が利用者サーバ30から提供者サーバ10へと送られることで、提供者サーバ10が初期化処理を開始して利用者サーバ30においてデータの初期化が行われる。すなわち、初期化処理部31が提供者サーバ10に送信する初期化処理開始要求が、初期化の実行を求める初期化要求にあたる。すなわち、初期化処理部11は、データ利用者の装置である利用者サーバ30からサービスに関するデータの初期化要求を受け付ける。
次に、初期化処理部11は、初期化データであるデータ132が記憶部13に存在するか否かを判定する。初期化データは、初期状態のデータであっても良いし、1回又は複数回更新された後のデータであってもよい。データ132が更新されている場合には最新状態のデータが、初期化データとして利用される。
初期化データが存在しない場合、初期化処理部11は、初期化データの不存在を通知する初期化応答を、初期化応答用メッセージキュー22を介して利用者サーバ30へ送信する。図3は、初期化応答の一例を示す図である。初期化データの不存在を通知する初期化応答は、例えば、図3のシンタックス103で表されるように、応答内容及びデータ利用者の識別子を含む。例えば、初期化データの不存在を通知するする初期化応答は、シンタックス103に示すように,初期化データが存在しないことを示す「not_have_data」といった応答内容を有する。その後、初期化処理部11は、初期化処理を終了する。
これに対して、初期化データが存在する場合、初期化処理部11は、データ利用者の識別情報を初期化中利用者リスト131に登録する。図4は、初期化中利用者リストの一例を示す図である。図4に示すように、初期化中利用者リスト131には、初期化データ転送用メッセージキュー23を利用するそれぞれのデータ利用者の識別子が登録される。例えば、図2のシンタックス101を有する初期化処理開始要求を受けた場合、初期化処理部11は、「consumer-001」を初期化中利用者リスト131に登録する。
次に、初期化処理部11は、初期化データ転送用メッセージキュー23をメッセージキューサーバ20に作成する。より詳しくは、初期化処理部11は、メッセージキューサーバ20に存在する制御部(不図示)などに初期化データ転送用メッセージキュー23の作成を依頼して、初期化データ転送用メッセージキュー23の作成を行わせる。ここで、初期化処理部11は、提供するデータ132が複数種類ある場合、種類毎に初期化データ転送用メッセージキュー23を生成する。
次に、初期化処理部11は、初期化データが存在することを通知する初期化応答を、初期化応答用メッセージキュー22を介して利用者サーバ30へ送信する。初期化データが存在することを通知する初期化応答は、例えば、図3のシンタックス104で表されるように、応答内容、データ利用者の識別子及び初期化応答用メッセージキュー22の識別子を含む。例えば、初期化データが存在することを通知する初期化応答は、シンタックス103に示すように初期化開始を表す「start」といった応答内容を有し、これにより初期化データが存在することを通知する。また、初期化処理部11は、初期化応答用メッセージキュー22の識別子として、予め決められた識別子を用いても良いし、初期化応答用メッセージキュー22を作成する毎に識別子を生成してもよい。
次に、初期化処理部11は、初期化データであるデータ132を取得する。そして、初期化処理部11は、初期化データを初期化データ転送用メッセージキュー23へ送信する。図5は、転送データの一例を示す図である。初期化データは、図5のシンタックス105に示すように、データの最新の更新日時を表すタイムスタンプ、ファイル名などのデータの識別子及びバイト列で表されるデータの中身を含む。このように、初期化処理部11は、初期化要求に応じた時点でのサービスに関するデータを、初期化データ転送用メッセージキュー23に送信する。
その後、初期化処理部11は、初期化要求用メッセージキュー21を介して、初期化処理終了要求を利用者サーバ30から受信する。そして、初期化処理部11は、初期化処理終了要求を送信したデータ利用者の識別情報を初期化中利用者リスト131から削除する。次に、初期化処理部11は、初期化中利用者リスト131に他のデータ利用者の識別情報が未だ存在するか否かを判定する。初期化中利用者リスト131に他のデータ利用者の識別情報が未だ存在する場合、初期化処理部11は、他の初期化処理終了要求の到着を待つ。
これに対して、初期化中利用者リスト131に登録されたデータ利用者の識別情報が存在しなくなった場合、初期化処理部11は、初期化データ転送用メッセージキュー23をメッセージキューサーバ20から削除する。この削除についても、より詳しくは、初期化処理部11は、メッセージキューサーバ20に存在する制御部(不図示)などに初期化データ転送用メッセージキュー23の削除を依頼して、初期化データ転送用メッセージキュー23の削除を行わせる。その後、初期化処理部11は、初期化処理を終了する。このように、初期化処理部11は、初期化要求を送信したデータ利用者の識別情報を初期化中利用者リスト131に登録し、初期化中利用者リスト131に登録された情報を基に、初期化データ転送用メッセージキュー23の作成及び削除を実行する。
更新処理部12は、データ132の更新を監視する。そして、データ132が更新された場合、更新前のデータと更新後のデータとの差分にあたる更新差分データを更新データ転送用メッセージキュー24に送信する。記憶部13に初期状態のデータ132が格納された場合はデータ132の全体が更新された差分と考えられるので、更新処理部12は、初期状態のデータ132の全体を更新差分データとして更新データ転送用メッセージキュー24に送信する。更新差分データも、図5のシンタックス105で示されるフォーマットを有する。すなわち、更新処理部12は、データ利用者が提供するサービスに関するデータの更新に応じて生成される更新差分データを更新データ転送用メッセージキュー24に送信する。
次に、メッセージキューサーバ20について説明する。メッセージキューサーバ20は、初期化要求用メッセージキュー21、初期化応答用メッセージキュー22及び更新データ転送用メッセージキュー24を予め有する。更新データ転送用メッセージキュー24が、「第1のメッセージキュー」の一例にあたる。また、初期化要求用メッセージキュー21が、「第3のメッセージキュー」の一例にあたる。また、初期化応答用メッセージキュー22が、「第4のメッセージキュー」の一例にあたる。
また、初期化データ転送用メッセージキュー23は、利用者サーバ30が初期化を要求した際に初期化データが提供者サーバ10に存在する場合に、提供者サーバ10の初期化処理部11により作成される。その後、初期化処理が終わり、初期化データ転送用メッセージキュー23をデータの初期化に利用する利用者サーバ30が存在しなくなると、初期化データ転送用メッセージキュー23は、提供者サーバ10の初期化処理部11により削除される。初期化データ転送用メッセージキュー23が、「第2のメッセージキュー」の一例にあたる。
次に、利用者サーバ30について説明する。利用者サーバ30は、図1に示すように、初期化処理部31、更新処理部32及び記憶部33を有する。
記憶部33は、各種データを格納する記憶装置である。記憶部33は、例えば、データ132を複製したデータ331を格納する。
初期化処理部31は、ユーザからの初期化処理の実行の指示を受けて、初期化処理開始要求を初期化要求用メッセージキュー21へ送信する。その後、初期化処理部31は、初期化処理開始要求の送信時点で提供者サーバ10に初期化データが存在しない場合には、初期化の完了を通知する初期化応答を、初期化応答用メッセージキュー22を介して提供者サーバ10から受信する。そして、初期化処理部31は、初期化データのタイムスタンプとして0を更新処理部32に通知する。その後、初期化処理部31は、初期化処理を終了する。
これに対して、初期化データが存在する場合には、初期化処理部31は、初期化データが存在することを通知する初期化応答を、初期化応答用メッセージキュー22を介して提供者サーバ10から受信する。次に、初期化処理部31は、初期化応答に含まれる初期化データ転送用メッセージキュー23の識別情報を取得する。次に、初期化処理部31は、識別子で示される初期化データ転送用メッセージキュー23から初期化データを取得する。そして、初期化処理部31は、取得した初期化データを用いてデータ132の複製であるデータ331を生成して記憶部33に格納する。
データ331の格納後、初期化処理部31は、初期化要求用メッセージキュー21を介して初期化終了要求を提供者サーバ10へ送信する。また、初期化処理部31は、初期化時のデータに付加されたタイムスタンプを更新処理部32に通知する。その後、初期化処理部31は、初期化処理を終了する。
更新処理部32は、データの初期化処理の実行時に、初期化処理部31から初期化データのタイムスタンプを取得する。データの初期化処理の実行時に初期化データが存在しない場合、更新処理部32は、初期化データのタイムスタンプとして0を取得する。これに対して、データの初期化処理の実行時に初期化データが存在する場合、更新処理部32は、初期化データに付加されたタイムスタンプを初期化データのタイムスタンプとして取得する。
ここで、本実施例では、初期化処理の実行時に、初期化処理部31から初期化データのタイムスタンプを取得したが、更新処理部32がデータ331を更新するか否かの判定時点でタイムスタンプを保持していれば、取得のタイミングはこれに限らない。例えば、データ331を更新するか否かを判定する際に、更新処理部32が、初期化処理部31に対して初期化データのタイムスタンプの取得要求を送信して、初期化データのタイムスタンプを初期化処理部31から取得してもよい。
更新処理部32は、所定のタイミングで更新データ転送用メッセージキュー24を参照して、前回の更新差分データの取得時以降に格納された更新差分データの有無を確認する。ここで、所定のタイミングとは、定期的であっても良いし利用者サーバ30の操作者から更新指示を受けたタイミングであってもよい。
前回の更新差分データの取得時以降に格納された更新差分データが存在する場合、更新処理部32は、前回の更新差分データの取得時以降に格納された更新差分データを更新データ転送用メッセージキュー24から取得する。ここで、初期化処理の実行時に初期化データが存在しなかった場合、更新処理部32は、更新差分データとして初期化時以降に格納された初期状態のデータ132の全体を含む更新差分データを所得する。
次に、更新処理部32は、取得した更新差分データのタイムスタンプと初期化データのタイムスタンプとを比較する。そして、更新差分データのタイムスタンプが初期化データのタイムスタンプより後の場合、更新処理部32は、取得した更新差分データを用いてデータ331を更新する。
ここで、初期化処理の実行時に初期化データが存在しなかった場合、初期化データのタイムスタンプは0であるので、更新処理部32は、常に更新差分データを用いてデータ331の更新を行なう。特に、初期化処理の実行時に初期化データが存在しなかった場合の最初の更新差分データであれば、更新処理部32は、取得した更新差分データを用いてデータ331を新たに生成して記憶部33に格納する。データ331の更新後、更新処理部32は、データの更新処理を終了して、次の更新タイミングまで待機する。
また、初期化処理の実行時に初期化データが存在した場合で初期化時以降にデータ132の更新が行われない状態で更新処理部32が更新差分データを取得した場合、更新差分データのタイムスタンプは、初期化データのタイムスタンプより後ではない。その場合、更新処理部32は、更新差分データによる更新は行わずに、次の更新のタイミングまで待機する。
図6は、初期化データが存在する場合の初期化処理の流れを説明するための第1の図である。図7は、初期化データが存在する場合の初期化処理の流れを説明するための第2の図である。図8は、初期化データが存在する場合の初期化処理の流れを説明するための第3の図である。図9は、初期化データが存在する場合の初期化処理の流れを説明するための第4の図である。図10は、初期化データが存在する場合の初期化処理の流れを説明するための第5の図である。図11は、初期化データが存在する場合の初期化処理の流れを説明するための第6の図である。図12は、初期化データが存在する場合の初期化処理の流れを説明するための第7の図である。図13は、初期化データが存在する場合の初期化処理の流れを説明するための第8の図である。図14は、初期化データが存在する場合の初期化処理の流れを説明するための第9の図である。図15は、初期化データが存在する場合の初期化処理の流れを説明するための第10の図である。以下に、図6~15を参照して、初期化データが存在する場合の初期化処理の流れの全体をまとめて説明する。
図6に示すように、利用者サーバ30の初期化処理部31は、ユーザからの指示を受けて、初期化要求用メッセージキュー21を介して初期化処理開始要求を提供者サーバ10の初期化処理部11へ送る(ステップS1)。この際、更新処理部12は、初期化処理部31とは別個に、データ132の更新が発生する毎に、更新差分データを更新データ転送用メッセージキュー24へ送信する。
提供者サーバ10の初期化処理部11は、初期化処理開始要求を受信する。初期化処理部11は、初期化データであるデータ132の有無を確認する。この場合、データ132は記憶部13に存在する。そこで、図7に示すように、初期化処理部11は、初期化中利用者リスト131に初期化処理開始要求の送信元のデータ利用者の識別情報を登録する(ステップS2)。図7では、データ利用者の識別情報を「Consumer#1」として表した。
次に、図8に示すように、初期化処理部11は、初期化データ転送用メッセージキュー23をメッセージキューサーバ20に作成する(ステップS3)。
次に、図9に示すように、初期化処理部11は、初期化データ転送用メッセージキュー23を介して初期化データが存在することを通知する初期化応答を利用者サーバ30へ送信する(ステップS4)。
次に、図10に示すように、初期化処理部11は、最新のデータ132を記憶部13から取得する。そして、初期化処理部11は、初期化データ転送用メッセージキュー23に最新のデータ132を初期化データとして送信する(ステップS5)。
次に、図11に示すように、利用者サーバ30の初期化処理部31は、初期化データ転送用メッセージキュー23から初期化データを取得する。そして、初期化処理部31は、取得した初期化データを用いてデータ132の複製であるデータ331を生成して記憶部33に格納する(ステップS6)。
データ331の格納後、図12に示すように、初期化処理部31は、初期化要求用メッセージキュー21を介して初期化処理終了要求を提供者サーバ10へ送信する(ステップS7)。
提供者サーバ10の初期化処理部11は、初期化処理終了要求を受信する。そして、図13に示すように、初期化処理部11は、初期化中利用者リスト131から初期化処理終了要求の送信元のデータ利用者の識別情報を削除する(ステップS8)。さらに、初期化処理部11は、初期化データ転送用メッセージキュー23をメッセージキューサーバ20から削除する(ステップS9)。
また、利用者サーバ30の初期化処理部31は、初期化データに付加されたタイムスタンプを更新処理部32へ送信する。更新処理部32は、初期化データのタイムスタンプを取得する(ステップS10)。
その後、データ132が更新されると、提供者サーバ10の更新処理部12により更新差分データが更新データ転送用メッセージキュー24へ送信される。利用者サーバ30の更新処理部32は、所定のタイミングで前回の更新差分データの取得時以降に格納された更新差分データの有無を確認する。その更新差分データが存在する場合、図15に示すように、更新処理部32は、前回の更新差分データの取得時以降に格納された更新差分データを更新データ転送用メッセージキュー24から取得する。そして、更新処理部32は、取得した更新差分データのタイムスタンプが初期化データのタイムスタンプよりも後か否かを判定する。取得した更新差分データのタイムスタンプが初期化データのタイムスタンプよりも後である場合、更新処理部32は、更新差分データを用いてデータ331を更新する(ステップS11)。
図16は、初期化データが存在しない場合の初期化処理の流れを説明するための第1の図である。図17は、初期化データが存在しない場合の初期化処理の流れを説明するための第2の図である。図18は、初期化データが存在しない場合の初期化処理の流れを説明するための第3の図である。図19は、初期化データが存在しない場合の初期化処理の流れを説明するための第4の図である。以下に、図16~19を参照して、初期化データが存在しない場合の初期化処理の流れの全体をまとめて説明する。
図16に示すように、利用者サーバ30の初期化処理部31は、ユーザからの指示を受けて、初期化要求用メッセージキュー21を介して初期化処理開始要求を提供者サーバ10の初期化処理部11へ送る(ステップS21)。
提供者サーバ10の初期化処理部11は、初期化処理開始要求を受信する。次に、図17に示すように、初期化処理部11は、初期化データ転送用メッセージキュー23を介して初期化データの不存在を通知する初期化応答を利用者サーバ30へ送信する(ステップS22)。
図18に示すように、利用者サーバ30の初期化処理部31は、初期化データの不存在を通知する初期化応答を受信すると、初期化データのタイムスタンプとして0を更新処理部32へ送信する。更新処理部32は、初期化データのタイムスタンプとして0を取得する(ステップS23)。
その後、データ132が更新されると、提供者サーバ10の更新処理部12により更新差分データが更新データ転送用メッセージキュー24へ送信される。利用者サーバ30の更新処理部32は、所定のタイミングで前回の更新差分データの取得時以降に格納された更新差分データの有無を確認する。その更新差分データが存在する場合、更新処理部32は、図19に示すように、更新処理部32は、前回の更新差分データの取得時以降に格納された更新差分データを更新データ転送用メッセージキュー24から取得する。最初の更新差分データの取得であれば、更新差分データには初期状態のデータ132の全体が含まれる。そして、更新処理部32は、取得した更新差分データのタイムスタンプが初期化データのタイムスタンプよりも後か否かを判定する。この場合、初期化データのタイムスタンプが0であることから、取得した更新差分データのタイムスタンプが初期化データのタイムスタンプよりも常に後である。そこで、更新処理部32は、更新差分データを用いてデータ331を生成して記憶部33に格納もしくは記憶部33に格納されたデータ331を更新する(ステップS24)。
図20は、提供者サーバにおける初期化処理のフローチャートである。次に、図20を参照して、提供者サーバ10における初期化処理の流れを説明する。
初期化処理部11は、初期化要求用メッセージキュー21を介して初期化処理開始要求を利用者サーバ30の初期化処理部31から受信する(ステップS101)。
次に、初期化処理部11は、初期化データであるデータ132が存在するか否かを判定する(ステップS102)。
初期化データが存在しない場合(ステップS102:否定)、初期化処理部11は、初期化データの不存在を通知する初期化応答を利用者サーバ30の初期化処理部31へ初期化応答用メッセージキュー22を介して送信する(ステップS103)。その後、初期化処理部11は、初期化処理を終了する。
これに対して、初期化データが存在する場合(ステップS102:肯定)、初期化処理部11は、初期化中利用者リスト131へデータ利用者の識別情報を追加する(ステップS104)。
次に、初期化処理部11は、初期化中利用者リスト131に登録された利用者数が1か否かを判定する(ステップS105)。初期化中利用者リスト131に登録された利用者数が1でない場合(ステップS105:否定)、初期化処理部11は、ステップS108へ進む。
これに対して、初期化中利用者リスト131に登録された利用者数が1の場合(ステップS105:肯定)、初期化処理部11は、初期化データ転送用メッセージキュー23をメッセージキューサーバ20に作成する(ステップS106)。
次に、初期化処理部11は、データ132を記憶部13から取得して、初期化データとして初期化データ転送用メッセージキュー23に送信する(ステップS107)。
その後、初期化処理部11は、初期化データの存在を通知する初期化応答を、初期化応答用メッセージキュー22を介して利用者サーバ30の初期化処理部31へ送信する(ステップS108)。
利用者サーバ30におけるデータ132の複製の完了後、初期化処理部11は、初期化処理終了要求を利用者サーバ30の初期化処理部31から受信する(ステップS109)。
次に、初期化処理部11は、初期化処理終了要求の送信元のデータ利用者の識別情報を初期化中利用者リスト131から削除する(ステップS110)。
次に、初期化処理部11は、初期化中利用者リスト131に登録された利用者数が0か否かを判定する(ステップS111)。初期化中利用者リスト131に登録された利用者数が0でない場合(ステップS111:否定)、初期化処理部11は、初期化処理を終了する。
これに対して、初期化中利用者リスト131に登録された利用者数が0の場合(ステップS111:肯定)、初期化処理部11は、初期化データ転送用メッセージキュー23を削除する(ステップS112)。その後、初期化処理部11は、初期化処理を終了する。
図21は、提供者サーバにおける更新処理のフローチャートである。次に、図21を参照して、提供者サーバ10における更新処理の流れを説明する。
更新処理部12は、記憶部13に格納されたデータ132の更新を検出する(ステップS201)。
データ132の更新を検出すると、更新処理部12は、更新による差分である更新差分データを、更新データ転送用メッセージキュー24を介して利用者サーバ30の更新処理部32へ送信する(ステップS202)。
図22は、利用者サーバにおける初期化処理のフローチャートである。次に、図22を参照して、利用者サーバ30における初期化処理の流れを説明する。
初期化処理部31は、ユーザからの指示を受けて、初期化要求用メッセージキュー21を介して初期化開始要求を提供者サーバ10の初期化処理部11へ送信する(ステップS301)。
その後、初期化処理部31は、初期化応答用メッセージキュー22を介して初期化応答を受信する(ステップS302)。
次に、初期化処理部31は、取得した初期化応答の応答内容から初期化データが存在するか否かを判定する(ステップS303)。
初期化データが存在しない場合(ステップS303:否定)、初期化処理部31は、初期化データのタイムスタンプとして0を更新処理部32に通知する(ステップS304)。
これに対して、初期化データが存在する場合(ステップS303:肯定)、初期化処理部31は、初期化データ転送用メッセージキュー23を介して初期化データを受信する(ステップS305)。
次に、初期化処理部31は、初期化データの複製であるデータ331を生成して記憶部33に格納する(ステップS306)。
次に、初期化処理部31は、初期化データのタイムスタンプを更新処理部32に通知する(ステップS307)。
次に、初期化処理部31は、初期化要求用メッセージキュー21を介して初期化終了要求を提供者サーバ10の初期化処理部11へ送信する(ステップS308)。その後、初期化処理部31は、初期化処理を終了する。
図23は、利用者サーバにおける更新処理のフローチャートである。次に、図23を参照して、利用者サーバ30における更新処理の流れを説明する。
更新処理部32は、初期化処理の実行時に、初期化データのタイムスタンプを初期化処理部31から取得する(ステップS401)。
次に、更新処理部32は、更新差分データを更新データ転送用メッセージキュー24から受信する(ステップS402)。
次に、更新処理部32は、更新差分データのタイムスタンプが初期化データのタイムスタンプより後か否かを判定する(ステップS403)。更新差分データのタイムスタンプが初期化データのタイムスタンプより後でない場合(ステップS403:否定)、更新処理部32は、更新処理を終了する。
これに対して、更新差分データのタイムスタンプが初期化データのタイムスタンプより後の場合(ステップS403:肯定)、更新処理部32は、更新差分データを用いて記憶部33に格納されたデータ331を更新する(ステップS404)。その後、更新処理部32は、更新処理を終了する。
(ハードウェア構成)
図24は、コンピュータのハードウェア構成図である。提供者サーバ10、メッセージキューサーバ20及び利用者サーバ30のいずれも図24に示したコンピュータ90で実現可能である。
コンピュータ90は、図24に示すように、CPU(Central Processing Unit)91、メモリ92、ストレージ93、可搬型記憶媒体ドライブ94、入力インタフェース95、表示インタフェース96、ネットワークインタフェース97及びバス98を有する。CPU91は、バス98を介して、メモリ92、ストレージ93、可搬型記憶媒体ドライブ94、入力インタフェース95、表示インタフェース96及びネットワークインタフェース97に接続される。
ストレージ93は、ハードディスクやSSD(Solid State Drive)である。ストレージ93は、提供者サーバ10であれば記憶部13の機能を実現し、利用者サーバ30であれば記憶部33の機能を実現する。また、ストレージ93は、例えば、OS(Operating System)やアプリケーションプログラムなどの各種プログラム及びプログラムデータを記憶する。特に、提供者サーバ10であれば、ストレージ93は、図1に例示した初期化処理部11及び更新処理部12の機能を実現するためのプログラムを格納する。また、利用者サーバ30であれば、ストレージ93は、図1に例示した初期化処理部31及び更新処理部32の機能を実現するためのプログラムを格納する。また、メッセージキューサーバ20であれば、ストレージ93は、初期化要求用メッセージキュー21、初期化応答用メッセージキュー22、初期化データ転送用メッセージキュー23及び更新データ転送用メッセージキュー24の機能を実現する。
可搬型記憶媒体ドライブ94は、例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。可搬型記憶媒体ドライブ94は、挿入された記憶媒体に対してデータの書き込みや読み出しを行なう。
入力インタフェース95は、キーボードやマウスなどの入力装置が接続される。表示インタフェース96は、モニタなどの表示装置が接続される。
ネットワークインタフェース97は、外部装置との通信のインタフェースである。例えば、ネットワークインタフェース97は、提供者サーバ10とメッセージキューサーバ20との間の通信及びメッセージキューサーバ20と利用者サーバ30との間の通信を中継する。
メモリ92は、主記憶装置である。メモリ92は、例えば、DRAM(Dynamic Random Access Memory)などを用いることができる。
CPU91は、ストレージ93に格納された各種プログラムを読みだしてメモリ92に展開して実行する。これにより、提供者サーバ10であれば、CPU91は、図1に例示した初期化処理部11及び更新処理部12の機能を実現する。また、利用者サーバ30であれば、CPU91は、図1に例示した初期化処理部31及び更新処理部32の機能を実現する。また、メッセージキューサーバ20であれば、CPU91は、提供者サーバ10からの指示を受けて、ストレージ93における初期化データ転送用メッセージキュー23の作成及び削除を行う機能を実現する。
以上に説明したように、本実施例に係るデータ提供システムでは、提供者サーバは、初期化要求を受けると、初期化データが存在すれば、初期化データ転送用メッセージキューを生成する。そして、提供者サーバは、その初期化データ転送用メッセージキューを用いて最新のデータを初期化データとして転送する。利用者サーバは、データの初期化を行なう場合に、初期化データ転送用メッセージキューを用いて初期化データを取得して最新のデータ全体の複製を生成する。
これにより、データの初期化時の更新差分の適用回数を減らすことができ、データの初期化時の時間を短縮することができる。また、メッセージキューに保存されているデータの有効期限に依存することなく、完全なデータの初期化を行なうことが可能となる。したがって、データ提供を効率的に行なうことが可能となる。したがって、更新差分データの適用回数、適用時間及びマシン付加といったデータの初期化により生じるコストを低減することができる。メッセージキューの仕組みを用いて上述したデータの初期化を実現できるため、データ利用者及びデータ提供者ともに新たな仕組みを導入することなく、容易に本実施例に係るデータ提供システムを導入することができる。
1 データ提供システム
10 提供者サーバ
11 初期化処理部
12 更新処理部
13 記憶部
20 メッセージキューサーバ
21 初期化要求用メッセージキュー
22 初期化応答用メッセージキュー
23 初期化データ転送用メッセージキュー
24 更新データ転送用メッセージキュー
30 利用者サーバ
31 初期化処理部
32 更新処理部
33 記憶部
131 初期化中利用者リスト
132 データ
331 データ

Claims (6)

  1. データ利用者が提供するサービスに関するデータの更新に応じて生成される更新差分データを第1のメッセージキューに送信し、
    前記データ利用者の装置から前記サービスに関するデータの初期化要求を受け付けて、前記初期化要求に応じた時点での前記サービスに関するデータを、前記第1のメッセージキューとは異なる第2のメッセージキューに送信する
    処理をコンピュータに実行させることを特徴とする制御方法。
  2. 前記初期化要求を前記第1のメッセージキュー及び前記第2のメッセージキューとは異なる第3のメッセージキューから取得し、
    前記初期化要求に対する応答を前記第1のメッセージキュー、前記第2のメッセージキュー及び前記第3のメッセージキューとは異なる第4のメッセージキューへ送信する
    処理を前記コンピュータに実行させることを特徴とする請求項1に記載の制御方法。
  3. 前記初期化要求を送信した前記データ利用者の識別情報を初期化中利用者リストに登録し、前記初期化中利用者リストに登録された情報を基に、前記第2のメッセージキューの作成及び削除を実行する処理を前記コンピュータに実行させることを特徴とする請求項1又は2に記載の制御方法。
  4. 前記初期化要求を受け付けて、
    前記サービスに関するデータを保持する場合、前記サービスに関するデータが存在することを通知する応答を送信し且つ前記初期化要求に応じた時点での前記サービスに関するデータを第2のメッセージキューに送信し、
    前記サービスに関するデータを保持しない場合、前記サービスに関するデータの不存在を通知する応答を送信する
    ことを特徴とする請求項1~3のいずれか一つに記載の制御方法。
  5. データ利用者が提供するサービスに関するデータの更新に応じて生成される更新差分データを第1のメッセージキューに送信し、
    前記データ利用者の装置から前記サービスに関するデータの初期化要求を受け付けて、前記初期化要求に応じた時点での前記サービスに関するデータを、前記第1のメッセージキューとは異なる第2のメッセージキューに送信する
    処理をコンピュータに実行させることを特徴とする制御プログラム。
  6. データ利用者が提供するサービスに関するデータの更新に応じて生成される更新差分データを第1のメッセージキューに送信する更新処理部と、
    前記データ利用者の装置から前記サービスに関するデータの初期化要求を受け付けて、前記初期化要求に応じた時点での前記サービスに関するデータを、前記第1のメッセージキューとは異なる第2のメッセージキューに送信する初期化処理部と
    を備えたことを特徴とする情報処理装置。
JP2022005363A 2022-01-17 2022-01-17 制御方法、制御プログラム及び情報処理装置 Pending JP2023104403A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022005363A JP2023104403A (ja) 2022-01-17 2022-01-17 制御方法、制御プログラム及び情報処理装置
US17/978,359 US20230229533A1 (en) 2022-01-17 2022-11-01 Control method, computer-readable recording medium storing control program, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022005363A JP2023104403A (ja) 2022-01-17 2022-01-17 制御方法、制御プログラム及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2023104403A true JP2023104403A (ja) 2023-07-28

Family

ID=87161897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022005363A Pending JP2023104403A (ja) 2022-01-17 2022-01-17 制御方法、制御プログラム及び情報処理装置

Country Status (2)

Country Link
US (1) US20230229533A1 (ja)
JP (1) JP2023104403A (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5331050B2 (ja) * 2009-08-27 2013-10-30 日本電信電話株式会社 データ同期システム、データ同期方法、情報処理装置、情報処理方法、およびプログラム
US9807015B2 (en) * 2014-03-19 2017-10-31 Dell Products L.P. Message processing using dynamic load balancing queues in a messaging system
US10579449B1 (en) * 2018-11-02 2020-03-03 Dell Products, L.P. Message queue architectures framework converter
JP7381895B2 (ja) * 2020-04-15 2023-11-16 富士通株式会社 イベントストリーム処理システム、イベントムストリーム処理方法及びイベントストリーム処理プログラム
CN113553206B (zh) * 2021-09-22 2021-12-21 北京德风新征程科技有限公司 数据事件执行方法、装置、电子设备和计算机可读介质

Also Published As

Publication number Publication date
US20230229533A1 (en) 2023-07-20

Similar Documents

Publication Publication Date Title
CN102882974B (zh) 一种通过网站识别版本号节省网站访问资源的方法
WO2013078689A1 (zh) 一种云消息服务中实现消息传递的方法和装置
WO2019237594A1 (zh) 会话保持方法、装置、计算机设备及存储介质
JP4205323B2 (ja) 配信システム、配信サーバとその配信方法、配信プログラム
JPWO2004063928A1 (ja) データベース負荷軽減システムおよび負荷軽減プログラム
JP6405255B2 (ja) 通信システム、キュー管理サーバ、及び、通信方法
JPWO2006100723A1 (ja) ファイル管理システム
CN113472687A (zh) 一种数据处理方法和装置
JP4516594B2 (ja) メッセージ送信制御方法、メッセージ送信制御装置、及びメッセージ送信制御プログラム
JP2023104403A (ja) 制御方法、制御プログラム及び情報処理装置
JP5610773B2 (ja) メッセージ処理装置およびメッセージ処理方法
JP2011215688A (ja) データベースアクセスシステム及び方法
WO2016090938A1 (zh) 一种数据通信方法、装置及计算机存储介质
KR102367262B1 (ko) 미들웨어를 이용한 모니터링 방법, 장치 및 시스템
CN111182047B (zh) 用于在跨网络的大数据平台之间转移文件的方法和系统
EP3479550A1 (en) Constraint based controlled seeding
JPWO2009081527A1 (ja) 情報処理装置、仮想計算機構成方法、並びに、プログラムを記録したコンピュータ読み取り可能な記録媒体
CN112084261B (zh) 一种数据同步方法、系统、节点及存储介质
WO2020213467A1 (ja) 適合化装置
WO2024034057A1 (ja) ネットワーク管理装置、ネットワーク管理方法及びプログラム
JP5366880B2 (ja) Icカード制御方法及びicカード制御システム
WO2024084582A1 (ja) 連成システム、連成方法および連成プログラム
JP2019121081A (ja) データ処理プログラム、データ処理方法、及びデータ処理装置
WO2024111045A1 (ja) 仮想コンピュータ管理システム、同期サーバおよび仮想コンピュータ管理方法
CN115297066B (zh) 一种资源动态协同方法、装置、服务器及介质