IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人大阪大学の特許一覧

特開2023-14841処理装置、処理方法及び処理プログラム
<>
  • 特開-処理装置、処理方法及び処理プログラム 図1
  • 特開-処理装置、処理方法及び処理プログラム 図2
  • 特開-処理装置、処理方法及び処理プログラム 図3
  • 特開-処理装置、処理方法及び処理プログラム 図4
  • 特開-処理装置、処理方法及び処理プログラム 図5
  • 特開-処理装置、処理方法及び処理プログラム 図6
  • 特開-処理装置、処理方法及び処理プログラム 図7
  • 特開-処理装置、処理方法及び処理プログラム 図8
  • 特開-処理装置、処理方法及び処理プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023014841
(43)【公開日】2023-01-31
(54)【発明の名称】処理装置、処理方法及び処理プログラム
(51)【国際特許分類】
   G06F 16/23 20190101AFI20230124BHJP
【FI】
G06F16/23
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021119020
(22)【出願日】2021-07-19
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】内山 寛之
(72)【発明者】
【氏名】鬼塚 真
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175CA09
(57)【要約】
【課題】トランザクション処理を並行実行するDBMSにおいて、トランザクション処理の並列度を向上することで、処理全体を高速化することができる。
【解決手段】処理装置10は、トランザクション処理を並行実行する処理装置であって、過去のトランザクション処理の履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測する預託量予測部131と、預託量予測部131によって予測された量の預託を、データベースから、スレッド毎に管理される局所DB123に預託として移動して、預託を確保する預託確保部132と、応用プログラムから入力されるトランザクション処理プログラムを実行する際に、局所DB123の預託を利用してトランザクション処理をスレッド毎に実行するトランザクション実行部133と、局所DB123に格納されたレコードを大域DBに移動するDB同期部134と、を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
トランザクション処理を並行実行する処理装置であって、
過去のトランザクション処理の履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測する予測部と、
前記予測部によって予測された量の預託を、データベースから、スレッド毎に管理される局所データベースに預託として移動して、預託を確保する確保部と、
応用プログラムから入力されるトランザクション処理プログラムを実行する際に、前記局所データベースの預託を利用してトランザクション処理をスレッド毎に実行する実行部と、
前記局所データベースに格納されたレコードを前記データベースに移動する同期部と、
を有することを特徴とする処理装置。
【請求項2】
前記実行部は、前記局所データベースにおける集合型の預託を利用して、insert/update操作に関するトランザクション処理をスレッド毎に実行することを特徴とする請求項1に記載の処理装置。
【請求項3】
前記応用プログラムから入力されるトランザクションプログラム群を解析し、前記預託の利用の安全性を検証する検証部をさらに有することを特徴とする請求項1または2に記載の処理装置。
【請求項4】
前記検証部は、前記トランザクション処理によってユーザに対して値を返却しないケース、返却した値を前記応用プログラムで利用しないケース、前記返却した値を応用プログラムの別の更新トランザクションでは利用しないケース、または、前記別の更新トランザクションで利用するが更新対象が元のトランザクションの更新対象と同じケースであるかをプログラム解析によって判定し、判定結果に応じて預託の利用の安全性を検証することを特徴とする請求項3に記載の処理装置。
【請求項5】
前記実行部は、前記検証部によって前記預託の利用が安全であることが検証された場合は、前記預託を利用し、前記検証部によって前記預託の利用が安全でないことが検証された場合は、前記預託を利用しないことを特徴とする請求項3または4に記載の処理装置。
【請求項6】
トランザクション処理を並行実行する処理装置が実行する処理方法であって、
過去のトランザクション処理の履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測する工程と、
前記予測する工程において予測された量の預託を、データベースから、スレッド毎に管理される局所データベースに預託として移動して、預託を確保する工程と、
応用プログラムから入力されるトランザクション処理プログラムを実行する際に、前記局所データベースの預託を利用してトランザクション処理をスレッド毎に実行する工程と、
前記局所データベースに格納されたレコードを前記データベースに移動する工程と、
を含んだことを特徴とする処理方法。
【請求項7】
過去のトランザクション処理の履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測するステップと、
前記予測するステップにおいて予測された量の預託を、データベースから、スレッド毎に管理される局所データベースに預託として移動して、預託を確保するステップと、
応用プログラムから入力されるトランザクション処理プログラムを実行する際に、前記局所データベースの預託を利用してトランザクション処理をスレッド毎に実行するステップと、
前記局所データベースに格納されたレコードを前記データベースに移動するステップと、
をコンピュータに実行させるための処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理装置、処理方法及び処理プログラムに関する。
【背景技術】
【0002】
トランザクション処理を並行実行するデータベース管理システム(DBMS:Data Base Management System)として、ブロックすることなくデータの同時更新を実現することで、トランザクション処理の並列度を向上する技術(Escrow Transaction Method)が提案されている(例えば、非特許文献1参照)。
【0003】
非特許文献1記載の技術は、将来生じるであろう、トランザクション処理に必要となる数量データを、預託(Escrow)に事前に入れておくことで、預託の許容範囲内で実行可能なトランザクション処理を実行する仕組みである。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Patrick E O'Neil, “The Escrow Transactional Method”, ACM Transactions on Database Systems December 1986.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1記載の技術では、予めどの程度の預託を準備するべきかを設定することは、ユーザ責任であるため、適切な預託の設定が難しいという問題があった。このため、非特許文献1記載の技術では、トランザクション処理の並列度を向上させることが難しい。
【0006】
本発明は、上記に鑑みてなされたものであって、トランザクション処理を並行実行するデータベース管理システム(DBMS)において、トランザクション処理の並列度を向上することで、処理全体を高速化することができる処理装置、処理方法及び処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するために、本発明の処理装置は、トランザクション処理を並行実行する処理装置であって、過去のトランザクション処理の履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測する予測部と、予測部によって予測された量の預託を、データベースから、スレッド毎に管理される局所データベースに預託として移動して、預託を確保する確保部と、応用プログラムから入力されるトランザクション処理プログラムを実行する際に、局所データベースの預託を利用してトランザクション処理をスレッド毎に実行する実行部と、局所データベースに格納されたレコードを大域データベースに移動する同期部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、トランザクション処理を並行実行するデータベース管理システム(DBMS)において、トランザクション処理の並列度を向上することで、処理全体を高速化することができる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態に係る処理装置の構成の一例を示す図である。
図2図2は、実施の形態に係る処理の流れを説明する図である。
図3図3は、列車の座席予約への適用例について説明する図である。
図4図4は、列車の座席予約への適用例について説明する図である。
図5図5は、列車の座席予約への適用例について説明する図である。
図6図6は、局所DBに対するクエリ文の一例を示す図である。
図7図7は、列車の座席予約への適用例について説明する図である。
図8図8は、実施の形態に係る処理方法の処理手順を示すシーケンス図である。
図9図9は、プログラムが実行されることにより、処理装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【0010】
以下に、本願に係る処理装置、処理方法及び処理プログラムの実施の形態を図面に基づいて詳細に説明する。また、本発明は、以下に説明する実施の形態により限定されるものではない。
【0011】
[実施の形態]
まず、実施の形態について説明する。実施の形態に係る処理装置は、トランザクション処理を並行実行するDBMSの処理装置である。
【0012】
実施の形態に係る処理装置では、トランザクションの並行実行の際に、過去のトランザクション実行履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測する。処理装置は、大域データベース(DB)から、予測された量の預託を預託として確保し、スレッド毎に管理される局所DBに預託として管理する。実施の形態では、預託を集合に拡張することで、集合に対する要素の追加、要素の削除の操作に対して、Escrow Transaction Method を適用する。
【0013】
そして、処理装置は、大域DBにアクセスする代わりに、集合型の局所DBの預託を利用して、insert/update操作に関するトランザクション処理を実行し、局所DBに格納されたレコードを大域DBに移動する。
【0014】
これによって、処理装置は、適切な預託の自動設定が可能となる。さらに、処理装置は、集合型のデータに対するinsert/update操作に関するトランザクション処理をスレッド毎に独立に実行することを可能とする。これによって、処理装置では、トランザクション処理の高速化を達成可能とする。さらに、処理装置は、預託利用による副作用がないことを検証して、安全に預託を利用することを可能とする。
【0015】
[処理装置の構成]
続いて、図1及び図2を用いて、実施の形態に係る各種操作に応じて処理が実行される処理装置の構成及び処理について説明する。図1は、実施の形態に係る処理装置の構成の一例を示す図である。図2は、実施の形態に係る処理の流れを説明する図である。
【0016】
実施の形態に係る処理装置10は、図1に示すように、通信部11、記憶部12、制御部13、入力部14及び出力部15を有する。また、処理装置10は、図2に示すように、応用プログラム100からトランザクション処理プログラムの入力を受け付ける。また、処理装置10は、大域DB110からから預託を確保する。なお、応用プログラム100は、計算機のインターフェースを経由し、ユーザからの入力に基づいて、トランザクション実行部133(後述)に対して、トランザクション処理プログラムを入力する。大域DB110は、一般のDBMSにおけるデータベースである。
【0017】
通信部11は、ネットワーク等を介して接続された他の装置との間で、各種情報を送受信する通信インターフェースである。通信部11は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介した他の装置と制御部13(後述)との間の通信を行う。
【0018】
記憶部12は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現され、処理装置10を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが記憶される。記憶部12は、トランザクション処理プログラム121、トランザクション実行履歴DB122及び局所DB123を有する。
【0019】
トランザクション処理プログラム121は、応用プログラム100から入力を受け付けたトランザクション処理プログラムである。トランザクション処理プログラムは、例えば、insert/update操作に関するトランザクション処理を実行するための処理プログラムである。
【0020】
トランザクション実行履歴DB122は、過去のトランザクション実行履歴を記憶する。トランザクション実行履歴DB122は、処理装置10が有するほか、処理装置10が通信可能である外部装置に設けられてもよい。
【0021】
局所DB123は、スレッド毎に用意された局所データベースである。これらは主記憶およびハードディスクなどのハードウェアによって構成される。
【0022】
制御部13は、処理装置10全体を制御する。制御部13は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部13は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部13は、各種のプログラムが動作することにより各種の処理部として機能する。
【0023】
制御部13は、預託量予測部131(予測部)、預託確保部132(確保部)、トランザクション実行部133(実行部)、DB同期部134(同期部)及びプログラム検証部135(検証部)を有する。
【0024】
預託量予測部131は、過去のトランザクション処理の履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測する。預託量予測部131は、トランザクション実行履歴DB122から、過去のトランザクション実行履歴を読み出し、時系列予測技術を適用することで、将来必要となる預託量を予測する。この予測には、時系列予測の問題であり、Holt-winters、ARIMA、VAR、LSTM(参考文献1参照)などの技術を適用可能である。
参考文献1:Faith W. Mutinda, Atsuhiro Nakashima, Koh Takeuchi, Yuya Sasaki, Makoto Onizuka, “Time Series Link Prediction Using NMF”, J. Inf. Process. 27: 752-761 (2019).
【0025】
ここで、なお、預託には、カウンタ、集合の2種類のタイプがある。カウンタは、数量を表す預託であり、(テーブル名, カラム名, 預託量)によって表現される。集合は、レコード集合を表す預託であり、(テーブル名, 預託レコード数)によって表現される。なお、預託量予測部131は、スレッド毎に預託量を予測してもよいし、全スレッドの総量を予測してもよい。
【0026】
預託確保部132は、預託量予測部131によって予測された量の預託を、大域DB110から、スレッド毎に管理される局所DB123に預託として移動して、預託を確保する。預託確保部132は、預託量予測部131によって予測された預託量に基づいて、大域DB110から、指定の量の預託を確保し、局所DB123に格納する。ここで、DBを実行する計算機のスレッド毎にトランザクション処理が実行されるため、局所DB123はスレッド毎に用意する。
【0027】
預託確保部132は、予測された預託量がスレッド毎である場合は、指定のスレッドに対応する局所DB123に預託を用意する。預託確保部132は、大域DB110全体で預託量が予測された場合は、確保した預託を局所DB123に分散する。
【0028】
預託確保部132は、預託がカウンタ(テーブル名, カラム名, 預託量)の場合は、大域DB110において該当のテーブル内のカラムの値から預託量を減算し、局所DB123に格納する。
【0029】
預託確保部132は、預託が集合型(テーブル名, 預託レコード数)の場合は、大域DB110において該当のテーブルから預託レコード数の件数分insert命令を実行してレコードの領域を確保し、各レコードから主キーを得ることで、(テーブル名, {預託レコードの主キー集合})の形で局所DB123に格納する。或いは、預託確保部132は、select命令によって既存のレコード群を確保し、得られたレコード群を預託として局所DB123に格納する。
【0030】
また、預託確保部132は、預託が局所DB123から無くなった際には、預託量予測部131に預託量を予測させ、予測した量の預託を新たに確保し、局所DB123に格納する。
【0031】
トランザクション実行部133は応用プログラム100から入力されるトランザクション処理プログラムを実行する際に、スレッド毎に管理された局所DB123の預託を利用してトランザクション処理をスレッド毎に実行する。トランザクション実行部133は、応用プログラムからのトランザクション処理プログラムを入力とし、トランザクションをスレッドに割り当て、スレッド毎にトランザクション処理を実行する。この際、トランザクション実行部133は、トランザクション処理プログラムを解析し、アクセスするテーブルとカラムとを決定して、局所DB123を併用してトランザクション処理を以下のように実行する。
【0032】
まず、トランザクション実行部133は、局所DB123に確保された預託を利用して、insert処理、或いは、update処理が可能である場合は、大域DB110にアクセスせずにトランザクション処理を完了する。トランザクション実行部133は、局所DB123における集合型の預託を利用して、insert/update操作に関するトランザクション処理をスレッド毎に実行する。
【0033】
具体的には、トランザクション実行部133は、insert処理に対しては、預託として確保されたレコード集合からレコードを払い出し、insert処理を実行してその結果を局所DB123に格納する。
【0034】
トランザクション実行部133は、update処理に対しては、局所DB123に預託として確保されたレコード集合から更新対象のレコードを決定し、update処理を実行して、その結果を局所DB123に反映する。
【0035】
また、トランザクション実行部133は、select、update、delete処理に関しては、大域DB110及び局所DB123の両方に処理を実行する。なお、主キーを条件とした検索については、大域DB110を先に検索して該当レコードが見つかった場合には、局所DB123の検索をスキップ可能である。
【0036】
DB同期部134は、局所DB123に格納されたレコードを大域DB110に移動する。この処理は定期的に実行される。
【0037】
プログラム検証部135は、応用プログラムから入力されるトランザクションプログラム群を解析し、預託の利用の安全性を検証する。トランザクション実行部133は、プログラム検証部135によって安全であると検証された場合には預託を利用する。トランザクション実行部133は、プログラム検証部135によって預託の利用が安全でないことが検証された場合は、預託を利用しない。
【0038】
プログラム検証部135は、応用プログラムから実行されるトランザクションプログラム一式の入力を受け付け、プログラムを解析することで、預託を利用することによる副作用が影響しないことを検証する。
【0039】
副作用の例を説明する。預託を利用してinsert操作を処理することによって、レコードには本来割り当てるべき主キーとは異なる主キーが割り当てられる場合、或いは、update操作の際にユーザに返却される何らかの値(例えば、座席予約における予約番号や座席番号)が本来とは異なる場合がある。この差異を副作用と呼ぶ。この副作用によって、以降のトランザクション操作の振る舞いが変わってしまう可能性がある。
【0040】
プログラム検証部135は、副作用がない場合には、預託の利用の安全ではあると判定し、副作用がある場合には、預託の利用の安全ではないと判定する。そこで、プログラム検証部135は、以下の場合分けを行うことによって、副作用がユーザに影響するか否かを検証する。具体的には、プログラム検証部135は、トランザクション処理によってユーザに対して値を返却しないケース、返却した値を応用プログラムで利用しないケース、返却した値を応用プログラムの別の更新トランザクションでは利用しないケース、または、別の更新トランザクションで利用するが更新対象が元のトランザクションの更新対象と同じケースであるかをプログラム解析によって判定し、判定結果に応じて預託の利用の安全性を検証する。以下、ケース1~3-4を例に、プログラム検証部135による検証を具体的に説明する。
【0041】
まず、ケース1は、預託を利用してinsert/update処理するトランザクションが、ユーザに対して値を返却しないケースである。この場合は、insertによって生成されるレコードの主キー等の違いがユーザから観測されないため、副作用が発生しない。このため、プログラム検証部135は、ケース1であると判定した場合には、預託の利用が安全であると判定する。
【0042】
ケース2は、預託を利用してinsert処理するトランザクションがユーザに対して値を返却するが、応用プログラム側でその値を参照しないケースである。変数がプログラム中でどう利用されているかは、デバッガ等で用いられているprogram slicing(例えば、[online],[令和3年6月17日検索],インターネット<URL:https://en.wikipedia.org/wiki/Wikipedia:When_to_cite>参照)の技術を適用可能である。
【0043】
この場合も、insertによって生成されるレコードの主キー等の違いがユーザから観測されないため、副作用が発生しない。このため、プログラム検証部135は、ケース2であると判定した場合には、預託の利用が安全であると判定する。
【0044】
ケース3は、預託を利用してinsert/update処理するトランザクションがユーザに対してなんらかの値を返却し、ユーザプログラム側でも利用するケースである。この場合は、プログラム検証部135は、返却した値が他の更新トランザクションの入力になっていることを確認する必要がある。
【0045】
具体的には、プログラム検証部135は、預託を利用してinsert/update処理した更新結果のレコードrを参照する他の更新トランザクションにより更新されるレコードを探索し、この探索処理を再帰的に実行することで、レコードrの影響を受けるレコード群Rを特定する。つまり、レコード群Rは、副作用によってレコードrの属性値が変化した場合に、複数のトランザクションを多段に跨って影響を受ける可能性がある全てのレコード群である。この際、レコードrにおいて、預託を利用した副作用のある属性が特定できる場合には、その属性に関する参照に限定してレコード群Rを特定することで、影響範囲を削減することができる。
【0046】
影響を受けるレコード群Rに応じて、副作用の影響の有無は、以下のように判定できる。
【0047】
ケース3-1は、レコード群Rが空集合の場合である。この場合、副作用が影響しないため安全である。このため、プログラム検証部135は、ケース3-1であると判定した場合には、預託の利用が安全であると判定する。
【0048】
ケース3-2は、R={r}の場合である。この場合、レコードr以外に副作用が影響しないため安全である。このため、プログラム検証部135は、ケース3-2であると判定した場合には、預託の利用が安全であると判定する。
【0049】
ケース3-3は、レコード群Rに含まれる任意のレコードの属するテーブルが、レコードrのテーブルと同一である場合である。この場合、レコードrにおいて預託を利用したことによる副作用が、レコードrが属するテーブルの他のレコードに影響する可能性がある。このため、このため、プログラム検証部135は、ケース3-3であると判定した場合には、預託の利用が安全でないと判定し、預託を利用しないようにする。
【0050】
ケース3―4は、レコード群Rに含まれる任意の2つのレコードが、同一のテーブルtに所属する場合である。ケース3-4は、ケース3-3を一般化したケースである。ケース3-4の場合、預託を利用したことによる副作用がテーブルtにおいて生じる可能性がある。このため、プログラム検証部135は、ケース3-4であると判定した場合には、預託の利用が安全でないと判定し、預託を利用しないようにする。
【0051】
入力部14は、処理装置10の操作者からの各種操作を受け付ける入力インターフェースである。例えば、キーボードやマウス等の入力デバイスによって構成される。出力部15は、例えば、液晶ディスプレイやプリンタ等であって、各種情報を出力する。
【0052】
[座席予約適用例]
実際に、実施の形態を列車の座席予約の事例に適用した場合について説明する。図3図5及び図7は、列車の座席予約への適用例について説明する図である。
【0053】
この適用例では、ユーザは希望の日時を入力して候補となる列車の号が表示され、その中から希望の号を選択し、空きがあれば座席を指定せず予約を完了するという例である。この場合、本実施の形態を適用することで以下のように動作する。
【0054】
図3は、通常のデータベースの状態を表しており、大域DB110に5件の予約可能なレコードが格納されている状態を示している。
【0055】
図4に示すように、処理装置10では、預託量予測部131が、トランザクション実行履歴DB122より、過去のトランザクション処理の履歴を読み出し、将来のトランザクション処理に必要となる預託の量を予測する。預託量予測部131は、過去の予約履歴を時系列予測アルゴリズムに入力し、将来の予約の振る舞いを予測する予測モデルを学習させ、例えば、将来1時間以内に予測される予約量を推定する。具体的には、列車番号100号に対して予測件数として2件(スレッド番号4)、列車番号200号に対して3件(スレッド番号1)が推定される。なお、ここでは1レコードが1予約を管理するものとしている。
【0056】
そして、預託確保部132は、大域DB110から集合型の預託を確保し、局所DB123に格納する。この例では、預託確保部132は、2つのスレッドの各局所DB123に、それぞれ3件(スレッド番号1)、2件(スレッド番号4)のレコードを、大域DB110から移動する。
【0057】
図5に示すように、ユーザが列車番号200号に対して座席予約を行う場合であって、スレッド番号1にトランザクションが割り当てられる場合を考える。トランザクション実行部133は、局所DB123を確認して預託が利用できることを判定する。そして、トランザクション実行部133は、局所DB123に格納されている集合型の預託からレコードを1件検索し、予約カラムを“済”と更新することで予約操作を行い、ユーザには、座席番号50Bを返却する。ここで、局所DB123に対するクエリ文の例は、図6に示す。図6は、局所DB123に対するクエリ文の一例を示す図である。
【0058】
図6に示すように、DB同期部134は、定期的に、局所DB123に格納されたレコードを、大域DB110に移動する。図6は、予約済みのレコード(列車番号200号、座席番号50B)は預託として使えなくなったため、DB同期部134は、局所DB123から大域DB110に移動する例を示している。
【0059】
そして、プログラム検証部135によって、預託を利用する場合に副作用が発生する場合が検証される例を示す。座席予約の例では、座席の予約、座席のキャンセルの応用プログラムしかないとする。
【0060】
座席のキャンセルは、座席予約の際にユーザに返却された座席番号50Bと、ユーザが入力した列車番号200号とを入力として、キャンセルが実行される。この場合、予約時に操作したレコードと同一のレコードをキャンセル時に操作するため、上述のケース3-2に該当する。この場合には副作用が生じないことから、プログラム検証部135は、安全に預託を利用可能であることが検証できる。
【0061】
別の例として、預託を利用する場合に副作用が発する例を示す。ここでは、座席予約の際に予約番号を返却し、座席のキャンセルの際に予約番号を入力する場合を考える。但し、予約数が100件を下回る場合はキャンセル不可とすることとし、更に2件のキャンセルが同時発生した場合に、両方のキャンセルを受け付けると100件を下回る場合は、予約番号が小さい方の予約を優先してキャンセルを受け付ける応用プログラムを考える。
【0062】
この場合、予約番号が大きい方の予約をキャンセルする際に、もう片方のキャンセル対象の予約番号を参照してキャンセルの可否を決定しているため、上述のケース3-3に該当する。この場合には副作用が生じることが検証されるため、プログラム検証部135は、安全に預託を利用可能でないと判定し、預託を利用しないようにする。
【0063】
[処理装置の処理手順]
次に、処理装置10の処理手順について説明する。図8は、実施の形態に係る処理方法の処理手順を示すシーケンス図である。
【0064】
図8に示すように、預託量予測部131は、トランザクション実行履歴DB122から、過去のトランザクション処理の履歴を読み出し(ステップS1)に基づいて、将来のトランザクション処理に必要となる預託の量を予測する(ステップS2)。
【0065】
預託確保部132は、預託量予測部131によって予測された預託量を受け(ステップS3)、予測された量のレコード集合を、大域DB110から、スレッド毎に管理される局所DB123に預託として移動して(ステップS4,S5)、預託を確保する。
【0066】
トランザクション実行部133には、応用プログラム100からトランザクション処理プログラムが入力される(ステップS7)。トランザクション実行部133は、トランザクション処理プログラムを実行する際に、スレッド毎に管理された局所DB123の預託を読み出し(ステップS6)、トランザクション処理をスレッド毎に実行し(ステップS8)、レコードを局所DB123に払い出す(ステップS9)。
【0067】
DB同期部134は、定期的に、局所DB123に格納されたレコードを大域DB110に移動する(ステップS10,S11)。
【0068】
また、プログラム検証部135は、応用プログラムから実行されるトランザクションプログラム一式の入力を受け付け(ステップS12)、プログラムを解析することで、預託を利用することによる副作用が影響しないことを検証する(ステップS13)。トランザクション実行部133は、プログラム検証部135によって安全であると検証された場合には、ステップS6で読み出した預託を利用する。トランザクション実行部133は、プログラム検証部135によって預託の利用が安全でないことが検証された場合は、預託を利用しない。
【0069】
[実施の形態の効果]
本実施の形態に係る処理装置10は、過去のトランザクション処理の履歴に基づいて、将来のトランザクション処理に必要となる預託の量を予測し、予測した量の預託を、大域DB110から、スレッド毎に管理される局所DB123に預託として移動して、預託を確保する。そして、処理装置10は、応用プログラムから入力されるトランザクション処理プログラムを実行する際に、局所DB123の預託を利用してトランザクション処理をスレッド毎に実行する。また、処理装置10は、局所DB123に格納されたレコードを大域DB110に移動する。
【0070】
したがって、処理装置10は、大域DB110にアクセスする代わりに、スレッド毎に管理された局所DB123の預託を利用して、insert/update操作に関するトランザクション処理を実行する。そして、処理装置10では、適切な預託の自動設定が可能となる。このため、処理装置10によれば、トランザクション処理を並行実行するDBMSにおいて、トランザクション処理の並列度を適切に向上することができ、処理全体を高速化することができる。
【0071】
また、処理装置10は、予測した量のレコード集合を預託として確保し、集合型の預託を利用することで、集合型のデータに対するinsert/update操作に関するトランザクション処理をスレッド毎に独立に実行することを可能とする。これによって、処理装置10では、トランザクション処理の高速化を達成することができる。
【0072】
さらに、処理装置10は、応用プログラムから入力されるトランザクションプログラム群を解析し、預託の利用の安全性を検証し、安全である場合は預託を利用し、そうでない場合は預託を利用しない。このため、処理装置10では、安全に預託を利用することができる。
【0073】
[実施の形態のシステム構成について]
処理装置10の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、処理装置10の機能の分散及び統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。
【0074】
また、処理装置10においておこなわれる各処理は、全部または任意の一部が、CPU、GPU(Graphics Processing Unit)、及び、CPU、GPUにより解析実行されるプログラムにて実現されてもよい。また、処理装置10においておこなわれる各処理は、ワイヤードロジックによるハードウェアとして実現されてもよい。
【0075】
また、実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともできる。もしくは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述及び図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【0076】
[プログラム]
図9は、プログラムが実行されることにより、処理装置10が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインターフェース1030、ディスクドライブインターフェース1040、シリアルポートインターフェース1050、ビデオアダプタ1060、ネットワークインターフェース1070を有する。これらの各部は、バス1080によって接続される。
【0077】
メモリ1010は、ROM1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインターフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインターフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインターフェース1050は、例えばマウス1110、キーボード1123に接続される。ビデオアダプタ1060は、例えばディスプレイ1122に接続される。
【0078】
ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、処理装置10の各処理を規定するプログラムは、コンピュータ1000により実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、処理装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0079】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0080】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインターフェース1070を介してCPU1020によって読み出されてもよい。
【0081】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0082】
10 処理装置
11 通信部
12 記憶部
13 制御部
14 入力部
15 出力部
110 大域DB
122 トランザクション実行履歴DB
123 局所DB
131 預託量予測部
132 預託確保部
133 トランザクション実行部
134 DB同期部
135 プログラム検証部
図1
図2
図3
図4
図5
図6
図7
図8
図9