JP2019061437A - 情報処理装置、情報処理システムおよびプログラム - Google Patents

情報処理装置、情報処理システムおよびプログラム Download PDF

Info

Publication number
JP2019061437A
JP2019061437A JP2017184912A JP2017184912A JP2019061437A JP 2019061437 A JP2019061437 A JP 2019061437A JP 2017184912 A JP2017184912 A JP 2017184912A JP 2017184912 A JP2017184912 A JP 2017184912A JP 2019061437 A JP2019061437 A JP 2019061437A
Authority
JP
Japan
Prior art keywords
code
database
data
server
request message
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.)
Granted
Application number
JP2017184912A
Other languages
English (en)
Other versions
JP7116292B2 (ja
Inventor
厚人 廣瀬
Atsuto Hirose
厚人 廣瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017184912A priority Critical patent/JP7116292B2/ja
Priority to US16/051,968 priority patent/US11113265B2/en
Publication of JP2019061437A publication Critical patent/JP2019061437A/ja
Application granted granted Critical
Publication of JP7116292B2 publication Critical patent/JP7116292B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • 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/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Abstract

【課題】アプリケーションインタフェースの整合性の検査を効率化する。【解決手段】情報処理装置10は、記憶部11と通信部12と処理部13とを有する。記憶部11は、データベースに定義された1以上のデータ項目を示すデータ構造情報から生成された符号11aを記憶する。通信部12は、データベースに対するデータの読み出しまたは書き込みを要求するメッセージであって符号14aを含む要求メッセージ14を受信する。処理部13は、符号11aと符号14aとを比較し、一致する場合は要求された読み出しまたは書き込みを許容し、異なる場合はデータベースのデータ項目と要求メッセージ14との間の整合性についての例外処理15を実行する。【選択図】図1

Description

本発明は情報処理装置、情報処理システムおよびプログラムに関する。
ネットワークに接続された複数の情報処理装置が通信してデータ処理を行うオンラインシステムが利用されることがある。オンラインシステムでは、サーバとしての情報処理装置にデータベースを構築し、データベースに対するデータ操作を要求するための通信規約を示すアプリケーションインタフェースを定義しておくことがある。そして、アプリケーションインタフェースに従ってサーバと通信するクライアントアプリケーションを作成し、クライアントとしての情報処理装置に配置することがある。
オンラインシステムを構築して運用を開始した後、そのオンラインシステムを改修することもある。オンラインシステムの改修の典型例として、データベースのデータ構造の変更が挙げられる。データベースのデータ構造を変更する場合、クライアントからサーバにデータ操作を要求するためのアプリケーションインタフェースも変更されることがあり、クライアントアプリケーションの修正を要することがある。
データ構造の変更後にそのデータ構造と互換性のない既存のクライアントアプリケーションが実行されてしまうと、クライアントサーバ間のアプリケーションインタフェースの不整合により、サーバ処理の中でエラーが発生するおそれがある。アプリケーションインタフェースの不整合によるエラーは、クライアントアプリケーションの修正ミスや修正後のクライアントアプリケーションの配置ミスによって発生し得る。そこで、データベースのデータ構造を変更する改修を行う場合には、退行テスト(リグレッションテスト)によってアプリケーションインタフェースの不整合を検出することが行われている。
なお、起動後にアプリケーションプログラムの検査を行う複合機が提案されている。提案の複合機は、当該複合機がサポートしている機能を示す機器サポート情報と、アプリケーションプログラムが利用する機能を示すアプリ利用情報とを取得する。複合機は、機器サポート情報とアプリ利用情報とを比較し、アプリ利用情報に列挙された機能が機器サポート情報に含まれていない場合、アプリケーションプログラムの起動を抑止する。
また、符号化されたデータオブジェクト識別子を用いてデータオブジェクトの記憶場所を特定するアーカイブ記憶システムが提案されている。提案のアーカイブ記憶システムは、データオブジェクトのアクセス制御情報、サイズ、ペイロード部分のダイジェスト、エラー検出コードなどからデータオブジェクト識別子を生成する。
特開2013−164866号公報 国際公開第2014/025821号
しかし、リグレッションテストにおいて、クライアントからサーバに様々なバリエーションの要求メッセージを送信してアプリケーションインタフェースの整合性を検査することは、リグレッションテストの負担が大きく非効率であるという問題がある。
1つの側面では、本発明は、アプリケーションインタフェースの整合性の検査を効率化できる情報処理装置、情報処理システムおよびプログラムを提供することを目的とする。
1つの態様では、記憶部と通信部と処理部とを有する情報処理装置が提供される。記憶部は、データベースに定義された1以上のデータ項目を示すデータ構造情報から生成された第1の符号を記憶する。通信部は、データベースに対するデータの読み出しまたは書き込みを要求するメッセージであって第2の符号を含む要求メッセージを受信する。処理部は、第1の符号と第2の符号とを比較し、第1の符号と第2の符号とが一致する場合、要求された読み出しまたは書き込みを許容し、第1の符号と第2の符号とが異なる場合、データベースのデータ項目と要求メッセージとの間の整合性についての例外処理を実行する。また、1つの態様では、第1の情報処理装置と第2の情報処理装置とを有する情報処理システムが提供される。また、1つの態様では、コンピュータに実行させるプログラムが提供される。
1つの側面では、アプリケーションインタフェースの整合性の検査を効率化できる。
第1の実施の形態の情報処理システムを説明する図である。 第2の実施の形態の情報処理システムの例を示す図である。 開発端末のハードウェア例を示すブロック図である。 ソフトウェアの配置例を示す図である。 開発端末およびサーバの機能例を示すブロック図である。 テーブル定義ファイルの第1の例を示す図である。 ハッシュ値テーブルの第1の例を示す図である。 要求メッセージの第1の例を示す図である。 開発端末処理の手順例を示すフローチャートである。 データベース設定の第1の手順例を示すフローチャートである。 データベース操作の第1の手順例を示すフローチャートである。 インタフェース整合性の第1の判定例を示す図である。 インタフェース整合性の第2の判定例を示す図である。 テーブル定義ファイルの第2の例を示す図である。 要求メッセージの第2の例を示す図である。 ハッシュ値テーブルの第2の例を示す図である。 データベース設定の第2の手順例を示すフローチャートである。 データベース操作の第2の手順例を示すフローチャートである。 インタフェース整合性の第3の判定例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理システムを説明する図である。
第1の実施の形態の情報処理システムは、情報処理装置10,20を有する。情報処理装置10と情報処理装置20とはネットワークを介して接続されている。
情報処理装置10は、不揮発性の記憶装置を用いてデータベースを保持し、データベースへのアクセスを制御する。情報処理装置10は、データベースに定義されたデータ構造に合わせて、データベースからのデータの読み出しやデータベースへのデータの書き込みを要求するためのアプリケーションインタフェースを提供する。情報処理装置20は、情報処理装置10に対して、データベースからの読み出しやデータベースへの書き込みを要求する。情報処理装置10と情報処理装置20との関係に着目すれば、情報処理装置10はサーバに相当し、情報処理装置20はクライアントに相当する。
情報処理装置10が保持するデータベースのデータ構造は、事後的に変更されることがある。情報処理装置20から情報処理装置10への要求が、情報処理装置10の提供するアプリケーションインタフェースと整合している場合、情報処理装置10においてデータベースからの読み出しやデータベースへの書き込みが正常に実行され得る。一方、情報処理装置20から情報処理装置10への要求が、情報処理装置10の提供するアプリケーションインタフェースと整合していない場合、情報処理装置10においてデータベースからの読み出しやデータベースへの書き込みについてエラーが発生し得る。アプリケーションインタフェースの不整合は、情報処理装置10が保持するデータベースのデータ構造と情報処理装置20が想定するデータ構造とが異なることによって生じる。
情報処理装置10は、記憶部11、通信部12および処理部13を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の半導体メモリでもよいし、HDD(Hard Disk Drive)などの不揮発性のストレージでもよい。通信部12は、情報処理装置20と通信を行う通信インタフェースである。通信部12は、有線通信インタフェースでもよいし無線通信インタフェースでもよい。処理部13は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。ただし、処理部13は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリに記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
記憶部11は、データベースのデータ構造情報から生成された符号11aを記憶する。データ構造情報は、データベースに定義された1以上のデータ項目を示す。例えば、データ構造情報は、各データ項目の項目名、データ型、データ長、その他の属性などを示す。符号11aは、他の符号との間で同一性を判定可能な固定長または可変長のビット列である。同じデータ構造情報からは同じ符号が生成され、異なるデータ構造情報からは異なる符号が生成されることが好ましい。例えば、符号11aは、所定のハッシュ関数を用いてデータ構造情報から算出されるハッシュ値である。記憶部11は、データ構造情報を更に記憶してもよい。情報処理装置10は、データ構造情報から符号11aを生成してもよいし、他の情報処理装置で生成された符号11aを取得してもよい。
通信部12は、要求メッセージ14を情報処理装置20から受信する。要求メッセージ14は、データベースに対する操作、すなわち、データベースからのデータの読み出しまたはデータベースへのデータの書き込みを要求するものである。要求メッセージ14は符号14aを含む。符号14aは、情報処理装置20が想定する1以上のデータ項目を示すデータ構造情報から生成された符号であり、情報処理装置20によって保持されている。
符号11aと符号14aとは、同一のデータ構造情報から生成されたものであることが期待される。ただし、データベースのデータ項目の定義が事後的に変更され、その変更が情報処理装置20に正しく反映されていない場合、符号14aが符号11aよりも古いデータ構造情報から生成されている可能性がある。よって、符号11aと符号14aとが、異なるデータ構造情報から生成されており一致しないことがある。
情報処理装置20は、他の情報処理装置から符号14aを取得してもよいし、他の情報処理装置からデータ構造情報を取得して符号14aを生成してもよい。また、情報処理装置20は、符号14aが埋め込まれたクライアントプログラムを他の情報処理装置から取得し、クライアントプログラムを実行してもよい。当該クライアントプログラムは、例えば、要求メッセージ14の送信に用いられる。
処理部13は、要求メッセージ14が受信されると、記憶部11に記憶された符号11aと要求メッセージ14に含まれる符号14aとを比較する。符号11aと符号14aとが一致する場合、処理部13は、アプリケーションインタフェースの不整合は生じていないと判定する。すなわち、処理部13は、要求メッセージ14が想定するデータ項目とデータベースに定義されたデータ項目とが整合していると判定する。すると、処理部13は、要求された読み出しや書き込みをデータベースに対して実行することを許容する。
一方、符号11aと符号14aとが異なる場合、処理部13は、アプリケーションインタフェースの不整合が生じている可能性があると判定する。すなわち、処理部13は、要求メッセージ14が想定するデータ項目とデータベースに定義されたデータ項目とが整合しない可能性があると判定する。すると、処理部13は、要求メッセージ14とデータベースのデータ項目との間の整合性に関して例外処理15を実行する。
例外処理15は、例えば、要求メッセージ14とデータベースのデータ項目とが整合しないことを示すエラー情報を出力することを含む。また、例外処理15は、例えば、エラー情報を出力する前に、要求メッセージに含まれるクエリや書き込みデータを分析して、データ構造情報が示すデータ項目の定義と照合する詳細分析を含む。
要求メッセージ14とデータベースのデータ項目とが整合していることが詳細分析によって確認された場合、要求された読み出しや書き込みをデータベースに対して実行することを許容してもよい。データベースのデータ項目の変更方法によっては、古いデータ項目を想定して生成された要求メッセージ14が、データベースの現在のデータ項目と矛盾しないこともある。一方、要求メッセージ14とデータベースのデータ項目とが整合していないことが詳細分析によって確認された場合、要求された読み出しや書き込みを拒否してエラー情報を出力するようにしてもよい。
第1の実施の形態の情報処理装置10によれば、符号14aを含む要求メッセージ14が情報処理装置20から受信され、情報処理装置10が保持する符号11aと要求メッセージ14に含まれる符号14aとが比較される。符号11aと符号14aとが一致する場合、データベースに対する読み出しまたは書き込みが許容され、符号11aと符号14aとが異なる場合、データ項目の整合性に関して例外処理15が実行される。
これにより、データベースの現在のデータ構造と要求メッセージ14が想定するデータ構造とが一致しているか否かを迅速に判定することができる。例えば、データベースの現在のデータ構造と要求メッセージ14が想定するデータ構造とが一致する場合、両者を照合する詳細分析を行わなくても一致していることを確認できる。よって、アプリケーションインタフェースの整合性の検査が効率化される。このため、例えば、データベースのデータ項目の定義を変更した後、その変更をクライアントに反映させる作業が正しく行われたか確認する検査を効率的に行うことが可能となる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、ユーザ端末61、開発端末100、Webサーバ200、アプリケーションサーバ(APサーバ)300、キャッシュサーバ400およびデータベースサーバ(DBサーバ)500を有する。ユーザ端末61、開発端末100、Webサーバ200、APサーバ300、キャッシュサーバ400およびDBサーバ500は、ネットワーク60に接続されている。ネットワーク60は、インターネットなどの広域ネットワークを含んでもよく、LAN(Local Area Network)を含んでもよい。
ユーザ端末61は、ユーザが操作するコンピュータである。ユーザ端末61は、WebブラウザなどのWebクライアントアプリケーションを実行する。ユーザ端末61は、HTTP(Hypertext Transfer Protocol)を用いてWebサーバ200にアクセスし、Webサーバ200からWebコンテンツを受信する。
開発端末100は、サーバアプリケーションの開発者が操作するコンピュータである。開発端末100は、Webサーバ200、APサーバ300、キャッシュサーバ400およびDBサーバ500に、作成した各種のプログラムや設定情報を送信する。
Webサーバ200は、ユーザ端末61とHTTP通信を行うサーバコンピュータである。Webサーバ200は、ユーザ端末61からHTTPリクエストを受信し、受信したHTTPリクエストに応じてAPサーバ300にデータ処理を要求する。Webサーバ200は、APサーバ300からデータ処理結果を受信し、受信したデータ処理結果に基づいてHTTPレスポンスを生成してユーザ端末61に送信する。
APサーバ300は、ビジネスロジックを実装したサーバアプリケーションを実行するサーバコンピュータである。APサーバ300は、Webサーバ200からの要求に応じてデータ処理を行い、データ処理結果をWebサーバ200に送信する。APサーバ300は、キャッシュサーバ400にアクセスして、データ処理に用いるデータをキャッシュサーバ400から取得することがある。また、APサーバ300は、DBサーバ500にアクセスして、データ処理に用いるデータをDBサーバ500から取得することがある。また、APサーバ300は、キャッシュサーバ400にデータを送信することがあり、DBサーバ500にデータを送信することがある。
キャッシュサーバ400は、APサーバ300によって使用されるデータをキャッシュするサーバコンピュータである。データのキャッシュには、キーバリュー形式でデータを保持するデータベースであるキーバリューストア(KVS)が用いられる。キャッシュサーバ400は、APサーバ300からのアクセスに応じてKVSから所望のデータを検索してAPサーバ300に送信することがある。また、キャッシュサーバ400は、DBサーバ500にアクセスして、KVSに存在しないデータをDBサーバ500から取得してKVSに格納することがある。また、キャッシュサーバ400は、APサーバ300からのアクセスに応じてKVSにデータを格納することがある。また、キャッシュサーバ400は、KVSのデータをDBサーバ500に転送することがある。
DBサーバ500は、データベースを保持し、データベースへのアクセスを制御するデータベース管理システム(DBMS)を実行するサーバコンピュータである。データベースとして、テーブル形式でデータを保持する関係データベース(RDB)が用いられる。DBサーバ500は、APサーバ300からのアクセスに応じてRDBから所望のデータを検索してAPサーバ300に送信することがある。また、DBサーバ500は、APサーバ300からのアクセスに応じてRDBにデータを格納することがある。また、DBサーバ500は、キャッシュサーバ400からのアクセスに応じてRDBから所望のデータを検索してキャッシュサーバ400に送信することがある。また、DBサーバ500は、キャッシュサーバ400からのアクセスに応じてRDBにデータを格納することがある。
図3は、開発端末のハードウェア例を示すブロック図である。
開発端末100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。ユーザ端末61、Webサーバ200、APサーバ300、キャッシュサーバ400およびDBサーバ500も、開発端末100と同様のハードウェアを用いて実装できる。なお、RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。通信インタフェース107は、第1の実施の形態の通信部12に対応する。CPU101は、第1の実施の形態の処理部13に対応する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよく、開発端末100は複数のプロセッサを有してもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、開発端末100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、開発端末100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、開発端末100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力信号処理部105は、開発端末100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス、タッチパネル、タッチパッド、トラックボール、キーボード、リモートコントローラ、ボタンスイッチなど、任意の種類の入力デバイスを用いることができる。また、開発端末100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース107は、ネットワーク60を介してWebサーバ200、APサーバ300、キャッシュサーバ400およびDBサーバ500と通信を行うインタフェースである。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
図4は、ソフトウェアの配置例を示す図である。
前述のように、Webサーバ200、APサーバ300、キャッシュサーバ400およびDBサーバ500が連携して、ユーザ端末61に対してサービスを提供する。Webサーバ200は、ユーザ端末61に対する窓口として動作する。
Webサーバ200にはサーブレット210が配置される。サーブレット210は、ユーザ端末61から受信されるHTTPリクエストに応じたデータ処理を行うアプリケーションである。Webサーバ200は、サーブレット210の起動や通信などを制御するアプリケーション実行基盤としてのミドルウェアを実行してもよく、サーブレット210はそのアプリケーション実行基盤上で起動される断片的プログラムでもよい。サーブレット210は、APサーバ300に対して要求メッセージを送信することがある。
APサーバ300にはAPサーバモジュール310が配置される。APサーバモジュール310は、Webサーバ200から受信される要求メッセージに応じたデータ処理を行うアプリケーションである。APサーバ300は、APサーバモジュール310の起動や通信などを制御するアプリケーション実行基盤としてのミドルウェアを実行してもよく、APサーバモジュール310はそのアプリケーション実行基盤上で起動される断片的プログラムでもよい。APサーバモジュール310は、キャッシュサーバ400またはDBサーバ500に要求メッセージを送信することがある。
キャッシュサーバ400にはKVS410が配置される。KVS410は、キーバリュー形式のデータベースを管理するミドルウェアである。キーバリュー形式のデータベースは、キャッシュサーバ400において、HDDなどの不揮発性ストレージまたはRAMなどの揮発性メモリに記憶されている。KVS410は、APサーバ300から受信される要求メッセージに応じて、検索や更新などのデータベース操作を実行する。KVS410は、DBサーバ500に要求メッセージを送信することがある。
DBサーバ500にはDBMS510が配置される。DBMS510は、テーブル形式の関係データベースを管理するミドルウェアである。関係データベースは、DBサーバ500において、HDDなどの不揮発性ストレージまたはRAMなどの揮発性メモリに記憶されている。DBMS510は、APサーバ300またはキャッシュサーバ400から受信される要求メッセージに応じて、検索や更新などのデータベース操作を実行する。
2つのコンピュータ間の通信に着目すれば、一方が要求メッセージを送信する「クライアント」として動作し、他方が要求メッセージを待ち受ける「サーバ」として動作することになる。同一のコンピュータがクライアントとサーバを兼ねることもある。
Webサーバ200とAPサーバ300に着目すれば、Webサーバ200はクライアントに相当し、APサーバ300はサーバに相当する。APサーバ300とキャッシュサーバ400に着目すれば、APサーバ300はクライアントに相当し、キャッシュサーバ400はサーバに相当する。APサーバ300とDBサーバ500に着目すれば、APサーバ300はクライアントに相当し、DBサーバ500はサーバに相当する。キャッシュサーバ400とDBサーバ500に着目すれば、キャッシュサーバ400はクライアントに相当し、DBサーバ500はサーバに相当する。
例えば、サーブレット210は、ユーザ端末61に対するサーバとAPサーバ300に対するクライアントとを兼ねる。ただし、Webサーバ200において、サーバ用モジュールとクライアント用モジュールが分離して存在し、前者が後者を呼び出すようにしてもよい。同様に、APサーバモジュール310は、Webサーバ200に対するサーバとキャッシュサーバ400およびDBサーバ500に対するクライアントとを兼ねる。ただし、APサーバ300において、サーバ用モジュールとクライアント用モジュールが分離して存在し、前者が後者を呼び出すようにしてもよい。KVS410は、APサーバ300に対するサーバとDBサーバ500に対するクライアントとを兼ねる。ただし、キャッシュサーバ400において、サーバ用モジュールとクライアント用モジュールが分離して存在し、前者が後者を呼び出すようにしてもよい。
ここで、第2の実施の形態の情報処理システムの運用を開始した後、データベースのデータ構造を変更することがある。例えば、関係データベースに新規カラムを追加することや既存カラムのデータ長を大きくすることなどによって、情報処理システムを拡張することがある。データベースのデータ構造の変更は、異なるアプリケーション間で送信される要求メッセージの規約に影響を与え、要求メッセージの送信元に影響を与える。
例えば、DBサーバ500のデータベースのデータ構造を変更することは、キャッシュサーバ400からDBサーバ500への要求メッセージに影響を与え、KVS410に影響を与える。また、DBサーバ500のデータベースのデータ構造を変更することは、APサーバ300からDBサーバ500への要求メッセージに影響を与え、APサーバモジュール310に影響を与える。また、キャッシュサーバ400のデータベースのデータ構造を変更することは、APサーバ300からキャッシュサーバ400への要求メッセージに影響を与え、APサーバモジュール310に影響を与える。
よって、データベースのデータ構造を変更すると、アプリケーション間でインタフェース不整合が発生するおそれがある。インタフェース不整合は、宛先のサーバが想定するデータ構造と送信元のクライアントが想定するデータ構造(すなわち、要求メッセージが想定するデータ構造)とが異なるために、サーバのデータ処理の中で想定外のエラーが発生することである。インタフェース不整合は、データベースのデータ構造の変更に合わせて、クライアントアプリケーションが適切に修正されなかった場合や、クライアントアプリケーションが適切に配信されなかった場合に発生し得る。
そこで、第2の実施の形態の情報処理システムは、インタフェース整合性を効率的に検査できるよう支援する。以下で説明するインタフェース整合性の検査は、例えば、データベースのデータ構造を変更して情報処理システムの運用を再開した後に常時行われる。ただし、当該インタフェース整合性の検査を、データベースのデータ構造を変更してから情報処理システムの運用を再開するまでの間のテスト期間に行うようにしてもよい。その場合、テスト期間経過後は情報処理システムから検査機能を除去してもよい。
以下では一例として、APサーバ300とDBサーバ500の間のインタフェース整合性に着目して検査処理を説明する。後述するように、APサーバ300とキャッシュサーバ400の間のインタフェース整合性や、キャッシュサーバ400とDBサーバ500の間のインタフェース整合性についても、同様の検査処理を適用することが可能である。
図5は、開発端末およびサーバの機能例を示すブロック図である。
開発端末100は、ソースコード記憶部121、テーブル定義記憶部122、クライアント更新部123およびサーバ更新部124を有する。ソースコード記憶部121およびテーブル定義記憶部122は、例えば、RAM102またはHDD103の記憶領域を用いて実装される。クライアント更新部123およびサーバ更新部124は、例えば、CPU101が実行するプログラムを用いて実装される。
ソースコード記憶部121は、開発者によって作成されるクライアントプログラムのソースコード(ユーザソースコード)を記憶する。また、ソースコード記憶部121は、クライアント更新部123によって生成されるAPI(Application Programming Interface)プログラムのソースコード(APIソースコード)を記憶する。APIプログラムは、DBサーバ500に要求メッセージを送信する具体的方法を記載した関数(メソッドや手続きなどと言うこともある)を含み、ユーザソースコードから見てライブラリに相当する。ユーザソースコードからAPIプログラムを呼び出すことで、ユーザソースコードの中に要求メッセージを送信する具体的方法を記載しなくてもよい。
テーブル定義記憶部122は、DBサーバ500のデータベースのデータ構造を示すテーブル定義ファイルを記憶する。テーブル定義ファイルは、例えば、SQLに含まれる文法などの所定のデータ定義言語で記述される。データベースのデータ構造を変更する場合、開発者によってテーブル定義記憶部122のテーブル定義ファイルが更新される。
クライアント更新部123は、テーブル定義記憶部122に記憶されたテーブル定義ファイルが更新されると、更新後のテーブル定義ファイルに基づいてAPIソースコードを生成してソースコード記憶部121に格納する。生成されるAPIソースコードは、変更後のデータ構造に合った適切な要求メッセージを送信する方法を記載している。例えば、変更後のデータ構造のカラムに対応する引数を含み、変更後のデータ構造のカラムに合ったフォーマットの要求メッセージを生成する関数が生成される。要求メッセージは、例えば、SQLに含まれる文法などの所定のデータ操作言語で記述される。
このとき、クライアント更新部123は、更新後のテーブル定義ファイルから符号を生成し、生成した符号をAPIソースコードに埋め込む。APIソースコードは、要求メッセージの送信時に当該符号が要求メッセージに付加されるように生成される。
第2の実施の形態では、符号としてテーブル定義ファイルのハッシュ値を使用する。ハッシュ値の算出には、MD5(Message Digest Algorithm 5)やSHA−1(Secure Hash Algorithm - 1)などのハッシュ関数が使用される。ハッシュ値は、例えば、16バイトや20バイトなどの固定長であり、元のテーブル定義ファイルが再現されない不可逆性をもつ。異なるテーブル定義ファイルからは異なるハッシュ値が算出されることが期待される。ただし、符号はテーブル定義ファイルの同一性を判定可能であればよく、暗号文などハッシュ値以外のビット列を符号として使用することも可能である。符号は、可変長であってもよく、元のテーブル定義ファイルが再現される可逆性をもっていてもよい。
なお、1つのテーブル定義ファイルは関係データベースの1つのテーブルのデータ構造を記載しており、ハッシュ値はテーブル毎に算出される。
APIソースコードが生成されると、クライアント更新部123は、ユーザソースコードおよびAPIソースコードをコンパイルし、両者やその他のライブラリをリンクしてクライアントモジュールを生成する。クライアント更新部123は、コンパイラおよびリンカとして動作するソフトウェアを含んでいる。ユーザソースコードは、APIソースコードの生成後に、APIソースコードに合うように開発者によって修正されてもよい。生成されるクライアントモジュールは、APサーバモジュール310に相当する。クライアント更新部123は、生成したクライアントモジュールをAPサーバ300に配信する。
APサーバ300に相当するコンピュータが複数存在する場合、クライアント更新部123は、生成したクライアントモジュールをそれら複数のコンピュータに配信する。ただし、開発者によってユーザソースコードが適切に修正されないことにより、APサーバ300とDBサーバ500の間でインタフェース不整合が生じる可能性がある。また、APサーバ300にクライアントモジュールが適切に配信されないことにより、APサーバ300とDBサーバ500の間でインタフェース不整合が生じる可能性がある。
サーバ更新部124は、テーブル定義記憶部122に記憶されたテーブル定義ファイルが更新されると、更新後のテーブル定義ファイルをDBサーバ500に送信する。そして、サーバ更新部124は、送信したテーブル定義ファイルをデータベースに反映させるようDBサーバ500に指示する。例えば、サーバ更新部124は、テーブル定義変更のコマンドをDBサーバ500に送信する。更新後のテーブル定義ファイルは、当該コマンドと共にDBサーバ500に送信されてもよい。
APサーバ300は、モジュール記憶部321およびアプリケーション制御部322を有する。モジュール記憶部321は、例えば、APサーバ300が有するRAMまたはHDDの記憶領域を用いて実装される。アプリケーション制御部322は、例えば、APサーバ300が有するCPUが実行するプログラムを用いて実装される。
モジュール記憶部321は、開発端末100から配信されたコンパイル済みのクライアントモジュールを記憶する。クライアントモジュールは、例えば、APサーバモジュール310に相当する断片的プログラムである。アプリケーション制御部322は、モジュール記憶部321に記憶されたクライアントモジュールを起動し、クライアントモジュールの実行を制御するアプリケーション実行基盤である。アプリケーション制御部322は、クライアントモジュールに従って要求メッセージをDBサーバ500に送信する。
DBサーバ500は、テーブル定義記憶部521、ハッシュ値記憶部522、データ記憶部523、データベース設定部524およびデータベース操作部525を有する。テーブル定義記憶部521、ハッシュ値記憶部522およびデータ記憶部523は、例えば、DBサーバ500が有するRAMまたはHDDの記憶領域を用いて実装される。データベース設定部524およびデータベース操作部525は、例えば、DBサーバ500が有するCPUが実行するプログラムを用いて実装される。データベース設定部524およびデータベース操作部525は、例えば、DBMS510に含まれる。
テーブル定義記憶部521は、開発端末100から配信されたテーブル定義ファイルを記憶する。テーブル定義記憶部521は、最新のテーブル定義ファイルに加えて、1つ前の古いテーブル定義ファイルを記憶していてもよい。
ハッシュ値記憶部522は、データベース設定部524によって算出されるハッシュ値を記憶する。同じテーブル定義ファイルから開発端末100が算出するハッシュ値とDBサーバ500が算出するハッシュ値とは同一になる。前述のように、ハッシュ値に代えて他の符号をテーブル定義ファイルから生成することもでき、その場合には他の符号がハッシュ値記憶部522に記憶される。ハッシュ値記憶部522は、最新のハッシュ値に加えて、古いテーブル定義ファイルに対応するハッシュ値を記憶することも可能である。
データ記憶部523は、関係データベースを保持する。データ記憶部523には、1以上のカラム(列)と1以上のレコード(行)とを含むテーブルが記憶される。開発端末100から受信されるコマンドに応じて、新規テーブルの追加や既存テーブルの削除が行われ得る。また、開発端末100から受信されるコマンドに応じて、既存テーブルへのカラムの追加、カラムの削除、カラム属性の変更などが行われ得る。
データベース設定部524は、開発端末100からの指示に応じてデータベースのデータ構造の設定を行う。データベース設定部524は、開発端末100からテーブル定義ファイルを受信してテーブル定義記憶部521に格納する。データベース設定部524は、開発端末100からコマンドを受信すると、テーブル定義ファイルをデータベースに対して実行する。このとき、データベース設定部524は、テーブル定義ファイルからハッシュ値を算出し、算出したハッシュ値をハッシュ値記憶部522に格納する。
データベース操作部525は、APサーバ300から要求メッセージを受信する。すると、データベース操作部525は、受信した要求メッセージと最新のデータベースとの間のインタフェース整合性を検査する。要求メッセージで指定されたカラムがデータベースに存在しない場合や、要求メッセージに含まれるデータのデータ型がデータベースのカラムの定義と異なる場合には、インタフェース不整合が生じている。
インタフェース不整合が生じていない場合、データベース操作部525は、要求メッセージに従ってデータベース操作を実行する。例えば、データベース操作部525は、データベースからのデータの検索、データベースへのデータの挿入、データベースに含まれるデータの更新、データベースに含まれるデータの削除などを行う。データベース操作部525は、データベース操作の結果を示す応答メッセージをAPサーバ300に送信する。一方、インタフェース不整合が生じている場合、データベース操作部525は、データベース操作を拒否し、エラーメッセージをAPサーバ300に送信する。また、データベース操作部525は、DBサーバ500のシステムログにエラー情報を書き込む。
ここで、データベース操作部525は、インタフェース整合性の検査を効率化するため、最初にハッシュ値を利用した簡易検査を行う。データベース操作部525は、受信した要求メッセージに含まれるハッシュ値とハッシュ値記憶部522に記憶されたハッシュ値とを比較する。2つのハッシュ値が同一である場合、データベース操作部525は、以下の詳細検査をスキップして、インタフェース不整合は生じていないと判定する。
一方、2つのハッシュ値が異なる場合、データベース操作部525は、インタフェース整合性を確認する詳細検査を行う。詳細検査では、データベース操作部525は、受信した要求メッセージを分析し、テーブル定義記憶部521に記憶されたテーブル定義ファイルと照合する。例えば、データベース操作部525は、要求メッセージで指定されたカラムがテーブル定義ファイルに記載されているか判断する。また、例えば、データベース操作部525は、要求メッセージに含まれるデータのデータ型(例えば、文字列型や整数型など)およびデータ長を確認し、テーブル定義ファイルの定義と整合するか判断する。なお、要求メッセージが古いテーブル定義ファイルに準拠して生成されている場合であっても、データ構造の変更内容によってはインタフェース不整合とならない場合もある。
図6は、テーブル定義ファイルの第1の例を示す図である。
テーブル定義ファイル131は、更新前の古いテーブル定義ファイルの例である。テーブル定義ファイル132は、更新後の新しいテーブル定義ファイルの例である。テーブル定義ファイル133は、更新後の新しいテーブル定義ファイルの例であって、テーブル定義ファイル132とは異なる例である。テーブル定義ファイル131,132,133は、テーブル定義記憶部122に記憶され得る。また、テーブル定義ファイル131,132,133は、テーブル定義記憶部521にコピーされ得る。
テーブル定義ファイル131は、関係データベースの1つのテーブルのデータ構造を表している。テーブル定義ファイル131では、テーブルに含まれる各カラムのカラム名、データ型、データ長、その他の属性が定義される。テーブル定義ファイル131には、USER_ID、DEPT_NO、USER_NAMEおよびBIRTHDAYの4つのカラムが定義されている。USER_IDのデータ型は文字列型であり、データ長は8バイトであり、NULL値が禁止されている。DEPT_NOのデータ型は文字列型であり、データ長は8バイトである。USER_NAMEのデータ型は文字列であり、データ長は32バイトである。BIRTHDAYのデータ型は日付型である。
テーブル定義ファイル132は、テーブル定義ファイル131を修正したものである。テーブル定義ファイル132では、末尾にMYNUMBERというカラムが追加されている。MYNUMBERのデータ型は文字列であり、データ長は12バイトである。テーブル定義ファイル133は、テーブル定義ファイル131を修正したものである。テーブル定義ファイル133では、DEPT_NOのデータ長が10バイトに修正されている。
図7は、ハッシュ値テーブルの第1の例を示す図である。
ハッシュ値テーブル531は、ハッシュ値記憶部522に記憶される。ハッシュ値テーブル531は、データベース名、スキーマ名、テーブル名およびハッシュ値の項目を含む。DBサーバ500には複数のデータベースを作成することが可能であり、それら複数のデータベースがデータベース名によって識別される。1つのデータベースの中には複数のスキーマを定義することが可能であり、それら複数のスキーマがスキーマ名によって識別される。1つのスキーマの中には複数のテーブルを定義することが可能であり、それら複数のテーブルがテーブル名によって識別される。
第2の実施の形態では、1つのテーブルに対して1つのハッシュ値が登録される。ハッシュ値テーブル531に登録される1つのハッシュ値は、1つのテーブルの最新のテーブル定義ファイルから算出される。あるテーブルのテーブル定義ファイルが更新されると、ハッシュ値テーブル531では当該テーブルに対応するハッシュ値が更新される。要求メッセージには、操作対象テーブルに対応するハッシュ値が含まれている。
ここで、ハッシュ値は、テーブル名、カラム名、データ型、データ長、その他の属性などのデータ構造に関係する本質的情報に依存し、空白やコメントなどのデータ構造に関係しない非本質的情報に依存しないよう算出される。テーブル定義ファイルからは非本質的情報が削除されて本質的情報のみが抽出され、本質的情報を示す文字列がハッシュ関数に入力される。例えば、図6のテーブル定義ファイル131の場合、「table tbl_a」から「BIRTHDAY DATE」までの部分が抽出され、この部分から空白が削除され、残った文字列がハッシュ関数に入力される。
図8は、要求メッセージの第1の例を示す図である。
要求メッセージ331は、APサーバ300からDBサーバ500に送信される。要求メッセージ331は、サーバIP(Internet Protocol)アドレス、サーバポート番号、クライアントID、依頼番号、クライアントIPアドレス、クライアントポート番号、クライアントプロセスIDおよびクライアントスレッドIDの項目を含む。また、要求メッセージ331は、セッションID、送信時刻、処理種別、対象リソース、ハッシュ値、入力情報、出力情報およびデータ格納域長の項目を含む。
サーバIPアドレスは、DBサーバ500のIPアドレスである。サーバポート番号は、DBサーバ500が要求メッセージの待ち受けに使用しているポート番号である。クライアントIDは、APサーバ300のアプリケーション実行基盤に対して割り当てられた識別子である。依頼番号は、APサーバ300のアプリケーション実行基盤が各要求メッセージに付与する識別番号である。クライアントIPアドレスは、APサーバ300のIPアドレスである。クライアントポート番号は、APサーバ300が要求メッセージの送信に使用する送信元ポート番号である。クライアントプロセスIDは、クライアントモジュールから起動されたプロセスの識別番号である。クライアントスレッドIDは、クライアントモジュールから起動されたスレッドの識別番号である。
セッションIDは、APサーバ300とDBサーバ500の間に確立されたコネクションの識別番号である。送信時刻は、APサーバ300が要求メッセージを送信した時刻である。処理種別は、データベース操作の種別であり、検索(SELECT)、挿入(INSERT)、更新(UPDATE)または削除(DELETE)である。対象リソースは、操作対象テーブルのテーブル名である。ハッシュ値は、操作対象テーブルに対応するハッシュ値である。入力情報は、操作対象レコードを特定する検索条件や書き込むデータを含む。出力情報は、検索結果に含めるカラムのカラム名である。
データ格納域長は、クライアントモジュールが検索結果を格納するために用意した1レコード当たりのRAMの記憶領域のバイト数である。データ格納域長を超える長さのレコードがDBサーバ500からAPサーバ300に送信された場合、APサーバ300において末尾側のカラムのデータが切り捨てられる可能性がある。また、DBサーバ500は、APサーバ300に送信するレコードの長さがデータ格納域長を超えないように、末尾側のカラムのデータを切り捨てることがある。
次に、開発端末100およびDBサーバ500の処理について説明する。
図9は、開発端末処理の手順例を示すフローチャートである。
(S10)開発端末100は、開発端末100を使用する開発者からの入力に応じて、テーブル定義記憶部122に記憶されたテーブル定義ファイルを更新する。
(S11)クライアント更新部123は、更新後のテーブル定義ファイルから、MD5やSHA−1などのハッシュ関数を用いてハッシュ値を算出する。
(S12)クライアント更新部123は、更新後のテーブル定義ファイルからAPIソースコードを生成する。APIソースコードは、テーブル定義ファイルが示すデータ構造をもつデータベースに対して、データベース操作を要求する要求メッセージを送信するためのAPIプログラムのソースコードである。要求メッセージの送信についてはAPIプログラムを呼び出すようにユーザソースコードを作成することで、開発者によるユーザソースコードの作成負担が軽減される。クライアント更新部123は、要求メッセージの送信時にステップS11のハッシュ値が要求メッセージに付加されるよう、生成したAPIソースコードの中にハッシュ値を埋め込む。
(S13)クライアント更新部123は、クライアントモジュールの処理を記載したユーザソースコードを取得する。このユーザソースコードは、ステップS12の後にAPIソースコードを参照して開発者が修正したものであってもよい。クライアント更新部123は、ユーザソースコードとAPIソースコードをコンパイルし、両者とその他のライブラリとをリンクしてクライアントモジュールを生成する。
(S14)クライアント更新部123は、ステップS13で生成したクライアントモジュールをAPサーバ300などの特定のコンピュータに対して配信する。配信先のコンピュータは、開発端末100を使用する開発者によって指定されてもよい。
(S15)サーバ更新部124は、更新されたテーブル定義ファイルをDBサーバ500などの特定のコンピュータに対して配信する。配信先のコンピュータは、開発端末100を使用する開発者によって指定されてもよい。
(S16)サーバ更新部124は、ステップS15の配信先のコンピュータに対して、テーブル定義ファイルをデータベースに反映させるよう指示する。反映指示のコマンドは、テーブル定義ファイルと合わせて送信してもよい。なお、第2の実施の形態ではDBサーバ500が配信されたテーブル定義ファイルからハッシュ値を算出しているが、開発端末100が算出したハッシュ値をDBサーバ500に通知するようにしてもよい。
図10は、データベース設定の第1の手順例を示すフローチャートである。
(S20)データベース設定部524は、開発端末100からテーブル定義ファイルを受信し、受信したテーブル定義ファイルをテーブル定義記憶部521に格納する。
(S21)データベース設定部524は、開発端末100からの指示に応じて、ステップS20のテーブル定義ファイルをデータベースに反映させる。テーブル定義ファイルに記載されたテーブル名のテーブルがデータベースの中に存在しない場合、データベース設定部524は、テーブル定義ファイルに従って新規テーブルを生成する。一方、テーブル定義ファイルに記載されたテーブル名のテーブルがデータベースの中に存在する場合、データベース設定部524は、テーブル定義ファイルに従って既存テーブルを修正する。既存テーブルの修正は、新規カラムの追加や既存カラムの修正を含むことがある。既存カラムの修正は、当該カラムのデータを変換することを含む場合がある。
(S22)データベース設定部524は、ステップS20のテーブル定義ファイルから、MD5やSHA−1などのハッシュ関数を用いてハッシュ値を算出する。
(S23)データベース設定部524は、テーブル定義ファイルに記載されたテーブル名に対応付けて、ステップS22で算出したハッシュ値をハッシュ値テーブル531に登録する。当該テーブル名に対応する古いハッシュ値がハッシュ値テーブル531に存在する場合、データベース設定部524は、新しいハッシュ値を上書き保存する。よって、1つのテーブルに対しては最新のハッシュ値のみが登録される。
図11は、データベース操作の第1の手順例を示すフローチャートである。
(S30)データベース操作部525は、データベース操作を要求する要求メッセージをクライアントモジュールから受信する。要求メッセージには、クライアントモジュールに埋め込まれたハッシュ値が含まれている。
(S31)データベース操作部525は、要求メッセージからハッシュ値を抽出する。
(S32)データベース操作部525は、ハッシュ値テーブル531から、要求メッセージが示す操作対象テーブルに対応付けられたハッシュ値を検索する。
(S33)データベース操作部525は、ステップS31のハッシュ値とステップS32のハッシュ値とを比較し、2つのハッシュ値が一致するか判断する。一致する場合、受信した要求メッセージについてインタフェース不整合は生じていないと判定され、ステップS36に処理が進む。一致しない場合、ステップS34に処理が進む。
(S34)データベース操作部525は、インタフェース整合性の詳細検査を行う。詳細検査では、データベース操作部525は、受信した要求メッセージを分析してテーブル定義ファイルに記載されたカラムの定義と照合する。例えば、データベース操作部525は、カラム名、データ型、データ長などの整合性を確認する。
(S35)データベース操作部525は、ステップS34の詳細分析の結果から、インタフェース整合性が満たされているか判断する。インタフェース整合性が満たされている場合、すなわち、インタフェース不整合が生じていない場合、ステップS36に処理が進む。インタフェース整合性が満たされていない場合、すなわち、インタフェース不整合が生じている場合、ステップS38に処理が進む。
(S36)データベース操作部525は、要求メッセージに従って、データベースに対する検索、挿入、更新、削除などのデータベース操作を実行する。
(S37)データベース操作部525は、データベース操作の結果を示す応答メッセージを生成し、要求元のクライアントモジュールに対して送信する。応答メッセージは、検索されたデータを含むことがあり、書き込みの成否を示す制御情報を含むことがある。
(S38)データベース操作部525は、インタフェース不整合が生じたことを示すエラーメッセージを生成し、要求元のクライアントモジュールに対して送信する。また、データベース操作部525は、DBサーバ500が保持するシステムログに、インタフェース不整合が生じたことを示すエラー情報を書き込む。システムログは、開発端末100に送信されてもよく、障害原因の分析を行う担当者に対して送信されてもよい。
図12は、インタフェース整合性の第1の判定例を示す図である。
ここでは、テーブル定義ファイル131がテーブル定義ファイル132に更新された場合を考える。すなわち、既存テーブルの末尾に新規カラムが追加されている。
クライアントモジュール333は、テーブル定義ファイル131に基づいて生成された古いクライアントモジュールである。クライアントモジュール333が送信する要求メッセージには、テーブル定義ファイル131から算出されたハッシュ値「0xhgfedcba」が付加される。クライアントモジュール334は、テーブル定義ファイル132から生成された新しいクライアントモジュールである。クライアントモジュール334が送信する要求メッセージには、テーブル定義ファイル132から算出されたハッシュ値「0xabcdefgh」が付加される。DBMS510は、最新のハッシュ値「0xabcdefgh」を保持している。これに対し、クライアントモジュール334の配信ミスによって、まだクライアントモジュール333が実行されるコンピュータが存在しているとする。
DBMS510は、クライアントモジュール334から受信する要求メッセージについては、要求メッセージに含まれるハッシュ値とDBMS510が保持するハッシュ値とが一致するため、インタフェース不整合が生じていないと判定する。一方、DBMS510は、クライアントモジュール333から受信する要求メッセージについては、要求メッセージに含まれるハッシュ値とDBMS510が保持するハッシュ値とが異なるため、インタフェース不整合が生じている可能性があると判定する。その場合、DBMS510は、詳細検査によりインタフェース整合性を判定する。
このように、カラムを末尾に追加するデータ構造の変更が行われた場合、テーブル定義ファイルのハッシュ値が変化する。第2の実施の形態の簡易検査では、カラム追加後の新しいデータ構造に依拠する要求メッセージのみがインタフェース不整合なしと判定される。カラム追加前の古いデータ構造に依拠する要求メッセージについては、インタフェース不整合の可能性があるとして詳細検査が実行される。
図13は、インタフェース整合性の第2の判定例を示す図である。
ここでは、テーブル定義ファイル131がテーブル定義ファイル133に更新された場合を考える。すなわち、既存テーブルのカラムのデータ長が変更されている。
クライアントモジュール335は、テーブル定義ファイル133から生成された新しいクライアントモジュールである。クライアントモジュール335が送信する要求メッセージには、テーブル定義ファイル133から算出されたハッシュ値「0xklmnopqr」が付加される。DBMS510は、最新のハッシュ値「0xklmnopqr」を保持している。これに対し、クライアントモジュール335の配信ミスによって、まだクライアントモジュール333が実行されるコンピュータが存在しているとする。
DBMS510は、クライアントモジュール335から受信する要求メッセージについては、要求メッセージに含まれるハッシュ値とDBMS510が保持するハッシュ値とが一致するため、インタフェース不整合が生じていないと判定する。一方、DBMS510は、クライアントモジュール333から受信する要求メッセージについては、要求メッセージに含まれるハッシュ値とDBMS510が保持するハッシュ値とが異なるため、インタフェース不整合が生じている可能性があると判定する。その場合、DBMS510は、詳細検査によりインタフェース整合性を判定する。
このように、カラムのデータ長を変えるデータ構造の変更が行われた場合、テーブル定義ファイルのハッシュ値が変化する。第2の実施の形態の簡易検査では、データ長変更後の新しいデータ構造に依拠する要求メッセージのみがインタフェース不整合なしと判定される。データ長変更前の古いデータ構造に依拠する要求メッセージについては、インタフェース不整合の可能性があるとして詳細検査が実行される。
以上、APサーバ300からDBサーバ500に送信される要求メッセージの検査について説明した。キャッシュサーバ400からDBサーバ500に送信される要求メッセージも同様の方法で検査することができる。その場合、ユーザソースコードとAPIソースコードからキャッシュサーバ400用のクライアントモジュールが生成される。ただし、キャッシュサーバ400用のユーザソースコードを、開発者が作成したSQL埋め込みプログラムからプレコンパイルにより生成するようにしてもよい。
また、APサーバ300からキャッシュサーバ400に送信される要求メッセージも同様の方法で検査することができる。その場合、開発者によりKVS410用のテーブル定義ファイルが作成され、そのテーブル定義ファイルからハッシュ値が算出されると共にAPIソースコードが生成される。以下、KVS410用のテーブル定義ファイルと、APサーバ300からキャッシュサーバ400への要求メッセージの例を説明する。
図14は、テーブル定義ファイルの第2の例を示す図である。
テーブル定義ファイル134は、キーバリュー形式のデータベースのデータ構造を表している。キーバリュー形式のデータベースは、1つのキーに対応付けて1つのバリューを記憶する。バリューは2以上のバリュー項目を含んでもよい。
テーブル定義ファイル134では、キーおよび1以上のバリュー項目それぞれの名称、データ型およびデータ長が定義される。テーブル定義ファイル134には、USERID、COMPANY、LNAME、FNAME、EMAILおよびPASSWDが定義されている。USERIDはキーであり、データ型は文字列型であり、データ長は4バイトである。COMPANYは1番目のバリュー項目であり、データ型は整数型である。LNAMEは2番目のバリュー項目であり、データ型は文字列型であり、データ長は255バイトである。FNAMEは3番目のバリュー項目であり、データ型は文字列型であり、データ長は255バイトである。EMAILは4番目のバリュー項目であり、データ型は文字列型であり、データ長は255バイトである。PASSWDは5番目のバリュー項目であり、データ型は文字列型であり、データ長は255バイトである。
開発端末100は、テーブル定義ファイル134からハッシュ値を算出し、テーブル定義ファイル134から当該ハッシュ値を埋め込んだクライアントモジュールを生成し、APサーバ300に配信する。また、開発端末100は、テーブル定義ファイル134をキャッシュサーバ400に配信する。キャッシュサーバ400は、テーブル定義ファイル134をデータベースに反映させる。また、キャッシュサーバ400は、テーブル定義ファイル134からハッシュ値を算出して保持しておく。
図15は、要求メッセージの第2の例を示す図である。
要求メッセージ332は、APサーバ300からキャッシュサーバ400に送信される。要求メッセージ332は、サーバIPアドレス、サーバポート番号、クライアントID、依頼番号、クライアントIPアドレス、クライアントポート番号、クライアントプロセスIDおよびクライアントスレッドIDの項目を含む。また、要求メッセージ332は、セッションID、送信時刻、処理種別、対象リソース、ハッシュ値、入力情報およびデータ格納域長の項目を含む。クライアントID、依頼番号、クライアントIPアドレス、クライアントポート番号、クライアントプロセスID、クライアントスレッドIDおよび送信時刻は、前述の要求メッセージ331と同様である。
サーバIPアドレスは、キャッシュサーバ400のIPアドレスである。サーバポート番号は、キャッシュサーバ400が要求メッセージの待ち受けに使用しているポート番号である。セッションIDは、APサーバ300とキャッシュサーバ400の間に確立されたコネクションの識別番号である。処理種別は、データベース操作の種別であり、取得(get)、保存(put)または削除(delete)である。
対象リソースは、操作対象データストアの名称である。ハッシュ値は、操作対象データストアに対応するハッシュ値である。キャッシュサーバ400は、要求メッセージ332に含まれるハッシュ値と保持しているハッシュ値とを比較し、両者が一致した場合にはインタフェース不整合は生じていないと判定する。入力情報は、取得対象レコードのキー、保存するバリューまたは削除対象レコードのキーを含む。
データ格納域長は、クライアントモジュールが取得レコードを格納するために用意した1レコード当たりのRAMの記憶領域のバイト数である。データ格納域長を超える長さのレコードがキャッシュサーバ400からAPサーバ300に送信された場合、APサーバ300において末尾側のバリュー項目のデータが切り捨てられる可能性がある。また、キャッシュサーバ400は、APサーバ300に送信するレコードの長さがデータ格納域長を超えないように、末尾側のバリュー項目のデータを切り捨てることがある。
第2の実施の形態の情報処理システムによれば、更新されたテーブル定義ファイルのハッシュ値が算出され、ハッシュ値の埋め込まれたクライアントモジュールが生成されてクライアント側コンピュータに配信される。このクライアントモジュールを実行することで、ハッシュ値を含む要求メッセージが送信される。また、更新されたテーブル定義ファイルに基づいてデータベースのデータ構造が変更され、サーバ側コンピュータにハッシュ値が登録される。そして、要求メッセージに含まれるハッシュ値とサーバ側コンピュータがもつ最新のハッシュ値とが比較され、両者が一致する場合には詳細検査をスキップして、インタフェース不整合は生じていないと判定される。
これにより、クライアントモジュールの修正ミスや配信ミスなどによってインタフェース不整合が生じ得る場合であっても、インタフェース整合性の検査を効率的に行うことが可能となる。よって、データベースのデータ構造の変更後に、様々なバリエーションの要求メッセージを用いた長時間のリグレッションテストを行わなくてもよく、運用再開までの時間を短縮できる。また、サーバ側コンピュータの検査の負荷が軽減されるため、運用中に継続的にインタフェース整合性の検査を行うこともできる。また、データベースのデータ構造に合ったAPIソースコードが自動的に生成されるため、開発者によるユーザソースコードの作成の負担が軽減される。
[第3の実施の形態]
次に、第3の実施の形態を説明する。第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の内容については説明を省略することがある。
第2の実施の形態では、末尾に新規カラムを追加する変更のみであっても、変更前のデータ構造を想定した要求メッセージと変更後のデータ構造をもつデータベースとの間で、インタフェース不整合が生じる可能性があると判定している。しかし、末尾に新規カラムを追加するだけでは、通常、インタフェース不整合によるエラーは発生しない。
特定のカラムに限定して検索や更新を行う要求メッセージについては、当該カラムが新規カラム追加の影響を受けないため、変更後のデータベースに対しても正しく実行することが可能である。特定のカラムに限定せずに全てのカラムを対象として検索を行う要求メッセージについては、新規カラム追加の影響を受けて、データベースから抽出される各レコードの長さが大きくなる。しかしながら、クライアントモジュールが用意する記憶領域の不足によって、末尾にある新規カラムのデータはクライアント側コンピュータで破棄される。または、要求メッセージで指定されたデータ格納域長に基づいて、末尾にある新規カラムのデータがサーバ側コンピュータで破棄される。よって、結果的にクライアントモジュールが認識するレコード長は新規カラム追加の影響を受けない。
そこで、第3の実施の形態では、末尾に新規カラムを追加するデータ構造の変更があった場合には、変更前のデータ構造を想定した要求メッセージに対して、インタフェース不整合は生じていないと簡易検査において判定できるようにする。第3の実施の形態の情報処理システムは、図2〜6に示した第2の実施の形態の情報処理システムと同様の構成によって実現できる。以下、図2〜6の符号を用いて第3の実施の形態を説明する。
図16は、ハッシュ値テーブルの第2の例を示す図である。
ハッシュ値テーブル532は、第2の実施の形態のハッシュ値テーブル531に代えて、DBサーバ500のハッシュ値記憶部522に記憶される。ハッシュ値テーブル532は、データベース名、スキーマ名、テーブル名、ハッシュ値数、タイムスタンプおよびハッシュ値の項目を含む。第3の実施の形態では、1つのテーブルに対して1以上のハッシュ値が登録される。ハッシュ値数は、あるテーブルに対応付けて登録されているハッシュ値の数である。タイムスタンプは、ハッシュ値がハッシュ値テーブル532に登録された時刻を示す。1つのハッシュ値は1つのテーブル定義ファイルから算出される。
あるテーブルのテーブル定義ファイルが更新されると、更新内容に応じて、当該テーブルに対応付けられた既存ハッシュ値が削除されて新規ハッシュ値のみ記憶されるか、または、既存ハッシュ値を残して新規ハッシュ値が追加される。データ構造の変更が新規テーブルの追加または既存テーブルに対する新規カラムの後方追加である場合、既存ハッシュ値は削除されない。それ以外の場合、既存ハッシュ値が削除される。要求メッセージに含まれるハッシュ値が、ハッシュ値テーブル532に登録された1以上のハッシュ値の何れかと一致すれば、インタフェース不整合は生じていないと判定される。
図17は、データベース設定の第2の手順例を示すフローチャートである。
(S40)データベース設定部524は、開発端末100からテーブル定義ファイルを受信し、受信したテーブル定義ファイルをテーブル定義記憶部521に格納する。
(S41)データベース設定部524は、開発端末100からの指示に応じて、ステップS40のテーブル定義ファイルをデータベースに反映させる。
(S42)データベース設定部524は、テーブル定義記憶部521に記憶されていた1以上の旧テーブル定義ファイルとステップS40の新テーブル定義ファイルとを比較し、データ構造の変更の種別を判定する。新テーブル定義ファイルに記載されたテーブル名が何れの旧テーブル定義ファイルにも出現しない場合、種別はテーブル追加と判定される。新テーブル定義ファイルとテーブル名が同じ旧テーブル定義ファイルが存在し、当該旧テーブル定義ファイルのカラムの全てが新テーブル定義ファイルにも記載されており、その後方に新規カラムが追加されている場合、種別はカラム後方追加と判定される。新テーブル定義ファイルとテーブル名が同じ旧テーブル定義ファイルが存在し、当該旧テーブル定義ファイルに記載されたカラムの少なくとも1つについてカラム名、データ型またはデータ長が変化している場合、種別はカラム修正と判定される。
(S43)データベース設定部524は、ステップS42で判定したデータ構造の変更の種別がテーブル追加またはカラム後方追加であるか判断する。データ構造の変更の種別がテーブル追加またはカラム後方追加である場合、ステップS45に処理が進む。データ構造の変更の種別がそれ以外の場合、ステップS44に処理が進む。
(S44)データベース設定部524は、ハッシュ値テーブル532から、新テーブル定義ファイルに記載されたテーブル名に対応するハッシュ値を全て削除する。
(S45)データベース設定部524は、新テーブル定義ファイルから、MD5やSHA−1などのハッシュ関数を用いてハッシュ値を算出する。
(S46)データベース設定部524は、新テーブル定義ファイルに記載されたテーブル名に対応付けて、ステップS45で算出したハッシュ値をハッシュ値テーブル532に追加する。このとき、現在時刻を示すタイムスタンプをハッシュ値に付加する。
よって、データ構造の変更の種別がテーブル追加である場合、当該テーブルに対応するハッシュ値が新たに登録される。データ構造の変更の種別がカラム後方追加である場合、当該テーブルに対応する既存のハッシュ値を全て履歴として残したまま、新しいハッシュ値が追加される。履歴として残すハッシュ値の数は制限されず、カラム後方追加が連続して行われた場合には履歴として残すハッシュ値が増加する。これに対し、データ構造の変更の種別がテーブル追加でもカラム後方追加でもない場合、当該テーブルに対応する既存のハッシュ値の全てが削除され、新しいハッシュ値のみが登録される。
図18は、データベース操作の第2の手順例を示すフローチャートである。
(S50)データベース操作部525は、データベース操作を要求する要求メッセージをクライアントモジュールから受信する。要求メッセージには、クライアントモジュールに埋め込まれたハッシュ値が含まれている。
(S51)データベース操作部525は、要求メッセージからハッシュ値を抽出する。
(S52)データベース操作部525は、ハッシュ値テーブル532から、要求メッセージが示す操作対象テーブルに対応付けられた1以上のハッシュ値を検索する。
(S53)データベース操作部525は、ステップS52で検索された1以上のハッシュ値のうち、タイムスタンプが新しい方から優先的にハッシュ値を1つ選択する。
(S54)データベース操作部525は、ステップS51のハッシュ値とステップS53のハッシュ値とを比較し、2つのハッシュ値が一致するか判断する。一致する場合、受信した要求メッセージについてインタフェース不整合は生じていないと判断され、ステップS58に処理が進む。一致しない場合、ステップS55に処理が進む。
(S55)データベース操作部525は、ステップS52で検索された全てのハッシュ値を選択したか判断する。全てのハッシュ値を選択した場合はステップS56に処理が進み、未選択のハッシュ値がある場合はステップS53に処理が進む。よって、操作対象テーブルに履歴も含めて2以上のハッシュ値が対応付けられている場合、そのうち何れか1つのハッシュ値が要求メッセージのハッシュ値と一致すれば、インタフェース不整合は生じていないと判断される。3世代以上のハッシュ値が登録されていることがあり、そのうち最も古い世代のハッシュ値と要求メッセージのハッシュ値とが一致する可能性もある。
(S56)データベース操作部525は、インタフェース整合性の詳細検査を行う。詳細検査では、データベース操作部525は、受信した要求メッセージを分析してテーブル定義ファイルに記載されたカラムの定義と照合する。
(S57)データベース操作部525は、ステップS56の詳細分析の結果から、インタフェース整合性が満たされているか判断する。インタフェース整合性が満たされている場合、すなわち、インタフェース不整合が生じていない場合、ステップS58に処理が進む。インタフェース整合性が満たされていない場合、すなわち、インタフェース不整合が生じている場合、ステップS60に処理が進む。
(S58)データベース操作部525は、要求メッセージに従って、データベースに対する検索、挿入、更新、削除などのデータベース操作を実行する。
(S59)データベース操作部525は、データベース操作の結果を示す応答メッセージを生成し、要求元のクライアントモジュールに対して送信する。
(S60)データベース操作部525は、インタフェース不整合が生じたことを示すエラーメッセージを生成し、要求元のクライアントモジュールに対して送信する。また、データベース操作部525は、DBサーバ500が保持するシステムログに、インタフェース不整合が生じたことを示すエラー情報を書き込む。
図19は、インタフェース整合性の第3の判定例を示す図である。
ここでは、図6のテーブル定義ファイル131がテーブル定義ファイル132に更新された場合を考える。すなわち、既存テーブルの末尾に新規カラムが追加されている。
クライアントモジュール333は、テーブル定義ファイル131に基づいて生成された古いクライアントモジュールであり、ハッシュ値「0xhgfedcba」を含む要求メッセージを送信する。クライアントモジュール334は、テーブル定義ファイル132から生成された新しいクライアントモジュールであり、ハッシュ値「0xabcdefgh」を含む要求メッセージを送信する。DBMS510は、データ構造の変更がカラム後方追加であるため、最新のハッシュ値「0xabcdefgh」に加えて少なくとも1つ前のハッシュ値「0xhgfedcba」を履歴として保持している。なお、DBMS510は、2つ前のハッシュ値など更に多くのハッシュ値を履歴として保持することもある。DBMS510は、種別がテーブル追加またはカラム後方追加であるデータ構造の変更のみが行われている間は、古いハッシュ値を何世代でも保持し続けることができる。
DBMS510は、クライアントモジュール334から受信する要求メッセージについて、要求メッセージに含まれるハッシュ値とDBMS510が保持する最新のハッシュ値とが一致するため、インタフェース不整合が生じていないと判定する。また、DBMS510は、クライアントモジュール333から受信する要求メッセージについて、要求メッセージに含まれるハッシュ値とDBMS510が保持するハッシュ値の履歴とが一致するため、インタフェース不整合が生じていないと判定する。
なお、テーブル定義ファイル131がテーブル定義ファイル133に更新された場合は、データ構造の変更がカラム修正であるため、DBMS510は1つ前のハッシュ値「0xhgfedcba」を削除し最新のハッシュ値「0xklmnopqr」のみを保持する。よって、簡易検査の結果は図13と同様となる。
第3の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、データ構造の変更がカラム後方追加のみである場合、変更前のデータ構造を想定した要求メッセージに対して、インタフェース不整合は生じないと簡易検査において判定される。よって、その場合には詳細検査をスキップでき、インタフェース整合性の検査を効率化できる。
10,20 情報処理装置
11 記憶部
11a,14a 符号
12 通信部
13 処理部
14 要求メッセージ
15 例外処理

Claims (11)

  1. データベースに定義された1以上のデータ項目を示すデータ構造情報から生成された第1の符号を記憶する記憶部と、
    前記データベースに対するデータの読み出しまたは書き込みを要求するメッセージであって第2の符号を含む要求メッセージを受信する通信部と、
    前記第1の符号と前記第2の符号とを比較し、前記第1の符号と前記第2の符号とが一致する場合、要求された前記読み出しまたは書き込みを許容し、前記第1の符号と前記第2の符号とが異なる場合、前記データベースのデータ項目と前記要求メッセージとの間の整合性についての例外処理を実行する処理部と、
    を有する情報処理装置。
  2. 前記データ構造情報は、前記データベースに対してデータ項目の定義の変更が行われた場合における変更後のデータ項目を示しており、
    前記記憶部は、前記データ項目の定義の変更が所定の条件を満たす場合、変更前のデータ項目を示す他のデータ構造情報から生成された第3の符号を更に記憶しており、
    前記処理部は、前記記憶部に前記第3の符号が記憶されている場合、前記第1の符号と前記第2の符号とが異なっても、前記第3の符号と前記第2の符号とが一致すれば、要求された前記読み出しまたは書き込みを許容する、
    請求項1記載の情報処理装置。
  3. 前記データ項目の定義の変更が前記所定の条件を満たさない場合、前記第3の符号が前記記憶部から削除されて前記第1の符号が前記記憶部に格納される、
    請求項2記載の情報処理装置。
  4. 前記所定の条件は、前記データ項目の定義の変更が前記データベースの所定の位置に新しいデータ項目を追加することである、
    請求項2記載の情報処理装置。
  5. 前記記憶部は、前記所定の条件を満たす複数回のデータ項目の定義の変更が行われた場合、前記複数回のデータ項目の定義の変更に対応する複数の符号を履歴として保持し、
    前記複数回のデータ項目の定義の変更の後に前記所定の条件を満たさないデータ項目の定義の変更が行われると、前記記憶部から前記履歴が削除される、
    請求項2記載の情報処理装置。
  6. 前記第1の符号は、前記データ構造情報から生成されたハッシュ値である、
    請求項1記載の情報処理装置。
  7. 前記ハッシュ値は、前記データ構造情報に記載されたデータ項目名、データ型およびデータ長の少なくとも1つと所定のハッシュ関数とを用いて生成される、
    請求項6記載の情報処理装置。
  8. 前記記憶部は、前記データ構造情報を更に記憶し、
    前記例外処理は、前記データ構造情報と前記要求メッセージとを比較して前記整合性を判定し、不整合と判定した場合にエラー情報を出力することを含む、
    請求項1記載の情報処理装置。
  9. データベースに対するデータの読み出しまたは書き込みを要求するメッセージであって第2の符号を含む要求メッセージを送信する第1の情報処理装置と、
    前記データベースに定義された1以上のデータ項目を示すデータ構造情報から生成された第1の符号を保持し、前記要求メッセージを受信する第2の情報処理装置とを有し、
    前記第2の情報処理装置は、前記第1の符号と前記第2の符号とを比較し、前記第1の符号と前記第2の符号とが一致する場合、要求された前記読み出しまたは書き込みを許容し、前記第1の符号と前記第2の符号とが異なる場合、前記データベースのデータ項目と前記要求メッセージとの間の整合性についての例外処理を実行する、
    情報処理システム。
  10. 前記データ構造情報に基づいて、前記要求メッセージの送信に用いられるプログラムであって前記第2の符号が埋め込まれたクライアントプログラムを生成し、前記クライアントプログラムを前記第1の情報処理装置に配信する第3の情報処理装置を更に有する、
    請求項9記載の情報処理システム。
  11. コンピュータに、
    データベースに対するデータの読み出しまたは書き込みを要求するメッセージであって第2の符号を含む要求メッセージを取得し、
    前記データベースに定義された1以上のデータ項目を示すデータ構造情報から生成された前記コンピュータが保持する第1の符号と、前記第2の符号とを比較し、
    前記第1の符号と前記第2の符号とが一致する場合、要求された前記読み出しまたは書き込みを許容し、前記第1の符号と前記第2の符号とが異なる場合、前記データベースのデータ項目と前記要求メッセージとの間の整合性についての例外処理を実行する、
    処理を実行させるプログラム。
JP2017184912A 2017-09-26 2017-09-26 情報処理装置、情報処理システムおよびプログラム Active JP7116292B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017184912A JP7116292B2 (ja) 2017-09-26 2017-09-26 情報処理装置、情報処理システムおよびプログラム
US16/051,968 US11113265B2 (en) 2017-09-26 2018-08-01 Information processing apparatus and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017184912A JP7116292B2 (ja) 2017-09-26 2017-09-26 情報処理装置、情報処理システムおよびプログラム

Publications (2)

Publication Number Publication Date
JP2019061437A true JP2019061437A (ja) 2019-04-18
JP7116292B2 JP7116292B2 (ja) 2022-08-10

Family

ID=65807667

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017184912A Active JP7116292B2 (ja) 2017-09-26 2017-09-26 情報処理装置、情報処理システムおよびプログラム

Country Status (2)

Country Link
US (1) US11113265B2 (ja)
JP (1) JP7116292B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400304A (zh) * 2020-02-19 2020-07-10 中国建设银行股份有限公司 一种获取截面日期全量数据的方法、装置、电子设备及存储介质
CN112115166B (zh) * 2020-08-11 2022-11-15 苏宁云计算有限公司 数据缓存方法、装置、计算机设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228403A (ja) * 1997-02-14 1998-08-25 Nec Corp データ処理システムおよびデータ処理装置
JP2001331324A (ja) * 2000-05-19 2001-11-30 Sony Corp 情報処理方法および装置、ならびに、記録媒体
US20060085465A1 (en) * 2004-10-15 2006-04-20 Oracle International Corporation Method(s) for updating database object metadata
JP2006227858A (ja) * 2005-02-17 2006-08-31 Seiko Epson Corp データベース仕様書管理システムとデータベース仕様書管理プログラムと記録媒体とデータベース仕様書管理方法
US20090313210A1 (en) * 2008-06-17 2009-12-17 Bestgen Robert J Encoded matrix index
WO2011089864A1 (ja) * 2010-01-21 2011-07-28 日本電気株式会社 ファイル群整合性検証システム、ファイル群整合性検証方法およびファイル群整合性検証用プログラム
JP2015534143A (ja) * 2012-08-08 2015-11-26 アマゾン テクノロジーズ インコーポレイテッド アーカイブデータ識別

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4704245B2 (ja) 2005-03-31 2011-06-15 株式会社リコー 画像形成装置、情報処理方法、プログラム、及び記録媒体
JP4876188B2 (ja) 2005-03-31 2012-02-15 株式会社リコー 画像形成装置、情報処理方法、プログラム、及び記録媒体
US7822714B2 (en) * 2006-06-07 2010-10-26 International Business Machines Corporation Extending configuration management databases using generic datatypes
US9053161B2 (en) * 2012-08-30 2015-06-09 International Business Machines Corporation Database table format conversion based on user data access patterns in a networked computing environment
US9251355B2 (en) 2013-07-30 2016-02-02 International Business Machines Corporation Field level database encryption using a transient key

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228403A (ja) * 1997-02-14 1998-08-25 Nec Corp データ処理システムおよびデータ処理装置
JP2001331324A (ja) * 2000-05-19 2001-11-30 Sony Corp 情報処理方法および装置、ならびに、記録媒体
US20060085465A1 (en) * 2004-10-15 2006-04-20 Oracle International Corporation Method(s) for updating database object metadata
JP2006227858A (ja) * 2005-02-17 2006-08-31 Seiko Epson Corp データベース仕様書管理システムとデータベース仕様書管理プログラムと記録媒体とデータベース仕様書管理方法
US20090313210A1 (en) * 2008-06-17 2009-12-17 Bestgen Robert J Encoded matrix index
WO2011089864A1 (ja) * 2010-01-21 2011-07-28 日本電気株式会社 ファイル群整合性検証システム、ファイル群整合性検証方法およびファイル群整合性検証用プログラム
JP2015534143A (ja) * 2012-08-08 2015-11-26 アマゾン テクノロジーズ インコーポレイテッド アーカイブデータ識別

Also Published As

Publication number Publication date
US20190095479A1 (en) 2019-03-28
US11113265B2 (en) 2021-09-07
JP7116292B2 (ja) 2022-08-10

Similar Documents

Publication Publication Date Title
US11093377B2 (en) Systems and methods for testing source code
US7953744B2 (en) Database change verifier
US8065323B2 (en) Offline validation of data in a database system for foreign key constraints
US20190079963A1 (en) Methods and systems for appending data to large data volumes in a multi-tenant store
US11288002B2 (en) System and method for providing high availability data
US7275105B2 (en) Enabling online and offline operation
US7730097B2 (en) Smart database
US8620923B1 (en) System and method for storing meta-data indexes within a computer storage system
US8069141B2 (en) Interfaces for high availability systems and log shipping
US7343377B1 (en) Method and system for verifying the integrity of a database
US20050234934A1 (en) System and method for controlling the release of updates to a database configuration
US10296542B2 (en) Integration database framework
US20090049013A1 (en) Enhanced control to users to populate a cache in a database system
US7765196B2 (en) Method and apparatus for web cache using database triggers
US20090006933A1 (en) Server Directory Schema Comparator
US7099889B2 (en) System and method for decoupling object identification for the purpose of object switching in database systems
US8490078B2 (en) System and method for application management
US20070234328A1 (en) File handling for test environments
US11811851B2 (en) Method and system for enforcing governance across multiple content repositories using a content broker
US20140032703A1 (en) System and method for an expandable computer storage system
JP7116292B2 (ja) 情報処理装置、情報処理システムおよびプログラム
US10705832B2 (en) Efficient storage and analysis of source code modification history data
US20230089710A1 (en) Data request server code and configuration file deployment
US8549007B1 (en) System and method for indexing meta-data in a computer storage system
US9766949B2 (en) System and method for locking exclusive access to a divided resource

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200611

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200625

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200625

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210818

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220408

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220408

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220418

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220419

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220711

R150 Certificate of patent or registration of utility model

Ref document number: 7116292

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150