JP2006235903A - リレーショナルデータベースのアクセス制御方法 - Google Patents
リレーショナルデータベースのアクセス制御方法 Download PDFInfo
- Publication number
- JP2006235903A JP2006235903A JP2005048334A JP2005048334A JP2006235903A JP 2006235903 A JP2006235903 A JP 2006235903A JP 2005048334 A JP2005048334 A JP 2005048334A JP 2005048334 A JP2005048334 A JP 2005048334A JP 2006235903 A JP2006235903 A JP 2006235903A
- Authority
- JP
- Japan
- Prior art keywords
- database
- data
- user application
- program
- sql
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】 データベースを仮想空間上のページングに影響されることなくアクセスしディスクI/O回数を減少させること。
【解決手段】 ユーザアプリケーションプログラムが同一のリレーショナルデータベースにアクセスする際の制御方法であって、ユーザアプリケーションから大量データを扱う処理であるという宣言を受けた場合、SQL発行プログラムよりリレーショナルデータベースを全件実行空間上のデータベース格納エリアに設定し、ユーザアプリケーションプログラムより次要求が発生した際は設定したデータベース格納エリアを検索し、要求元にデータを返すステップを備えることを特徴とする。
【選択図】 図1
【解決手段】 ユーザアプリケーションプログラムが同一のリレーショナルデータベースにアクセスする際の制御方法であって、ユーザアプリケーションから大量データを扱う処理であるという宣言を受けた場合、SQL発行プログラムよりリレーショナルデータベースを全件実行空間上のデータベース格納エリアに設定し、ユーザアプリケーションプログラムより次要求が発生した際は設定したデータベース格納エリアを検索し、要求元にデータを返すステップを備えることを特徴とする。
【選択図】 図1
Description
本発明は、SQLにてアクセスするリレーショナルデータベースのアクセス制御方法に関するものである。
データベースへのアクセス方法におけるバッファリング技法は、データベースへアクセスする場合のディスクI/O回数に大きく影響を与える。
従来の方法としてはLRU(Least Recently Used)管理方法およびデータ常駐指定方法が知られている。
LRU管理方法は、メモリ領域を効率よく管理するための手法で、直近に使用されたデータはメモリ領域に残し、最も古いデータ(最も長い間使用されていないデータ)があるメモリ領域から順に利用する。
データ常駐指定方法は、データベースの表や表定義情報などをメモリに常駐するように指定する方法であり、マスタテーブルなど頻繁にアクセスされるものがメモリに常駐していると、ディスクI/Oが発生せず、データベースのアクセス効率が良くなる。
このようなデータベースアクセス方法として、下記の特許文献1に開示されたものがある。
特開2003−271649号公報
従来の方法としてはLRU(Least Recently Used)管理方法およびデータ常駐指定方法が知られている。
LRU管理方法は、メモリ領域を効率よく管理するための手法で、直近に使用されたデータはメモリ領域に残し、最も古いデータ(最も長い間使用されていないデータ)があるメモリ領域から順に利用する。
データ常駐指定方法は、データベースの表や表定義情報などをメモリに常駐するように指定する方法であり、マスタテーブルなど頻繁にアクセスされるものがメモリに常駐していると、ディスクI/Oが発生せず、データベースのアクセス効率が良くなる。
このようなデータベースアクセス方法として、下記の特許文献1に開示されたものがある。
しかしながら、LRU管理方方法にあっては、全てのデータベースのアクセスに関して扱いが同じでかつDBMS(database management system)で管理する同一の仮想空間を使用する。例えば先にデータも少なく次検索でのページヒット率の高いテーブル系データベースを処理し、後からデータが多く次検索でのページヒット率の低いデータ系データベースの検索処理を行うと、LRU管理されているのでデータの大きさによっては一部のデータが仮想空間から追い出されてしまう、その後再度テーブル系データベースのデータを参照しようとして仮想空間にデータがない場合、データベースからデータを読み込まなければならない。そのことによりディスクI/Oの発生が起こり処理時間の低下につながる。
データ常駐指定方法の場合は、表定義情報にメモリ常駐の指定がしてあるために仮想空間の大きさにより指定できるデータベースの数が限られてしまいテーブル系データベースの数が多い場合には不都合がある。
データ常駐指定方法の場合は、表定義情報にメモリ常駐の指定がしてあるために仮想空間の大きさにより指定できるデータベースの数が限られてしまいテーブル系データベースの数が多い場合には不都合がある。
本発明の目的は、データベースを仮想空間上のページングに影響されることなくアクセスしディスクI/O回数を減少させることができるリレーショナルデータベースのアクセス制御方法を提供することにある。
上記目的を達成するために本発明は、ユーザアプリケーションから大量データを扱う処理であるという宣言を受けた場合、SQL発行プログラムよりリレーショナルデータベースを全件実行空間上のデータベース格納エリアに設定し、ユーザアプリケーションプログラムより次要求が発生した際は設定したデータベース格納エリアを検索し、要求元にデータを返すステップを備えることを特徴とする。
本発明によれば、頻繁にアクセスされてデータ量が少ないテーブル系データベースを、他のデータ系データベースとは別に全レコードJOB実行空間に置くことにより、仮想空間上で行われるページング・ページアウトに係わることなくアクセスすることができる。
そのことにより、実際のデータベースへのディスクI/O回数も減少させることができる。
また、必要なデータベースの選択がユーザアプリケーション上で行うことができるのでメモリのサイズによって常駐させるデータベースの選択も行うことができる。
そのことにより、実際のデータベースへのディスクI/O回数も減少させることができる。
また、必要なデータベースの選択がユーザアプリケーション上で行うことができるのでメモリのサイズによって常駐させるデータベースの選択も行うことができる。
以下、本発明を実施の形態に基づいて説明する。
図1は本発明の実施の形態を示すコンピュータシステム構成図である。
図1に示すように、本実施形態におけるシステムはJOBが実行されたとき主記憶装置に取得するJOB実行空間100、実行側とデータでース間のインタフェースとなるソフトウエアDBMS200、主記憶装置上にありDBMSがデータの操作を行うページの連続領域である仮想空間300、仮想空間にデータが存在しない場合データベースより仮想記憶にページ単位でデータを取得するOS(operating system)400、補助記憶装置にあるデータベース500からなっている。
図1は本発明の実施の形態を示すコンピュータシステム構成図である。
図1に示すように、本実施形態におけるシステムはJOBが実行されたとき主記憶装置に取得するJOB実行空間100、実行側とデータでース間のインタフェースとなるソフトウエアDBMS200、主記憶装置上にありDBMSがデータの操作を行うページの連続領域である仮想空間300、仮想空間にデータが存在しない場合データベースより仮想記憶にページ単位でデータを取得するOS(operating system)400、補助記憶装置にあるデータベース500からなっている。
JOB実行空間には、業務固有の処理を行うユーザアプリケーションプログラム100a、ユーザアプリケーションプログラム100aがデータベース500へのアクセスを行うためのSQL発行プログラム100b、前出のSQL発行プログラム100bが読込んだレコードの設定を行うデータベース格納エリア100cが存在する。
図2は、処理対象となるユーザアプリケーションプログラム100aから、SQL発行プログラム100bへ引き渡すインタフェースへの項目設定手順を示すフローチャートである。
図3に両モジュール間の受渡を行うインタフェースのレイアウトを示す。
先ず、ステップS201にて該当データベース500をアクセスするためのインデックスの検索キーをSQL発行プログラム100bのインタフェースに設定する。
ステップS202ではそのプログラムが大量データを扱う処理かどうかを判断する。
大量データを扱わない処理である場合は、ステップS203に進み一括読込フラグを設定せずSQL発行プログラム100bを実行し、大量データを扱う場合はステップS204に進み次にアクセスするDBがテーブルDBであるかどうか判断する。
テーブルDBでない場合はステップS205に進みS203と同様の処理を行う、テーブルDBの場合はステップS206に進み一括読込フラグを設定し、SQL発行プログラム100bを実行する。
図3に両モジュール間の受渡を行うインタフェースのレイアウトを示す。
先ず、ステップS201にて該当データベース500をアクセスするためのインデックスの検索キーをSQL発行プログラム100bのインタフェースに設定する。
ステップS202ではそのプログラムが大量データを扱う処理かどうかを判断する。
大量データを扱わない処理である場合は、ステップS203に進み一括読込フラグを設定せずSQL発行プログラム100bを実行し、大量データを扱う場合はステップS204に進み次にアクセスするDBがテーブルDBであるかどうか判断する。
テーブルDBでない場合はステップS205に進みS203と同様の処理を行う、テーブルDBの場合はステップS206に進み一括読込フラグを設定し、SQL発行プログラム100bを実行する。
図4は、SQL発行プログラム100bの処理を示すフローチャートである。
先ずステップS401にてユーザアプリケーションプログラム100aから引き渡されたインタフェースの一括読込みフラグが設定されているかどうかを判別する。
設定されていない場合、ステップS402に進み、図5(a)のように設定された検索キーでデータベース500を検索するSQLを発行し、DBMS200に引渡し、ステップS403にてDBMS200にて取得したデータをユーザアプリケーションへの引渡しのインタフェースに設定し、ユーザアプリケーションプログラム100aに処理を戻す。
先ずステップS401にてユーザアプリケーションプログラム100aから引き渡されたインタフェースの一括読込みフラグが設定されているかどうかを判別する。
設定されていない場合、ステップS402に進み、図5(a)のように設定された検索キーでデータベース500を検索するSQLを発行し、DBMS200に引渡し、ステップS403にてDBMS200にて取得したデータをユーザアプリケーションへの引渡しのインタフェースに設定し、ユーザアプリケーションプログラム100aに処理を戻す。
一括読込みフラグが設定されている場合は、ステップS404にてデータベース格納エリア100cの状態を解析し、テーブル全件格納できるかどうかをチェックする。
格納できない場合は、ステップS402に進み前記の処理を実行する。
格納できる場合は、ステップS405に進み図5(b)のようにカーソル発行のSQLを発行し、DBMS200に引渡し、ステップS406にて図5(c)のように発行したカーソルにてデータを検索するSQLを発行し、DBMS200に引き渡す。
格納できない場合は、ステップS402に進み前記の処理を実行する。
格納できる場合は、ステップS405に進み図5(b)のようにカーソル発行のSQLを発行し、DBMS200に引渡し、ステップS406にて図5(c)のように発行したカーソルにてデータを検索するSQLを発行し、DBMS200に引き渡す。
ステップS407にてDBMS200にてデータを取得された場合は、ステップS408に進みデータベース格納エリア100cにデータを設定する。
データが続く間繰り返しステップS406からステップS408を繰り返し、データが終了したらステップS409に進み、ユーザアプリケーションプログラム100aから要求された検索キーのデータをデータベース格納エリア100cから取得し、ユーザアプリケーションへの引渡しのインタフェースに設定し、ユーザアプリケーションプログラム100aに処理を戻す。
データが続く間繰り返しステップS406からステップS408を繰り返し、データが終了したらステップS409に進み、ユーザアプリケーションプログラム100aから要求された検索キーのデータをデータベース格納エリア100cから取得し、ユーザアプリケーションへの引渡しのインタフェースに設定し、ユーザアプリケーションプログラム100aに処理を戻す。
図6は、DBMS200と仮想記憶300とOS400とデータベース500に関する処理のフローチャートである。
DBMS200はステップS601にてSQL発行プログラム100bから発行されたSQLより仮想記憶にデータがあるかどうかを検索する。
データがない場合は、ステップS602にてOS400を経由してデータベース500より該当データが格納されているページを取得する。
その際、ステップS603にて仮想記憶にそのページを書き込める空きがあるかどうかをチェックし、空きがない場合はステップS604にて仮想記憶に登録されているページの中から最古のページをページアウトし、ステップS605にて仮想記憶に登録する。
空きがある場合は、ステップS605にて仮想記憶に登録する。そして、ステップS606にて仮想記憶に最初から存在する場合、またない場合、前記のように仮想記憶に登録されたデータをDBMS200が取り込む。
そして、SQL発行プログラム100bへの戻りのインタフェースに設定し引き渡す。その後、テーブルデータ全件読み込み中の際は、ステップS607にてテーブルデータを全て読込んだかを確認し、全部取り込んだ場合はステップS608にて仮想記憶中の該当テーブルDBのページをすぐページアウト対象になるように最古の検索状態にする。
DBMS200はステップS601にてSQL発行プログラム100bから発行されたSQLより仮想記憶にデータがあるかどうかを検索する。
データがない場合は、ステップS602にてOS400を経由してデータベース500より該当データが格納されているページを取得する。
その際、ステップS603にて仮想記憶にそのページを書き込める空きがあるかどうかをチェックし、空きがない場合はステップS604にて仮想記憶に登録されているページの中から最古のページをページアウトし、ステップS605にて仮想記憶に登録する。
空きがある場合は、ステップS605にて仮想記憶に登録する。そして、ステップS606にて仮想記憶に最初から存在する場合、またない場合、前記のように仮想記憶に登録されたデータをDBMS200が取り込む。
そして、SQL発行プログラム100bへの戻りのインタフェースに設定し引き渡す。その後、テーブルデータ全件読み込み中の際は、ステップS607にてテーブルデータを全て読込んだかを確認し、全部取り込んだ場合はステップS608にて仮想記憶中の該当テーブルDBのページをすぐページアウト対象になるように最古の検索状態にする。
図7は、データベース格納エリア100c設定後のSQLプログラム100bの処理を示すフローチャートである。
ユーザアプリケーションプログラム100aよりDB検索の要求を受けたSQL発行プログラム100bは、ステップS701にて該当のデータベースがすでにデータベース格納エリア100cに格納されているかを確認し、格納されていない場合はステップS702のように通常のSQL発行プログラムの処理(図2の処理)を行い、ステップS704のように取得したデータをユーザアプリケーションプログラムへのインタフェースに設定する。
既に格納されている場合は、ステップS703のようにユーザアプリケーションプログラム100aより設定された検索キーに該当するデータを検索し、ステップS704のように取得したデータをユーザアプリケーションプログラムへのインタフェースに設定する。
ユーザアプリケーションプログラム100aよりDB検索の要求を受けたSQL発行プログラム100bは、ステップS701にて該当のデータベースがすでにデータベース格納エリア100cに格納されているかを確認し、格納されていない場合はステップS702のように通常のSQL発行プログラムの処理(図2の処理)を行い、ステップS704のように取得したデータをユーザアプリケーションプログラムへのインタフェースに設定する。
既に格納されている場合は、ステップS703のようにユーザアプリケーションプログラム100aより設定された検索キーに該当するデータを検索し、ステップS704のように取得したデータをユーザアプリケーションプログラムへのインタフェースに設定する。
100 JOB実行空間
100a ユーザアプリケーションプログラム
100b SQL発行プログラム
100c データベース格納エリア
200 DBMS
300 仮想空間
400 OS
500 データベース
100a ユーザアプリケーションプログラム
100b SQL発行プログラム
100c データベース格納エリア
200 DBMS
300 仮想空間
400 OS
500 データベース
Claims (1)
- ユーザアプリケーションプログラムが同一のリレーショナルデータベースにアクセスする際の制御方法であって、
ユーザアプリケーションから大量データを扱う処理であるという宣言を受けた場合、SQL発行プログラムよりリレーショナルデータベースを全件実行空間上のデータベース格納エリアに設定し、ユーザアプリケーションプログラムより次要求が発生した際は設定したデータベース格納エリアを検索し、要求元にデータを返すステップを備えることを特徴とするリレーショナルデータベースのアクセス制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005048334A JP2006235903A (ja) | 2005-02-24 | 2005-02-24 | リレーショナルデータベースのアクセス制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005048334A JP2006235903A (ja) | 2005-02-24 | 2005-02-24 | リレーショナルデータベースのアクセス制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006235903A true JP2006235903A (ja) | 2006-09-07 |
Family
ID=37043493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005048334A Pending JP2006235903A (ja) | 2005-02-24 | 2005-02-24 | リレーショナルデータベースのアクセス制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006235903A (ja) |
-
2005
- 2005-02-24 JP JP2005048334A patent/JP2006235903A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775524B2 (en) | Cache for efficient record lookups in an LSM data structure | |
US10664497B2 (en) | Hybrid database table stored as both row and column store | |
US10346383B2 (en) | Hybrid database table stored as both row and column store | |
CN107273522B (zh) | 面向多应用的数据存储系统和数据调用方法 | |
US10296462B2 (en) | Method to accelerate queries using dynamically generated alternate data formats in flash cache | |
EP2987096B1 (en) | Caching external data sources for sql processing | |
CN106575297B (zh) | 使用盲更新操作的高吞吐量数据修改 | |
US7146365B2 (en) | Method, system, and program for optimizing database query execution | |
US8176233B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
US20140244628A1 (en) | Hybrid Database Table Stored as Both Row and Column Store | |
US20140101132A1 (en) | Swapping expected and candidate affinities in a query plan cache | |
US11886401B2 (en) | Database key compression | |
CN102955792A (zh) | 一种实时全文搜索引擎事务处理的实现方法 | |
WO2017161540A1 (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
US11249968B2 (en) | Large object containers with size criteria for storing mid-sized large objects | |
US10558636B2 (en) | Index page with latch-free access | |
US10642745B2 (en) | Key invalidation in cache systems | |
CN114443722A (zh) | 缓存管理方法、装置、存储介质及电子设备 | |
JP2006235903A (ja) | リレーショナルデータベースのアクセス制御方法 | |
Tang et al. | An Efficient In-Memory Analytics System Based on Persistent Memory | |
JPH1185585A (ja) | 完全メモリ常駐型インデックス方法および装置 | |
CN116257519A (zh) | 一种数据读写的方法、装置、计算机设备及存储介质 | |
WO2017019128A1 (en) | File system metadata representations |