JP5230184B2 - 検索装置、検索方法及び検索プログラム - Google Patents

検索装置、検索方法及び検索プログラム Download PDF

Info

Publication number
JP5230184B2
JP5230184B2 JP2007320550A JP2007320550A JP5230184B2 JP 5230184 B2 JP5230184 B2 JP 5230184B2 JP 2007320550 A JP2007320550 A JP 2007320550A JP 2007320550 A JP2007320550 A JP 2007320550A JP 5230184 B2 JP5230184 B2 JP 5230184B2
Authority
JP
Japan
Prior art keywords
search
record
record number
unit
acquisition
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.)
Expired - Fee Related
Application number
JP2007320550A
Other languages
English (en)
Other versions
JP2009146022A (ja
Inventor
純也 氏家
武尚 水口
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007320550A priority Critical patent/JP5230184B2/ja
Priority to EP08011849.0A priority patent/EP2071476B1/en
Priority to US12/167,476 priority patent/US20090157621A1/en
Priority to CN2008101454186A priority patent/CN101458696B/zh
Publication of JP2009146022A publication Critical patent/JP2009146022A/ja
Application granted granted Critical
Publication of JP5230184B2 publication Critical patent/JP5230184B2/ja
Expired - Fee Related 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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/24Querying
    • G06F16/248Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (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)

Description

本発明は、例えば、データベースから情報を検索し取得する技術に関する。
RDBMS(Relational Database Management System)を用いたデータ管理において、検索条件を満たすレコードが複数ある場合、各レコードは所定の規定(RDBMSへの格納順序、検索における整列条件)に従い整列されている。RDBMSの利用者はレコードを順番に取得し利用する。また、レコードを順番に取得するのではなく、任意の箇所のレコードを取得する場合は、カーソルを用いてRDBMSを制御することで、所望のレコードを取得できる。
RDBMSを用いた検索処理の高速化技術として以下の技術がある。
特許文献1では、演算装置のデータ受信領域が満杯になるとデータ処理装置内部のキャッシュメモリに先読みデータを記憶する。そして、後にキャッシュメモリに記憶した先読みデータを演算装置に転送することで演算処理の高速化を実現する。
特許文献2では、記憶装置が、RDBMSの構成情報、および実行対象クエリ、実行優先度情報などの情報を取得する。そして、取得した情報を用いて記憶装置においてデータキャッシュ制御を行うことで、データアクセス性能を向上させる。
ただし、いずれの技術においても、RDBMSの利用者は、同じ条件でヒット件数を事前に取得しない限り、条件を満たすレコードの件数(ヒット件数)を検索実行中は知り得ない。つまり、RDBMSの利用者は、RDBMSがヒットしたレコードを全て読み込み、検索が完了することで、又は、カーソル制御により検索結果の末尾までカーソルが到達することで、初めてヒット件数を知ることになる。
特開平2−236668号公報 特開2003−150419号公報
近年、組み込み機器等で扱うデータの量、種類が増加しており、組み込み機器等でもRDBMSを用いたデータ管理が行われている。組み込み機器は、表示装置(ディスプレイ)のサイズが小さく、検索結果としてRDBMSから取り出したレコードの表示件数にも制約が生じる。そのため、ヒット件数が多い場合、ユーザ操作により表示するレコードを変更することになる。例えば、十字キーを持つ組み込み機器の場合、右キーを押すことで「次のページの表示」、左キーを押すことで「前のページの表示」をする。
組み込み機器で動作するRDBMSを操作して表示装置にレコードを表示するプログラム(以下、表示プログラム)では、「次のページの表示」「前のページの表示」という処理命令を、「検索結果のうち、先頭から○〜△番目のレコードの表示」等という実際に表示するレコードの番号を用いた具体的な処理命令に変換する。つまり、1度に5件表示する表示プログラムが、現在先頭から6〜10番目のレコードを表示している場合、「次のページの表示」という処理命令を「検索結果のうち、先頭から11〜15番目のレコードの表示」という処理命令変換し、「前のページの表示」という処理命令を「検索結果のうち、先頭から1〜5番目のレコードの表示」という処理命令に変換する。そして、変換後の命令に基づきRDBMSへ検索結果の取得要求を出す。
ここで、上記表示プログラムが検索結果の初期表示、つまり検索結果のうち、先頭から1〜5番目のレコードを表示しているとして、ユーザが左キーを押す(「前のページの表示」の処理命令を出す)と検索結果の末尾に位置するレコードを表示する動作を考える。表示プログラムは、上述のように実際に表示するレコードの番号を用いてRDBMSにレコード取得の要求を出す。「前のページの表示」の処理命令からレコード番号への変換をするためには、検索結果に含まれるレコード件数(以下、ヒット件数)が必要である。例えば、ヒット件数が500件と分かれば、「前のページの表示」の処理命令を「検索結果のうち、先頭から496〜500番目のレコードの表示」という処理命令に変換できる。
つまり、表示プログラムは、「次のページの表示」「前のページの表示」という処理を行うには、表示するレコードと同時に、ヒット件数を取得していなければならない。この課題を解決するためには、レコードを取得するための検索要求をRDBMSに出す前に、その検索要求と同じ条件を用いてヒット件数のみを取得する検索要求を出せばよい。しかし、同じ条件の検索を2回実行することになるため、効率的ではなく、検索結果の表示に時間がかかってしまう。
また、RDBMSは表示プログラムから検索要求を受けると、検索条件を満たすレコードをデータベースから探して、検索結果を構築する。RDBMSは一般的に検索結果の構築を検索結果の先頭から順番に行う。ここで、上述の検索結果末尾の表示を考えると、「検索結果のうち、先頭から496〜500番目のレコード」をRDBMSから取得するためには、「検索結果のうち、先頭から1〜495番目のレコード」を既に取得している必要がある。よって、表示プログラムが検索結果の末尾に位置するレコードを表示するためには、RDBMSにおける検索結果の構築が完了していなければならない。つまり、検索結果の表示に時間がかかってしまう。
この発明は、例えば、組み込み機器等で動作するRDBMSから取得したレコードを利用するプログラム(上述した表示プログラム等)がヒット件数、および検索結果の任意の箇所に位置するレコードを高速に取得することを目的とする。言い替えると、この発明は、例えば、組み込み機器等がヒット件数、および検索結果の任意の箇所に位置するレコードを高速に取得することを目的とする。
本発明に係る検索装置は、例えば、データベースからデータを検索する検索装置であり、
取得対象項目と検索対象テーブルと検索条件とを示す検索情報を入力する検索情報入力部と、
上記データベースのテーブルであって、上記検索情報入力部が入力した上記検索情報が示す検索対象テーブルから上記検索情報が示す検索条件を満たすレコードを検索して、検索したレコードから上記検索対象テーブルのレコードを一意に特定するレコード番号を順位付けしながら取得するレコード番号検索部と、
所定の順位を示す順位情報を入力する順位情報入力部と、
上記レコード番号検索部が取得したレコード番号であって、上記順位情報入力部が入力した順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを取得する対象項目取得部と
を備えることを特徴とする。
本発明に係る検索装置は、取得対象項目のデータを取得する前に、レコード番号を順位付けしながら取得する。そのため、本発明に係る検索装置によれば、上述した「次のページの表示」「前のページの表示」という処理命令を、実際に表示するレコードのレコード番号を用いた具体的な処理命令に高速に変換することが可能となり、検索結果の任意の箇所に位置するレコードを高速に取得することが可能である。
実施の形態1.
この実施の形態では、検索結果の任意の箇所に位置するレコードを高速に取得することを可能とした検索装置100について説明する。
図1は、この実施の形態に係る検索装置100を備える検索システムの機能ブロック図である。
検索システムは、検索装置100(検索結果取得制御部)、アプリケーション110(検索指示部の一例)、RDBMS120、記憶装置130を備える。
検索装置100は、検索結果の任意の箇所に位置するレコードを高速に取得することを可能とした装置であり、詳細については後述する。
アプリケーション110は、検索装置100を利用するプログラムである。アプリケーション110は、記憶装置130が記憶したデータを取得し、それらを表示し、また他の装置やプログラムに提供する。
RDBMS120は、記憶装置130に蓄積されたデータベースにアクセスする機能を提供するプログラムである。
記憶装置130は、例えば、HDD(Hard Disk Drive)、またはSSD(Solid State Disk)等の不揮発性記憶装置である。記憶装置130は、データの集合(データベース)を蓄積・記憶する。一般に、データベースは複数のテーブルを持つことができ、テーブルは複数のレコードを持つことができる。
つまり、検索装置100は、アプリケーション110からの検索指示に従い、RDBMS120を介して、記憶装置130が記憶したレコードの情報を取得する。そして、検索装置100は、検索して取得した情報をアプリケーション110へ送信する。
なお、検索装置100、アプリケーション110、RDBMS120、記憶装置130は、1つの装置内にあっても、それぞれが個々の装置として分かれた構成であってもよい。つまり、検索装置100、アプリケーション110、RDBMS120、記憶装置130が1つの組み込み機器に備えられていてもよいし、アプリケーション110のみが組み込み機器に備えられ、検索装置100、RDBMS120、記憶装置130は他の機器に備えられていてもよい。
また、以下の説明において、処理装置は、例えば、後述するCPU911であり、通信装置は、例えば、後述する通信ボード915やバス912であり、入力装置は、例えば、後述する通信ボード915やキーボード902である。
次に、検索装置100について説明する。検索装置100は、要求制御部101、検索制御部105、検索結果蓄積部108を備える。
要求制御部101は、アプリケーション110からの要求を受け付ける機能であり、検索情報入力部102、順位情報入力部103、通知部104を備える。
検索情報入力部102は、検索装置100の外部にあるアプリケーション110から通信装置や入力装置を介して検索開始要求(検索情報の一例)を受け、検索開始要求を通信装置や入力装置を介して検索制御部105へ送信する。
順位情報入力部103は、アプリケーション110から通信装置や入力装置を介して検索結果取得要求(順位情報の一例)を受け、検索結果取得要求を通信装置や入力装置を介して検索制御部105へ送信する。
通知部104は、検索制御部105から通信装置や入力装置を介して検索開始要求と検索結果取得要求とに対する通知(応答)を受信すると、アプリケーション110へ通信装置や入力装置を介して検索開始要求と検索結果取得要求とに対する通知(応答)を送信する。
検索制御部105は、検索処理を実行する機能であり、レコード番号検索部106、対象項目取得部107を備える。
レコード番号検索部106は、要求制御部101からの検索開始要求を受けると、RDBMS120を用いて検索条件を満たすレコードのレコード番号を処理装置により検索して取得するとともに、検索条件を満たすレコードの数(以下、ヒット件数)を処理装置により数え上げる。
対象項目取得部107は、RDBMS120を用いて取得したレコード番号を検索条件に指定してレコードを処理装置により取得し、取得したレコードを検索結果蓄積部108に格納する。
レコード番号検索部106と対象項目取得部107とは、それぞれの処理が完了すると、それぞれの処理が完了したことを通信装置や入力装置を介して通知部104へ通知する。
検索結果蓄積部108は、例えば、RAM(Random Access Memory)などの揮発性記憶装置であり、検索制御部105がRDBMS120を用いて取得したレコード等を記憶する。検索結果蓄積部108は、不揮発性記憶装置であってもよい。
次に、検索装置100の基本的な動作の流れを説明する(動作の簡易説明)。
(1)アプリケーション110から取得対象項目と検索対象テーブルと検索条件とを示す検索開始要求が入力され、要求制御部101の検索情報入力部102が受け付ける。
(2)次に、検索情報入力部102は、検索開始要求を検索制御部105のレコード番号検索部106へ送信する。
(3)次に、レコード番号検索部106は、検索開始要求の検索条件を満たすレコードを検索対象テーブルから検索して、検索したレコードから上記検索対象テーブルのレコードを一意に特定するレコード番号を順位付けしながら取得して検索結果蓄積部108に記憶する。また、レコード番号検索部106は、併せてヒット件数をカウントする。
(4)次に、検索制御部105の対象項目取得部107は、レコード番号検索部106が取得したレコード番号を条件として指定して、レコード番号検索部106が順位付けした順に、検索対象テーブルの取得対象項目を取得して検索結果蓄積部108に記憶する。
(5)アプリケーション110から何番目のレコードのデータを取得するかを示す検索結果取得要求が入力され、要求制御部101の順位情報入力部103が受け付ける。
(6)順位情報入力部103は、検索結果取得要求を対象項目取得部107へ送信する。
(7)対象項目取得部107は、検索結果蓄積部108から該当のレコードのデータを処理装置により取得して検索結果蓄積部108に記憶する。
(8)通知部104は、対象項目取得部107が検索結果蓄積部108に記憶したデータをアプリケーション110へ送信する。
検索条件等の受け渡しに利用する検索設定情報200と、検索結果の受け渡しに利用する検索結果300とについて説明する。
図2は、検索設定情報200の構造を示す図である。
検索設定情報200は、識別子201、取得対象カラム202(取得対象項目)、検索対象テーブル203、検索条件204、ヒット件数205、検索結果格納場所206、ステータス207を備える。
識別子201は、検索開始要求を一意に識別可能な識別情報である。
取得対象カラム202は、取得したいデータが格納されている1つ以上のカラムの名称を列挙したものである。
検索対象テーブル203は、記憶装置130が記憶したデータベースのテーブルのうち、検索を行うテーブルのテーブル名称である。
検索条件204は、データの絞込みの条件を示す情報である。検索条件204は、例えば、SQLであればWHERE句に記載される情報である。
ヒット件数205は、検索条件204を満たすレコードの件数であり、レコード番号検索部106が数え上げた値である。
検索結果格納場所206は、対象項目取得部107が検索結果蓄積部108に作成する検索結果300の位置(アドレス)である。
ステータス207は検索処理の進行状況である。
図3は、検索結果300の構造を示す図である。
検索結果300は、レコード番号301、取得済フラグ302、取得対象カラム値303、取得対象行番号304を備える。ここで、検索結果300には、検索条件を満たすレコードの数だけ(ヒット件数だけ)レコード番号301と取得済フラグ302と取得対象カラム値303とが存在する。つまり、検索結果300では、レコード番号301と取得済フラグ302と取得対象カラム値303とを1つの組として、この組が1つ以上存在する。すなわち、検索結果300は、1つ以上のレコード番号301と取得済フラグ302と取得対象カラム値303とから構成される組と、1つの取得対象行番号304とを備える。
レコード番号301は、RDBMS120がアクセスするテーブルの中にあるレコードを一意に特定する番号である。
取得済フラグ302は、レコード番号301が示すレコードから取得対象カラムのデータを既に取得したか否かを示す情報(フラグ)である。つまり、取得済フラグ302は、後述する取得対象カラム値303にRDBMS120から取得した値が入っているか否かを示す情報である。
取得対象カラム値303は、RDBMS120がアクセスするテーブルのレコードのカラムのうち、取得対象カラム202が示すカラムの値である。取得対象カラム202が複数のカラム名を示す場合、取得対象カラム値303には複数の値が格納される。
取得対象行番号304は、対象項目取得部107が現在取得中のレコードの行番号である。つまり、取得対象行番号304は、検索条件を満たすレコードのうち、前から何番目のレコードを対象項目取得部107が取得中であるかを示す順位情報である。
以上で説明した図1から図3までと、以下の図4から図7までとに基づき、この実施の形態に係る検索装置100の動作を説明する。
なお、アプリケーション110が検索結果を表示する動作はいかなる方法でもよいため、ここでは説明しない。また、ここで説明する検索装置100の動作を行う前に、検索対象となるデータベースをオープンする必要があるが、ここでは説明ではその処理についての説明を省略し、データベースへの検索処理が可能な状態になっているものとする。
まず、アプリケーション110からの検索開始要求を受けた要求制御部101の動作(上記動作の簡易説明の(1)(2)に該当)について、図1、図2、図4に基づき説明する。図4は、アプリケーション110から検索開始要求を受けた要求制御部101の動作を示すフローチャートである。
(S401):要求制御部101の検索情報入力部102は、アプリケーション110から検索開始要求を通信装置又は入力装置を介して受信する。
(S402):検索情報入力部102は、検索設定情報200を処理装置により作成して検索結果蓄積部108に記憶する。
(S403):検索情報入力部102は、識別子201に所定の値を格納する。ここで、所定の値とは、検索設定情報200を一意に特定できる値であればどのような値であってもよい。つまり、検索結果蓄積部108の中に検索設定情報200が複数ある場合、それらの識別子201と重複しない値を格納する。
(S404)〜(S406):検索情報入力部102は、アプリケーション110から受信した検索開始要求に含まれている情報を、検索結果蓄積部108に作成した検索設定情報200の取得対象カラム202、検索対象テーブル203、検索条件204に格納する。例えば、アプリケーション110から受信した検索開始要求が「SELECT Name,Genre,Address FROM ShopData WHERE Genre=’和食’;」というSQL文の場合、取得対象カラム202には「Name,Genre,Address」が格納され、検索対象テーブル203には「ShopData」が格納され、検索条件204には「Genre=’和食’」が格納される。なお、アプリケーション110から受け取った情報を、検索設定情報200に格納する具体的な手順は、検索装置100とアプリケーション110との間で予め決められているものとする。
(S407):検索情報入力部102は、検索設定情報200のステータス207に「検索開始前」を意味する所定の値を格納する。
(S408):検索情報入力部102は、レコード番号検索部106へ検索開始を指示する。つまり、検索情報入力部102は、検索設定情報200をレコード番号検索部106へ通知することにより、検索開始要求をレコード番号検索部106へ通知する。検索情報入力部102は、例えば、識別子201をレコード番号検索部106へ通知するとしてもよい。これにより、レコード番号検索部106は、検索結果蓄積部108から検索開始要求を取得できる。
(S409):要求制御部101の通知部104は、(S408)で検索情報入力部102がした指示に対するレコード番号検索部106からの応答を待たず、アプリケーション110に識別子201を送信する。ここで「応答を待たず」とは、アプリケーション110とレコード番号検索部106とは異なるプロセス、もしくはスレッドで動作しており、(S408)の指示が非同期命令であることを意味している。なお、識別子201はアプリケーション110が検索装置100から検索結果を受け取るときに用いる。
(S410):要求制御部101は、アプリケーション110から検索開始要求を受けた際の動作を完了する。
次に、検索情報入力部102から検索開始指示を受けた検索制御部105の動作であるヒット件数取得処理(上記動作の簡易説明の(3)に該当)について、図1、図2、図3、図5に基づき説明する。図5は、要求制御部101から検索開始要求を受けたレコード番号検索部106がヒット件数を数え上げるヒット件数取得処理を示すフローチャートである。
(S501):検索制御部105のレコード番号検索部106は、検索情報入力部102から検索開始の指示を受けると、検索結果300を検索結果蓄積部108に生成する。
(S502):レコード番号検索部106は、検索設定情報200の検索結果格納場所206に、(S501)で生成した検索結果300の先頭位置(アドレス)を設定(格納)する。
(S503):レコード番号検索部106は、ヒット件数205を初期化する。
(S504):レコード番号検索部106は、RDBMS120に対して、レコード番号を取得する検索を実行する。ここで、レコード番号とは、RDBMS120がテーブル内部にあるレコードを一意に特定するために用いる番号である。レコード番号は、RDBMS120の種類によっては、特殊な名称として保持されている場合や、テーブル設計時に特定の条件を満たすカラムをレコード番号と見なしている場合がある。ここでは、RDBMS120がレコード番号を「_RowId_」という名前のカラムとしてテーブル毎に保持しているものとする。つまり、レコード番号検索部106は、例えば、「SELECT _RowId_ From <テーブル名> WHERE <検索条件>;」というSQL文を作成する。レコード番号検索部106は、<テーブル名>には検索対象テーブル203に設定された値、<検索条件>には検索条件204に設定された値を設定する。そして、レコード番号検索部106は、上記SQL文をRDBMS120へ送信し、応答を受信する。
(S505):レコード番号検索部106は、RDBMS120からの応答がエラーであるか否かを判定する。エラーでないと判定した場合(S505でNo)、(S506)へ進む。一方、エラーであると判定した場合(S505でYes)、(S510)へ進む。
(S506):レコード番号検索部106は、RDBMS120から検索結果、つまりレコード番号を取得する。
(S507):レコード番号検索部106は、RDBMS120から「エラーなし」、「エラー発生」、「検索完了」のいずれかの応答を受信し、「エラー発生」又は「検索完了」であるか否かを判定する。そして、RDBMS120からの応答が「エラーなし」の場合(S507でNo)、(S508)へ進む。一方、RDBMS120からの応答が「エラー発生」又は「検索完了」の場合(S507でYes)、(S510)へ進む。
(S508):レコード番号検索部106は、(S506)で取得したレコード番号を、検索結果300のレコード番号301を順番に(順序付けしながら)設定する。ここで、検索結果300に対するレコード番号の設定処理は上書きでなく、追記である。つまり、レコード番号を取得する毎に、レコード番号301、取得済フラグ302、取得対象カラム値303の組の数が増加する。
(S509):レコード番号検索部106は、ヒット件数205をインクリメント(+1)する。そして、再び、レコード番号をRDBMS120から取得する処理(S506)へ戻り、処理を繰り返す。
(S510):レコード番号検索部106は、通知部104へヒット件数の数え上げが完了したことを通知する。また、レコード番号検索部106は、(S505)又は(S507)から(S510)へ遷移した理由(「検索完了」又は「エラー発生」)も合わせて通知部104へ通知(送信)する。
(S511):レコード番号検索部106は、ヒット件数の数え上げ動作を完了する。
通知部104は、(S510)でレコード番号検索部106が送信したヒット件数数え上げの完了通知を受信する。受信した通知に含まれる(S510)へ遷移した理由が「エラーなし」の場合(ここでは、「検索完了」は「エラーなし」と見なす)、通知部104は検索設定情報200のステータス207を「ヒット件数取得完了」を示す値に更新するとともに、ヒット件数205をアプリケーション110へ通知(送信)する。一方、受信した通知に含まれる(S510)へ遷移した理由が「エラー発生」の場合、通知部104はステータス207を「エラー発生」を意味する値に更新するとともに、アプリケーション110へエラーが発生したこと示す情報を通知(送信)する。ここでは、例えば、予め通知用のコールバック関数がアプリケーション110から検索装置100に渡されているものとする。
次に、ヒット件数取得処理後の検索制御部105の動作であるカラム値取得処理(上記動作の簡易説明の(4)に該当)について図1、図2、図3、図5、図6に基づき説明する。図6は、対象項目取得部107がカラムの値を取得するカラム値取得処理を示すフローチャートである。
(S601):検索制御部105の対象項目取得部107は、(S511)でレコード番号検索部106のヒット件数の数え上げ動作が完了すると、取得対象カラム202が示すカラムの値を検索結果300に設定する処理を開始する。
(S602):対象項目取得部107は、取得対象行番号304を1に初期化する。
(S603):対象項目取得部107は、順位情報入力部103から検索結果取得要求を受信したか否かを判定する。検索結果取得要求を受信していないと判定した場合(S603でNo)(S604)へ進む。一方、検索結果取得要求を受信したと判定した場合(S603でYes)、割り込み処理(S699)へ進む。割り込み処理については、後述する。
(S604):対象項目取得部107は、取得対象行番号304に対応するレコードの取得済フラグ302に基づき、取得対象行番号304に対応するレコードの値が取得済か否かを判定する。取得対象行番号304に対応するレコードの値が取得済でない場合(S604でNo)、(S605)へ進む。一方、取得対象行番号304に対応するレコードの値が取得済である場合(S604でYes)、(S610)へ進む。
(S605):対象項目取得部107は、取得対象行番号304が示す順位((S508)で付けた順位)のレコード番号301を取得する。対象項目取得部107は、例えば、取得対象行番号304の値が1の場合、検索結果の先頭(1位)のレコード番号301を取得する。
(S606):対象項目取得部107は、(S605)で取得したレコード番号301により特定されるレコードの、取得対象カラム202が示すカラムの値を取得する処理をRDBMS120に対して実行する。例えば、アプリケーション110から受信した検索開始要求が「SELECT Name,Genre,Address FROM ShopData WHERE Genre=’和食’;」というSQL文の場合、対象項目取得部107は、「SELECT <カラム名列> FROM <テーブル名> WHERE _RowId_=<レコード番号>」のSQL文を生成して実行する。ここで、対象項目取得部107は、<カラム名列>には取得対象カラム202に設定された値、<テーブル名>には取得対象テーブル203に設定された値、<レコード番号>には(S605)で取得したレコード番号301を設定する。そして、対象項目取得部107は、上記SQLをRDBMS120へ送信し、応答を受信する。
(S607):対象項目取得部107は、でRDBMS120からの応答がエラーであるか否かを判定する。エラーでないと判定した場合(S607でNo)、(S608)へ進む。一方、エラーであると判定した場合(S607でYes)、(S612)へ進む。
(S608):対象項目取得部107は、取得対象行番号304が示す順位の取得対象カラム値303に検索結果を設定する。つまり、上記SQLであれば、Name、Genre、Addressの各値を取得対象カラム値303に設定する。
(S609):対象項目取得部107は、取得対象行番号304が示す順位の取得済フラグ302を「取得済」を意味する値に更新する。
(S610):対象項目取得部107は、取得対象行番号304の値をインクリメント(+1)する。
(S611):対象項目取得部107は、取得対象行番号304の値が検索設定情報200のヒット件数205の値より大きいか否かを判定する。取得対象行番号304の値がヒット件数205の値以下である場合(S611でNo)、(S603)へ進み、処理を繰り返す。一方、取得対象行番号304の値がヒット件数205の値より大きい場合(S611でYes)、(S612)へ進む。
(S612):対象項目取得部107は、通知部104へ検索処理の完了通知を送信する。つまり、対象項目取得部107は、(S612)へ遷移した理由(「エラー発生」又は「取得対象行番号304の値がヒット件数205の値より大きい(検索完了に相当する)」を示す値を通知部104へ通知(送信)する。
(S613):対象項目取得部107は、取得対象カラム202が示すカラムの値を取得する動作を完了する。
通知部104は、(S612)で対象項目取得部107が送信した検索処理の完了通知を受信する。受信した通知に含まれる(S612)へ遷移した理由が「エラーなし」の場合(ここでは、「検索完了」は「エラーなし」と見なす)、通知部104は検索設定情報200のステータス207を「検索完了」を意味する値に更新するとともに、検索が完了したことを示す情報をアプリケーション110へ通知(送信)する。一方、受信した通知に含まれる(S612)へ遷移した理由が「エラー発生」の場合、通知部104はステータス207を「エラー発生」を意味する値に更新するとともに、エラーが発生したことを示す情報をアプリケーション110に通知(送信)する。ここでは、予め通知用のコールバック関数がアプリケーション110から検索装置100に渡されているものとする。
上述した処理により、対象項目取得部107が検索処理が完了した状態、つまりステータス207が「検索完了」を意味する値に設定された状態で、アプリケーション110は、検索設定情報200を識別可能な識別子と、取得したいレコードの順位(前から何番目か)と、取得したいカラムとを含む検索結果取得要求を検索装置100へ送信する。すると、順位情報入力部103は、検索結果取得要求を受け取り、検索結果取得要求を対象項目取得部107へ送信する。対象項目取得部107は、検索結果取得要求が示す順位のレコードの検索結果取得要求が示すカラムの値を、検索結果蓄積部108の検索結果300の検索結果取得要求が示す順位のレコードに対応する取得対象カラム値303から取得する。そして、対象項目取得部107は、取得した値を通知部104を介してアプリケーション110へ送信する(上記動作の簡易説明の(5)から(8)までに該当)。
つまり、アプリケーション110から「500番目のレコードのAddressカラム」の取得を要求する検索結果取得要求を順位情報入力部103へ送信した場合、まず、順位情報入力部103はステータス207が「検索完了」の値となっているかを確認する。そして、ここでは、検索処理が完了しているので、対象項目取得部107は序数(ここでは、500番目)に該当するレコードの取得対象カラム値303からAddressカラムの値を取得し、通知部104はアプリケーション110へ送信する。
なお、検索設定情報200のステータス207が「エラー発生」の場合、通知部104はアプリケーション110にエラーを返す。
以上が動作の簡易説明において説明した流れで処理が行われた場合の動作の詳細説明である。しかし、動作の簡易説明とは異なる流れで処理が行われる場合がある。それは、図6の割り込み処理(S699)が実行される場合である。そこで、次に、割り込み処理(S699)が実行される場合の動作について図1、図2、図3、図6、図7に基づき説明する。
まず、図7に基づき、割り込み処理について説明する。図7は、図6における割り込み処理(S699)の動作を示すフローチャートである。割り込み処理は、対象項目取得部107が図6に示すカラム値取得処理を実行中にアプリケーション110が検索結果取得要求を検索装置100へ送信した場合に発生する処理である。
(S701):カラム値取得処理を実行中に検索結果取得要求を受信した対象項目取得部107は、上述した(S603)で検索結果取得要求を受信したと判定して(S603でYes)、割り込み処理(S699)へ進む。そして、割り込み処理を開始する。
(S702):対象項目取得部107は、検索結果300を参照し、序数からレコード番号301を求める。つまり、序数が示す順位のレコード番号301を取得する。
(S703):対象項目取得部107は、取得済フラグ302の値に基づき、該当するレコードの値を取得済であるか否かを判定する。該当するレコードの値を取得済でない場合(S703でNo)、(S704)へ進む。一方、該当するレコードの値を取得済である場合(S703でYes)、(S709)へ進む。
(S704):対象項目取得部107は、レコード番号301により特定されるレコードの取得対象カラム202が示すカラムの値を取得する処理をRDBMS120に対して実行する。例えば、アプリケーション110から受信した検索開始要求が「SELECT Name,Genre,Address FROM ShopData WHERE Genre=’和食’;」というSQL文の場合、対象項目取得部107は、「SELECT <カラム名列> FROM <テーブル名> WHERE _RowId_=<レコード番号>」のSQL文を生成する。ここで、対象項目取得部107は、<カラム名列>には取得対象カラム202に設定された値、<テーブル名>には取得対象テーブル203に設定された値、<レコード番号>には(S605)で取得したレコード番号301を設定する。
(S705):対象項目取得部107は、(S704)で設定した検索を実行して応答を受信する。
(S706):対象項目取得部107は、RDBMS120からの応答がエラーであるか否かを判定する。エラーでないと判定した場合(S706でNo)、(S707)へ進む。一方、エラーであると判定した場合(S706でYes)、(S709)へ進む。
(S707):対象項目取得部107は、取得した値を検索結果300の取得対象カラム303に設定する。
(S708):対象項目取得部107は、取得済フラグ302を取得済を示す値に更新する。
(S709):対象項目取得部107は、要求制御部101へ処理完了を示す値を通知(送信)する。
(S710):対象項目取得部107は、割り込み処理を完了する。
そして、割り込み処理を完了すると、通知部104は、検索結果300の取得対象カラム値303に設定された値をアプリケーション110へ送信する。
次に、ヒット件数の通知を受けたアプリーション110が「1番目(先頭)のレコードのNameカラムの値」の取得を要求する検索結果取得要求を順位情報入力部103へ送信した場合の処理について説明する。
なお、ここでは1番目のレコードの取得対象カラム値303が示すカラムの値は既に検索結果蓄積部108に設定されているものとする。また、対象項目取得部107は、検索処理を完了していないものとする。つまり、対象項目取得部107は、上述した図6の処理を実行している最中であるとする。
検索結果取得要求を受信した対象項目取得部107は、上述した(S603)で検索結果取得要求を受信したと判定して(S603でYes)、割り込み処理(S699)へ進み、割り込み処理を開始する(S701)。続いて、対象項目取得部107は、序数が示す順位(ここでは、1位)のレコード番号301に設定されたレコード番号を取得する(S702)。対象項目取得部107は、取得済フラグ302の値に基づき、該当するレコードの値を取得済であるか否かを判定する(S703)。ここでは、1番目のレコードの値は取得済である。そのため、処理完了を示す値を通知部104へ通知(送信)する(S709)。そして、通知部104は、検索結果蓄積部108から、検索結果300の序数が示す順位(ここでは、1位)のレコードの取得対象カラム値303に設定されたNameカラムの値を、アプリケーション110へ送信する。
続いて、アプリーション110が「1000番目のレコードのAddressカラムの値」を取得する要求を出した場合の検索装置100の動作について説明する。
検索結果取得要求を受信した対象項目取得部107は、上述した(S603)で検索結果取得要求を受信したと判定して(S603でYes)、割り込み処理(S699)へ進み、割り込み処理を開始する(S701)。続いて、対象項目取得部107は、序数が示す順位(ここでは、1000位)のレコード番号301に設定されたレコード番号を取得する(S702)。対象項目取得部107は、取得済フラグ302の値に基づき、該当するレコードの値を取得済であるか否かを判定する(S703)。ここでは、1000番目のレコードの値は取得済でない。そのため、レコード番号を検索条件に設定して(S704)、検索を実行する(S705)。対象項目取得部107は、RDBMS120からの応答がエラーなしの場合(S706でNo)、取得した値を取得対象カラム303に設定して(S707)、取得済フラグ302を取得済に更新する(S708)。処理完了を示す値を通知部104へ通知(送信)する(S709)。そして、通知部104は、検索結果蓄積部108から、検索結果300の序数が示す順位(ここでは、1000位)のレコードの取得対象カラム値303に設定されたAddressカラムの値を、アプリケーション110へ送信する。
この実施の形態に係る検索装置100には以下のような効果がある。
この実施の形態に係る検索装置100は、アプリケーション110からの検索開始要求を受けると、まず検索条件204を満たすレコード番号のみを取得し、レコード番号の個数を数えることでヒット件数を求め、ヒット件数の数え上げが完了した時点でアプリケーション110にヒット件数を通知する。そのため、アプリケーション110は、検索結果が何件であり、検索結果が表示ページの何ページ分に相当するのか(検索結果が500件で、表示を1度に5件できるなら100ページ分)などの判断を、検索結果全体の取得が完了する前に高速に行うことが可能である。したがって、「次のページの表示」「前のページの表示」という処理を、実際に表示するレコードの番号を用いた具体的な処理命令に高速に変換することが可能である。
また、この実施の形態に係る検索装置100は、ヒット件数を数え上げた後、任意の箇所のレコードの値を取得するために、検索条件としてレコード番号を指定してデータベースの検索を行う。そのため、この実施の形態に係る検索装置100は、ヒット件数を数え上げた後の、任意の箇所のレコードを取得するために要する時間はヒット件数に依存しない。つまり、従来は、任意の箇所のレコードの値を取得するためには、検索結果の先頭から順番にレコードを取得しなければならないため、ヒット件数に比例して、先頭から遠い位置にあるレコードほど取得するのに要する時間は長くなる。しかし、この実施の形態に係る検索装置100は、先頭から遠い位置にあるレコードの値であっても高速に取得することが可能である。
さらに、この実施の形態に係る検索装置100は、検索条件204を満たす全てのレコードの値の取得が完了していない場合でも、取得したいレコードの序数とカラム名とを指定した検索結果取得要求をアプリケーション110から受けることが可能である。
全てのレコードの値の取得が完了していない場合に検索結果取得要求を受信すると、検索装置100は、実行している図6に示すカラム値取得処理を一時的に停止して、アプリケーション110から指定されたレコードのカラムの値を先に取得し、アプリケーション110へ送信する。そして、検索装置100は、改めて一時停止していた図6に示すカラム値取得処理を再開する。そのため、取得したいレコードが検索結果のどの位置(先頭、末尾、真中など)にあっても取得に要する時間はほぼ等しい。言い替えると、末尾にあるレコードの値であっても高速に取得することが可能である。
なお、検索装置100は以下のように動作するとしても構わない。
上記説明では、ヒット件数の通知を受けた後に、アプリケーション110が検索装置100に対して検索結果取得要求を出す場合の説明をした。しかし、ヒット件数の通知前に、アプリケーション110が検索装置100に対して検索結果取得要求を出してもよい。
この場合、レコード番号検索部106は、指定された序数に該当するレコード番号をRDBMS120から取得するまではレコード番号の取得を継続する。レコード番号検索部106が該当するレコード番号を取得すると、対象項目取得部107はそのレコード番号を用いて、取得対象カラム値303に値を設定する。そして、取得対象カラム値303に値を設定した後に、レコード番号検索部106は、再びレコード番号の取得処理に戻る。一方、通知部104は、対象項目取得部107が取得対象カラム値303に設定した値をアプリケーション110へ送信する。このような動作とすることで、アプリケーション110はヒット件数が分かる前に、レコード番号取得済であるレコードの取得が可能となり、レコードの高速な表示を実現することが可能である。
つまり、レコード番号検索部106は、レコード番号を取得し終える前に順位情報入力部103が検索結果取得要求を入力すると、検索結果取得要求が示す順位までレコード番号の取得を継続する。そして、対象項目取得部107は、レコード番号検索部106が検索結果取得要求が示す順位までレコード番号を取得すると、検索結果取得要求が示す順位のレコード番号により特定されるレコードの取得対象カラム202のデータを取得する。
また、上記説明では、アプリケーション110は検索結果取得要求として1つのカラムの取得を要求する場合の説明をした。しかし、2つ以上のカラムを1つの検索結果取得要求で取得できるようにしてもよい。このとき、通知部104は、検索結果蓄積部108の検索結果300の取得対象カラム値303から、アプリケーション110が検索結果取得要求で指定したカラムの値を取得して、アプリケーション110へ送信する。このような動作とすることで、アプリケーション110から検索装置100に対する検索結果取得要求の実行回数を減らすことが可能である。
また、上記説明では、アプリケーション110は、検索結果取得要求でカラムの名称(例えば、Address)を指定してカラムを指定した。しかし、アプリケーション110は、検索結果取得要求でレコードの「何列目」という形でカラムを指定するようにしてもよい。つまり、先頭を1列目とすると、Nameカラムが1列目、Genreカラムが2列目、Addressカラムが3列目である。このとき、対象項目取得部107又は通知部104が列番号と取得対象カラム202とからアプリケーション110へ送信するカラムの値を決定すればよい。
また、上記説明では、既に検索結果蓄積部108に設定済のレコードの値を取得する場合であっても、対象項目取得部107へ検索結果取得要求を送信し、対象項目取得部107が取得対象カラム値303から値を取得した。しかし、順位情報入力部103が該当するレコードの取得済フラグ302を参照し、該当する取得対象カラム値303が取得済であれば、対象項目取得部107へ検索結果取得要求を送信せず、順位情報入力部103が通知部104を介してアプリケーション110に取得対象カラム値303の値を送信してもよい。このような動作とすることで、対象項目取得部107の動作を止めずに済み、対象項目取得部107による検索結果取得処理をより短時間で完了することが可能である。
また、上記説明では、対象項目取得部107は割り込み処理が完了すると、一時停止していた箇所から検索処理を再開する。しかし、割り込み処理で指定された箇所から検索処理を再開するようにしてもよい。例えば、1〜100番目までのレコードを検索結果蓄積部108に設定している状態で、500番目のレコードに対する検索結果取得要求が到着し、その要求に対する処理が完了した場合、501〜1000番目のレコードの取得処理を先に実行し、その後に101〜499番目のレコードの取得処理を実施するようにしてもよい。
このような動作を実現するためには、例えば、割り込み処理(S699)において、取得対象行番号304の値を、検索結果取得要求の序数の次の値(上記例では、序数が500番目なので、その次の501番目)に設定する。また、検索結果300に「取得完了レコード数」の項目を追加して、(S602)で対象項目取得部107が取得完了レコード数を初期化する処理を追加するとともに、(S610)の処理を、「取得完了レコード数のインクリメント」と「取得対象行番号304のインクリメントした値をヒット件数で割った余り(剰余)を取得対象行番号304に設定」とに変更して、さらに、(S611)を「取得完了レコード数>ヒット件数?」に変更する。ここで、取得対象行番号304のインクリメントした値をヒット件数で割った余り(剰余)を取得対象行番号304に設定するのは、取得対象行番号304が501番目から1000番目まで変化すると、次は1001番目ではなく、1番目に戻るようにするためである。
このような動作とすることで、アプリケーション110が500番目のレコードを取得した後に予想される501番目、502番目の検索結果を先に取得することができ、アプリケーション110に対する検索装置100の応答の高速化を実現することが可能である。
つまり、対象項目取得部107は、レコード番号検索部106がレコード番号を取得し終えると、レコード番号検索部106が順位付けした順位の先頭から順にレコード番号により特定されるレコードの取得対象カラム202のデータを取得して検索結果蓄積部108に記憶する。そして、検索対象テーブル203の取得対象カラム202のデータを取得して検索結果蓄積部108に記憶している間に順位情報入力部103が検索結果取得要求を入力すると、検索結果取得要求が示す順位から順にレコード番号により特定されるレコードの取得対象カラム202のデータを取得してアプリケーション110へ送信する。
なお、検索対象テーブル203の取得対象カラム202のデータを取得して検索結果蓄積部108に記憶している間に順位情報入力部103が検索結果取得要求を入力した場合であって、検索結果取得要求が示す順位のレコード番号により特定されるレコードから取得対象カラム202のデータを既に取得している場合には、先頭から順に上記レコード番号により特定されるレコードの取得対象カラム202のデータを取得して検索結果蓄積部108に記憶する処理を継続するとしてもよい。
また、上記説明では、ヒット件数の数え上げにおいて、レコード番号検索部106はRDBMS120からレコード番号のみを取得するとして説明した。しかし、アプリケーション110が指定したカラムについて、レコード番号と同時にRDBMS120から取得してもよい。このような動作とすることで、検索対象テーブル203に適切なインデックスが設けられている場合、より高速に検索結果を取得することが可能である。
上記実施の形態をまとめると以下のようになる。
検索装置100の検索結果取得順序制御方式は、アプリケーション110から受けた検索開始要求を、検索条件を満たすレコード番号の検索と、上記検索により得られるレコード番号を検索条件としたアプリケーション110指定のカラムの検索に分割し、上記レコード番号の検索にて検索条件を満たすレコードの件数を数え上げてアプリケーション110に通知し、上記レコード番号を条件とした検索中に、アプリケーション110から検索結果取得要求を受けると、上記レコード番号を条件とした検索を一時停止し、上記検索結果取得要求を優先的に処理し、その後レコード番号を条件とした検索を一時停止した箇所から再開することを特徴とする。
また、検索装置100の検索結果取得順序制御方式は、検査条件を満たすレコードの件数の数え上げが完了する前に検索結果取得要求が到着した場合、該当するレコード番号を取得するまではレコード番号の取得を継続し、該当するレコード番号を取得するとそのレコード番号を検索条件とした、アプリケーション110指定のカラムの検索を実行し、上記検索にて得られた値をアプリケーション110に返した後、ヒット件数の数え上げを再開することを特徴とする。
さらに、検索装置100の検索結果取得順序制御方式は、複数のカラム名を指定した検索結果取得要求を受け、該当するカラムの値をまとめてアプリケーション110に提供することを特徴とする。
また、さらに、検索装置100の検索結果取得順序制御方式は、検索開始要求にて指定した取得対象カラムの順序と一致する番号を1つ以上指定した検索結果取得要求を受け、上記番号から該当するカラムを特定し、上記カラムの値をアプリケーション110に提供することを特徴とする。
また、検索装置100の検索結果取得順序制御方式は、アプリケーション110からの検索結果取得要求で指定されたレコードが既に取得済であれば、レコード番号を検索条件とした検索処理を止めることなく、取得済の値をアプリケーション110に提供することを特徴とする。
さらに、検索装置100の検索結果取得順序制御方式は、アプリケーション110からの検索結果取得要求に対応した後、レコード番号を用いた検索の再開位置を、上記検索結果取得要求にて取得したレコード番号の次に相当するレコード番号に設定することを特徴とする。
また、さらに、検索装置100の検索結果取得順序制御方式は、ヒット件数の数え上げのために実行するレコード番号の取得と同時に、アプリケーション110が指定したカラムも取得し、レコード番号を検索条件としたアプリケーション110指定カラムの検索では、上記レコード番号の取得と同時に取得したカラムを検索対象から除外することを特徴とする。
次に、上記実施の形態における検索装置100のハードウェア構成について説明する。
図8は、検索装置100のハードウェア構成の一例を示す図である。
図8に示すように、検索装置100は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、LCD901(Liquid Crystal Display)、キーボード902、通信ボード915、磁気ディスク装置920(HDD,SSD等)と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ROM913、磁気ディスク装置920は、不揮発性メモリの一例である。RAM914は、揮発性メモリの一例である。
通信ボード915とキーボード902とは、入力装置の一例である。
また、通信ボード915とバス912とは、出力装置の一例である。
さらに、通信ボード915とバス912とは、通信装置の一例である。
また、さらに、LCD901は、表示装置の一例である。
磁気ディスク装置920又はROM913などには、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
プログラム群923には、上記の説明において「要求制御部101」、「検索情報入力部102」、「順位情報入力部103」、「通知部104」、「検索制御部105」、「レコード番号検索部106」、「対象項目取得部107」、「検索結果蓄積部108」等として説明した機能を実行するプログラムやその他のプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、上記の説明において「検索設定情報200」、「検索結果300」等として説明した情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPU911の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPU911の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、その他光ディスク等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
つまり、例えば、検索装置100、アプリケーション110、RDBMS120、記憶装置130が、図8に示すハードウェアを備えている1つの装置内にあるとした場合、ROM913やRAM914や磁気ディスク装置920に記憶されたアプリケーション110はCPU911により実行され、バス912を介して検索装置100へ検索開始要求等の要求を送信する。そして、ROM913やRAM914や磁気ディスク装置920に記憶された検索装置100の機能はCPU911により実行され、バス912を介して、ROM913やRAM914や磁気ディスク装置920に記憶されたRDBMS120へ検索要求(SQL文等)を送信する。RDBMS120は、ROM913やRAM914や磁気ディスク装置920である記憶装置130が記憶したデータベースからバス912を介して検索結果を取得して、検索装置100へ送信する。そして、検索装置100の機能は、ROM913やRAM914や磁気ディスク装置920に検索結果を記憶する。また、検索装置100の機能は、検索結果をバス912を介してアプリケーション110へ送信する。
なお、上述したように、検索装置100、アプリケーション110、RDBMS120、記憶装置130は、それぞれが個々の装置として分かれた構成であってもよい。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ROM913等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
また、上記説明において、「情報」として説明したものは、「値」、「データ」であってもよく、同様に、「値」として説明したものは、「情報」、「データ」であってもよく、同様に、「データ」として説明したものは、「情報」、「値」であってもよい。
実施の形態1に係る検索装置100を備える検索システムの機能ブロック図。 検索設定情報200の構造の一例を示す図。 検索結果300の構造の一例を示す図。 アプリケーション110から検索開始要求を受けた要求制御部101の動作を示すフローチャート。 ヒット件数取得処理を示すフローチャート。 カラム値取得処理を示すフローチャート。 割り込み処理を示すフローチャート。 検索装置100のハードウェア構成の一例を示す図。
符号の説明
100 検索装置、101 要求制御部、102 検索情報入力部、103 順位情報入力部、104 通知部、105 検索制御部、106 レコード番号検索部、107 対象項目取得部、108 検索結果蓄積部、110 アプリケーション、120 RDBMS、130 記憶装置、200 検索設定情報、201 識別子、202 取得対象カラム、203 検索対象テーブル、204 検索条件、205 ヒット件数、206 検索結果格納場所、207 ステータス、300 検索結果、301 レコード番号、302 取得済フラグ、303 取得対象カラム値、304 取得対象行番号。

Claims (8)

  1. データベースからデータを検索する検索装置であり、
    取得対象項目と検索対象テーブルと検索条件とを示す検索情報を入力する検索情報入力部と、
    上記データベースのテーブルであって、上記検索情報入力部が入力した上記検索情報が示す検索対象テーブルから上記検索情報が示す検索条件を満たすレコードを検索して、検索したレコードから上記検索対象テーブルのレコードを一意に特定するレコード番号を順位付けしながら取得するレコード番号検索部と、
    所定の順位を示す順位情報を入力する順位情報入力部と、
    上記レコード番号検索部が取得したレコード番号であって、上記順位情報入力部が入力した順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを取得する対象項目取得部と
    を備え
    上記対象項目取得部は、上記レコード番号検索部がレコード番号を取得し終えると、上記レコード番号により特定されるレコードの上記取得対象項目のデータを取得して記憶装置に記憶し、上記順位情報入力部が上記順位情報を入力すると、上記順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを既に上記記憶装置に記憶している場合には、そのデータを上記記憶装置から取得する
    ことを特徴とする検索装置。
  2. 上記検索情報入力部は、所定の検索指示部の入力に従い上記検索情報を入力し、
    上記レコード番号検索部は、レコード番号を取得するとともに、上記検索条件を満たすレコードの件数をカウントし、
    上記検索装置は、さらに、
    上記レコード番号検索部がカウントしたレコードの件数を上記所定の検索指示部へ通知する通知部
    を備えることを特徴とする請求項1に記載の検索装置。
  3. 上記対象項目取得部は、上記レコード番号検索部がレコード番号を取得し終えると、上記レコード番号検索部が順位付けした順位の先頭から順に上記レコード番号により特定されるレコードの上記取得対象項目のデータを取得して記憶装置に記憶するとともに、
    上記検索対象テーブルの上記取得対象項目のデータを取得して記憶装置に記憶している間に上記順位情報入力部が上記順位情報を入力すると、上記順位情報が示す順位から順に上記レコード番号により特定されるレコードの上記取得対象項目のデータを取得する
    ことを特徴とする請求項1又は2に記載の検索装置。
  4. 上記対象項目取得部は、上記レコード番号検索部がレコード番号を取得し終えると、上記レコード番号検索部が順位付けした順位の先頭から順に上記レコード番号により特定されるレコードの上記取得対象項目のデータを取得して記憶装置に記憶するとともに、
    上記検索対象テーブルの上記取得対象項目のデータを取得して記憶装置に記憶している間に上記順位情報入力部が上記順位情報を入力した場合であって、上記順位情報が示す順位のレコード番号により特定されるレコードから上記取得対象項目のデータを既に取得している場合には、先頭から順に上記レコード番号により特定されるレコードの上記取得対象項目のデータを取得して記憶装置に記憶する処理を継続する
    ことを特徴とする請求項1からまでのいずれかに記載の検索装置。
  5. 上記レコード番号検索部は、レコード番号を取得し終える前に上記順位情報入力部が上記順位情報を入力すると、上記順位情報が示す順位までレコード番号の取得を継続し、
    上記対象項目取得部は、上記レコード番号検索部が上記順位情報が示す順位までレコード番号を取得すると、上記順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを取得する
    ことを特徴とする請求項1からまでのいずれかに記載の検索装置。
  6. 上記対象項目取得部は、上記レコード番号検索部がレコード番号を取得するのと合わせて、上記検索条件を満たすレコードから所定の項目も取得する
    ことを特徴とする請求項1からまでのいずれかに記載の検索装置。
  7. データベースからデータを検索する検索方法であり、
    入力装置が、取得対象項目と検索対象テーブルと検索条件とを示す検索情報を入力する検索情報入力ステップと、
    処理装置が、上記データベースのテーブルであって、上記検索情報入力ステップで入力した上記検索情報が示す検索対象テーブルから上記検索情報が示す検索条件を満たすレコードを検索して、検索したレコードから上記検索対象テーブルのレコードを一意に特定するレコード番号を順位付けしながら取得するレコード番号検索ステップと、
    入力装置が、所定の順位を示す順位情報を入力する順位情報入力ステップと、
    処理装置が、上記レコード番号検索ステップで取得したレコード番号であって、上記順位情報入力ステップで入力した順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを取得する対象項目取得ステップと
    を備え
    上記対象項目取得ステップでは、上記レコード番号検索ステップでレコード番号を取得し終えると、上記レコード番号により特定されるレコードの上記取得対象項目のデータを取得して記憶装置に記憶し、上記順位情報入力ステップで上記順位情報が入力されると、上記順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを既に上記記憶装置に記憶している場合には、そのデータを上記記憶装置から取得する
    ことを特徴とする検索方法。
  8. データベースからデータを検索する検索プログラムであり、
    取得対象項目と検索対象テーブルと検索条件とを示す検索情報を入力する検索情報入力処理と、
    上記データベースのテーブルであって、上記検索情報入力処理で入力した上記検索情報が示す検索対象テーブルから上記検索情報が示す検索条件を満たすレコードを検索して、検索したレコードから上記検索対象テーブルのレコードを一意に特定するレコード番号を順位付けしながら取得するレコード番号検索処理と、
    所定の順位を示す順位情報を入力する順位情報入力処理と、
    上記レコード番号検索処理で取得したレコード番号であって、上記順位情報入力処理で入力した順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを取得する対象項目取得処理と
    をコンピュータに実行させ
    上記対象項目取得処理では、上記レコード番号検索処理でレコード番号を取得し終えると、上記レコード番号により特定されるレコードの上記取得対象項目のデータを取得して記憶装置に記憶し、上記順位情報入力処理で上記順位情報が入力されると、上記順位情報が示す順位のレコード番号により特定されるレコードの上記取得対象項目のデータを既に上記記憶装置に記憶している場合には、そのデータを上記記憶装置から取得する
    ことを特徴とする検索プログラム。
JP2007320550A 2007-12-12 2007-12-12 検索装置、検索方法及び検索プログラム Expired - Fee Related JP5230184B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007320550A JP5230184B2 (ja) 2007-12-12 2007-12-12 検索装置、検索方法及び検索プログラム
EP08011849.0A EP2071476B1 (en) 2007-12-12 2008-07-01 Search device, search method and search program
US12/167,476 US20090157621A1 (en) 2007-12-12 2008-07-03 Search device, search method and search program
CN2008101454186A CN101458696B (zh) 2007-12-12 2008-08-05 检索装置和检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007320550A JP5230184B2 (ja) 2007-12-12 2007-12-12 検索装置、検索方法及び検索プログラム

Publications (2)

Publication Number Publication Date
JP2009146022A JP2009146022A (ja) 2009-07-02
JP5230184B2 true JP5230184B2 (ja) 2013-07-10

Family

ID=40510403

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007320550A Expired - Fee Related JP5230184B2 (ja) 2007-12-12 2007-12-12 検索装置、検索方法及び検索プログラム

Country Status (4)

Country Link
US (1) US20090157621A1 (ja)
EP (1) EP2071476B1 (ja)
JP (1) JP5230184B2 (ja)
CN (1) CN101458696B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120239688A1 (en) * 2009-12-04 2012-09-20 Takatoshi Yanase Table lookup apparatus, table lookup method, and table lookup system
US9824126B2 (en) * 2010-02-15 2017-11-21 Blackberry Limited Methods and apparatus for a comprehensive searching on a mobile device
CN103023986B (zh) * 2012-11-27 2016-01-13 中国电信股份有限公司 一种对多用户提供rdbms服务的系统和方法
CN104899279A (zh) * 2015-05-29 2015-09-09 百度在线网络技术(北京)有限公司 用于数据处理的系统以及数据处理的方法
US10120938B2 (en) * 2015-08-01 2018-11-06 MapScallion LLC Systems and methods for automating the transmission of partitionable search results from a search engine
CN108052656A (zh) * 2017-12-28 2018-05-18 迈普通信技术股份有限公司 一种数据缓存控制方法及设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02236668A (ja) * 1989-03-10 1990-09-19 Hitachi Ltd 入出力処理方法
JPH04310183A (ja) * 1991-04-09 1992-11-02 Nec Software Kansai Ltd リレーショナル型データベースの検索・出力方法
US5666526A (en) * 1993-09-02 1997-09-09 Microsoft Corp. Method and system for supporting scrollable, updatable database queries
JPH06314306A (ja) * 1993-05-06 1994-11-08 Hitachi Ltd データベース表示方法
US5835904A (en) * 1995-10-31 1998-11-10 Microsoft Corporation System and method for implementing database cursors in a client/server environment
JP2001184353A (ja) * 1999-12-21 2001-07-06 Internatl Business Mach Corp <Ibm> データベース情報のスクロール
US6598041B1 (en) * 2000-09-07 2003-07-22 International Business Machines Corporation Method, system, and program for processing modifications to data in tables in a database system
JP4162184B2 (ja) 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US6907422B1 (en) * 2001-12-18 2005-06-14 Siebel Systems, Inc. Method and system for access and display of data from large data sets
EP1343132A1 (en) * 2002-03-08 2003-09-10 Fujitsu Siemens Computers, Inc. Data viewer
US20050027692A1 (en) * 2003-07-29 2005-02-03 International Business Machines Corporation. Method, system, and program for accessing data in a database table
US7849109B1 (en) * 2004-07-30 2010-12-07 Microsoft Corporation Use of server processing of temporary results for stateless paging over arbitrary user queries
US7406463B2 (en) * 2004-11-04 2008-07-29 International Business Machines Corporation Advanced scrolling for relational database applications
US7761451B2 (en) * 2005-06-17 2010-07-20 Microsoft Corporation Efficient querying and paging in databases
US20070067305A1 (en) * 2005-09-21 2007-03-22 Stephen Ives Display of search results on mobile device browser with background process

Also Published As

Publication number Publication date
CN101458696B (zh) 2012-03-14
JP2009146022A (ja) 2009-07-02
EP2071476A1 (en) 2009-06-17
US20090157621A1 (en) 2009-06-18
EP2071476B1 (en) 2014-04-30
CN101458696A (zh) 2009-06-17

Similar Documents

Publication Publication Date Title
JP6152226B2 (ja) キャッシュクエリ要求の生成
JP5230184B2 (ja) 検索装置、検索方法及び検索プログラム
JP6099046B2 (ja) 文を検索する装置および方法
JP6211196B2 (ja) 自律的メモリ検索のための方法及びシステム
US10872368B2 (en) System and method for browsing a product catalog and for dynamically generated product paths
US11048753B2 (en) Flexible record definitions for semi-structured data in a relational database system
JP4948276B2 (ja) データベース検索装置及びデータベース検索プログラム
US20080282190A1 (en) Content display control apparatus and content display control method
EP3262497A1 (en) Contextual zoom
US20150169576A1 (en) Dynamic Search Results
JP5858307B2 (ja) データベース管理システム、計算機、データベース管理方法
EP2915076A1 (en) Sorting search results
JP5160483B2 (ja) ストレージシステム及びデータマイグレーション対応検索システム
CN113486226A (zh) 用于搜索结果注释的方法和系统
US9122727B1 (en) Identification of related search queries that represent different information requests
JP5186270B2 (ja) データベースのキャッシュシステム
JP6157965B2 (ja) 電子機器、方法、およびプログラム
US8868593B1 (en) User interface content view searching
JP5978297B2 (ja) 管理システム及び管理方法
JP5147296B2 (ja) 計算機システム、データベース管理方法及びプログラム
JP5541014B2 (ja) 書籍情報検索装置、書籍情報検索システム、書籍情報検索方法及びプログラム
US9411639B2 (en) System and method for managing network navigation
JP6056211B2 (ja) 情報管理装置、情報管理プログラム、及び情報管理方法
JP2016048577A (ja) データベース管理システム、計算機、データベース管理方法
JP5813458B2 (ja) データベース装置およびデータベース装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101008

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120918

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121017

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: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130319

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees