JP2006163596A - 情報処理システム、制御方法、及びプログラム - Google Patents

情報処理システム、制御方法、及びプログラム Download PDF

Info

Publication number
JP2006163596A
JP2006163596A JP2004351492A JP2004351492A JP2006163596A JP 2006163596 A JP2006163596 A JP 2006163596A JP 2004351492 A JP2004351492 A JP 2004351492A JP 2004351492 A JP2004351492 A JP 2004351492A JP 2006163596 A JP2006163596 A JP 2006163596A
Authority
JP
Japan
Prior art keywords
processing
target data
program
transaction
database
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
JP2004351492A
Other languages
English (en)
Inventor
Toshio Suganuma
菅沼 俊夫
Hideaki Komatsu
小松 秀昭
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2004351492A priority Critical patent/JP2006163596A/ja
Priority to US11/294,238 priority patent/US7539679B2/en
Publication of JP2006163596A publication Critical patent/JP2006163596A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Landscapes

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

Abstract

【課題】データベースに対するトランザクション処理をこれまでより高速化する。
【解決手段】データベースに対するトランザクション処理を行う情報処理システムであって、データベースに対するトランザクション処理が記述されたプログラムである処理プログラムを取得する処理プログラム取得部と、データベースのうち、処理プログラムのトランザクション処理によりアクセスされる対象となる少なくとも1つの対象データを選択する対象データ選択部と、処理プログラムにおける、最後に対象データをアクセスしてから処理結果をコミットするまでに実行される部分に、対象データのうちトランザクション処理により更新された対象データをデータベースに書き戻す対象データ書戻処理を挿入する書戻処理挿入部とを備える情報処理システム。
【選択図】図3

Description

本発明は、情報処理システム、制御方法、及びプログラムに関する。特に本発明は、 データベースに対するトランザクション処理を行う情報処理システム、制御方法、及びプログラムに関する。
近年、メインフレーム等の汎用大型計算機により従来処理されていたバッチ処理が、ウェブアプリケーションサーバ(WAS:Web Application Server)等のJ2EEシステム上で実現されるようになってきている。J2EE(Java 2 Enterprise Edition)は、サンマイクロシステムズ社のプログラミング言語「Java2」の機能セットの一つで、企業の業務システムや電子商取引等で使われるサーバに必要な機能をまとめたものである。J2EEを利用することにより、J2EEに備わっている機能セットを最大限再利用し組み合わせることができるので、低い開発コストと高い信頼性というシステム上の利点を得ることができる。
また、バッチ処理とは、指定された入力ストリームから入力データを読み込み、これに基づきあるアプリケーションプログラムのロジックを実行し、その実行結果を出力ストリームに出力するという一連の処理段階を、大量のデータに対して繰り返す処理をいう。従来、このバッチ処理をJ2EEシステムにおいて実行する場合に、その実行性能が問題となる場合があった。例えば、バッチ処理でデータが必要になる毎にその都度そのデータをデータベースから取得すると、データの取得の毎にデータベースに対するアクセスが発生し、効率が悪い場合があった。
これに対して、従来、アプリケーションプログラムの開発者は、アプリケーションプログラムの性質を知った上で、手作業でバッチ処理を最適化していた。例えば、バッチ処理で必要なデータを処理開始前に予めまとめて取得するコードをプログラムに記述することで、処理効率を向上させていた。また、関連技術として、バッチ処理の効率化をある程度自動的に行う技術が提案されている(非特許文献1参照。)。この技術および関連技術によれば、バッチ処理に含まれる複数のジョブまたはジョブステップについて、ジョブやジョブステップ間でデータを送受信する処理を効率化できる。
更に他の関連技術が、従来、ベクトルプロセッサ用のコンパイラにおいて用いられている。このコンパイラは、まず、コンパイル対象となるプログラムについて、そのプログラムによる処理がその処理中に更新されたデータに依存するデータ依存性を判断する。そして、データ依存性が無い場合には、ベクトルロードストア命令を使ってメモリの連続したデータを一括してベクトルレジスタに読み出させる。この技術によれば、メモリからのデータの読出し頻度を低減して、プログラムの処理効率を向上させることができる。
情報処理学会論文誌Vol. 35 No. 5 (May 1994)
しかしながら、上述のように手作業でバッチ処理を最適化するのには限界があり、アプリケーションプログラム毎に開発者の努力により最適化を行わなければならない。また、非特許文献1の技術は、バッチ処理の複数のジョブ間における入出力関係を最適化することを目的としており、単一のジョブについてそのジョブ自体の処理を効率化することはできなかった。また、当該技術においては、入出力ジョブによる動的なバッファチェック機構が提案されているが、この機構によっては、どのようなデータをどのようなタイミングでバッファに格納するかを制御することはできなかった。
また、ベクトルプロセッサ用のコンパイラの手法は、コンピュータの主記憶装置(メモリ)をデータベースとみなし、CPUのレジスタをバッファメモリとみなすことによりデータベースのトランザクションに応用可能とも考えられる。しかしながら、データベースはコミット処理毎にその内容が更新されなければならず、主記憶装置に対するデータ更新のタイミングとは異なっている。このため、当該手法をデータベースのトランザクションにそのまま適用することはできない。
更に、この技術は、対象とするプログラムを完全に解析し(do-allタイプのループである等)、データ依存性の無いことを判断できることが前提となる。このため、Javaのような近年普及したプログラミング言語においては、静的に完全な解析を行うのが極めて困難であるため、適用対象とならない場合が多い。例えば、Javaの特殊なメソッド呼び出し(具体的にはinvokevirtualやinvokeinterface)は、予め定められた複数のメソッドのうち実行時に決定される何れか1つのメソッドを呼び出す。このため、どのメソッドが呼び出されるかを静的に判断することはできず、データ依存性を判断することができない。
そこで本発明は、上記の課題を解決することのできる情報処理システム、制御方法、及びプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の形態においては、データベースに対するトランザクション処理を行う情報処理システムであって、データベースに対するトランザクション処理が記述されたプログラムである処理プログラムを取得する処理プログラム取得部と、データベースのうち、処理プログラムのトランザクション処理によりアクセスされる対象となる少なくとも1つの対象データを選択する対象データ選択部と、処理プログラムにおける、最後に対象データをアクセスしてから処理結果をコミットするまでに実行される部分に、対象データのうちトランザクション処理により更新された対象データをデータベースに書き戻す対象データ書戻処理を挿入する書戻処理挿入部とを備える情報処理システム、当該情報処理システムの制御方法、及び当該情報処理システムを制御するプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、データベースに対するトランザクション処理をこれまでより高速化できる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、バッチ処理システム10の全体構成を示す。バッチ処理システム10は、アプリケーションサーバ30と、データベース管理システム40とを備える。アプリケーションサーバ30は、データベース48内のデータの少なくとも一部をキャッシュするバッファメモリ35と、トランザクション処理により更新されたデータを一時的に格納する書込用キャッシュ38とを有する。データベース管理システム40は、データベース管理サーバ45と、データベース48とを有する。
データベース管理サーバ45は、アプリケーションサーバ30から受けた指示に応じてデータベース48をアクセスする。アプリケーションサーバ30は、本発明に係る情報処理システムの一例であり、例えば、J2EE(Java2 Enterprise Edition)の仮想マシンを搭載しており、また、JDBC(Java DataBase Connectivity)の機能を搭載している。アプリケーションサーバ30は、データベース48に対するトランザクション処理が記述されたJavaプログラムである処理プログラム20を取得して、その処理プログラム20に対してトランザクション処理を高速化させる変更を行う。そして、アプリケーションサーバ30は、処理プログラム20を実行することにより、データベース管理システム40に指示してデータベース48に対してトランザクション処理を行う。
この際、アプリケーションサーバ30は、トランザクション処理に用いるデータを予めバッファメモリ35に一括して取得する。これにより、トランザクション処理中におけるデータベース48へのアクセスに対してバッファメモリ35にキャッシュしたデータを読み出させ、データベース48の読出し頻度を低減させることを目的とする。また、アプリケーションサーバ30は、トランザクション処理により更新されたデータを書込用キャッシュ38に順次蓄積し、コミット処理前までに一括してそのデータをデータベース48に書き戻す。これにより、データベース48に対するデータの書込み頻度を低減し、トランザクション処理を高速化することを目的とする。
図2は、処理プログラム20の一例を示す。1行目から27行目までのプログラムコードは、全体で1つのバッチ処理を示す。3行目のプログラムコードは、バッチ処理の入力ストリーム及び出力ストリームを開き、バッチ処理用のビーンであるバッチセッションビーンを生成する処理を示す。6行目のプログラムコードは、バッチ処理用の入力データを取得する処理を示す。そして、9行目から24行目までのプログラムコードは、バッチ処理におけるトランザクション処理の実体を示す。
11行目のプログラムコードは、トランザクション処理の開始を示す開始処理部分である。14行目から19行目のプログラムコードは、チェックポイントの候補を境界としてバッチ処理を分割した内側ループを示す。チェックポイントの位置は予め静的に定められていなくともよく、チェックポイントの候補の中から管理ポリシーによって動的に定められてもよい。即ち例えば、バッチ処理がオンライン処理と平行する昼間の運用時は、バッチ処理のみを行う夜間の運用時と比較して、チェックポイントの間隔を短く設定してもよい。
そして、21行目のプログラムコードは、チェックポイントのためのコンテナサービスを呼び出す処理を示す。23行目のプログラムコードは、トランザクション処理の処理結果をコミットする処理を示すコミット処理部分である。26行目のプログラムコードは、バッチ処理に用いた入出力ストリーム、又は、バッチセッションビーン等のために確保された記憶領域をメモリから解放する処理を示す。
図3は、アプリケーションサーバ30の機能を機能ブロックに分類して示す。アプリケーションサーバ30は、静的な解析を行うことにより処理プログラム20を処理挿入済プログラム400に変換する静的解析部分32と、処理挿入済プログラム400から呼び出されてバッチ処理の実行時(実行直前、直後、又は実行中)に処理を行う実行時処理部分34として機能する。静的解析部分32は、処理プログラム取得部300と、開始処理検出部310と、コミット処理検出部320と、対象データ選択部330と、取得処理挿入部340と、生存区間検出部350と、書戻処理挿入部360と、データ依存性判断部370とを有する。
処理プログラム取得部300は、処理プログラム20を取得する。開始処理検出部310は、処理プログラム20から、トランザクション処理の開始を示す開始処理部分を検出する。コミット処理検出部320は、処理プログラム20から、トランザクション処理の処理結果をコミットする処理を示すコミット処理部分を検出する。対象データ選択部330は、データベース48のうち、処理プログラム20のトランザクション処理によりアクセスされる対象となる少なくとも1つの対象データを選択する。具体的には、対象データ選択部330は、まず、開始処理検出部310により検出された開始処理部分、及び、コミット処理検出部320により検出されたコミット処理部分の間のプログラムコードを特定する。そして、開始処理検出部310は、そのプログラムコードを解析することによりそのプログラムコード中で用いられる可能性のある全てのデータを対象データとして選択する。
取得処理挿入部340は、処理プログラム20における、トランザクション処理の開始から最初に対象データにアクセスするまでに実行される部分に、対象データをデータベース48から一括して取得してバッファメモリ35に格納する対象データ取得処理を挿入する。例えば、取得処理挿入部340は、処理プログラム20中におけるトランザクション開始処理部分の次に実行される処理として、対象データ取得処理を挿入してもよい。
また、データ依存性判断部370は、処理プログラム20について、処理プログラム20のトランザクション処理がそのトランザクション処理の処理中に更新された対象データに依存するデータ依存性を判断し、判断結果を取得処理挿入部340に送る。取得処理挿入部340は、処理プログラム20がデータ依存性を有する可能性がある場合に、対象データ取得処理として更に、対象データの識別情報からその対象データのバッファメモリ35における格納位置を求めるハッシュ関数を生成するハッシュ関数生成処理を挿入する。そして、取得処理挿入部340は、対象データ取得処理等を挿入済の処理プログラム20を生存区間検出部350に送る。
生存区間検出部350は、処理プログラム20において用いられる各々の対象データの生存区間を検出し、検出結果と共に処理プログラム20を書戻処理挿入部360に送る。書戻処理挿入部360は、処理プログラム20における、最後に対象データをアクセスしてから処理結果をコミットするまでに実行される部分に、対象データのうちトランザクション処理により更新された対象データをデータベース48に書き戻す対象データ書戻処理を挿入する。例えば、書戻処理挿入部360は、処理プログラム20中におけるコミット処理部分に先立ってコミット処理の直前に実行される処理として、対象データ書戻処理を挿入してもよい。対象データ取得処理及び対象データ書戻処理等が挿入された処理プログラムを処理挿入済プログラム400とする。
更に、好ましくは、書戻処理挿入部360は、処理プログラム20における、処理結果をコミットした後に実行される部分に、対象データ書戻処理に加えて更に、その部分において既に生存区間が終了している対象データをバッファメモリ35において無効化する処理を挿入してもよい。これにより、以降の処理で使用されない対象データをバッファメモリ35から取り除くことができ、バッファメモリ35の記憶領域を有効活用できる。
そして、処理挿入済プログラム400が実行された場合に、実行時処理部分34の処理が開始される。実行時処理部分34は、対象データ取得処理部380と、対象データ書戻処理部385と、ハッシュ関数生成部390と、バッファ書込み部395とを有する。対象データ取得処理部380は、トランザクション処理の開始から最初に対象データにアクセスするまでに実行され、対象データをデータベース管理システム40から一括して取得してバッファメモリ35に格納する。対象データ書戻処理部385は、トランザクション処理の終了からコミット処理までの間に実行される。そして、対象データ書戻処理部385は、処理プログラム20がデータ依存性を有しない場合には、書込用キャッシュ38に順次蓄積された対象データを一括してデータベース48に書き戻す。また、処理プログラム20がデータ依存性を有する可能性がある場合には、バッファメモリ35において更新された対象データを一括してデータベース48に書き戻す処理を行う。
処理プログラム20がデータ依存性を有する可能性がある場合に、ハッシュ関数生成部390及びバッファ書込み部395は、以下の処理を行う。ハッシュ関数生成部390は、処理プログラム20のトランザクション処理により対象データがアクセスされるアクセスパターンに基づいて、ハッシュ関数を生成するハッシュ関数生成処理を行う。例えば、ハッシュ関数生成部390は、対象データ取得処理が実行された場合に、トランザクション処理の開始に先立って当該ハッシュ関数を生成してもよい。そして、バッファ書込み部395は、処理プログラム20によるトランザクション処理の処理中に対象データが更新される毎に更新されたその対象データをバッファメモリ35に書き込む。これにより、以降のトランザクション処理によりバッファメモリ35から読み出される対象データを最新の状態に保つことができる。
図4は、処理挿入済プログラム400の一例を示す。処理挿入済プログラム400は、プログラム中における開始処理部分の次に実行される処理として、対象データ取得処理を呼び出す部分を含む(12行目)。また、処理挿入済プログラム400は、プログラム中におけるコミット処理部分に先立ってコミット処理の直前に実行される処理として、対象データ書戻処理を呼び出す部分を含む(22行目)。これにより、トランザクション処理に用いるデータを予めバッファメモリ35に一括して取得することができ、トランザクション処理により更新されたデータをコミット処理直前に一括してデータベース48に書き戻すことができる。
図5は、アプリケーションサーバ30が処理プログラム20に対して静的に行う処理のフローチャートである。処理プログラム取得部300は、処理プログラム20を取得した場合、例えばJ2EEにおいて処理プログラム20を配置(deployment)した場合に(S500)、以下の処理を行う。開始処理検出部310は、処理プログラム20から、トランザクション処理の開始を示す開始処理部分を検出する(S510)。コミット処理検出部320は、処理プログラム20から、トランザクション処理の処理結果をコミットする処理を示すコミット処理部分を検出する(S520)。
対象データ選択部330は、データベース48のうち、処理プログラム20のトランザクション処理によりアクセスされる対象となる少なくとも1つの対象データを選択する(S530)。具体的には、対象データ選択部330は、まず、開始処理検出部310により検出された開始処理部分、及び、コミット処理検出部320により検出されたコミット処理部分の間のプログラムコードを特定する。そして、対象データ選択部330は、そのプログラムコードを解析することによりそのプログラムコードから呼び出されるメソッドのコールグラフを生成する。グラフ生成においては、メソッド呼び出しの対象を特定するために、メソッド呼び出し元オブジェクトの型解析や、クラス階層解析を行う。
対象データ選択部330は、生成したコールグラフを走査することにより、バッチ処理を構成するループの各々の繰り返しにおいて、CMP entity bean又はJDBCアクセスの結果がどのように使われているかを判断する。具体的には、CMP beanでは、get又はsetとフィールド名とを組み合わせたアクセッサメソッドが使われるため、対象データ選択部330は、アクセッサメソッドを検出することによりどのビーンのどのフィールドがアクセスされるかを判断することができる。また、JDBCを使って直接アクセスする場合でも、対象データ選択部330は、prepareStatementで指定されるSQL文やそのResultSetに対するアクセスを解析することによって、どのデータがアクセスされるかを判断することができる。
取得処理挿入部340は、処理プログラム20における、トランザクション処理の開始から最初に対象データにアクセスするまでに実行される部分に、対象データをデータベース48から取得してバッファメモリ35に格納する対象データ取得処理を挿入する(S540)。具体的には、取得処理挿入部340は、当該部分において、複数の対象データをベクトル化したデータとして扱うものとし、当該ベクトル化したデータを、当該複数の対象データの数より少ない回数により一括して取得させるSQLを実行させる。また、好ましくは、取得処理挿入部340は、対象データ選択部330によるプログラム解析により対象データが読出し専用であるか否かを判断し、読出し専用である場合においては、排他制御等が不要であり高速処理が可能な所定のSQLを実行させてもよい。
生存区間検出部350は、処理プログラム20において用いられる各々の対象データの生存区間を検出する(S550)。書戻処理挿入部360は、処理プログラム20における、最後に対象データをアクセスしてから処理結果をコミットするまでに実行される部分に、対象データのうちトランザクション処理により更新された対象データをデータベース48に書き戻す対象データ書戻処理を挿入する(S555)。更に、好ましくは、書戻処理挿入部360は、処理プログラム20における、対象データ書戻処理から処理結果をコミットするまでに実行される部分に、対象データ書戻処理に加えて更に、その部分において既に生存区間が終了している対象データをバッファメモリ35において無効化する処理を挿入してもよい。
データ依存性判断部370は、処理プログラム20について、処理プログラム20のトランザクション処理がそのトランザクション処理の処理中に更新された対象データに依存するデータ依存性を判断する(S570)。処理プログラム20がデータ依存性を有する場合に、データ依存性判断部370は、実行時処理部分34においてハッシュ関数生成部390の処理を有効化する設定を行い(S585)、バッファ書込み部395による処理を有効化する設定を行う(S590)。なお、図4の処理挿入済プログラム400は、データ依存性を有しない例のため、これらの設定は行われない。
図6は、アプリケーションサーバ30が処理挿入済プログラム400に基づいて実行時に行う処理のフローチャートである。処理挿入済プログラム400に基づき、アプリケーションサーバ30は、トランザクション処理に用いる入力データを読み出す(S600、図4の6行目に対応)。次に、アプリケーションサーバ30は、トランザクション処理を開始するための初期化処理である開始処理を行う(S605、図4の11行目に対応)。
そして、対象データ取得処理部380は、対象データをデータベース管理システム40のデータベース48から取得してバッファメモリ35に格納する(S610、図4の12行目に対応)。具体的には、対象データ取得処理部380は、静的な解析によって特定されたCMP beanやJDBCアクセスの情報と、次のコミット処理までに入力される入力データとに基づいて、複数の対象データをベクトルデータとして取得するEJBQL(EJB Query Language)文又はSQL文を動的に生成する。複数の対象データをベクトルデータとして取り扱う形態は入力データに応じて次のように種々のものが考えられ、実際にはこれらの組み合わせとなる。
(1)キー・インデックスの範囲で指定(例えば、SELECT … WHERE 0 <= key and key < 100)
(2)キー・インデックス以外で指定(例えば、SELECT … WHERE DepositAmount > 100)
(3)キー・インデックスを1つずつ並べて指定(例えば、SELECT … WHERE key = 0 or key = 10 or key = 1000)
(4)CMR(Container Managed Relationships)により指定された読出し先を指定(例えば、SELECT … FROM Customer AS c, IN (c.accounts))
そして、アプリケーションサーバ30は、CMP beanを用いて対象データにアクセスする(S620、図4の16行目から呼出される処理に対応)。このとき、アクセスはデータベース48ではなくバッファメモリ35に対して行われる。トランザクション処理の結果対象データが更新された場合には、アプリケーションサーバ30は、その更新結果を書込用キャッシュ38に格納する。一例として、JDBCver2.0に備わっているSQLであるaddBatchを呼び出せば、更新結果を書込用キャッシュ38に格納することができる。次に、アプリケーションサーバ30は、次の入力データを読み出す(S630、図4の18行目の処理に対応)。
チェックポイント条件が成立しない場合には(S640:NO)、アプリケーションサーバ30は、S620に処理を戻す。一方チェックポイント条件が成立した場合に(S640:YES)、対象データ書戻処理部385は、対象データ書戻処理を行う(S650、図4の22行目の処理に対応)。具体的には、対象データ書戻処理部385は、トランザクション処理中に更新された対象データをベクトルデータとして更新された更新データの数より少ない回数でデータベース48に書き戻すベクタ型更新処理を行う。これにより、対象データが更新された時にその都度書き込む場合と比較してトランザクション処理を高速化できる。
そして、アプリケーションサーバ30は、トランザクション処理の処理結果をコミットする処理を行う(S660、図4の23行目の処理に対応)。また、好ましくは、アプリケーションサーバ30は、処理結果をコミットした時点で既に生存区間が終了している対象データをバッファメモリ35において無効化する処理を行ってもよい(S670)。最後に、アプリケーションサーバ30は、バッチ処理を終了する終了条件が成立するか否かを判断し(S680)、終了条件が成立する場合に(S680:YES)、バッチ処理を終了する。終了条件が成立しない場合には(S680:NO)、S605に処理を戻して次のトランザクション処理を行う。
図7は、アプリケーションサーバ30が処理挿入済プログラム400に基づいて実行時に行う処理のタイミングチャートを示す。(a)は、処理挿入済プログラム400に基づく処理を示す。一方、(b)は、処理プログラム20に変更を加えることなく実行した場合の処理を対比して示す。(a)によれば、ベクタ型取得処理及びベクタ型更新処理が、内側ループの繰り返しの前後で一度ずつ実行されている。これに対して、(b)においては、内側ループの各々の繰り返しの前後で、通常の取得処理及び更新処理が毎回実行されている。本図からも明らかなように、本実施例のアプリケーションサーバ30によれば、データベース48へのアクセス頻度を低減することによりトランザクション処理を大幅に高速化できる。
続いて、図8から図11を用いて、処理プログラム20がデータ依存性を有する可能性がある場合について説明する。
図8は、処理プログラム20の他の例を示す。(a)は、処理プログラム20のプログラムコードを示し、(b)は、そのプログラムコードに入力される入力データを示す。1行目から26行目までのプログラムコードは、全体で1つのバッチ処理を示す。3行目のプログラムコードは、バッチ処理用の入力データを取得する処理を示す。そして、6行目から25行目までのプログラムコードは、バッチ処理におけるトランザクション処理の実体を示す。
8行目のプログラムコードは、トランザクション処理の開始を示す開始処理部分である。11行目から20行目のプログラムコードは、チェックポイントの候補を境界としてバッチ処理を分割した内側ループを示す。22行目のプログラムコードは、チェックポイントのためのコンテナサービスを呼び出す処理を示す。24行目のプログラムコードは、トランザクション処理の処理結果をコミットする処理を示すコミット処理部分である。
このプログラムコードは、customerAIdにより指定された口座から、customerBIdにより指定された口座に、amountにより指定された金額を振り込む処理を示す。具体的には、まず、3行目のプログラムコードによって 、入力データの1行目のメッセージが読み出される。そして、13行目のプログラムコードによって、customerAIdの値をプライマリーキーとしてインターフェイスaccount_homeに対してアクセスし、その結果、customerAIdにより指定された口座を示すCMP beanが生成される。
同様に、14行目のプログラムコードによって、customerBIdの値をプライマリーキーとしてインターフェイスaccount_homeに対してアクセスし、その結果、customerBIdにより指定された口座を示すCMP beanが生成される。生成されたこれらのビーンをaccountビーンと呼ぶ。このビーンは、残高(balance)を示すデータを含み、また、残高を取得するメソッド(getBalance)と、残高を設定するメソッド(setBalance)とを含む。
そして、16行目のプログラムコードによって、customerAIdの残高から振込額を差し引いた値が、customerAIdの新たな残高として設定される。また、17行目のプログラムコードによって、customerBIdの残高に振込額を加えた値が、customerBIdの新たな残高として設定される。最後に19行目のプログラムコードによって、次に処理の対象とすべき入力データを読み出して、11行目に処理を戻す。
このように、内側ループにおいては、ループの繰り返し毎に、入力データにより指定された口座間で資金を移動する。そして、各口座に対しては同一のインターフェイス(account_home)によりアクセスされ、振込元及び振込先の各々を示す2つのプライマリーキーがもちいられる(具体的にはcustomerAId, customerBId)。このため、プログラムコードを解析することによっては、データ依存性を有しないと判断することはできない。実際に、(b)の入力データによれば、1行目でcustomerBIdにより指定された振込先口座が、3行目でcustomerAIdにより振込元口座として指定されており、データ依存性が発生している。
図9は、処理挿入済の処理プログラム20を示す。トランザクション処理の開始を示す開始処理部分の次に実行される部分に、対象データ取得処理が挿入されている。また、トランザクション処理の処理結果をコミットするコミット処理部分の直前に実行される部分に、対象データ書き戻し処理が挿入されている。
図10は、本例においてアプリケーションサーバ30が実行時に行う処理のフローチャートである。アプリケーションサーバ30は、トランザクション処理に用いる入力データを読み出す(S700、図9の3行目に対応)。次に、アプリケーションサーバ30は、トランザクション処理を開始するための初期化処理である開始処理を行う(S705、図9の8行目に対応)。
そして、対象データ取得処理部380は、対象データをデータベース管理システム40のデータベース48から取得してバッファメモリ35に格納する(S710、図9の9行目に対応)。この場合、対象データ取得処理部380は、複数の対象データをベクトル化したデータを扱うものとし、そのベクトル化したデータを複数の対象データの数より少ない処理回数で取得する。これにより、対象データが必要になったときにその都度読み出す場合と比較してトランザクション処理を高速化できる。
そして、処理プログラム20がデータ依存性を有する可能性があるので、ハッシュ関数生成部390は、処理プログラム20のトランザクション処理により対象データがアクセスされるアクセスパターンに基づいて、ハッシュ関数800を生成する(S715、図9の9行目の処理内)。そして、アプリケーションサーバ30は、CMP bean A及びCMP bean Bを用いて、対象データにアクセスする(S720、図4の13行目から17行目の処理に対応)。
バッファ書込み部395は、処理プログラム20によるトランザクション処理の処理中に対象データが更新される毎に更新されたその対象データをバッファメモリ35に書き込む(S730、図9の16行目から17行目の処理内)。例えば、バッファ書込み部395は、更新されたその対象データの識別情報をキーとして、その対象データがバッファメモリ35内で格納される格納位置をハッシュ関数800により求めて、バッファメモリ35においてその格納位置に格納された対象データを更新する。
チェックポイント条件が成立しない場合には(S740:NO)、アプリケーションサーバ30は、S720に処理を戻す。一方チェックポイント条件が成立した場合に(S740:YES)、対象データ書戻処理部385は、対象データ書戻処理を行う(S750、図9の23行目の処理に対応)。具体的には、対象データ書戻処理部385は、更新された対象データをバッファメモリ35から選択し、選択したそれらの対象データの各々を書込用キャッシュ38に格納する。例えば、対象データ書戻処理部385は、更新された対象データの各々について、JDBCのaddBatchを実行すればよい。そして、対象データ書戻処理部385は、書込用キャッシュ38に格納した対象データを一括してデータベース48に書き戻す処理を行う。一例として、対象データ書戻処理部385は、JDBCのexecuteBatchを実行すればよい。そして、アプリケーションサーバ30は、トランザクション処理の処理結果をコミットする処理を行う(S760、図9の24行目の処理に対応)。最後に、アプリケーションサーバ30は、バッチ処理を終了する終了条件が成立するか否かを判断し(S770)、終了条件が成立する場合に(S770:YES)、バッチ処理を終了する。終了条件が成立しない場合には(S770:NO)、S705に処理を戻して次のトランザクション処理を行う。
図11は、アプリケーションサーバ30が処理プログラム取得部300を用いて対象データを操作する処理の詳細を示す。処理プログラム20がデータ依存性を有する可能性があるので、ハッシュ関数生成部390は、処理プログラム20のトランザクション処理により対象データがアクセスされるアクセスパターンに基づいて、ハッシュ関数800を生成する。例えば、識別情報が数値であって、数値が連続する複数の対象データが順次アクセスされる場合には、識別情報の下位の桁をハッシュキーとするハッシュ関数を生成してもよい。これにより、ハッシュキーを衝突させにくくして、対象データに対するアクセスを効率化できる。
対象データ取得処理部380は、トランザクション処理の直前に、取得した各々の対象データの識別情報の少なくとも一部をハッシュキーとして、その対象データがバッファメモリ35内で格納される格納位置をハッシュ関数800により求める。そして、対象データ取得処理部380は、その格納位置にその対象データを格納する。
そして、バッファ書込み部395は、処理プログラム20によるトランザクション処理の処理中に対象データが更新された場合に、その対象データの識別情報の少なくとも一部をハッシュキーとして、その対象データがバッファメモリ35内で格納されている格納位置をハッシュ関数800により求める。そして、バッファ書込み部395は、バッファメモリ35においてその格納位置に格納された対象データを更新し、その対象データに対応してその対象データが更新されたことを示す情報を格納する。
このように、データ依存性が不明であってバッファメモリ35を動的に更新しなければならない場合であっても、ハッシュ関数を効果的に用いることでトランザクション処理を効率化できる。また、対象データがアクセスされるアクセスパターンを特定できる場合においては、ハッシュキーの衝突を回避することにより処理を一層効率化できる。
図12は、アプリケーションサーバ30のハードウェア構成の一例を示す。アプリケーションサーバ30は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、アプリケーションサーバ30が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020を介して入出力チップ1070に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、アプリケーションサーバ30の起動時にCPU1000が実行するブートプログラムや、アプリケーションサーバ30のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、RAM1020を介して入出力チップ1070に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
アプリケーションサーバ30に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出されアプリケーションサーバ30にインストールされて実行される。プログラムがアプリケーションサーバ30等に働きかけて行わせる動作は、図1から図11において説明したアプリケーションサーバ30における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをアプリケーションサーバ30に提供してもよい。
図13は、本実施例の効果を実証する実験の概略を示す。また、図14は、本実施例の効果を実証する実験に用いた処理プログラム20を示す。実験環境としては、データベース48としてIBMコーポレーションのDB2システムを用い、バッファメモリ35としてクラウドスケープ(cloudscape)を用いた。ここで、クラウドスケープとは、ハードディスク等に代えてメモリを記憶領域とし、アプリケーションサーバと同一のプロセスの中でデータベースと同一の動作をするJavaベースのプログラムである。そして、バッファメモリ35を用いた最適化を未適用の第1の場合と、対象データをトランザクション処理に先立ってバッファメモリ35に取得する第2の場合と、対象データをトランザクション処理に先立ってJavaのオブジェクトとして取得する第3の場合とを比較した。
なお、第2の場合が本例に対応しており、第3の場合は、バッファメモリを制御する処理さえ不必要となるので、トランザクション処理効率化の上限を示すこととなる。
以上の各場合について、同一の処理を行う処理プログラムを実行して所要時間を計測した。図14に示す処理プログラム20は、第2の場合のプログラム例を示し、具体的には、内側ループにおいて、データベース48又はバッファメモリ35等から1エントリの対象データを読出し、所定の計算を行ってその対象データを更新するという操作を実行する。そして、外側ループにおいて、更新したデータをコミットする処理を行う。
この実験の結果、第2の場合においては、最適化を未適用の場合と比較して2.2倍の性能向上が確かめられた。また、第3の場合においては、最適化を未適用の場合と比較して15倍程度の性能向上が確かめられた。このことから、クラウドスケープに代えてJavaのオブジェクトとしてバッファメモリ35にキャッシュすることにより、より一層性能を向上させることができると考えられる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、バッチ処理システム10の全体構成を示す。 図2は、処理プログラム20の一例を示す。 図3は、アプリケーションサーバ30の機能を機能ブロックに分類して示す。 図4は、処理挿入済プログラム400の一例を示す。 図5は、アプリケーションサーバ30が処理プログラム20に対して静的に行う処理のフローチャートである。 図6は、アプリケーションサーバ30が処理挿入済プログラム400に基づいて実行時に行う処理のフローチャートである。 図7は、アプリケーションサーバ30が処理挿入済プログラム400に基づいて実行時に行う処理のタイミングチャートを示す。 図8は、処理プログラム20の他の例を示す。 図9は、処理挿入済の処理プログラム20を示す。 図10は、本例においてアプリケーションサーバ30が実行時に行う処理のフローチャートである。 図11は、アプリケーションサーバ30が処理プログラム取得部300を用いて対象データを操作する処理の詳細を示す。 図12は、アプリケーションサーバ30のハードウェア構成の一例を示す。 図13は、本実施例の効果を実証する実験の概略を示す。 図14は、本実施例の効果を実証する実験に用いた処理プログラム20を示す。
符号の説明
10 バッチ処理システム
20 処理プログラム
30 アプリケーションサーバ
32 静的解析部分
34 実行時処理部分
35 バッファメモリ
38 書込用キャッシュ
40 データベース管理システム
45 データベース管理サーバ
48 データベース
300 処理プログラム取得部
310 開始処理検出部
320 コミット処理検出部
330 対象データ選択部
340 取得処理挿入部
350 生存区間検出部
360 書戻処理挿入部
370 データ依存性判断部
380 対象データ取得処理部
385 対象データ書戻処理部
390 ハッシュ関数生成部
395 バッファ書込み部
400 処理挿入済プログラム
800 ハッシュ関数

Claims (11)

  1. データベースに対するトランザクション処理を行う情報処理システムであって、
    前記データベースに対するトランザクション処理が記述されたプログラムである処理プログラムを取得する処理プログラム取得部と、
    前記データベースのうち、前記処理プログラムのトランザクション処理によりアクセスされる対象となる少なくとも1つの対象データを選択する対象データ選択部と、
    前記処理プログラムにおける、最後に前記対象データをアクセスしてから処理結果をコミットするまでに実行される部分に、前記対象データのうち前記トランザクション処理により更新された対象データを前記データベースに書き戻す対象データ書戻処理を挿入する書戻処理挿入部と
    を備える情報処理システム。
  2. 前記処理プログラムから、トランザクション処理の処理結果をコミットする処理を示すコミット処理部分を検出するコミット処理検出部を更に備え、
    前記書戻処理挿入部は、前記処理プログラム中における前記コミット処理検出部により検出された前記コミット処理部分に先立ってコミット処理の直前に実行される処理として、前記対象データ書戻処理を挿入する
    請求項1記載の情報処理システム。
  3. 前記データベース内の少なくとも一部のデータをキャッシュし、前記データベースへのアクセスに対してキャッシュしたデータが読み出されるバッファメモリと、
    前記処理プログラムにおける、トランザクション処理の開始から最初に前記対象データにアクセスするまでに実行される部分に、前記対象データを前記データベースから一括して取得して前記バッファメモリに格納する対象データ取得処理を挿入する取得処理挿入部と
    を更に備える請求項1記載の情報処理システム。
  4. 前記処理プログラムから、トランザクション処理の開始を示す開始処理部分を検出する開始処理検出部を更に備え、
    前記取得処理挿入部は、前記処理プログラム中における前記開始処理部分の次に実行される処理として、前記対象データ取得処理を挿入する
    請求項3記載の情報処理システム。
  5. 前記処理プログラムについて、当該処理プログラムのトランザクション処理が当該トランザクション処理の処理中に更新された前記対象データに依存するデータ依存性を判断するデータ依存性判断部を更に備え、
    前記処理プログラムが前記データ依存性を有しない場合に、
    前記取得処理挿入部は、前記対象データ取得処理を挿入することにより、当該処理プログラムのトランザクション処理において前記対象データを前記バッファメモリから読み出させ、
    前記書戻処理挿入部は、前記バッファメモリの内容に関わらず、前記処理プログラムのトランザクション処理により更新された対象データをコミット処理前までに一括して前記データベースに書き戻す処理を、前記対象データ書戻処理として挿入する
    請求項3記載の情報処理システム。
  6. 前記処理プログラムが前記データ依存性を有する可能性がある場合に、前記処理プログラムによるトランザクション処理の処理中に前記対象データが更新される毎に更新された前記対象データを前記バッファメモリに書込むバッファ書込み部
    を更に備える請求項5記載の情報処理システム。
  7. 前記処理プログラムが前記データ依存性を有する可能性がある場合に、前記処理プログラムのトランザクション処理により前記対象データがアクセスされるアクセスパターンに基づいて、ハッシュ関数を生成するハッシュ関数生成部を更に備え、
    前記取得処理挿入部は、前記対象データ取得処理として更に、取得した各々の前記対象データの識別情報の少なくとも一部をハッシュキーとして、当該対象データが前記バッファメモリ内で格納される格納位置を前記ハッシュ関数により求めて、当該格納位置に当該対象データを格納する処理を挿入し、
    前記バッファ書込み部は、前記処理プログラムによるトランザクション処理の処理中に対象データが更新された場合に、当該対象データの識別情報の少なくとも一部をハッシュキーとして、当該対象データが前記バッファメモリ内で格納されている格納位置を前記ハッシュ関数により求めて、前記バッファメモリにおいて当該格納位置に格納された対象データを更新する
    請求項6記載の情報処理システム。
  8. 前記処理プログラムにおいて用いられる各対象データの生存区間を検出する生存区間検出部を更に備え、
    前記書戻処理挿入部は、前記対象データ書戻処理に加えて更に、前記処理プログラムにおける処理結果をコミットした後に実行される部分に、当該部分において既に生存区間が終了している対象データを前記バッファメモリにおいて無効化する処理を挿入する
    請求項5記載の情報処理システム。
  9. 前記取得処理挿入部は、複数の前記対象データをベクトル化したデータとし、当該ベクトル化したデータを前記複数の対象データの数より少ない処理回数で取得する処理を、前記対象データ取得処理として挿入する
    請求項3記載の情報処理システム。
  10. データベースに対するトランザクション処理を行う情報処理システムにより、トランザクション処理を制御する制御方法であって、
    前記データベースに対するトランザクション処理が記述されたプログラムである処理プログラムを取得する処理プログラム取得段階と、
    前記データベースのうち、前記処理プログラムのトランザクション処理によりアクセスされる対象となる少なくとも1つの対象データを選択する対象データ選択段階と、
    前記処理プログラムにおける、最後に前記対象データをアクセスしてから処理結果をコミットするまでに実行される部分に、前記対象データのうち前記トランザクション処理により更新された対象データを前記データベースに書き戻す対象データ書戻処理を挿入する書戻処理挿入段階と
    を備える制御方法。
  11. データベースに対するトランザクション処理を行う情報処理システムを制御するプログラムであって、
    前記情報処理システムを、
    前記データベースに対するトランザクション処理が記述されたプログラムである処理プログラムを取得する処理プログラム取得部と、
    前記データベースのうち、前記処理プログラムのトランザクション処理によりアクセスされる対象となる少なくとも1つの対象データを選択する対象データ選択部と、
    前記処理プログラムにおける、最後に前記対象データをアクセスしてから処理結果をコミットするまでに実行される部分に、前記対象データのうち前記トランザクション処理により更新された対象データを前記データベースに書き戻す対象データ書戻処理を挿入する書戻処理挿入部と
    して機能させるプログラム。
JP2004351492A 2004-12-03 2004-12-03 情報処理システム、制御方法、及びプログラム Pending JP2006163596A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004351492A JP2006163596A (ja) 2004-12-03 2004-12-03 情報処理システム、制御方法、及びプログラム
US11/294,238 US7539679B2 (en) 2004-12-03 2005-12-05 Information processing system and control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004351492A JP2006163596A (ja) 2004-12-03 2004-12-03 情報処理システム、制御方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2006163596A true JP2006163596A (ja) 2006-06-22

Family

ID=36575575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004351492A Pending JP2006163596A (ja) 2004-12-03 2004-12-03 情報処理システム、制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US7539679B2 (ja)
JP (1) JP2006163596A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223572A (ja) * 2008-03-14 2009-10-01 Internatl Business Mach Corp <Ibm> 変換装置、サーバシステム、変換方法およびプログラム
JP2019204250A (ja) * 2018-05-23 2019-11-28 株式会社日立製作所 アプリケーションサーバおよびサーバによる業務アプリケーションの実行方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2445965B (en) * 2007-01-26 2011-05-04 Advanced Risc Mach Ltd Entry replacement within a data store
US8458460B2 (en) * 2007-09-27 2013-06-04 Intel Corporation Digest generation from instruction op-codes
US8601457B1 (en) * 2008-01-31 2013-12-03 The Mathworks, Inc. Checking for access problems with data stores
US20130013666A1 (en) * 2011-07-07 2013-01-10 International Business Machines Corporation Monitoring data access requests to optimize data transfer
US9002842B2 (en) * 2012-08-08 2015-04-07 Equivio Ltd. System and method for computerized batching of huge populations of electronic documents
CN103577551B (zh) * 2013-10-16 2017-04-05 聚好看科技股份有限公司 一种数据批量提交到数据库的方法和装置
CN111221840B (zh) * 2018-11-23 2023-05-30 阿里云计算有限公司 数据处理方法及装置、数据缓存方法、存储介质、系统
US11625389B2 (en) * 2021-03-19 2023-04-11 Microsoft Technology Licensing, Llc Snapshot isolation query transactions in distributed systems

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212789A (en) * 1989-10-12 1993-05-18 Bell Communications Research, Inc. Method and apparatus for updating application databases used in a distributed transaction processing environment
US5129152A (en) * 1990-12-20 1992-07-14 Hughes Aircraft Company Fast contact measuring machine
JPH05233720A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd Dbにおけるデータベースアシスト方法
US5581749A (en) * 1992-12-21 1996-12-03 Thedow Chemical Company System and method for maintaining codes among distributed databases using a global database
JPH07225707A (ja) * 1994-02-10 1995-08-22 Fujitsu Ltd アプリケーションのテスト方法及びそのテスト支援装置
US5893113A (en) * 1996-04-25 1999-04-06 Navigation Technologies Corporation Update transactions and method and programming for use thereof for incrementally updating a geographic database
JP3466054B2 (ja) * 1997-04-18 2003-11-10 富士通株式会社 グループ化と集計演算処理方式
US6026406A (en) * 1997-06-04 2000-02-15 Oracle Corporation Batch processing of updates to indexes
JP4237354B2 (ja) * 1999-09-29 2009-03-11 株式会社東芝 トランザクション処理方法及びトランザクション処理システム
JP4306152B2 (ja) * 2001-06-26 2009-07-29 株式会社日立製作所 クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
US20030177146A1 (en) * 2002-03-18 2003-09-18 International Business Machines Corporation Method, system, and program product for migrating data from one data base management system to another data base management system
US7249118B2 (en) * 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
AU2003252065A1 (en) * 2002-07-22 2004-02-09 Thought, Inc. Dynamic object- driven database manipulation and mapping system
JP4166056B2 (ja) * 2002-08-16 2008-10-15 富士通株式会社 データベース操作履歴管理装置、データベース操作履歴管理方法、およびデータベース操作履歴管理プログラム
US7577667B2 (en) * 2002-09-18 2009-08-18 Netezza Corporation Programmable streaming data processor for database appliance having multiple processing unit groups
US7200625B2 (en) * 2002-10-18 2007-04-03 Taiwan Semiconductor Manufacturing Co., Ltd. System and method to enhance availability of a relational database
US7031782B2 (en) * 2003-09-24 2006-04-18 Rockwell Automation Technologies, Inc. Material reservation distribution system and method
US20050102254A1 (en) * 2003-11-06 2005-05-12 Marr Gary W. Methods, computer program products, and systems that schedule loading data into databases
US7299378B2 (en) * 2004-01-15 2007-11-20 Oracle International Corporation Geographically distributed clusters
US7225205B2 (en) * 2004-02-12 2007-05-29 International Business Machines Corporation Apparatus and method for enabling database batch updates without modifying generated code
US7779238B2 (en) * 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US8010337B2 (en) * 2004-09-22 2011-08-30 Microsoft Corporation Predicting database system performance

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223572A (ja) * 2008-03-14 2009-10-01 Internatl Business Mach Corp <Ibm> 変換装置、サーバシステム、変換方法およびプログラム
US8645382B2 (en) 2008-03-14 2014-02-04 International Business Machines Corporation Converter, server system, conversion method and program
JP2019204250A (ja) * 2018-05-23 2019-11-28 株式会社日立製作所 アプリケーションサーバおよびサーバによる業務アプリケーションの実行方法
JP7266970B2 (ja) 2018-05-23 2023-05-01 株式会社日立製作所 アプリケーションサーバおよびサーバによる業務アプリケーションの実行方法

Also Published As

Publication number Publication date
US20060122960A1 (en) 2006-06-08
US7539679B2 (en) 2009-05-26

Similar Documents

Publication Publication Date Title
US11366677B2 (en) Methods, blockchain nodes, and node devices for executing smart contract
US7765527B2 (en) Per thread buffering for storing profiling data
US7539679B2 (en) Information processing system and control
CN104603750A (zh) 使用bpram来布局和执行软件应用
JP2004070944A (ja) アプリケーション向けにオペレーティングシステム機能を拡張するシステムおよび方法
JP5044816B2 (ja) オブジェクトを記憶・管理するシステム
EP3961975B1 (en) Methods, blockchain nodes, and storage media for executing smart contract
JP2003196108A (ja) 動的コードキャッシングおよび変形を通してコンピュータシステムのエミュレーションをサポートするシステムおよび方法
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
CN112866392B (zh) 一种执行智能合约的方法、区块链节点、系统和存储介质
US20210326864A1 (en) Methods, blockchain nodes, and storage media for executing smart contract
CN103518190A (zh) 对于动态语言的散列表的硬件支持
CN104583948A (zh) 使用bpram来布局和执行操作系统
EP2176742A1 (en) Runtime machine supported method level caching
EP3961438B1 (en) Method for executing smart contract, blockchain node, and storage medium
EP3961391B1 (en) Method for executing smart contract, blockchain node, and storage medium
EP3961390A1 (en) Method for executing smart contract and blockchain node
EP3961437B1 (en) Method for executing smart contract, blockchain node, and storage medium
US6842905B2 (en) Method and system for implementing collection program interface for accessing a collection of data associated with a legacy enumeration application interface
JP3973129B2 (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
JP2007532990A (ja) ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造
CA2762563A1 (en) Data prefetching and coalescing for partitioned global address space languages
US10379827B2 (en) Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment
US7908268B2 (en) Predictive database pool preparation
US8166252B2 (en) Processor and prefetch support program