JP2023088789A - Information processing device, information processing method, and program - Google Patents

Information processing device, information processing method, and program Download PDF

Info

Publication number
JP2023088789A
JP2023088789A JP2021203735A JP2021203735A JP2023088789A JP 2023088789 A JP2023088789 A JP 2023088789A JP 2021203735 A JP2021203735 A JP 2021203735A JP 2021203735 A JP2021203735 A JP 2021203735A JP 2023088789 A JP2023088789 A JP 2023088789A
Authority
JP
Japan
Prior art keywords
transaction
withdrawal
account
deposit
remittance request
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
JP2021203735A
Other languages
Japanese (ja)
Inventor
博人 増田
Hiroto Masuda
俊一 加藤
Shunichi Kato
拓朗 新田
takuro Nitta
一廣 高橋
Kazuhiro Takahashi
信二 吉岡
Shinji Yoshioka
学 木下
Manabu Kinoshita
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.)
NTT Data Group Corp
Original Assignee
NTT Data Corp
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 NTT Data Corp filed Critical NTT Data Corp
Priority to JP2021203735A priority Critical patent/JP2023088789A/en
Publication of JP2023088789A publication Critical patent/JP2023088789A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

To accelerate remittance processing between accounts.SOLUTION: One remittance transaction is executed in a manner divided into a withdrawal transaction and a deposit transaction. That is, as illustrated in Fig. 5, the withdrawal transaction is first executed by way of a message queuing system. It is confirmed that a balance of an account A is more than or equal to X yen, and if the balance of the account A is more than or equal to X yen, processing of withdrawing X yen from the account A is performed. Then, the deposit transaction to be performed next is executed by way of the message queuing system to deposit X yen withdrawn by the withdrawal transaction in an account B. By executing the withdrawal transaction and the deposit transaction separately in this manner, the overall processing time of many transactions can be accelerated as compared with conventional cases in which exclusion control in each transaction is performed simultaneously across two accounts.SELECTED DRAWING: Figure 5

Description

本発明は、口座間で送金を行うための技術に関する。 The present invention relates to technology for transferring money between accounts.

金融機関等が、デジタル通貨の研究や実証実験を進めている。 Financial institutions, etc. are proceeding with research and demonstration experiments on digital currency.

口座間の送金処理の高速化に寄与する技術として、例えば特許文献1には更新処理と検索処理を独立且つ並列に行うことのできる仕組みが提案されている。 As a technology that contributes to speeding up the remittance process between accounts, for example, Patent Literature 1 proposes a mechanism capable of performing update processing and search processing independently and in parallel.

特許第4175998号公報Japanese Patent No. 4175998

銀行の勘定系システム等で多く採用されているリレーショナルデータベースを用いる仕組みでは、各口座の残高を管理するテーブルのレコード数が増えるにつれて、残高の更新対象となる口座を検索するのに時間がかかる。また、1つのテーブルに格納するレコード数を減らすために複数のテーブルに分割し、残高の更新対象となる口座が2つのテーブルに分かれた場合には、上記の更新処理にさらに時間がかかってしまう。 In systems that use relational databases, which are often used in bank accounting systems, etc., as the number of records in the table that manages the balance of each account increases, it takes time to search for the account whose balance is to be updated. Also, if you divide the table into multiple tables to reduce the number of records stored in one table, and the account to be updated the balance is divided into two tables, the above update process will take more time. .

本発明はこのような問題に鑑みてなされたもので、その目的とするところは、口座間の送金処理の高速化を実現することにある。 The present invention has been made in view of such problems, and an object of the present invention is to speed up remittance processing between accounts.

上記課題を解決するため、本発明は、第1の口座から出金して第2の口座に入金する送金要求を取得する取得部と、取得された前記送金要求における出金を実現するための出金トランザクションを実行して、前記第1の口座の残高を含むデータベースを更新する出金処理部と、前記出金処理部による出金処理が行われた後に、前記送金要求における入金を実現するためのトランザクションであって、前記出金トランザクションとは異なる入金トランザクションを実行して、前記第2の口座の残高を含むデータベースを更新する入金処理部とを備えることを特徴とする情報処理装置を提供する。 In order to solve the above problems, the present invention provides an acquisition unit for acquiring a remittance request to withdraw money from a first account and deposit it in a second account, and an acquisition unit for realizing the withdrawal in the acquired remittance request. A withdrawal processing unit that executes a withdrawal transaction and updates a database containing the balance of the first account; and a deposit processing unit that executes a deposit transaction different from the withdrawal transaction and updates a database containing the balance of the second account. do.

先入れ先出し方式でトランザクションの書き込み及び読み出しを行うメッセージキュー保存部を備え、前記取得部は、前記出金トランザクションを前記メッセージキュー保存部に書き込み、前記出金処理部は、前記メッセージキュー保存部に書き込まれた前記出金トランザクションを読み出して実行した後、前記入金トランザクションを前記メッセージキュー保存部に書き込み、前記入金処理部は、前記メッセージキュー保存部に書き込まれた前記入金トランザクションを読み出して実行するようにしてもよい。 a message queue storage for writing and reading transactions on a first-in, first-out basis; wherein the acquisition unit writes the withdrawal transaction to the message queue storage; and the withdrawal processing unit writes to the message queue storage. After reading and executing the withdrawal transaction, the deposit transaction is written in the message queue storage unit, and the deposit processing unit reads and executes the deposit transaction written in the message queue storage unit. good too.

前記出金トランザクション又は前記入金トランザクションに関する情報を含むトランザクション管理データベースを記憶する記憶部を備えるようにしてもよい。 A storage unit may be provided for storing a transaction management database containing information on the withdrawal transaction or the deposit transaction.

前記トランザクション管理データベースは、前記送金要求に割り当てられたトランザクション識別子を含み、前記メッセージキュー保存部には、各々の前記トランザクション識別子が書き込まれており、前記メッセージキュー保存部に書き込まれている前記トランザクション識別子が前記トランザクション管理データベースに含まれていない場合に、前記送金要求に対応する出金トランザクション又は入金トランザクションを再度実行するための処理を行う再実行部を備えるようにしてもよい。 The transaction management database includes transaction identifiers assigned to the remittance requests, the message queue storage unit is written with each transaction identifier, and the transaction identifiers written in the message queue storage unit. is not included in the transaction management database, a re-execution unit may be provided that performs processing for re-executing the withdrawal transaction or the deposit transaction corresponding to the remittance request.

前記第1の口座の残高を含むデータベースは、当該口座に対して実行された出金トランザクションに対応する前記送金要求に割り当てられたトランザクション識別子を含み、前記第2の口座の残高を含むデータベースは、当該口座に対して実行された入金トランザクションに対応する前記送金要求に割り当てられたトランザクション識別子を含み、前記再実行部は、前記メッセージキュー保存部に書き込まれている前記トランザクション識別子が前記トランザクション管理データベースに含まれていない場合であって、当該トランザクション識別子が、前記第1の口座の残高を含むデータベースに含まれていない場合に、前記送金要求に対応する出金トランザクションを再度実行し、前記メッセージキュー保存部に書き込まれている前記トランザクション識別子が前記トランザクション管理データベースに含まれていない場合であって、当該トランザクション識別子が、前記第2の口座の残高を含むデータベースに含まれていない場合に、前記送金要求に対応する入金トランザクションを再度実行するようにしてもよい。 The database containing the balance of the first account includes transaction identifiers assigned to the money transfer requests corresponding to withdrawal transactions performed against the account, and the database containing the balance of the second account includes: including a transaction identifier assigned to the remittance request corresponding to the deposit transaction executed for the account; If not included and the transaction identifier is not included in the database including the balance of the first account, re-execute the withdrawal transaction corresponding to the remittance request and save the message queue. When the transaction identifier written in the account is not included in the transaction management database and the transaction identifier is not included in the database containing the balance of the second account, the remittance request may be re-executed.

また、本発明は、第1の口座から出金して第2の口座に入金する送金要求を取得する取得ステップと、取得された前記送金要求における出金を実現するための出金トランザクションを実行して、前記第1の口座の残高を含むデータベースを更新する出金処理ステップと、前記出金処理ステップによる出金処理が行われた後に、前記送金要求における入金を実現するためのトランザクションであって、前記出金トランザクションとは異なる入金トランザクションを実行して、前記第2の口座の残高を含むデータベースを更新する入金処理ステップとを備えることを特徴とする情報処理方法を提供する。 In addition, the present invention includes an acquisition step of acquiring a remittance request to withdraw money from a first account and deposit money into a second account, and executing a withdrawal transaction for realizing the withdrawal in the acquired remittance request. a payment processing step for updating a database containing the balance of the first account; and executing a deposit transaction different from the withdrawal transaction to update a database containing the balance of the second account.

また、本発明は、コンピュータに、第1の口座から出金して第2の口座に入金する送金要求を取得する取得ステップと、取得された前記送金要求における出金を実現するための出金トランザクションを実行して、前記第1の口座の残高を含むデータベースを更新する出金処理ステップと、前記出金処理ステップによる出金処理が行われた後に、前記送金要求における入金を実現するためのトランザクションであって、前記出金トランザクションとは異なる入金トランザクションを実行して、前記第2の口座の残高を含むデータベースを更新する入金処理ステップとを実行させるためのプログラムを提供する。 Further, the present invention provides a computer with an acquisition step of acquiring a remittance request for withdrawing money from a first account and depositing money into a second account, and a withdrawal for realizing the withdrawal in the acquired remittance request. a withdrawal processing step of executing a transaction to update a database containing the balance of the first account; and a deposit processing step of executing a deposit transaction different from the withdrawal transaction to update a database containing the balance of the second account.

本発明によれば、口座間の送金処理の高速化が可能となる。 According to the present invention, it is possible to speed up the remittance process between accounts.

本発明の一実施形態に係るシステムの全体構成を示すブロック図である。1 is a block diagram showing the overall configuration of a system according to one embodiment of the present invention; FIG. 本実施形態に係る発行主体サーバ装置のハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the issuing subject server apparatus which concerns on this embodiment. 従来における送金トランザクションの処理手順を例示する図である。It is a figure which illustrates the processing procedure of the remittance transaction in the past. 従来における送金トランザクションの処理手順を例示する図である。It is a figure which illustrates the processing procedure of the remittance transaction in the past. 本実施形態における送金トランザクションの処理手順を例示する図である。It is a figure which illustrates the processing procedure of the remittance transaction in this embodiment. 本実施形態に係る発行主体サーバ装置の機能構成を示すブロック図である。3 is a block diagram showing the functional configuration of an issuer server device according to the present embodiment; FIG. 本実施形態に係る発行主体サーバ装置が記憶する台帳データベースのデータ構造を例示する図である。4 is a diagram illustrating the data structure of a ledger database stored by the issuer server device according to the present embodiment; FIG. 本実施形態に係る発行主体サーバ装置が記憶するトランザクション管理データベースのデータ構造を例示する図である。4 is a diagram exemplifying the data structure of a transaction management database stored by the issuing subject server device according to the present embodiment; FIG. 本実施形態におけるワークフローID、ファンクションID及びステップIDについての定義を例示する図である。FIG. 4 is a diagram illustrating definitions of workflow IDs, function IDs, and step IDs in this embodiment; 本実施形態に係る発行主体サーバ装置が生成するトランザクションのデータ構造を例示する図である。4 is a diagram exemplifying the data structure of a transaction generated by the issuing subject server device according to the present embodiment; FIG. 本実施形態に係る発行主体サーバ装置の動作を示すフローチャートである。4 is a flow chart showing the operation of the issuer server device according to the present embodiment; 本実施形態に係る発行主体サーバ装置の動作を示すフローチャートである。4 is a flow chart showing the operation of the issuer server device according to the present embodiment; 本実施形態に係る発行主体サーバ装置の動作を示すフローチャートである。4 is a flow chart showing the operation of the issuer server device according to the present embodiment; 本実施形態に係る発行主体サーバ装置の動作を示すフローチャートである。4 is a flow chart showing the operation of the issuer server device according to the present embodiment;

[構成]
以下、図面を参照しながら本発明の実施形態について詳細に説明する。本実施形態では、金融機関等の発行主体が発行するデジタル通貨に本発明を適用した場合を例示する。図1は、本発明の一実施形態に係るシステムの全体構成を示すブロック図である。このシステムは、ユーザが利用するユーザ端末10と、決済事業者等の仲介機関が利用する複数の仲介機関サーバ装置20と、発行主体が利用する発行主体サーバ装置30とを備える。これらユーザ端末10及び仲介機関サーバ装置20の間、仲介機関サーバ装置20及び発行主体サーバ装置30の間は、それぞれ所定の通信網によって通信可能に接続されている。発行主体サーバ装置30は、本発明に係る情報処理装置として機能する。本実施形態では、発行主体サーバ装置30において、台帳の記録方式として口座型を採用している。
[composition]
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. In this embodiment, a case where the present invention is applied to a digital currency issued by an issuer such as a financial institution will be exemplified. FIG. 1 is a block diagram showing the overall configuration of a system according to one embodiment of the present invention. This system includes a user terminal 10 used by a user, a plurality of intermediary agency server devices 20 used by an intermediary agency such as a payment business operator, and an issuer server device 30 used by an issuer. The user terminal 10 and the intermediation agency server device 20, and the intermediary agency server device 20 and the issuer server device 30 are connected to each other via a predetermined communication network so as to be communicable. The issuing subject server device 30 functions as an information processing device according to the present invention. In this embodiment, the issuer server device 30 employs an account type as a ledger recording method.

図2は、発行主体サーバ装置30のハードウェア構成を示す図である。発行主体サーバ装置30は、物理的には、プロセッサ3001、メモリ3002、ストレージ3003、通信装置3004、入力装置3005、出力装置3006、及びこれらを接続するバスなどを含むコンピュータとして構成されている。これらの各装置は図示せぬ電池から供給される電力によって動作する。発行主体サーバ装置30のハードウェア構成は、図2に示した各装置を1つ又は複数含むように構成されてもよいし、一部の装置を含まずに構成されてもよい。また、それぞれ筐体が異なる複数の装置が通信回線で接続されて、発行主体サーバ装置30を構成してもよい。 FIG. 2 is a diagram showing the hardware configuration of the issuer server device 30. As shown in FIG. The issuer server device 30 is physically configured as a computer including a processor 3001, a memory 3002, a storage 3003, a communication device 3004, an input device 3005, an output device 3006, and a bus connecting them. Each of these devices operates with power supplied from a battery (not shown). The hardware configuration of issuer server device 30 may be configured to include one or more of the devices shown in FIG. 2, or may be configured without some of the devices. Further, the issuer server device 30 may be configured by connecting a plurality of devices each having a different housing by a communication line.

発行主体サーバ装置30における各機能は、プロセッサ3001、メモリ3002などのハードウェア上に所定のソフトウェア(プログラム)を読み込ませることによって、プロセッサ3001が演算を行い、通信装置3004による通信を制御したり、メモリ3002及びストレージ3003におけるデータの読み出し及び書き込みの少なくとも一方を制御したりすることによって実現される。 Each function of the issuer server device 30 is performed by loading predetermined software (programs) onto hardware such as the processor 3001 and the memory 3002 so that the processor 3001 performs calculations, controls communication by the communication device 3004, It is realized by controlling at least one of data reading and writing in the memory 3002 and the storage 3003 .

プロセッサ3001は、例えば、オペレーティングシステムを動作させてコンピュータ全体を制御する。プロセッサ3001は、周辺装置とのインターフェース、制御装置、演算装置、レジスタなどを含む中央処理装置(CPU:Central Processing Unit)によって構成されてもよい。また、プロセッサ3001は、デジタル信号プロセッサ(DSP:Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)などのハードウェアを含んで構成されてもよい。 The processor 3001, for example, operates an operating system and controls the entire computer. The processor 3001 may be configured by a central processing unit (CPU) including an interface with peripheral devices, a control device, an arithmetic device, registers, and the like. Further, the processor 3001 may include hardware such as a digital signal processor (DSP), an ASIC (Application Specific Integrated Circuit), a PLD (Programmable Logic Device), and an FPGA (Field Programmable Gate Array). good.

プロセッサ3001は、プログラム(プログラムコード)、ソフトウェアモジュール、データなどを、ストレージ3003及び通信装置3004の少なくとも一方からメモリ3002に読み出し、これらに従って各種の処理を実行する。プログラムとしては、後述する動作の少なくとも一部をコンピュータに実行させるプログラムが用いられる。発行主体サーバ装置30の機能ブロックは、メモリ3002に格納され、プロセッサ3001において動作する制御プログラムによって実現されてもよい。各種の処理は、1つのプロセッサ3001によって実行されてもよいが、2以上のプロセッサ3001により同時又は逐次に実行されてもよい。プロセッサ3001は、1以上のチップによって実装されてもよい。なお、プログラムは、通信回線を介して発行主体サーバ装置30に送信されてもよい。 The processor 3001 reads programs (program codes), software modules, data, etc. from at least one of the storage 3003 and the communication device 3004 to the memory 3002, and executes various processes according to them. As the program, a program that causes a computer to execute at least part of the operations described later is used. The functional blocks of issuer server device 30 may be implemented by a control program stored in memory 3002 and running on processor 3001 . Various processes may be executed by one processor 3001, but may also be executed by two or more processors 3001 simultaneously or sequentially. Processor 3001 may be implemented by one or more chips. Note that the program may be transmitted to the issuer server device 30 via a communication line.

メモリ3002は、コンピュータ読み取り可能な記録媒体であり、例えば、ROM(Read Only Memory)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、RAM(Random Access Memory)などの少なくとも1つによって構成されてもよい。メモリ3002は、レジスタ、キャッシュ、メインメモリ(主記憶装置)などと呼ばれてもよい。メモリ3002は、本実施形態に係る方法を実施するために実行可能なプログラム(プログラムコード)、ソフトウェアモジュールなどを保存することができる。 The memory 3002 is a computer-readable recording medium, and is composed of at least one of, for example, ROM (Read Only Memory), EPROM (Erasable Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), and RAM (Random Access Memory). may be The memory 3002 may also be called a register, cache, main memory (main storage device), or the like. The memory 3002 can store executable programs (program code), software modules, etc. to perform the methods of the present invention.

ストレージ3003は、コンピュータ読み取り可能な記録媒体であり、例えば、CD-ROM(Compact Disc ROM)などの光ディスク、ハードディスクドライブ、フレキシブルディスク、光磁気ディスク(例えば、コンパクトディスク、デジタル多用途ディスク、Blu-ray(登録商標)ディスク)、スマートカード、フラッシュメモリ(例えば、カード、スティック、キードライブ)などの少なくとも1つによって構成されてもよい。ストレージ3003は、補助記憶装置と呼ばれてもよい。 The storage 3003 is a computer-readable recording medium, for example, an optical disk such as a CD-ROM (Compact Disc ROM), a hard disk drive, a flexible disk, a magneto-optical disk (for example, a compact disk, a digital versatile disk, a Blu-ray (registered trademark) disk), smart card, flash memory (eg, card, stick, key drive) and/or the like. Storage 3003 may also be called an auxiliary storage device.

通信装置3004は、通信網を介してコンピュータ間の通信を行うためのハードウェアであり、例えばネットワークデバイス、ネットワークコントローラ、ネットワークカード、通信モジュールなどともいう。 The communication device 3004 is hardware for performing communication between computers via a communication network, and is also called a network device, network controller, network card, communication module, or the like.

入力装置3005は、外部からの入力を受け付ける入力デバイス(例えば、キー、マイクロフォン、スイッチ、ボタン、カメラ、センサ、2次元コードリーダなど)である。出力装置3006は、外部への出力を実施する出力デバイス(例えば、ディスプレイ、スピーカー、LEDランプなど)である。なお、入力装置3005及び出力装置3006は、一体となった構成(例えば、タッチパネル)であってもよい。 The input device 3005 is an input device (for example, a key, microphone, switch, button, camera, sensor, two-dimensional code reader, etc.) that receives input from the outside. The output device 3006 is an output device (for example, display, speaker, LED lamp, etc.) that outputs to the outside. Note that the input device 3005 and the output device 3006 may be integrated (for example, a touch panel).

プロセッサ3001、メモリ3002などの各装置は、情報を通信するためのバスによって接続される。バスは、単一のバスを用いて構成されてもよいし、装置間ごとに異なるバスを用いて構成されてもよい。 Each device such as processor 3001 and memory 3002 is connected by a bus for communicating information. The bus may be configured using a single bus, or may be configured using different buses between devices.

なお、ユーザ端末10及び仲介機関サーバ装置20は、発行主体サーバ装置30と同等の構成を備えたコンピュータであるため、その詳細な説明は省略する。 Since the user terminal 10 and the intermediation agency server device 20 are computers having the same configuration as the issuer server device 30, detailed description thereof will be omitted.

ここで、本実施形態の特徴部分について説明する。まず、図3,4を参照し、従来において、支払人の口座AからX円を出金して口座BにそのX円を入金する送金処理の手順について説明する。従来では、図3に例示するように、まず口座Aの残高がX円以上あることを確認し、口座Aの残高がX円以上あれば口座AからX円を出金し、出金したX円を口座Bに入金する。これら3つの処理手順が1つのトランザクション(以下、送金トランザクションという)として実行される。 Here, the characterizing portion of this embodiment will be described. First, with reference to FIGS. 3 and 4, conventional remittance processing procedures for withdrawing X yen from a payer's account A and depositing the X yen into an account B will be described. Conventionally, as exemplified in FIG. Deposit Yen into Account B. These three processing procedures are executed as one transaction (hereinafter referred to as remittance transaction).

ここでいうトランザクションとは、コンピュータシステムにおいて実行される、不可分な一連の処理の単位のことをいう。従って、図3の例では、送金処理全体が一つのトランザクションとしてまとめて管理されるようになっている。つまり、送金トランザクションに含まれる全ての処理が成功したときにその送金トランザクションが完了したとされる一方、送金トランザクションに含まれるいずれかの処理が失敗した場合には、送金トランザクションが失敗したとされ、残りの処理が取り消されることになる。 The term "transaction" as used herein refers to an indivisible series of processing units executed in a computer system. Therefore, in the example of FIG. 3, the entire remittance process is collectively managed as one transaction. In other words, when all the processes included in the money transfer transaction are successful, the money transfer transaction is considered to be completed. The remaining processing will be canceled.

また、各口座の残高を含むデータベースが有するレコード数を減らすために、複数のデータベースに分割することがある。このような場合であっても、図4に例示するように、口座Aの残高を含むデータベースに対して口座Aの残高がX円以上あることを確認し、口座Aの残高がX円以上あれば口座AからX円を出金し、そして、口座Bの残高を含むデータベースにおいて、出金したX円を口座Bに入金する処理を行う。これら3つの処理手順が1つの送金トランザクションとして実行されるから、この場合も、送金トランザクションに含まれる全ての処理が成功したときにその送金トランザクションが完了したとされる一方、送金トランザクションに含まれるいずれかの処理が失敗した場合には送金トランザクションが失敗したとされる。 Also, in order to reduce the number of records that a database containing the balance of each account has, it may be divided into multiple databases. Even in such a case, as exemplified in FIG. For example, X yen is withdrawn from account A, and in the database containing the balance of account B, the withdrawn X yen is deposited into account B. Since these three processing procedures are executed as one remittance transaction, even in this case, the remittance transaction is considered to be completed when all the processes included in the remittance transaction are successful. If either process fails, the remittance transaction is said to have failed.

上記のように、1つの送金トランザクションにおいて出金及び入金を行う場合には、口座の残高を含むデータベースにおいて、出金元の口座(上記口座A)及び入金先の口座(上記口座B)に対応する各レコードについて排他制御を行うため、これらのレコードをいずれもロックする必要がある。従来においては、各送金トランザクションに応じてこのような排他制御が二つの口座に跨って同時になされるようになっているため、多数の送金トランザクションが短時間に集中した場合には、これらの送金トランザクションを完了するのに要する所要時間が増大することになる。 As described above, when withdrawals and deposits are made in one remittance transaction, the database containing the account balance corresponds to the withdrawal source account (above account A) and the deposit destination account (above account B). Both of these records must be locked in order to perform exclusive control for each record to be processed. Conventionally, such exclusive control is performed simultaneously across two accounts according to each remittance transaction, so if a large number of remittance transactions are concentrated in a short time, will increase the time required to complete the

そこで、本実施形態では、1つの送金トランザクションを、出金トランザクションと入金トランザクションという、2つの異なるトランザクションに分けて実行する。つまり、図5に例示するように、まず、出金トランザクションを実行して、口座Aの残高がX円以上あることを確認し、口座Aの残高がX円以上あれば口座AからX円を出金する処理を行う。そして、次に行うべき入金トランザクションを実行し、出金したX円を口座Bに入金する。このように出金トランザクションと入金トランザクションに分けて実行することで、各送金トランザクションにおける排他制御を同時に二つの口座に跨って行っていた従来方法に比較して、多数の送金トランザクションを完了するのに要する所要時間を短く、つまり、多数の送金処理を高速化することが可能となる。なお、図5では、1つのデータベースが口座A及び口座Bの残高を含んでいる例を図示しているが、データベースの構成はこれに限らず、口座Aの残高を含むデータベースと口座Bの残高を含むデータベースとが異なるデータベースであってもよい。 Therefore, in the present embodiment, one remittance transaction is divided into two different transactions, a withdrawal transaction and a deposit transaction, and executed. In other words, as illustrated in FIG. 5, first, a withdrawal transaction is executed to confirm that the account A has a balance of X yen or more. Process to withdraw money. Then, the next deposit transaction is executed, and the withdrawn X yen is deposited into the account B. By executing the withdrawal transaction and the deposit transaction separately in this way, it is possible to complete a large number of remittance transactions compared to the conventional method in which exclusive control in each remittance transaction was performed across two accounts at the same time. The required time can be shortened, that is, it is possible to speed up a large number of remittance processes. Although FIG. 5 shows an example in which one database contains the balances of accounts A and B, the configuration of the database is not limited to this. It may be a database different from the database containing.

また、本実施形態では、各口座の残高を含むデータベースとして、リレーショナルデータベースよりも書き込み及び読み出し速度が速いNoSQL(Not only SQL)を採用する。NoSQLでは、上述したようなレコードの排他制御が実装されていないため、レコードの排他制御を行う場合に比べると、処理の高速化が可能となる。ただし、レコードの排他制御を行わない場合には、データベースにおけるデータ更新時に、例えば或る出金トランザクションによって出金するのに十分な残高があることが確認された口座からその出金を行う前に、別の出金トランザクションによって出金が実行されてしまい残高不足になるなどの問題が発生する可能性がある。 In addition, in this embodiment, NoSQL (Not only SQL), which has faster writing and reading speeds than relational databases, is used as the database containing the balances of each account. Since NoSQL does not implement exclusive control of records as described above, processing speed can be increased compared to the case of exclusive control of records. However, if exclusive control of records is not performed, when data is updated in the database, for example, before making a withdrawal from an account that has been confirmed to have a sufficient balance for withdrawal by a certain withdrawal transaction , there is a possibility that the withdrawal will be executed by another withdrawal transaction and problems such as insufficient balance may occur.

そこで、本実施形態では、いわゆるメッセージキューイングシステムを用いて、出金元の口座(上記口座A)に対する出金処理、及び、入金先の口座(上記口座B)に対する入金処理という、2つの口座に対するデータ更新処理を行う。具体的には、図5に例示するように、まず、出金トランザクションをメッセージキューイングシステムに書き込み、これを読み出して実行し、次に、入金トランザクションをメッセージキューイングシステムに書き込み、これを読み出して実行する。メッセージキューイングシステムは、先入れ先出し方式でメッセージ(ここではトランザクション)の書き込み及び読み出しを行う仕組みであるから、複数の送金トランザクションに係る各出金トランザクション及び各入金トランザクションが混在した場合であっても、これらのトランザクションをシーケンシャルに行うことが保証される。よって、上述したような問題が発生する可能性は小さくなる。 Therefore, in this embodiment, a so-called message queuing system is used to process two accounts: withdrawal processing for the withdrawal source account (above account A) and deposit processing for the deposit destination account (above account B). Perform data update processing for Specifically, as illustrated in FIG. 5, the withdrawal transaction is first written to the message queuing system, read and executed, and then the deposit transaction is written to the message queuing system and read. Execute. Since the message queuing system writes and reads messages (transactions in this case) on a first-in, first-out basis, even if each withdrawal transaction and each deposit transaction related to multiple remittance transactions are mixed, these transactions are guaranteed to be sequential. Therefore, the possibility of occurrence of the problems described above is reduced.

図6は、発行主体サーバ装置30の機能構成の一例を示す図である。図6に例示した機能は、プロセッサ3001、メモリ3002などのハードウェア上に所定のソフトウェア(プログラム)を読み込ませることによって、プロセッサ3001が演算を行い、通信装置3004による通信を制御したり、メモリ3002及びストレージ3003におけるデータの読み出し及び書き込みの少なくとも一方を制御したりすることによって実現される。 FIG. 6 is a diagram showing an example of the functional configuration of the issuer server device 30. As shown in FIG. The functions illustrated in FIG. 6 are performed by causing the processor 3001 to perform calculations, controlling communication by the communication device 3004, and controlling the and by controlling at least one of data reading and writing in the storage 3003 .

図6において、取得部31は、発行主体サーバ装置30の外部から通信網を介して各種の情報を取得する。例えば、取得部31は、仲介機関サーバ装置20から、出金元の口座(本発明における第1の口座)から送金額X円を出金して入金先の口座(本発明における第2の口座)に入金することを要求する送金要求を取得する。この送金要求は、例えばユーザ端末10からの指示に応じて仲介機関サーバ装置20が生成したものであり、少なくとも出金元の口座、入金先の口座及び送金額を指定する情報を含んでいる。 In FIG. 6, an acquisition unit 31 acquires various kinds of information from outside the issuer server device 30 via a communication network. For example, the acquiring unit 31 withdraws the remittance amount X yen from the withdrawal source account (first account in the present invention) from the intermediary institution server device 20 and transfers the amount to the destination account (second account in the present invention) ) to obtain a remittance request. This remittance request is generated, for example, by the intermediary server device 20 in response to an instruction from the user terminal 10, and includes at least information designating a withdrawal source account, a deposit destination account, and a remittance amount.

記憶部32は、台帳データベース(以下、データベースをDBと表記する)321と、トランザクション管理DB322とを記憶する。なお、各DBは、以下に例示する情報群のうちいずれかの情報を含まなくてもよい。 The storage unit 32 stores a ledger database (hereinafter, the database is referred to as DB) 321 and a transaction management DB 322 . Note that each DB does not have to include any information among the information groups exemplified below.

台帳DB321は、各ユーザの口座に関する情報を含むデータベースである。台帳DB321は、図7に例示するように、各口座の口座名(#1)、口座残高(#2)、シーケンス番号(#3)、最後のトランザクションID(#4)及びトランザクションIDリスト(#5)を含む。シーケンス番号は、この口座に対して1つのトランザクションを実行するたびにインクリメントされる番号であり、ユーザが指示したトランザクションの順序を表すとともに、過去にこのユーザが指示したトランザクションの総数を意味している。前述した出金処理において、出金トランザクション内のシーケンス番号と台帳DB321のシーケンス番号とが比較され、これらが一致しない場合は処理の順序エラーとなる。 The ledger DB 321 is a database containing information on each user's account. As illustrated in FIG. 7, the ledger DB 321 contains the account name (#1), account balance (#2), sequence number (#3), last transaction ID (#4) and transaction ID list (# 5). The sequence number is a number that is incremented each time one transaction is executed for this account, and represents the order of the transactions instructed by the user, as well as the total number of transactions instructed by this user in the past. . In the payment processing described above, the sequence number in the payment transaction and the sequence number in the ledger DB 321 are compared, and if they do not match, a processing sequence error occurs.

台帳DB321において、最後のトランザクションIDは、このレコードに記述されたいずれかのデータが更新された契機となった最後のトランザクションを識別するトランザクションID(トランザクション識別子)である。トランザクションIDリストは、qualifier及びcellからなり、qualifierは上述した最後のトランザクションIDであり、Cellは時間的に1つ前のトランザクションにおける最後のトランザクションIDである。 In the ledger DB 321, the last transaction ID is a transaction ID (transaction identifier) that identifies the last transaction that triggered the update of any data described in this record. The transaction ID list consists of a qualifier and a cell, where the qualifier is the last transaction ID described above, and the cell is the last transaction ID of the previous transaction in terms of time.

トランザクションIDリストがこのような構成になっているため、過去に実行されたトランザクションの履歴が分かるようになっている。具体的には、トランザクションIDリストの先頭の要素におけるqualifierが最後のトランザクションID(台帳DBにおける最後のトランザクションIDと同じ値)に相当し、Cellが時間的に1つ前のトランザクションIDに相当し、次の要素におけるqualifierが時間的に1つ前のトランザクションIDに相当し、Cellがさらにその時間的に1つ前(つまり2つ前)のトランザクションIDに相当する。このようなトランザクションIDの連鎖が続き、最後の要素におけるqualifierが最後のトランザクションIDに相当し、Cellが終端記号(0)となる。 Since the transaction ID list has such a structure, it is possible to know the history of transactions executed in the past. Specifically, the qualifier in the top element of the transaction ID list corresponds to the last transaction ID (the same value as the last transaction ID in the ledger DB), the Cell corresponds to the previous transaction ID in terms of time, The qualifier in the next element corresponds to the transaction ID that is temporally one before, and the Cell corresponds to the transaction ID that is temporally one (that is, two) before. This chain of transaction IDs continues, with the qualifier in the last element corresponding to the last transaction ID and the Cell being the terminator (0).

前述した出金処理及び入金処理の過程で、このトランザクションIDリストにおける先頭の要素と台帳DB321の最後のトランザクションIDとが更新されるようになっている。そして、出金処理又は入金処理の過程において、トランザクションIDリストに、処理しようとしているトランザクション(出金トランザクション又は入金トランザクション)のトランザクションIDが含まれる場合には、その処理をスキップすることで、二重出金や二重入金を防止するようになっている。 In the course of the withdrawal process and the deposit process described above, the leading element in this transaction ID list and the last transaction ID in the ledger DB 321 are updated. Then, in the process of withdrawal processing or deposit processing, if the transaction ID list includes the transaction ID of the transaction to be processed (withdrawal transaction or deposit transaction), skipping that process eliminates duplicate transactions. It is designed to prevent money and double deposits.

トランザクション管理DB322は、各トランザクション(出金トランザクション及び入金トランザクション)に関する情報を含むデータベースである。トランザクション管理DB322は、図8に例示するように、各トランザクションのレコード作成日時(#1)、トランザクションID(#2)、ワークフローID(#3)、ファンクションID(#4)、ステップID(#5)、トランザクションの内容(#6)を含む。ワークフローID、ファンクションID、及びステップIDについては、図9に例示するようにして定義されている。トランザクションの内容は、後述するトランザクションの再実行を行うときに参照される。 The transaction management DB 322 is a database containing information on each transaction (withdrawal transaction and deposit transaction). As illustrated in FIG. 8, the transaction management DB 322 stores record creation date/time (#1), transaction ID (#2), workflow ID (#3), function ID (#4), and step ID (#5) of each transaction. ), including the contents of the transaction (#6). Workflow IDs, function IDs, and step IDs are defined as illustrated in FIG. The contents of the transaction are referenced when re-executing the transaction, which will be described later.

前述した入金処理が正常に終了した場合、又は、出金処理において何らかのエラー(例えば前述したシーケンス番号の不一致や出金元口座の残高不足)が発生した場合に、このトランザクション管理DB322に対して上記情報が書き込まれる。例えば入金処理が正常に終了した場合には、「レコード作成日時」として入金トランザクションが成功した時点の日時、トランザクションIDとして前述した送金要求の内容をハッシュ化した文字列、ワークフローIDとして「送金」に対応する「WF001」(図9参照)、ファンクションIDとして「入金」に対応する「FN002」(図9参照)、ステップIDとして「終了」に対応する「ST02」(図9参照)、トランザクションの内容として送金要求の内容が書き込まれることになる。また、出金処理において何らかのエラー(例えば前述したシーケンス番号の不一致や出金元口座の残高不足)が発生した場合には、「レコード作成日時」としてエラーが発生した時点の日時、トランザクションIDとして前述した送金要求の内容をハッシュ化した文字列、トランザクションの内容として送金要求の内容が書き込まれ、さらに、ワークフローID、ファンクションID及びステップIDとしてエラー発生時において実行されていた処理に応じた内容(図9参照)が書き込まれる。このように、トランザクション管理DB322には、正常に終了したトランザクションに関する情報と、正常に終了しなかったトランザクションに関する情報とが記録されることになる。 When the aforementioned deposit processing ends normally, or when some sort of error occurs in the withdrawal processing (for example, the above-mentioned sequence number mismatch or lack of balance in the withdrawal source account), the transaction management DB 322 Information is written. For example, if the deposit process ends normally, the date and time when the deposit transaction was successful as the "record creation date and time", the hashed character string of the above-mentioned remittance request as the transaction ID, and "remittance" as the workflow ID. Corresponding "WF001" (see Fig. 9), "FN002" corresponding to "deposit" as the function ID (see Fig. 9), "ST02" corresponding to "finish" as the step ID (see Fig. 9), transaction details , the content of the remittance request is written. Also, if any error occurs in the withdrawal process (for example, the above-mentioned sequence number mismatch or insufficient balance in the withdrawal source account), the date and time when the error occurred as the "record creation date and time" and the transaction ID The content of the remittance request is written as a character string hashed from the content of the remittance request, the content of the remittance request is written as the content of the transaction, and the content corresponding to the process being executed at the time of error occurrence as the workflow ID, function ID, and step ID (Fig. 9) is written. In this way, the transaction management DB 322 records information about normally completed transactions and information about unsuccessfully completed transactions.

このようにワークフローID及びファンクションIDの組み合わせにより、1つの送金トランザクションに含まれる出金トランザクション及び入金トランザクションが定義される。例えば出金元の口座AからX円を出金して入金先の口座BにそのX円を入金するという送金トランザクションにおいて、図9に例示したワークフローID「WF001」及びファンクションID「FN001」という組み合わせによって出金トランザクションが定義され、ワークフローID「WF001」及びファンクションID「FN002」という組み合わせによって入金トランザクションが定義される。従って、トランザクション管理DB322は、出金トランザクション又は入金トランザクションに関する情報を含んでいる。 Thus, a withdrawal transaction and a deposit transaction included in one remittance transaction are defined by a combination of the workflow ID and the function ID. For example, in a remittance transaction of withdrawing X yen from withdrawal source account A and depositing X yen into deposit destination account B, the combination of workflow ID “WF001” and function ID “FN001” illustrated in FIG. defines a withdrawal transaction, and a combination of workflow ID "WF001" and function ID "FN002" defines a deposit transaction. Therefore, the transaction management DB 322 contains information regarding withdrawal or deposit transactions.

メッセージキュー保存部33は、メッセージキューイングシステムを実現する手段であり、先入れ先出し方式でメッセージ(ここではトランザクション)の書き込み及び読み出しを行う。図10は、メッセージキュー保存部33におけるメッセージに相当するトランザクション(出金トランザクション及び入金トランザクション)のデータ構造を例示する図である。トランザクションは、ワークフローID(#1)、ファンクションID(#2)、メッセージ送信元(#3)、メッセージ生存期間(#4)、トランザクションID(#5)及びメッセージ本体の内容(#6)を含む。このトランザクションにおいて、ワークフローID「WF001」及びファンクションID「FN001」という組み合わせによって出金トランザクションが定義され、ワークフローID「WF001」及びファンクションID「FN002」という組み合わせによって入金トランザクションが定義される。つまり、トランザクションに含まれるワークフローID及びファンクションIDの組み合わせにより、出金トランザクション及び入金トランザクションが識別される。なお、このメッセージキュー保存部33は1つに限らず複数あってもよい。 The message queue storage unit 33 is means for realizing a message queuing system, and writes and reads messages (transactions in this case) on a first-in, first-out basis. FIG. 10 is a diagram illustrating the data structure of transactions (withdrawal transactions and deposit transactions) corresponding to messages in the message queue storage unit 33. As shown in FIG. A transaction includes a workflow ID (#1), a function ID (#2), a message sender (#3), a message lifetime (#4), a transaction ID (#5), and message body content (#6). . In this transaction, a withdrawal transaction is defined by the combination of workflow ID "WF001" and function ID "FN001", and a deposit transaction is defined by the combination of workflow ID "WF001" and function ID "FN002". In other words, a withdrawal transaction and a deposit transaction are identified by a combination of the workflow ID and function ID included in the transaction. Note that the number of message queue storage units 33 is not limited to one, and a plurality of them may be provided.

取得部31は、仲介機関サーバ装置20から新たな送金要求を取得した場合、送金要求の内容(送金要求に含まれる文字列)をハッシュ化し、そのハッシュ化文字列をトランザクションIDとして、メッセージキュー保存部33に書き込む。つまり、トランザクションIDは送金要求と1対1に対応するものである。出金トランザクション及び入金トランザクションにおいて、トランザクションIDは同一のものが用いられる。このように出金トランザクション及び入金トランザクションにおいて同一のトランザクションIDを用いることで、同一の送金要求に対応する出金トランザクションと入金トランザクションが識別できるようになっている。 When obtaining a new remittance request from the intermediation agency server device 20, the obtaining unit 31 hashes the content of the remittance request (a character string included in the remittance request), and stores the hashed character string in a message queue as a transaction ID. Part 33 is written. In other words, the transaction ID corresponds to the remittance request on a one-to-one basis. The same transaction ID is used for the withdrawal transaction and the deposit transaction. By using the same transaction ID in the withdrawal transaction and the deposit transaction in this way, the withdrawal transaction and the deposit transaction corresponding to the same remittance request can be identified.

出金処理部34は、送金要求における出金を実現するための出金トランザクションを実行して、台帳DB321において出金元の口座の残高を更新する。出金処理部34は、メッセージキュー保存部33に書き込まれた出金トランザクションを読み出して実行した後、入金トランザクションを生成してメッセージキュー保存部33に書き込む。 The withdrawal processing unit 34 executes a withdrawal transaction for realizing withdrawal in the remittance request, and updates the balance of the account of the withdrawal source in the ledger DB 321 . The withdrawal processing unit 34 reads and executes the withdrawal transaction written in the message queue storage unit 33 , then generates a payment transaction and writes it in the message queue storage unit 33 .

入金処理部35は、出金処理部34による出金処理が行われた後に、送金要求における入金を実現するための入金トランザクションをメッセージキュー保存部33から読み出して実行し、台帳DB321において入金先口座の残高を更新する。 After the withdrawal processing is performed by the withdrawal processing unit 34 , the deposit processing unit 35 reads out the deposit transaction for realizing the deposit in the remittance request from the message queue storage unit 33 , executes it, and stores the deposit destination account in the ledger DB 321 . update the balance of

出力部36は、発行主体サーバ装置30の外部に各種の情報を出力する。例えば、出力部36は、送金要求に対する処理の実行結果などを出力する。 The output unit 36 outputs various types of information to the outside of the issuer server device 30 . For example, the output unit 36 outputs the execution result of the process for the remittance request.

再実行部37は、出金トランザクション又は入金トランザクションを実行中にプロセスが異常終了した場合などに備えて、これらのトランザクションの実行結果において不整合がないかどうかを確認し、不整合があった場合には、送金リカバリトランザクション(図9参照)を実行して、不整合の対象となるトランザクション(送金要求に対応する出金トランザクション及び入金トランザクション)を再度実行するための処理を行う。 The re-executing unit 37 checks whether there is any inconsistency in the execution results of these transactions, in preparation for cases such as when the process terminates abnormally while executing a withdrawal transaction or a deposit transaction, and if there is an inconsistency 2, the remittance recovery transaction (see FIG. 9) is executed to re-execute the transaction subject to inconsistency (withdrawal transaction and deposit transaction corresponding to the remittance request).

[動作]
次に、本実施形態の動作について説明する。まず、図11を参照して、発行主体サーバ装置30が送金要求を取得して出金トランザクションをメッセージキュー保存部33に書き込むまでの処理について説明する。図11において、取得部31は、仲介機関サーバ装置20から送金要求を取得する(ステップS11)。
[motion]
Next, the operation of this embodiment will be described. First, with reference to FIG. 11, the processing from the acquisition of the remittance request by the issuer server device 30 to the writing of the withdrawal transaction in the message queue storage unit 33 will be described. In FIG. 11, the acquiring unit 31 acquires a remittance request from the intermediary agency server device 20 (step S11).

この送金要求に応じて、取得部31は、出金トランザクションを生成してメッセージキュー保存部33に書き込む(ステップS12)。このとき書き込まれる出金トランザクションは、図10におけるワークフローIDとして「WF001」(送金)が書き込まれ、ファンクションIDとして「FN001」(出金)が書き込まれ、トランザクションIDとして送金要求の内容がハッシュ化された文字列が書き込まれたものである。 In response to this remittance request, the acquisition unit 31 generates a withdrawal transaction and writes it to the message queue storage unit 33 (step S12). For the withdrawal transaction written at this time, "WF001" (remittance) is written as the workflow ID in FIG. 10, "FN001" (withdrawal) is written as the function ID, and the content of the remittance request is hashed as the transaction ID. A character string is written.

以上のような処理が、発行主体サーバ装置30によって送金要求が取得されるたびに実行される。これにより、メッセージキュー保存部33には各送金要求に応じた出金トランザクションが順次書き込まれていくことになる。 The processing described above is executed each time a remittance request is obtained by the issuer server device 30 . As a result, withdrawal transactions corresponding to each remittance request are sequentially written in the message queue storage unit 33 .

次に、図12を参照して、発行主体サーバ装置30がメッセージキュー保存部33から出金トランザクションを読み出してこれを実行し、入金トランザクションをメッセージキュー保存部33に書き込むまでの処理について説明する。図12において、出金処理部34は、先入れ先出し方式に従ってメッセージキュー保存部33から出金トランザクションを読み出す(ステップS21)。 Next, with reference to FIG. 12, the processing from the issuer server device 30 reading out a payment transaction from the message queue storage unit 33 to executing it and writing a payment transaction to the message queue storage unit 33 will be described. In FIG. 12, the withdrawal processing unit 34 reads withdrawal transactions from the message queue storage unit 33 according to the first-in, first-out method (step S21).

出金処理部34は、読み出した出金トランザクションを実行する(ステップS22)。これにより台帳DB321が更新される。このとき、出金処理部34は、出金トランザクション内のシーケンス番号と台帳DB321のシーケンス番号とを比較し、これらが一致しない場合は順序エラーとしてトランザクション管理DB322に所要の情報を書き込み、処理を終了する。 The payment processing unit 34 executes the read payment transaction (step S22). Thereby, the ledger DB 321 is updated. At this time, the withdrawal processing unit 34 compares the sequence number in the withdrawal transaction with the sequence number in the ledger DB 321, and if they do not match, writes the necessary information to the transaction management DB 322 as a sequence error and ends the process. do.

出金トランザクションが完了すると、出金処理部34は、送金要求に応じた入金トランザクションを生成してメッセージキュー保存部33に書き込む(ステップS23)。このとき書き込まれる入金トランザクションは、図10におけるワークフローIDとして「WF001」(送金)が書き込まれ、ファンクションIDとして「FN002」(入金)が書き込まれ、トランザクションIDとして、前述した入金トランザクションのトランザクションIDと同じもの、つまり送金要求の内容がハッシュ化された文字列が書き込まれたものである。以上のような処理が、メッセージキュー保存部33から出金トランザクションが読み出されるたびに実行される。 When the withdrawal transaction is completed, the withdrawal processing unit 34 generates a deposit transaction corresponding to the remittance request and writes it to the message queue storage unit 33 (step S23). In the payment transaction written at this time, "WF001" (remittance) is written as the workflow ID in FIG. In other words, a character string in which the content of the remittance request is hashed is written. The processing described above is executed each time a withdrawal transaction is read out from the message queue storage unit 33 .

次に、図13を参照して、発行主体サーバ装置30がメッセージキュー保存部33から入金トランザクションを読み出してこれを実行するまでの処理について説明する。図13において、入金処理部35は、先入れ先出し方式に従ってメッセージキュー保存部33から入金トランザクションを読み出す(ステップS31)。 Next, with reference to FIG. 13, the processing from the time when the issuer server device 30 reads out the deposit transaction from the message queue storage unit 33 to the execution thereof will be described. In FIG. 13, the deposit processing unit 35 reads deposit transactions from the message queue storage unit 33 according to the first-in, first-out method (step S31).

入金処理部35は、読み出した入金トランザクションを実行する(ステップS32)。これにより台帳DB321が更新される。以上のような処理が、メッセージキュー保存部33から入金トランザクションが読み出されるたびに実行される。入金処理部35は、入金トランザクションが成功した場合、図8に例示したトランザクション管理DB322の更新を行う。具体的には、入金処理部35は、図8における「レコード作成日時」として入金トランザクションが成功した時点の日時、トランザクションIDとして前述した送金要求の内容をハッシュ化した文字列、ワークフローIDとして「送金」に対応する「WF001」(図9参照)、ファンクションIDとして「入金」に対応する「FN002」(図9参照)、ステップIDとして「終了」に対応する「ST02」(図9参照)、トランザクションの内容として送金要求の内容を書き込む。 The deposit processing unit 35 executes the read deposit transaction (step S32). Thereby, the ledger DB 321 is updated. The processing described above is executed each time a deposit transaction is read out from the message queue storage unit 33 . The deposit processing unit 35 updates the transaction management DB 322 illustrated in FIG. 8 when the deposit transaction is successful. Specifically, the deposit processing unit 35 sets the date and time when the deposit transaction was successful as the “record creation date and time” in FIG. "WF001" (see Fig. 9), "FN002" (see Fig. 9) corresponding to "deposit" as the function ID, "ST02" (see Fig. 9) corresponding to "finish" as the step ID, transaction The content of the remittance request is written as the content of .

上記のようにメッセージキュー保存部33には、各送金要求に応じた出金トランザクション及び入金トランザクションが書き込まれることになるが、各トランザクションの書き込み及び読み出しは先入れ先出し方式で管理されているため、複数の送金要求に応じた出金処理及び入金処理がシーケンシャルに実行されることになる。 Withdrawal transactions and deposit transactions corresponding to each remittance request are written in the message queue storage unit 33 as described above. Withdrawal processing and deposit processing are sequentially executed in response to the remittance request.

次に、図14を参照して、発行主体サーバ装置30が出金トランザクション又は入金トランザクションの実行結果において不整合があった場合に、これらのトランザクションを再実行するときの処理について説明する。図14において、再実行部37は、例えば定期的又は任意のタイミングで、メッセージキュー保存部33に保存されている全てのトランザクション(出金トランザクション及び入金トランザクション)のうち、いずれか1つのトランザクションのトランザクションIDを読み出す(ステップS41)。 Next, with reference to FIG. 14, processing when issuing subject server device 30 re-executes a payment transaction or a payment transaction when there is an inconsistency in the execution results of these transactions will be described. In FIG. 14, the re-executing unit 37 periodically or at any time, for example, re-executes any one of all the transactions (withdrawal transactions and deposit transactions) stored in the message queue storage unit 33. The ID is read (step S41).

再実行部37は、読み出したトランザクションIDをキーにして、トランザクション管理DB322を検索する(ステップS42)。 The re-executing unit 37 searches the transaction management DB 322 using the read transaction ID as a key (step S42).

トランザクション管理DB322には、取得部31が取得した全ての送金要求に1対1で対応するトランザクションIDが記録されているはずである。再実行部37は、トランザクション管理DB322に該当するトランザクションIDが含まれていれば(ステップS43;YES)、ステップS41に戻り、メッセージキュー保存部33から次のトランザクションIDを読み出して上述した処理を繰り返す。 The transaction management DB 322 should record transaction IDs corresponding to all remittance requests acquired by the acquisition unit 31 on a one-to-one basis. If the corresponding transaction ID is included in the transaction management DB 322 (step S43; YES), the re-execution unit 37 returns to step S41, reads out the next transaction ID from the message queue storage unit 33, and repeats the above-described processing. .

一方、再実行部37は、トランザクション管理DB322に該当するトランザクションIDが含まれていない場合(ステップS43;NO)、このトランザクションIDに対応する送金要求に応じた出金トランザクションから再度実行する。具体的には、再実行部37は、トランザクションIDに対応する送金要求に応じた出金トランザクションをメッセージキュー保存部33に書き込んだ後に(ステップS44)、図12のステップS21の処理に遷移する。これ以降、図12~13で述べたような各処理が再度実行される。 On the other hand, if the corresponding transaction ID is not included in the transaction management DB 322 (step S43; NO), the re-execution unit 37 re-executes the withdrawal transaction corresponding to the remittance request corresponding to this transaction ID. Specifically, the re-execution unit 37 writes the withdrawal transaction corresponding to the remittance request corresponding to the transaction ID to the message queue storage unit 33 (step S44), and then transitions to the process of step S21 in FIG. Thereafter, each process as described with reference to FIGS. 12 and 13 is executed again.

このとき、出金処理部34は、出金トランザクションのトランザクションIDが、台帳DB321における出金元の口座のトランザクションIDリストに含まれていれば、この出金トランザクションを実行済みと判断し、この口座の口座残高を更新せずに、入金トランザクションを作成してメッセージキュー保存部33に書き込む(図12のステップS23)。一方、出金トランザクションのトランザクションIDが、台帳DB321における出金元の口座のトランザクションIDリストに含まれていなければ、出金処理部34は、この出金トランザクションを実行済みではないと判断し、これを実行する。これと同様に、入金処理部35は、入金トランザクションのトランザクションIDが、台帳DB321における入金先の口座のトランザクションIDリストに含まれていれば、この入金トランザクションを実行済みと判断し、この口座の口座残高を更新せずに入金トランザクションを終了する。一方、入金トランザクションのトランザクションIDが、台帳DB321における入金先の口座のトランザクションIDリストに含まれていなければ、入金処理部35は、この入金トランザクションを実行済みではないと判断し、これを実行する。 At this time, if the transaction ID of the withdrawal transaction is included in the transaction ID list of the withdrawal source account in the ledger DB 321, the withdrawal processing unit 34 determines that this withdrawal transaction has been executed, and without updating the account balance, a deposit transaction is created and written in the message queue storage unit 33 (step S23 in FIG. 12). On the other hand, if the transaction ID of the withdrawal transaction is not included in the transaction ID list of the withdrawal source account in the ledger DB 321, the withdrawal processing unit 34 determines that the withdrawal transaction has not been executed. to run. Similarly, if the transaction ID of the deposit transaction is included in the transaction ID list of the deposit destination account in the ledger DB 321, the deposit processing unit 35 determines that this deposit transaction has been executed, and End the deposit transaction without updating the balance. On the other hand, if the transaction ID of the deposit transaction is not included in the transaction ID list of the deposit destination account in the ledger DB 321, the deposit processing unit 35 determines that the deposit transaction has not been executed and executes it.

以上のようにして、再実行部37は、メッセージキュー保存部33に保存されている全てのトランザクションのトランザクションIDについて再実行を行うか否かを判断する。 As described above, the re-execution unit 37 determines whether or not to re-execute the transaction IDs of all transactions stored in the message queue storage unit 33 .

以上説明した実施形態によれば、1つの送金トランザクションを、実質的に出金トランザクションと入金トランザクションという2つの異なるトランザクションに分けて実行するので、各送金トランザクションにおける排他制御を同時に二つの口座に跨って行っていた従来方法に比較して、多数の送金トランザクションを完了するのに要する所要時間を短くすることができる。つまり、多数の送金処理を高速化することが可能となる。 According to the embodiment described above, one remittance transaction is substantially divided into two different transactions, namely, a withdrawal transaction and a deposit transaction. The turnaround time required to complete a large number of money transfer transactions can be reduced as compared to the traditional methods used. That is, it becomes possible to speed up a large number of remittance processes.

また、上記実施形態では、各口座の残高を含むデータベースとして、リレーショナルデータベースよりも書き込み速度が速いNoSQLを採用するとともに、メッセージキューイングシステムを用いて、出金元の口座に対する出金処理及び入金先の口座に対する入金処理という、2つの口座に対するデータ更新処理をシーケンシャルに行うので、高速且つ確実に送金処理を実行することが可能となる。 In addition, in the above embodiment, as a database containing the balance of each account, NoSQL, which has a faster writing speed than a relational database, is adopted, and a message queuing system is used to process withdrawals and deposits to accounts from which withdrawals are made. Since data update processing for two accounts, that is, deposit processing for one account, is sequentially performed, remittance processing can be executed at high speed and with certainty.

また、上記実施形態では、出金トランザクション又は入金トランザクションの実行結果において不整合があった場合には、不整合のあったトランザクションを再度実行する。これにより、確実に送金処理を実行することが可能となる。 In addition, in the above embodiment, if there is an inconsistency in the execution result of a withdrawal transaction or a deposit transaction, the inconsistent transaction is re-executed. This makes it possible to reliably execute remittance processing.

[変形例]
本発明は上述した実施形態に限定されず、上述した実施形態を次のように変形してもよい。上記実施形態では、本発明をデジタル通過に適用した例を説明したが、本発明の適用はこれに限らず、複数の送金要求に応じて口座間で送金を行う場合に適用し得る。
[Modification]
The present invention is not limited to the embodiments described above, and the embodiments described above may be modified as follows. In the above embodiment, an example in which the present invention is applied to digital money transfer has been described, but the application of the present invention is not limited to this, and can be applied to the case of performing remittance between accounts in response to a plurality of remittance requests.

本発明は、実施形態で例示した発行主体サーバ装置という情報処理装置のみならず、この情報処理装置が行う情報処理方法、つまり、第1の口座から出金して第2の口座に入金する送金要求を取得する取得ステップと、取得された前記送金要求における出金を実現するための出金トランザクションを実行して、前記第1の口座の残高を含むデータベースを更新する出金処理ステップと、前記出金処理ステップによる出金処理が行われた後に、前記送金要求における入金を実現するためのトランザクションであって、前記出金トランザクションとは異なる入金トランザクションを実行して、前記第2の口座の残高を含むデータベースを更新する入金処理ステップとを備える情報処理方法としても実施し得る。さらに、コンピュータをこの情報処理方法を実行させるためのプログラムといった形態でも実施が可能である。このプログラムは、光ディスク等の記録媒体に記録した形態でコンピュータに提供されたり、インターネット等のネットワークを介してコンピュータに提供されたりしてもよい。 The present invention applies not only to the information processing device, which is the issuer server device exemplified in the embodiment, but also to an information processing method performed by this information processing device, that is, a remittance method in which money is withdrawn from a first account and deposited into a second account. an acquisition step of acquiring a request; a withdrawal processing step of executing a withdrawal transaction for realizing withdrawal in the acquired remittance request and updating a database containing the balance of the first account; After the withdrawal processing is performed by the withdrawal processing step, a transaction for realizing the deposit in the remittance request, which is different from the withdrawal transaction, is executed to reduce the balance of the second account. It can also be implemented as an information processing method comprising a payment processing step of updating a database including Furthermore, implementation is also possible in the form of a program for causing a computer to execute this information processing method. This program may be provided to the computer in a form recorded on a recording medium such as an optical disk, or may be provided to the computer via a network such as the Internet.

10:ユーザ端末、20:仲介機関サーバ装置、30:発行主体サーバ装置、31:取得部、32:記憶部、33:メッセージキュー保存部、34:出金処理部、35:入金処理部、36:出力部、37:再実行部、3001:プロセッサ、3002:メモリ、3003:ストレージ、3004:通信装置、3005:入力装置、3006:出力装置。 10: user terminal, 20: intermediary agency server device, 30: issuer server device, 31: acquisition unit, 32: storage unit, 33: message queue storage unit, 34: withdrawal processing unit, 35: deposit processing unit, 36 3001: Processor 3002: Memory 3003: Storage 3004: Communication device 3005: Input device 3006: Output device.

Claims (7)

第1の口座から出金して第2の口座に入金する送金要求を取得する取得部と、
取得された前記送金要求における出金を実現するための出金トランザクションを実行して、前記第1の口座の残高を含むデータベースを更新する出金処理部と、
前記出金処理部による出金処理が行われた後に、前記送金要求における入金を実現するためのトランザクションであって、前記出金トランザクションとは異なる入金トランザクションを実行して、前記第2の口座の残高を含むデータベースを更新する入金処理部と
を備えることを特徴とする情報処理装置。
an acquisition unit for acquiring a remittance request to withdraw from the first account and deposit to the second account;
a withdrawal processing unit that executes a withdrawal transaction for realizing withdrawal in the acquired remittance request and updates a database containing the balance of the first account;
After the withdrawal processing is performed by the withdrawal processing unit, a transaction for realizing the deposit in the remittance request, which is different from the withdrawal transaction, is executed to open the second account. and a deposit processing unit that updates a database containing balances.
先入れ先出し方式でトランザクションの書き込み及び読み出しを行うメッセージキュー保存部を備え、
前記取得部は、前記出金トランザクションを前記メッセージキュー保存部に書き込み、
前記出金処理部は、前記メッセージキュー保存部に書き込まれた前記出金トランザクションを読み出して実行した後、前記入金トランザクションを前記メッセージキュー保存部に書き込み、
前記入金処理部は、前記メッセージキュー保存部に書き込まれた前記入金トランザクションを読み出して実行する
ことを特徴とする請求項1記載の情報処理装置。
Equipped with a message queue storage that writes and reads transactions on a first-in, first-out basis,
The acquisition unit writes the withdrawal transaction to the message queue storage unit,
The withdrawal processing unit reads and executes the withdrawal transaction written in the message queue storage unit, and then writes the payment transaction in the message queue storage unit,
2. The information processing apparatus according to claim 1, wherein the deposit processing unit reads and executes the deposit transaction written in the message queue storage unit.
前記出金トランザクション又は前記入金トランザクションに関する情報を含むトランザクション管理データベースを記憶する記憶部を備える
ことを特徴とする請求項2記載の情報処理装置。
3. The information processing apparatus according to claim 2, further comprising a storage unit that stores a transaction management database containing information about the payment transaction or the payment transaction.
前記トランザクション管理データベースは、前記送金要求に割り当てられたトランザクション識別子を含み、
前記メッセージキュー保存部には、各々の前記トランザクション識別子が書き込まれており、
前記メッセージキュー保存部に書き込まれている前記トランザクション識別子が前記トランザクション管理データベースに含まれていない場合に、前記送金要求に対応する出金トランザクション又は入金トランザクションを再度実行するための処理を行う再実行部を備える
ことを特徴とする請求項3記載の情報処理装置。
the transaction management database includes a transaction identifier assigned to the remittance request;
Each transaction identifier is written in the message queue storage unit,
a re-executing unit that performs processing for re-executing a withdrawal transaction or a deposit transaction corresponding to the remittance request when the transaction identifier written in the message queue storage unit is not included in the transaction management database; 4. The information processing apparatus according to claim 3, comprising:
前記第1の口座の残高を含むデータベースは、当該口座に対して実行された出金トランザクションに対応する前記送金要求に割り当てられたトランザクション識別子を含み、
前記第2の口座の残高を含むデータベースは、当該口座に対して実行された入金トランザクションに対応する前記送金要求に割り当てられたトランザクション識別子を含み、
前記再実行部は、
前記メッセージキュー保存部に書き込まれている前記トランザクション識別子が前記トランザクション管理データベースに含まれていない場合であって、当該トランザクション識別子が、前記第1の口座の残高を含むデータベースに含まれていない場合に、前記送金要求に対応する出金トランザクションを再度実行し、
前記メッセージキュー保存部に書き込まれている前記トランザクション識別子が前記トランザクション管理データベースに含まれていない場合であって、当該トランザクション識別子が、前記第2の口座の残高を含むデータベースに含まれていない場合に、前記送金要求に対応する入金トランザクションを再度実行する
ことを特徴とする請求項4記載の情報処理装置。
a database containing the balance of the first account includes transaction identifiers assigned to the money transfer requests corresponding to withdrawal transactions performed against the account;
a database containing the balance of the second account includes a transaction identifier assigned to the transfer request corresponding to a deposit transaction performed against the account;
The re-execution unit
When the transaction identifier written to the message queue storage unit is not included in the transaction management database, and when the transaction identifier is not included in the database containing the balance of the first account , re-execute the withdrawal transaction corresponding to said remittance request,
when the transaction identifier written to the message queue storage unit is not included in the transaction management database, and when the transaction identifier is not included in the database containing the balance of the second account; 5. The information processing apparatus according to claim 4, wherein a deposit transaction corresponding to said remittance request is executed again.
第1の口座から出金して第2の口座に入金する送金要求を取得する取得ステップと、
取得された前記送金要求における出金を実現するための出金トランザクションを実行して、前記第1の口座の残高を含むデータベースを更新する出金処理ステップと、
前記出金処理ステップによる出金処理が行われた後に、前記送金要求における入金を実現するためのトランザクションであって、前記出金トランザクションとは異なる入金トランザクションを実行して、前記第2の口座の残高を含むデータベースを更新する入金処理ステップと
を備えることを特徴とする情報処理方法。
an obtaining step of obtaining a remittance request to withdraw from the first account and deposit to the second account;
a withdrawal processing step of executing a withdrawal transaction for realizing withdrawal in the acquired remittance request and updating a database containing the balance of the first account;
After the withdrawal processing is performed by the withdrawal processing step, a transaction for realizing the deposit in the remittance request, which is different from the withdrawal transaction, is executed to open the second account. and a deposit processing step of updating a database containing balances.
コンピュータに、
第1の口座から出金して第2の口座に入金する送金要求を取得する取得ステップと、
取得された前記送金要求における出金を実現するための出金トランザクションを実行して、前記第1の口座の残高を含むデータベースを更新する出金処理ステップと、
前記出金処理ステップによる出金処理が行われた後に、前記送金要求における入金を実現するためのトランザクションであって、前記出金トランザクションとは異なる入金トランザクションを実行して、前記第2の口座の残高を含むデータベースを更新する入金処理ステップと
を実行させるためのプログラム。
to the computer,
an obtaining step of obtaining a remittance request to withdraw from the first account and deposit to the second account;
a withdrawal processing step of executing a withdrawal transaction for realizing withdrawal in the acquired remittance request and updating a database containing the balance of the first account;
After the withdrawal processing is performed by the withdrawal processing step, a transaction for realizing the deposit in the remittance request, which is different from the withdrawal transaction, is executed to open the second account. A program for running a payment processing step that updates a database containing balances.
JP2021203735A 2021-12-15 2021-12-15 Information processing device, information processing method, and program Pending JP2023088789A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021203735A JP2023088789A (en) 2021-12-15 2021-12-15 Information processing device, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021203735A JP2023088789A (en) 2021-12-15 2021-12-15 Information processing device, information processing method, and program

Publications (1)

Publication Number Publication Date
JP2023088789A true JP2023088789A (en) 2023-06-27

Family

ID=86935315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021203735A Pending JP2023088789A (en) 2021-12-15 2021-12-15 Information processing device, information processing method, and program

Country Status (1)

Country Link
JP (1) JP2023088789A (en)

Similar Documents

Publication Publication Date Title
US6446086B1 (en) System and method for logging transaction records in a computer system
US6018746A (en) System and method for managing recovery information in a transaction processing system
US6301379B1 (en) Electronic check presentment systems and methods employing volatile memory datastore access techniques
JP7541440B2 (en) DATA PROCESSING APPARATUS AND DATA PROCESSING METHOD
CN101183322B (en) Method for deferred logging and apparatus thereof
CN109086388A (en) Block chain date storage method, device, equipment and medium
JP2003513357A (en) Method and apparatus for performing atomic updates using a logical flash memory device
CN102667720A (en) Consistency without ordering dependency
WO2023160077A1 (en) Blockchain data recovery method and apparatus, and electronic device
CN106991606A (en) transaction data processing method and device
JP2023088789A (en) Information processing device, information processing method, and program
EP1208432B1 (en) System and method for logging transaction records in a computer system
WO2020225224A1 (en) Secure and transparent database transactions in untrusted environments using permissioned, minimally invasive blockchain technology
US9286634B2 (en) Financial systems
JP2006155676A (en) Database backup method for designated time and database backup device
JP2014215869A (en) Information processing device, information processing method, and program
CN111752978A (en) Method, device and system for selecting bin route based on distributed cache
JP2001229063A (en) Data managing system
JPH10232809A (en) Transaction processing system
JPH0844670A (en) File managing method, computer system using the same and operating method for computer system
JPS5856142B2 (en) Online recovery control method
WO2024082693A1 (en) Data processing method, and apparatus
EP1835400A1 (en) Transaction processing method
JP4027055B2 (en) Transaction management device
JPH11353426A (en) Information backup method for ic card and same ic card

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20230822

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20231023