GS21のデータ資産 活用術 ~Remote Access eXtensionの魅力~

第5話 トランザクションの管理

また例のお二人が、お話しています。
今回は、RAXと深い関わりのあるトランザクションの管理についてのお話しのようです。

Jさん

『トランザクションについては、おおまかには知っているつもりですけど、改めて詳しく教えていただけますか。』

Fさん

『業務を行う場合、いろいろな人がデータを参照したり、追加や更新、削除をするよね。更に、1つの業務にはいろいろなデータが関係していて、業務はこのデータ間の整合性を保ちつつ処理を行う必要があるよね。これを実現する仕組みがトランザクションなんだ。トランザクションは、ある人から依頼された一連の処理のまとまりのことで、そうだね...、例えばバンキングシステムだと一つの取引ということかな。これをシステムで管理することで、データの整合性を保証しているんだよ。』

Jさん

『取引の一連の処理のことをトランザクションというんですね。』

Fさん

『一言で言えばそういうこと。
ではここからは、業務の設計において重要となる、トランザクションの考えについて話そう。RAXでは、トランザクションは、SQL文の実行により開始され、COMMITされるかROLLBACKされると終了となる。』

Jさん

『COMMITにROLLBACK...ですか?』

Fさん

『COMMITは、データの変更処理が正常に終了して、その処理結果をデータベースに反映すること。
ROLLBACKは、データの変更処理の途中でエラーが発生した場合に、それまでの変更処理を取り消して、元の状態に戻すことだよ。』

Jさん

『はい...。』

Fさん

『わかりやすく、銀行での業務を例に考えてみよう。
Jさんが100万円入っている口座を持っていて、その口座から10万円引き出す処理をするとしよう。この場合、10万円出金されて残高が90万円になれば、トランザクションはCOMMITされるよね。

ところが、実は8万円しか残高がなかったとか、引き出そうとしている口座番号を間違えていたりすると、10万円引き出す処理はできない。
この場合、ROLLBACK して、10万円は出金されないし、残高は元のままになる。つまり、10万円引き出す処理はCOMMITされずに、ROLLBACKしてSQL文の実行は取り消されるんだ。』

Jさん

『なるほど!』

Fさん

『もう少し複数のシステムが連携した処理として考えてみよう。
Jさんは、携帯使用料と電気代を口座Aから引き落とすことにしている。
今月はそれぞれ1万円使って、その代金が今日引落しされる。
口座Aには100万円の残高があるとする。
引落しの処理としては、携帯会社A社がJさんの指定した口座から1万円引落しできるか、データを参照して残高確認をする。確認できたら、1万円引き落とす処理を行う。同じように電気会社B社も同じ処理を行う。』



単純に、100万円から1万円を2回引き落とすわけだから、
「100万円 - 1万円 = 99万円」「99万円 - 1万円 = 98万円」となる。



ところが、A社とB社の処理がきちんと排他(逐次化)されていないと、おかしなことになってしまう。


Jさん

『A社とB社が全く同じタイミングで引落ししたとしても、処理が正しく行われて残高も正しく計算されてくれないと大変なことになりますからね。』

Fさん

『こんなことも考えられる。
Jさんが100万円入っている自分の口座から、別の口座に10万円移動する場合を考えてみよう。
この場合、100万円の口座から10万円減らす処理と、別の口座に10万円増やす処理が連続して行われる。一連の処理という概念がないと、10万円減らす処理が終了したあとに、トラブル(障害)が発生して、10万円増やす処理が失敗すると、当然10万円は加算されない。
しかも、減らす処理は完了しているから100万円あった口座からは10万円引かれたままで残高は90万円になる。よって、10万円損したことになる。』


Jさん

『えーっ、それは困ります!』

Fさん

『このようなことにならないように、業務を1つのかたまりと考えて、かたまりすべての処理が完了してはじめて業務完了とする。そして、一連の業務をシステムで管理することで、この処理中は他の処理が割り込まないこと、そして処理が始まる前に保たれていたデータ間の整合性が、処理が終わった後でもきちんと保たれることを保証しているんだね。』

Jさん

『トランザクションは、重要な役割を果たしているんですね。』

Fさん

『わかってもらえたかな。
銀行の業務だけではなく、1つのデータベースにアクセスするだけの業務は今ではほとんどないため、複数のデータベースへのアクセスも一つのトランザクションで制御できるようにしている。
RAXを導入したシステムでは、クライアント側でトランザクション制御を行う。
もちろん、GS21の複数のデータベースにアクセスする場合でも一連の業務として成り立つように、1つのトランザクションとして扱い、DB更新の一貫性を保証している。

GS21上のアプリの動きと同じように、オープンのアプリからGS21の複数のDBにリモートアクセスする場合でも、1つのトランザクションで制御することができるのは、RAXを導入したシステムだけ。』


Jさん

『RAX 使えますね!次回は「既存業務との併用」について教えてください。』

製品情報

  • Remote Access eXtension
    ~GS21データ資産を活用する基幹オンライン業務のオープン環境での構築を支援~

富士通メインフレームに関するお問い合わせ

Webでのお問い合わせ

  • 当社はセキュリティ保護の観点からSSL技術を使用しております。

電話でのお問い合わせ

ページの先頭へ