專利名稱:檢索裝置、檢索方法和檢索程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及例如從數(shù)據(jù)庫檢索并取得信息的技術(shù)。
背景技術(shù):
在使用了 RDBMS (Relational Database Management System (相關(guān) 數(shù)據(jù)庫管理系統(tǒng)))的數(shù)據(jù)管理中,在存在多個滿足檢索條件的記錄的情 況下,按照既定的規(guī)定(對RDBMS的存儲順序、檢索中的排列條件) 對各記錄進(jìn)行了排列。RDBMS的利用者順序地取得并利用記錄。此夕卜, 在不是順序地取得記錄而是取得任意的部位的記錄的情況下,通過使用 光標(biāo)控制RDBMS,可取得所希望的記錄。
作為使用了 RDBMS的檢索處理的高速化技術(shù),有以下的技術(shù)。
在專利文獻(xiàn)l中,如果運(yùn)算裝置的數(shù)據(jù)接收區(qū)域已占滿,則在數(shù)據(jù) 處理裝置內(nèi)部的高速緩沖存儲器中存儲先讀入的數(shù)據(jù)。然后,通過其后 將在高速緩沖存儲器中存儲了的先讀入的數(shù)據(jù)傳送到運(yùn)算裝置中,實(shí)現(xiàn) 運(yùn)算裝置的高速化。
在專利文獻(xiàn)2中,存儲裝置取得RDBMS的構(gòu)成信息和執(zhí)行對象區(qū) 域、執(zhí)行優(yōu)先度信息等的信息。然后,通過使用所取得的信息在存儲裝 置中進(jìn)行數(shù)據(jù)高速緩沖控制,以提高數(shù)據(jù)存取性能。
但是,即使在任意一種技術(shù)中,只要RDBMS的利用者在相同的條 件下不事先取得命中件數(shù),在檢索執(zhí)行中就不能知道滿足條件的記錄的 件數(shù)(命中件數(shù))。即,RDBMS的利用者通過全部讀入RDBMS所命中 的記錄且檢索結(jié)束,或通過利用光標(biāo)控制使光標(biāo)到g索結(jié)果的末尾, 才開始知道命中件數(shù)。
專利文獻(xiàn)1特開平2 - 236668號/>凈艮專利文獻(xiàn)2特開2003 - 150419號公報(bào)近年來,用嵌入設(shè)備等處理的數(shù)據(jù)的量、種類越來越增加,即使在
嵌入設(shè)備等中,也進(jìn)行了使用RDBMS的數(shù)據(jù)管理。嵌入設(shè)備的顯示裝 置(顯示器)的尺寸小,在作為檢索結(jié)果從RDBMS取出了的記錄的顯 示件數(shù)方面也產(chǎn)生制約。因此,在命中件數(shù)多的情況下,由用戶操作來 變更顯示的記錄。例如,在具有十字鍵的嵌入裝置的情況下,通過按壓 右鍵,進(jìn)行r下一頁的顯示」,通過按壓左鍵,進(jìn)行r前一頁的顯示J。
在對嵌入裝置等中工作的RDBMS進(jìn)行操作以在顯示裝置中顯示記 錄的程序(以下稱為顯示程序)中,將r下一頁的顯示」、「前一頁的顯 示J這樣的處理變換為使用了 r檢索結(jié)果中從開頭起第o A個記錄的顯 示J等這樣的實(shí)際地顯示的記錄的編號的具體的處理命令。即, 一次顯 示5件的顯示程序在現(xiàn)在顯示了從開頭起第6~ 10個記錄的情況下,將 r下一頁的顯示J這樣的處理命令變換為r檢索結(jié)果中從開頭起第11 ~ 15個記錄的顯示」這樣的處理命令,將r上一頁的顯示J這樣的處理命 令變換為r在檢索結(jié)果中從開頭起第1 ~ 5個記錄的顯示J這樣的處理命 令。然后,根據(jù)變換后的命令對RDBMS發(fā)出檢索結(jié)果的取得要求。
在此,假定上述顯示程序進(jìn)行了檢索結(jié)果的初期顯示、即顯示了檢 索結(jié)果中從開頭起第1~5個記錄,如果用戶按壓左鍵(發(fā)出「前一頁的 顯示J的處理命令),則考慮顯示位于檢索結(jié)果的末尾的記錄的工作。顯 示程序如上所述那樣使用實(shí)際地顯示的記錄的編號對RDBMS發(fā)出記錄 取得的要求。為了從r前一頁的顯示」的處理命令進(jìn)行至記錄編號的變 換,需要在檢索結(jié)果中包含的記錄件數(shù)(以下稱為命中件數(shù))。例如,如 果命中件數(shù)分為500件,則可將r前一頁的顯示」的處理命令變換為r檢 索結(jié)果中從開頭起第496 ~ 500個記錄的顯示』這樣的處理命令。
即,顯示程序要進(jìn)行r下一頁的顯示」、r前一頁的顯示J這樣的處 理,必須在取得所顯示的記錄的同時(shí),取得命中件數(shù)。為了解決該課題, 在對RDBMS發(fā)出用于取得記錄的檢索要求之前,使用與該檢索要求相 同的M發(fā)出只取得命中件數(shù)的檢索要求即可。但是,由于執(zhí)行2次相 同的條件的檢索,故不是高效的,在檢索結(jié)果的顯示方面很費(fèi)時(shí)間。
此外,如果RDBMS從顯示程序接受檢索要求,則從數(shù)據(jù)庫探索滿
6足檢索條件的記錄,構(gòu)筑檢索結(jié)果。RDBMS —般來說從檢索結(jié)果的開 頭起按順序進(jìn)行檢索結(jié)果的構(gòu)筑。在此,如果考慮上述的檢索結(jié)果末尾 的顯示,則為了從RDBMS取得r檢索結(jié)果中從開頭起第496~500個記 錄J,有必要已取得了 r檢索結(jié)果中從開頭起第0 495個記錄J。于是, 顯示程序?yàn)榱孙@示位于檢索結(jié)果末尾的記錄,必須結(jié)束RDBMS中的檢 索結(jié)果的構(gòu)筑。即,在檢索結(jié)果的顯示方面很費(fèi)時(shí)間。
發(fā)明內(nèi)容
本發(fā)明的目的在于利用從在嵌入裝置等中工作的RDBMS取得了的 記錄的程序(上述的顯示程序等)高速地取得命中件數(shù)和位于檢索結(jié)果 的任意的部位上的記錄。換言之,本發(fā)明的目的在于嵌入裝置等高速地 取得命中件數(shù)和位于檢索結(jié)果的任意的部位上的記錄。
與本發(fā)明有關(guān)的檢索裝置例如是從數(shù)據(jù)庫檢索數(shù)據(jù)的檢索裝置,其 特征在于,具備
檢索信息輸入部,輸入表示取得對象項(xiàng)目、檢索對象表和檢索條 件的檢索信息;
記錄編號檢索部,從上述檢索信息輸入部輸入了的上述檢索信息 表示的檢索對象表檢索滿足上述檢索信息表示的檢索條件的記錄,上 述檢索對象表是上述數(shù)據(jù)庫的表,從所檢索的記錄一邊對唯一地確定 上述檢索對象表的記錄的記錄編號進(jìn)行排序一邊進(jìn)行取得;
順序信息輸入部,輸入表示規(guī)定的順序的順序信息;以及
對象項(xiàng)目取得部,取得由上述順序信息輸入部輸入了的順序信息 表示的順序的記錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù),上 述記錄編號是上述記錄編號檢索部取得了的記錄編號。
與本發(fā)明有關(guān)的檢索裝置在取得取得對象項(xiàng)目的數(shù)據(jù)之前邊對記錄 編號進(jìn)行了排序邊取得。因此,按照與本發(fā)明有關(guān)的檢索裝置,可將上 述的r下一頁的顯示」、r前一頁的顯示』這樣的處理命令高速地變換為 使用了實(shí)際地顯示的記錄的記錄編號的具體的處理命令??筛咚俚厝〉?位于檢索結(jié)果的任意的部位上的記錄。
圖1是具備與實(shí)施方式1有關(guān)的檢索裝置100的檢索系統(tǒng)的功能框圖。
圖2是表示檢索設(shè)定信息200的構(gòu)造的一個例子的圖。 圖3是表示檢索結(jié)果300的構(gòu)造的一個例子的圖。 圖4是表示從應(yīng)用程序110接受了檢索開始要求的要求控制部101 的工作的流程圖。
圖5是表示命中件數(shù)取得處理的流程圖。 圖6是表示列值取得處理的流程圖。 圖7是表示中斷處理的流程圖。
圖8是表示檢索裝置100的硬件結(jié)構(gòu)的一個例子的圖。
具體實(shí)施例方式
在本實(shí)施方式中說明可高速地取得位于檢索結(jié)果的任意的部位的記 錄的檢索裝置100。
圖1是具備與本實(shí)施方式有關(guān)的檢索裝置100的檢索系統(tǒng)的功能框圖。
檢索系統(tǒng)具備檢索裝置100 (檢索結(jié)果取得控制部)、應(yīng)用程序110 (檢索指示部的一個例子)、RDBMS120和存儲裝置130。
檢索裝置100是可高速地取得位于檢索結(jié)果的任意的部位的記錄的 裝置。后面敘述其細(xì)節(jié)。
應(yīng)用程序110是利用檢索裝置100的程序。應(yīng)用程序110取得要存 儲裝置130存儲了的數(shù)據(jù),顯示該數(shù)據(jù),此外還提供給其它的裝置或程 序。
RDBMS120是提供對在存儲裝置130中蓄積了的數(shù)據(jù)庫進(jìn)行存取的 功能的程序。
存儲裝置130例如是HDD (硬盤驅(qū)動器)或SSD (固體盤)等的非 易失性存儲裝置。存儲裝置130蓄積、存儲數(shù)據(jù)的集合(數(shù)據(jù)庫)。 一般來說,數(shù)據(jù)庫可具有多個表,表可具有多個記錄。
即,檢索裝置100按照來自應(yīng)用程序110的檢索指示,經(jīng)由 RDBMS120取得存儲裝置130存儲了的記錄的信息。而且,檢索裝置100 將檢索而取得了的信息發(fā)送給應(yīng)用程序110。
再有,檢索裝置100、應(yīng)用程序110、 RDBMS120和存儲裝置130 可以處于l個裝置內(nèi),也可以是分別作為各自的裝置分開了的結(jié)構(gòu)。即, 檢索裝置100、應(yīng)用程序110、 RDBMS120和存儲裝置130既可具備在1 個嵌入裝置中,也可在嵌入裝置中只具備應(yīng)用程序110,在其它的裝置中 具備檢索裝置100、 RDBMS120和存儲裝置130。
此外,在以下的說明中,處理裝置例如A^述的CPU911,通信裝置 例如是后述的通信板915或總線912,輸入裝置例如是后述的通信板915 或鍵盤板卯2。
其次,說明檢索裝置100,檢索裝置100具M(jìn)求控制部101、檢索 控制部105和檢索結(jié)果蓄積部108。
要求控制部101具有受理來自應(yīng)用程序110的要求的功能,具備檢 索信息輸入部102、順序信息輸入部103和通知部104。
檢索信息輸入部102從處于檢索裝置100的外部的應(yīng)用程序110經(jīng) 通信裝置或輸入裝置接受檢索開始要求(檢索信息的一個例子),經(jīng)通信 裝置或輸入裝置將檢索開始要求發(fā)送給檢索控制部105。
順序信息輸入部103經(jīng)通信裝置或輸入裝置從應(yīng)用程序110接受檢 索結(jié)果取得要求(順序信息的一個例子),經(jīng)通信裝置或輸入裝置將檢索 結(jié)果取得要求發(fā)送給檢索控制部105。
如果通知部104 #索控制部105經(jīng)通信裝置或輸入裝置接收針對 檢索開始要求或檢索結(jié)果取得要求的通知(響應(yīng)),則對應(yīng)用程序110經(jīng)
檢索控制部105具有執(zhí)行檢索處理的功能,具備記錄編號檢索部106 和對象項(xiàng)目取得部107。
如果記錄編號檢索部106接受來自要求控制部101的檢索開始要求,則使用RDBMS120并利用處理裝置檢索并取得滿足檢索條件的記錄的 記錄編號,并且利用處理裝置將滿足檢索條件的記錄的數(shù)目(以下稱為 命中件數(shù))加起來。
對象項(xiàng)目取得部107將使用RDBMS120取得了的記錄編號指定為檢 索條件,并利用處理裝置取得記錄,在檢索結(jié)果蓄積部108中存儲所取 得的記錄。
如果記錄編號檢索部106和對象項(xiàng)目取得部107結(jié)束各自的處理, 則經(jīng)通信裝置或輸入裝置對通知部104通知各自的處理結(jié)束了的情況。
檢索結(jié)果蓄積部108例如是RAM (隨才X^取存儲器)等的易失性存 儲裝置,存儲檢索控制部105使用RDBMS120取得了的記錄等。檢索結(jié) 果蓄積部108也可以是非易失性存儲裝置。
其次,說明檢索裝置100的基本的工作的流程(工作的簡易說明)。 (1)從應(yīng)用程序110輸入表示取得對象項(xiàng)目、檢索對象表和檢索條 件的檢索開始要求,要求控制部101的檢索信息輸入部102受理該檢索 開始要求。
(2 )其次,檢索信息輸入部102對檢索控制部105的記錄編號檢索 部106發(fā)送檢索開始要求。
(3)其次,記錄編號檢索部106*索對象表檢索滿足檢索開始要 求的檢索條件的記錄,從所檢索的記錄取得唯一地確定上述檢索對象表 的記錄的記錄編號,同時(shí)對上述記錄編號進(jìn)行了排序,并存儲在檢索結(jié) 果蓄積部108中。此外,記錄編號檢索部106同時(shí)對命中件數(shù)進(jìn)行計(jì)數(shù)。
(4 )其次,檢索控制部105的對象項(xiàng)目取得部107將記錄編號檢索 部106取得了的記錄編號指定為條件,按記錄編號檢索部106進(jìn)行了排 序的順序,取得檢索對象表的取得對象項(xiàng)目,存儲在檢索結(jié)果蓄積部108 中。
(5 )從應(yīng)用程序110輸Aj良示取得笫幾個記錄的數(shù)據(jù)的檢索結(jié)果取 得要求,要求控制部101的順序信息輸入部103受理該檢索結(jié)果取得要 求。
(6 )順序信息輸入部103對對象項(xiàng)目取得部107發(fā)送檢索結(jié)果取得
10要求。
(7)對象項(xiàng)目取得部107利用處理裝置從檢索結(jié)果蓄積部108取得 相應(yīng)的記錄的數(shù)據(jù),存儲在檢索結(jié)果蓄積部108中。
(8 )通知部104將對象項(xiàng)目取得部107在檢索結(jié)果蓄積部108中存 儲了的數(shù)據(jù)發(fā)送給應(yīng)用程序110。
說明在檢索條件等的交接中利用的檢索設(shè)定信息200和在檢索結(jié)果 等的交接中利用的檢索結(jié)果300。
圖2是表示檢索設(shè)定信息200的構(gòu)造的圖。
檢索設(shè)定信息200具備識別符201、取得對象列202(取得對象項(xiàng)目)、 檢索對象表203、檢索條件204、命中件數(shù)205、檢索結(jié)果存儲場所206 和狀態(tài)207。
識別符201是可唯一地識別檢索開始要求的識別信息。 取得對象列202列舉了存儲有想取得的數(shù)據(jù)的大于等于1個的列的 名稱。
檢索對象表203是在存儲裝置130存儲了的數(shù)據(jù)庫的表中進(jìn)行檢索 的表的表名稱。
檢索條件204是表示使數(shù)據(jù)的范圍變窄的M的信息。檢索^fr 204 是例如是SQL則是在WHERE句中記栽的信息。
命中件數(shù)205是滿足檢索條件204的記錄的件數(shù),是記錄編號檢索 部106進(jìn)行了加起來的值。
檢索結(jié)果存儲場所206是對象項(xiàng)目取得部107在檢索結(jié)果蓄積部108 中作成的檢索結(jié)果300的位置(地址)。
狀態(tài)207是檢索處理的進(jìn)行狀況。
圖3是表示檢索結(jié)果300的構(gòu)造的圖。
檢索結(jié)果300具備記錄編號301、已取得的標(biāo)志302、取得對象列值 303和取得對象行編號304。在此,在檢索結(jié)果300中存在滿足檢索^ 的記錄的數(shù)目(命中件數(shù)的數(shù)目)大小的記錄編號301、已取得的標(biāo)志 302和取得對象列值303。即,在檢索結(jié)果300中,將記錄編號301、已 取得的標(biāo)志302和取得對象列值303作為1個組,存在大于等于1個的該組。即,檢索結(jié)果300具備大于等于1個的由記錄編號301、已取得的 標(biāo)志302和取得對象列值303構(gòu)成的組和1個取得對象行編號304。
記錄編號301是唯一地確定處于RDBMS120存取的表中的記錄的編號。
已取得的標(biāo)志302是表示是否已從記錄編號301表示的記錄取得了 取得對象列的數(shù)據(jù)的信息(標(biāo)志)。即,已取得的標(biāo)志302是表示從 RDBMS120取得了的值是否a了后述的取得對象列值303中的信息。
取得對象列值303是RDBMS120進(jìn)行存取的表的記錄的列中取得對 象列202表示的列的值。在取得對象列202表示多個列名的情況下,在 取得對象列值303中存儲多個值。
取得對象行編號304是對象項(xiàng)目取得部107現(xiàn)在正在取得中的記錄 的行編號。即,取得對象行編號304是表示滿足檢索條件的記錄中從前 面起第幾個記錄是對象項(xiàng)目取得部107正在取得中的順序信息。
根據(jù)以上說明了的圖1至圖3和以下的圖4至圖7,說明與本實(shí)施方 式有關(guān)的檢索裝置100的工作。
再有,由于應(yīng)用程序110顯示檢索結(jié)果的工作可以是任意的方法, 故在此不說明。此外,在進(jìn)行在此說明的檢索裝置100的工作之前,有 必要打開成為檢索對象的數(shù)據(jù)庫,但在此在說明中省略關(guān)于該處理的說 明,假定出于可對數(shù)據(jù)庫進(jìn)行檢索處理的狀態(tài).
首先,根據(jù)圖l、圖2、圖4說明接受了來自應(yīng)用程序110的檢索開 始要求的要求控制部101的工作(相當(dāng)于上述工作的簡易說明的(1) (2 ))。圖4是表示從應(yīng)用程序110接受了檢索開始要求的要求控制部101 的工作的流程圖。
(S401):要求控制部101的檢索信息輸入部102從應(yīng)用程序110經(jīng) 通信裝置或輸入裝置接收檢索開始要求。
(S402 ):檢索信息輸入部102利用處理裝置作成檢索設(shè)定信息200, 并存儲在檢索結(jié)果蓄積部108中。
(S403 ):檢索信息輸入部102在識別符201中存儲規(guī)定的值。在此, 所謂規(guī)定的值,只要是能唯一地確定檢索設(shè)定信息200的值,可以是任意的值。即,在檢索結(jié)果蓄積部108中存在多個檢索設(shè)定信息200的情 況下,存儲不與這些識別符201重復(fù)的值。
(S404 ) ~ ( S406 ):檢索信息輸入部102將從應(yīng)用程序110接收了 的檢索開始要求中包含的信息存儲在檢索結(jié)果蓄積部108中作成了的檢 索設(shè)定信息200的取得對象列202、檢索對象表203、檢索條件204中。 例如,在從應(yīng)用程序110接收了的檢索開始要求是r SELECT Name,Genre,Address FROM ShopData WHERE Genre ='日式飯菜,;J 這樣的SQL文的情況下,在取得對象列202中存儲 r Name,Genre,Address J,在檢索對象表203中存儲r ShopData J,在檢 索條件204中存儲r Genre ='日式飯菜,」。再有,假定在檢索裝置100 與應(yīng)用程序110之間預(yù)先決定了從應(yīng)用程序110接受的信息存儲在檢索 設(shè)定信息200中的具體的次序。
(S407 ):檢索信息輸入部102在檢索設(shè)定信息200的狀態(tài)207中存 儲表示r檢索開始前J的含義的規(guī)定的值。
(S408 ):檢索信息輸入部102對記錄編號檢索部106指示檢索開始。 即,檢索信息輸入部102通過對記錄編號檢索部106通知檢索設(shè)定信息 200,對記錄編號檢索部106通知檢索開始要求。檢索信息輸入部102例 如也可對記錄編號檢索部106通知識別符201。由此,記錄編號檢索部 106可#索結(jié)果蓄積部108取得檢索開始要求。
(5409) :要求控制部101的通知部104不等待來自記錄編號檢索部 106的對于在(S408 )中檢索信息輸入部102進(jìn)行了的指示的響應(yīng),而對 應(yīng)用程序110發(fā)送識別符201。在此,所謂「不等待響應(yīng)」,意味著應(yīng)用 程序110與記錄編號檢索部106以不同的進(jìn)程或線程來工作,(S訓(xùn)8 )的 指示是非同步命令。再有,在應(yīng)用程序110 #索裝置100接受檢索結(jié) 果時(shí)使用識別符201。
(5410) :要求控制部101結(jié)束從應(yīng)用程序110接受了檢索開始要求 時(shí)的工作。
其次,根據(jù)圖1、圖2、圖3、圖5說明作為從檢索信息輸入部102 接受了檢索開始要求的檢索控制部105的工作的命中件數(shù)取得處理(相當(dāng)于上述工作的簡易說明的(3))。圖5是表示從要求控制部101接受了 檢索開始要求的記錄編號檢索部106將命中件數(shù)數(shù)出來的命中件數(shù)取得 處理的流程圖。
(S501):如果檢索控制部105的記錄編號檢索部106從檢索信息輸 入部102接受檢索開始的指示,則在檢索結(jié)果蓄積部108中生成檢索結(jié) 果300。
(S502 ):記錄編號檢索部106在檢索設(shè)定信息200的檢索結(jié)果存儲 場所206中設(shè)定(存儲)在(S501)中生成了的檢索結(jié)果300的開頭位 置(地址)。
(S503 ):記錄編號檢索部106使命中件數(shù)205初始化。
(5504) :記錄編號檢索部106對RDBMS120執(zhí)行取得記錄編號的 檢索。在此,所謂記錄編號,是RDBMS120用于唯一地確定處于表內(nèi)部 的記錄的編號。記錄編號才艮據(jù)RDBMS120的種類,有作為特殊的名稱#皮 保持的情況或在表設(shè)計(jì)時(shí)將滿足特定的條件的列看作記錄編號的情況。 在此,假定RDBMS120在每個表中保持了記錄編號作為「_RowId_J這 樣的名稱的列。即,記錄編號檢索部106例如作成「 SELECT _RowId_ From 〈表名〉WHERE 〈檢索條件>;J這樣的SQL文。記錄編號檢索 部106在〈M 〉中設(shè)定檢索對象表203中設(shè)定了的值,在〈檢索M〉 中設(shè)定在檢索條件204中設(shè)定了的值。然后,記錄編號檢索部106將上 述SQLiL^送給RDBMS120,并接收響應(yīng)。
(5505) :記錄編號檢索部106判定來自RDBMS120的響應(yīng)是否是 錯誤的。在判定為不是錯溪的情況下(在S505為否),前進(jìn)到(S506)。 另一方面,在判定為是餘溪的情況下(在S505為是),前進(jìn)到(S510)。
(5506) :記錄編號檢索部106從RDBMS120取得檢索結(jié)果、即記 錄編號。
(5507) :記錄編號檢索部106從RDBMS120接收r沒有錯誤」、r錯 誤發(fā)生J、 r檢索結(jié)束j的某一個響應(yīng),判定是否是r^m發(fā)生J或r檢 索結(jié)束J。然后,在來自RDBMS120的響應(yīng)是「沒有餘溪J的情況下(在 S507為否),前進(jìn)到(S508),另一方面,在來自RDBMS120的響應(yīng)是
14r錯誤發(fā)生」或r檢索結(jié)束」的情況下(在S507為是),前進(jìn)到(S510 )。
(5508) :記錄編號檢索部106在檢索結(jié)果300的記錄編號301中按 順序(一邊進(jìn)行了排序)設(shè)定在(S506)中取得了的記錄編號。在此, 對于檢索結(jié)果300的記錄編號的設(shè)定處理不是覆蓋,而是附加。即,每 當(dāng)取得記錄編號時(shí),增加記錄編號301、已取得的標(biāo)志302、取得對象列 值303的組的數(shù)目。
(5509) :記錄編號檢索部106將命中件數(shù)205加1 ( +1)。然后, 再次返回到從RDBMS120取得記錄編號的處理(S506 ),重復(fù)進(jìn)行處理。
(5510) :記錄編號檢索部106對通知部104通知數(shù)出命中件數(shù)結(jié)束 了的情況。此外,記錄編號檢索部106連同從(S505)或(S507)轉(zhuǎn)移 到(S510)的原因(r檢索結(jié)束J或r錯誤發(fā)生」)通知(發(fā)送)給通知 部104。
(5511) :記錄編號檢索部106結(jié)束數(shù)出命中件數(shù)的工作。
通知部104接收在(S510)中記錄編號檢索部106發(fā)送了的數(shù)出命 中件數(shù)結(jié)束通知。在所接收到的通知中包含的轉(zhuǎn)移到(S510)的原因是 r沒有錯誤J的情況下(在此,將r檢索結(jié)束」看作「沒有錯誤」),通 知部104將檢索設(shè)定信息200的狀態(tài)207更新為表示r命中件數(shù)取得結(jié) 束J的值,并且對應(yīng)用程序IIO通知(發(fā)送)命中件數(shù)205。另一方面, 在所接收的通知中包含的轉(zhuǎn)移到(S510)的原因是「g發(fā)生J的情況 下,通知部104將狀態(tài)207更新為意味「錯誤發(fā)生J的值,并且對應(yīng)用 程序110通知(發(fā)送)表示發(fā)生了錯誤的信息。在此,例如假定預(yù)先從 應(yīng)用程序110將通知用的回叫函數(shù)交給檢索裝置100。
其次,根據(jù)圖1、圖2、圖3、圖5、圖6說明作為命中件數(shù)取得處 理后的檢索控制部105的工作的列值取得處理(相當(dāng)于上述工作的簡易 說明的(4))。圖6是表示對象項(xiàng)目取得部107取得列的值的列值取得處 理的 j(^呈圖.
(S601):如果檢索控制部105的對象項(xiàng)目取得部107在(S511)中 記錄編號檢索部106的數(shù)出命中件數(shù)的工作結(jié)束,則開始在檢索結(jié)果300 中設(shè)定取得對象列202表示的列的值的處理。(S602 ):對象項(xiàng)目取得部107將取得對象行編號304初始化為1。 (S603): 對象項(xiàng)目取得部107判定是否從順序信息輸入部103接 收了檢索結(jié)果取得要求。在判定為未接收檢索結(jié)果取得要求的情況下(在 S603中為否),前進(jìn)到(S604)。另一方面,在判定為接收了檢索結(jié)果取 得要求的情況下(在S603中為是),前進(jìn)到中斷處理(S699)。后面敘述 中斷處理。
(S604 ): 對象項(xiàng)目取得部107根據(jù)與取得對象行編號304對應(yīng)的 記錄的已取得的標(biāo)志302,判定是否已取得與取得對象行編號304對應(yīng)的 的記錄的值。在未取得與取得對象行編號304對應(yīng)的的記錄的值的情況 下(在S604中為否),前進(jìn)到(S605)。另一方面,在判定為已取得與取 得對象行編號304對應(yīng)的的記錄的值的情況下(在S604中為是),前進(jìn) 到(S610)。
(S605): 對象項(xiàng)目取得部107取得取得對象行編號304表示的順 序(在(S508)中加上的順序)的記錄編號301。 對象項(xiàng)目取得部1(T7 例如在取得對象行編號304的值為1的情況下,取得檢索結(jié)果的開頭(1 位)的記錄編號301。
(S606 ):對象項(xiàng)目取得部107對RDBMS120執(zhí)行由在(S605 )中 取得了的記錄編號301確定的記錄的取得對象列202表示的列的值的處 理。例如,在從應(yīng)用程序110接收了的檢索開始要求是「 SELECT Name,Genre,Address FROM ShopData WHERE Genre = 4日式飯菜,;J 這樣的SQL文的情況下,對象項(xiàng)目取得部107生成并執(zhí)布SELECT <列 名系列〉FROM 〈^> WHERE _RowId_ =〈記錄編號〉J的SQL 文。在此,對象項(xiàng)目取得部107在〈列名系列〉中設(shè)定在取得對象列202 中設(shè)定了的值,在〈M〉中設(shè)定在取得對象表203中設(shè)定了的值,在 <記錄編號> 中設(shè)定在(S605)中取得了的記錄編號301。然后,對象項(xiàng) 目取得部107將上述SQL發(fā)送給RDBMS120,并接收其響應(yīng).
(S607):對象項(xiàng)目取得部107判定來自RDBMS120的響應(yīng)是否為 鐐溪。在判定為不是錯誤的情況下(在S607中為否),前進(jìn)到(S608)。 另一方面,在判定為是錯誤的情況下(在S607中為是),前進(jìn)到(S612)。
16(S608 ): 對象項(xiàng)目取得部107在取得對象4亍編號304表示的順序 的取得對象列值303中設(shè)定檢索結(jié)果。即,只要是上述SQL,就在取得 對象列值303中設(shè)定Name,Genre,Address的各值。
(S609):對象項(xiàng)目取得部107將取得對象行編號304表示的順序的 已取得的標(biāo)志302更新為意味『已取得J的值。
(S610 ):對象項(xiàng)目取得部107將取得對象行編號304的值加l( + 1 )。
(S611):對象項(xiàng)目取得部107判定取得對象行編號304的值是否比 檢索設(shè)定信息200的命中件數(shù)205的值大。在取得對象行編號304的值 小于等于命中件數(shù)205的值的情況下(在S611中為否),前進(jìn)到(S603), 重復(fù)進(jìn)行處理。另一方面,在取得對象行編號304的值比命中件數(shù)205 的值大的情況下(在S611中為是),前進(jìn)到(S612)、
(S612 ):對象項(xiàng)目取得部107對通知部104發(fā)送檢索處理的結(jié)束通 知。即,對象項(xiàng)目取得部107對通知部104通知(發(fā)送)表示轉(zhuǎn)移到(S612 ) 的理由(r錯誤發(fā)生J或r取得對象行編號304的值比命中件數(shù)205的值 大(相當(dāng)于檢索結(jié)束)J)的值。
(S613 ):對象項(xiàng)目取得部107結(jié)束取得取得對象列202表示的列的 值的工作。
通知部104接收在(S612)中對象項(xiàng)目取得部107發(fā)送了的檢索處 理的結(jié)束通知。在所接收的通知中包含的轉(zhuǎn)移到(S612)的理由是r沒 有錯誤」的情況下(在此,將r檢索結(jié)束』看作「沒有錯誤」),通知部 104將檢索設(shè)定信息200的狀態(tài)207更新為表示「檢索結(jié)束』的值,并且 對應(yīng)用程序110通知(發(fā)送)表示檢索結(jié)束了的情況的信息。另一方面, 在所接收的通知中包含的轉(zhuǎn)移到(S612)的理由是「4mil生J的情況 下,通知部104將狀態(tài)207更新為表示「#^良生」的值,并且對應(yīng)用 程序110通知(發(fā)送)表示錯M生了的信息。在此,例如假定預(yù)先從 應(yīng)用程序110將通知用的回叫函數(shù)交給檢索裝置100。
利用上述的處理,在對象項(xiàng)目取得部107結(jié)束了檢索處理的狀態(tài)、 即將狀態(tài)207設(shè)定為意味r檢索結(jié)束J的值的狀態(tài)下,應(yīng)用程序110對 檢索裝置100發(fā)送包含可識別檢索設(shè)定信息200的識別符、想取得的記錄的順序(從前面起第幾個)和想取得的列的檢索結(jié)果取得要求。于是,
順序信息輸入部103接受檢索結(jié)果取得要求,對對象項(xiàng)目取得部107發(fā) 送檢索結(jié)果取得要求。對象項(xiàng)目取得部107從與檢索結(jié)果蓄積部108的 檢索結(jié)果300的檢索結(jié)果取得要求表示的順序的記錄對應(yīng)的取得對象列 值303中,取得檢索結(jié)果取得要求表示的順序的記錄的檢索結(jié)果取得要 求表示的列的值。然后,對象項(xiàng)目取得部107將所取得的值經(jīng)由通知部 104發(fā)送給應(yīng)用程序110 (相當(dāng)于上述工作的簡易i兌明的(5)至(8))。
即,在從應(yīng)用程序110對順序信息輸入部103發(fā)送了要求r第500 個記錄的Address列J的取得的檢索結(jié)果取得要求的情況下,首先,順 序信息輸入部103確認(rèn)狀態(tài)207是否已成為r檢索結(jié)束」的值。然后, 在此,由于檢索處理已結(jié)束,故對象項(xiàng)目取得部107從與序數(shù)(在此是 第500個)相當(dāng)?shù)挠涗浀娜〉脤ο罅兄?03中取得Address列的值,通 知部104發(fā)送給應(yīng)用程序110。
此外,在檢索設(shè)定信息200的狀態(tài)207是r錯誤發(fā)生J的情況下, 通知部104對應(yīng)用程序110返回錯誤。
以上是按照在工作的簡易說明中說明了的流程進(jìn)行了處理的情況的 工作的詳細(xì)說明。但是,也存在以與工作的簡易說明不同的流程進(jìn)行處 理的情況。這是執(zhí)行圖6的中斷處理(S699)的情況。因此,其次根據(jù) 圖l、圖2、圖3、圖6、圖7說明執(zhí)行中斷處理(S699)的情況的工作。
首先,根據(jù)圖7,說明中斷處理。圖7是表示圖6中的中斷處理(S6") 的工作的流程圖。中斷處理是在對象項(xiàng)目取得部107在執(zhí)行圖6中表示 的列值取得處理之中應(yīng)用程序110對檢索裝置100發(fā)送了檢索結(jié)果取得 要求的情況下發(fā)生的處理。
(5701) :在執(zhí)行列值取得處理之中接收了檢索結(jié)果取得要求的對象 項(xiàng)目取得部107判定為在上述的(S603 )中接收了檢索結(jié)果取得要求(在 S603中為是),進(jìn)入中斷處理(S699)。然后,開始中斷處理。
(5702) :對象項(xiàng)目取得部107參照檢索結(jié)果300,從序數(shù)求出記錄 編號301。即,取得序數(shù)所表示的順序的記錄編號301。
(S703 ):對象項(xiàng)目取得部107根據(jù)已取得的標(biāo)志302的值,判定是否已取得相應(yīng)的記錄的值。在不是已取得相應(yīng)的記錄的值的情況下(在
S703中為否),前進(jìn)到(S704)。另一方面,在已取得適當(dāng)?shù)挠涗浀闹档?情況下(在S703中為是),前進(jìn)到(S709)。
(S704 ):對象項(xiàng)目取得部107對RDBMS120執(zhí)行取得由記錄編號 301確定的記錄的取得對象列202所表示的列的值的處理。例如,在從應(yīng) 用程序110接收了的檢索開始要求是『SELECT Name,Genre,Address FROM ShopData WHERE Genre ='日式飯菜,;J這樣的SQL文的情況 下,對象項(xiàng)目取得部107生成「 SELECT 〈列名系列〉FROM 〈表名> WHERE _RowId_ =〈記錄編號 > 」的SQL文。在此,對象項(xiàng)目取得部 107在〈列名系列 > 中設(shè)定在取得對象列202中所設(shè)定了的值,在〈"〉 中設(shè)定在取得對象表203中所設(shè)定了的值,在〈記錄編號〉中設(shè)定在(S605 ) 中取得了的記錄編號301。
(S705 ):對象項(xiàng)目取得部107執(zhí)行在(S704 )中設(shè)定了的檢索,接 收響應(yīng)。
(S706):對象項(xiàng)目取得部107判定來自RDBMS120的響應(yīng)是否是 錯誤的。在判定為不是錯誤的情況下(在S706中為否),前進(jìn)到(S7(T7)。 另一方面,在判定為是錯誤的情況下(在S706中為是),前進(jìn)到(S709 )。
(S707 ):對象項(xiàng)目取得部107在檢索結(jié)果300的取得對象列303中 設(shè)定所取得的值,
(S708 ):對象項(xiàng)目取得部107將已取得的標(biāo)志302更新為表示已取
得的值。
(S709 ):對象項(xiàng)目取得部107對要求控制部101通知(發(fā)送)表示 處理結(jié)束的值。
(S710):對象項(xiàng)目取得部107結(jié)束中斷處理。
然后,如果結(jié)束中斷處理,則通知部104對應(yīng)用程序110發(fā)送在檢 索結(jié)果300的取得對象列值303中所設(shè)定了的值。
其次,說明對順序信息輸入部103發(fā)送了接受命中件數(shù)的通知的應(yīng) 用程序110要求取得r第1個(開頭)記錄的Name列的值J ^檢索結(jié) 果取得要求的情況的處理。再有,在此假定已在檢索結(jié)果蓄積部108中設(shè)定了第1個記錄的對 象列值303表示的列的值。此外,假定對象項(xiàng)目取得部107未結(jié)l險(xiǎn)索 處理。即,假定對象項(xiàng)目取得部107是在執(zhí)行了上述的圖6的處理之中。 接收了檢索結(jié)果取得要求的對象項(xiàng)目取得部107判定為在上述的
(S603)中接收了檢索結(jié)果取得要求(在S603中為是),前進(jìn)到中斷處 理(S699),開始中斷處理(S701)。接著,對象項(xiàng)目取得部107取得在 序數(shù)所表示的順序(在此,1位)的記錄編號301中設(shè)定了的記錄編號
(S702 )。對象項(xiàng)目取得部107根據(jù)已取得的標(biāo)志302的值,判定是否已 取得相應(yīng)的記錄的值(S703)。在此,已取得第l個記錄的值。因此,對 通知部104通知(發(fā)送)表示處理結(jié)束的值(S709 )。然后,通知部104 從檢索結(jié)果蓄積部108將檢索結(jié)果300的序數(shù)所表示的順序(在此,1 位)的記錄的取得對象列值303中設(shè)定了的Name列的值發(fā)送給應(yīng)用程 序110。
接著,說明應(yīng)用程序110發(fā)出了取得「第1000個記錄的Address列 的值」的要求的情況下的檢索裝置100的工作。
接收了檢索結(jié)果取得要求的對象項(xiàng)目取得部107判定為在上述的 (S603)中接收了檢索結(jié)果取得要求(在S603中為是),前進(jìn)到中斷處 理(S699),開始中斷處理(S701)。接著,對象項(xiàng)目取得部107取得在 序數(shù)所表示的順序(在此,1000位)的記錄編號301中設(shè)定了的記錄編 號(S702 )。對象項(xiàng)目取得部107根據(jù)已取得的標(biāo)志302的值,判定是否 已取得相應(yīng)的記錄的值(S703)。在此,不是已取得第IOOO個記錄的值。 因此,在檢索條件中設(shè)定記錄編號(S704),執(zhí)行檢索(S705)。對象項(xiàng) 目取得部107在來自RDBMS120的響應(yīng)是沒有餘溪的情況下(在S706 中為否),在取得對象列值303中設(shè)定所取得的值(S707),將已取得的 標(biāo)志302更新為已取得(S708 )。對通知部104通知(發(fā)送)表示處理結(jié) 束的值(S709 )。然后,通知部104 >^險(xiǎn)索結(jié)果蓄積部108將檢索結(jié)果300 的序數(shù)所表示的順序(在此,1000位)的記錄的取得對象列值303中設(shè) 定了的Address列的值發(fā)送給應(yīng)用程序110。
在與本實(shí)施方式有關(guān)的檢索裝置100中具有以下那樣的效果。如果在與本實(shí)施方式有關(guān)的檢索裝置100接受來自應(yīng)用程序110的 檢索開始要求,則首先只取得滿足檢索條件204的記錄編號,因?qū)τ涗?編號的個數(shù)進(jìn)行計(jì)算而求出命中件數(shù),在數(shù)出命中件數(shù)結(jié)束了的時(shí)刻對 應(yīng)用程序110通知命中件數(shù)。因此,應(yīng)用程序110在檢索結(jié)果整體的取 得結(jié)束之前可高速地進(jìn)行檢索結(jié)果是多少件、檢索結(jié)果相當(dāng)于顯示頁的 多少頁(檢索結(jié)果是500件、若可一次顯示5件,則是100頁)等的判 斷。因而,可高速地將「下一頁的顯示"「前一頁的顯示」這樣的處理 變換為使用了實(shí)際地顯示的記錄的編號的具體的處理命令。
此外,與本實(shí)施方式有關(guān)的檢索裝置100在數(shù)出命中件數(shù)之后,為 了取得任意的部位的記錄的值,指定記錄編號作為檢索條件,進(jìn)行數(shù)據(jù) 庫的檢索。因此,與本實(shí)施方式有關(guān)的檢索裝置100其對數(shù)出命中件數(shù) 之后的為了取得任意的部位的記錄所需要的時(shí)間不依賴于命中件數(shù)。即, 以往為了取得任意的部位的記錄的值,由于必須從檢索結(jié)果的開頭按順 序取得記錄,故與命中件數(shù)成比例,取得處于越離開頭遠(yuǎn)的位置的記錄 所需要的時(shí)間越變長。但是,對于與本實(shí)施方式有關(guān)的檢索裝置100來 說,即使是處于離開頭遠(yuǎn)的位置的記錄的值,也能高速地取得。
再者,對于與本實(shí)施方式有關(guān)的檢索裝置100來說,即使在未結(jié)束 取得滿足檢索條件204的全部的記錄的值的情況下,也能從應(yīng)用程序110 接受指定了想取得的記錄的序數(shù)和列名的檢索結(jié)果取得要求。如果在未 結(jié)束取得全部的記錄的值的情況下接收檢索結(jié)果取得要求,則檢索裝置 100暫時(shí)地停止正在執(zhí)行的圖6中表示的列值取得處理,先取得從應(yīng)用程 序110指定了的記錄的列的值,發(fā)送給應(yīng)用程序110。然后,檢索裝置 100重新開始暫時(shí)地停止了的圖6中表示的列值取得處理。因此,即使想 取得的記錄處于檢索結(jié)果的哪個位置(開頭、末尾、中間等),在取得中 所需要的時(shí)間也大致相等,換言之,即使是處于末尾的記錄的值,也能 高速地取得。
再有,檢索裝置100可如以下那樣工作。
在上述說明中,進(jìn)行了在接受了命中件數(shù)的通知后應(yīng)用程序110對 檢索裝置100發(fā)出檢索結(jié)果取得要求的情況的說明。但是,也可在命中件數(shù)的通知前,應(yīng)用程序110對檢索裝置100發(fā)出檢索結(jié)果取得要求。
在該情況下,記錄編號檢索部106在從RDBMS120取得與所指定的 序數(shù)相當(dāng)?shù)挠涗浘幪栔袄^續(xù)記錄編號的取得。如果記錄編號檢索部106 取得相應(yīng)的記錄編號,則對象項(xiàng)目取得部107卩吏用該記錄編號在取得對 象列值303中設(shè)定值。然后,在取得對象列值303中設(shè)定了值后,記錄 編號檢索部106再次返回到記錄編號的取得處理。另一方面,通知部104 將對象項(xiàng)目取得部107在取得對象列值303設(shè)定了的值發(fā)送給應(yīng)用程序 110。通過釆取這樣的工作,應(yīng)用程序IIO在知道命中件數(shù)之前可取得已 取得記錄編號的記錄,可實(shí)現(xiàn)記錄的高速的顯示。
即,如果記錄編號檢索部106在結(jié)束取得記錄編號之前順序信息輸 入部103輸入檢索結(jié)果取得要求,則在檢索結(jié)果取得要求表示的順序之 前繼續(xù)記錄編號的取得。如果記錄編號檢索部106在檢索結(jié)果取得要求 表示的順序之前取得記錄編號,則對象項(xiàng)目取得部107取得由檢索結(jié)果 取得要求所表示的順序的記錄編號確定的記錄的取得對象列202的數(shù)據(jù)。
此外,在上述說明中,進(jìn)行了應(yīng)用程序110要求取得1個列作為檢 索結(jié)果取得要求的情況的說明。但是,也可用1個檢索結(jié)果取得要求取 得大于等于2個的列。此時(shí),通知部104從檢索結(jié)果蓄積部108的檢索 結(jié)果300的取得對象列值303中取得應(yīng)用程序110用檢索結(jié)果取得要求 指定了的列的值,發(fā)送給應(yīng)用程序IIO。通過進(jìn)行這樣的工作,可減少從 應(yīng)用程序110對檢索裝置100的檢索結(jié)果取得要求的執(zhí)行次數(shù)。
此外,在上述說明中,應(yīng)用程序110用檢索結(jié)果取得要求指定列的 名稱(例如,Address),指定了列。但是,應(yīng)用程序110也可用檢索結(jié) 果取得要求以記錄的「第幾列」這樣的形態(tài)指定列。即,如果將開頭定 為第1列,則Name列是第1列,Genre列是第2列,Address列是第3 列。此時(shí),對象項(xiàng)目取得部107或通知部104從列編號和取得對象列202 決定對應(yīng)用程序110發(fā)送的列的值即可。
此外,在上述說明中,即使是取得已在檢索結(jié)果蓄積部108中設(shè)定 好的記錄的值的情況,也對對象項(xiàng)目取得部107發(fā)送檢索結(jié)果取得要求, 對象項(xiàng)目取得部107從取得對象列值303取得了值。但是,順序信息輸入部103參照相應(yīng)的記錄的已取得的標(biāo)志302如果已取得相應(yīng)的取得對 象列值303,則不對對象項(xiàng)目取得部107發(fā)送檢索結(jié)果取得要求,順序信 息輸入部103也可經(jīng)由通知部104對應(yīng)用程序110發(fā)送取得對象列值303 的值。通過采取這樣的工作,可不停止對象項(xiàng)目取得部107的工作,可 在更短的時(shí)間內(nèi)結(jié)束由對象項(xiàng)目取得部107進(jìn)行的檢索結(jié)果取得處理。
此外,在上述說明中,如果對象項(xiàng)目取得部107中斷處理結(jié)束,則 從暫時(shí)停止了的部位重新開始檢索處理。但是,也可從在中斷處理中所 指定的部位重新開始檢索處理。例如,在檢索結(jié)果蓄積部108中設(shè)定了 第1 ~第100個記錄的狀態(tài)下,在對第500個記錄的檢索結(jié)果取得要求到 達(dá)并對該要求的處理結(jié)束了的情況下,也可先執(zhí)行第501 ~第1000個記 錄的取得處理,其后實(shí)施第101 ~第499個記錄的取得處理。
為了實(shí)現(xiàn)這樣的工作,例如,在中斷處理(S699)中,將取得對象 行編號304的值設(shè)定為檢索結(jié)果取得要求的序數(shù)的下一個值(在上述的 例子中,序數(shù)是第500個,其下一個是第501個)。此外,在檢索結(jié)果300 中附加r取得結(jié)束記錄數(shù)」的項(xiàng)目,在(S602 )中追加對象項(xiàng)目取得部 107將取得結(jié)束記錄數(shù)初始化的處理,并且將(S610 )的處理變更為r取 得結(jié)束記錄數(shù)的加1J和r在取得對象行編號304中設(shè)定用取得對象行編 號304的加了 1的值除以命中件數(shù)所得到的余數(shù)(剩余)」,進(jìn)而將(S611) 變更為「取得結(jié)束記錄數(shù)>命中件數(shù)?」。在此,之所以在取得對象行編 號304中設(shè)定用取得對象行編號304的加了 1的值除以命中件數(shù)所得到 的余數(shù)(剩余),是由于如果取得對象行編號304從第501變化到第1000, 則下一個不是第1001,而是返回到笫1個。
通過采取這樣的工作,在應(yīng)用程序IIO取得了第500個記錄后,可 先取得所預(yù)想的第501個、第502個的檢索結(jié)果,可實(shí)現(xiàn)檢索裝置100 對于應(yīng)用程序110的響應(yīng)的高速化。
即,如果記錄編號檢索部106結(jié)束取得記錄編號,則對象項(xiàng)目取得 部107從記錄編號檢索部106進(jìn)行了排序的順序的開頭起按順序取得由 記錄編號確定的記錄的取得對象列202的數(shù)據(jù),并存儲在檢索結(jié)果蓄積 部108中。然后,如果在取得檢索對象表203的取得對象列202的數(shù)據(jù)
23并存儲在檢索結(jié)果蓄積部108中的期間中順序信息輸入部103輸入檢索 結(jié)果取得要求,則從檢索結(jié)果取得要求表示的順序起按順序取得由記錄 編號確定的記錄的取得對象列202的數(shù)據(jù)并發(fā)送給應(yīng)用程序110。
再有,在取得檢索對象表203的取得對象列202的數(shù)據(jù)并存儲在檢 索結(jié)果蓄積部108中的期間中順序信息輸入部103輸入了檢索結(jié)果取得 要求的情況下且在從由檢索結(jié)果取得要求所表示的順序的記錄編號確定 的記錄中已取得了取得對象列202的數(shù)據(jù)的情況下,也可繼續(xù)進(jìn)行從開 頭起按順序取得由上述記錄編號確定的記錄的取得對象列202的數(shù)據(jù)并 存儲在檢索結(jié)果蓄積部108中的處理。
此外,在上述說明中,假定在命中件數(shù)的數(shù)出中,記錄編號檢索部 106從RDBMS120只取得記錄編號來說明。但是,關(guān)于應(yīng)用程序110指 定了的列,也可與記錄編號同時(shí)地從RDBMS120取得。通過采取這樣的 工作,在檢索對象表203中設(shè)置了適當(dāng)?shù)乃饕那闆r下,可更高速地取 得檢索結(jié)果。
如果將上述實(shí)施方式歸納起來,則如以下所述。
檢索裝置100的檢索結(jié)果取得順序控制方式的特征在于將從應(yīng)用 程序110接受了的檢索開始要求分割為滿足檢索M的記錄編號的檢索 和將利用上述檢索得到的記錄編號定為檢索務(wù)降的應(yīng)用程序110指定的 列的檢索,在上述記錄編號的檢索中對滿足檢索條件的記錄的件數(shù)進(jìn)行 數(shù)出并通知應(yīng)用程序110,如果在將上述記錄編號設(shè)為M的檢索中從應(yīng) 用程序110接受檢索結(jié)果取得要求,則暫時(shí)停止將上述記錄編號設(shè)為條 件的檢索,優(yōu)先地處理上述檢索結(jié)果取得要求,其后從暫時(shí)停止了的部 位再次開始將記錄編號設(shè)為條件的檢索。
此外,檢索裝置100的檢索結(jié)果取得順序控制方式的特征在于在 滿足檢索條件的記錄的件數(shù)的數(shù)出結(jié)束之前檢索結(jié)果取得要求到達(dá)的情 況下,在取得相應(yīng)的記錄編號之前繼續(xù)記錄編號的取得,如果取得相應(yīng) 的記錄編號,則執(zhí)行將該記錄編號定為檢索務(wù)降的、應(yīng)用程序110指定 的列的檢索,在將上述檢索中得到了的值返回給應(yīng)用程序110后,再次 開始命中件數(shù)的數(shù)出。進(jìn)而,檢索裝置100的檢索結(jié)果取得順序控制方式的特征在于接受指定了多個列名的檢索結(jié)果取得要求,將相應(yīng)的列的值歸納起來提供給應(yīng)用程序110。
此外,檢索裝置100的檢索結(jié)果取得順序控制方式的特征在于接受指定了與通過檢索開始要求指定了的取得對象列的順序一致的大于等于1個的編號的檢索結(jié)果取得要求,從上述編號確定相應(yīng)的列,將上述列的值提供給應(yīng)用程序110。
此外,檢索裝置100的檢索結(jié)果取得順序控制方式的特征在于如果已取得由來自應(yīng)用程序110的檢索結(jié)果取得要求指定了的記錄,則不停止將記錄編號定為檢索條件的檢索處理,將已取得的值提供給應(yīng)用程序110。
進(jìn)而,檢索裝置100的檢索結(jié)果取得順序控制方式的特征在于在與來自應(yīng)用程序110的檢索結(jié)果取得要求對應(yīng)了后,將使用了記錄編號的檢索的再次開始位置設(shè)定為相當(dāng)于由上述檢索結(jié)果取得要求取得了的記錄編號的下一個的記錄編號。
此外,檢索裝置100的檢索結(jié)果取得順序控制方式的特征在于在為了命中件數(shù)的數(shù)出而執(zhí)行的取得記錄編號的同時(shí),也取得應(yīng)用程序110指定了的列,在將記錄編號定為檢索條件的應(yīng)用程序110指定列的檢索中,將與上述記錄編號的取得同時(shí)取得了的列>^企索對象中除去。
其次,說明上述實(shí)施方式中的檢索裝置100的硬件結(jié)構(gòu)。
圖8是表示檢索裝置100的硬件結(jié)構(gòu)的一例的圖。
如圖8中所示,檢索裝置100具4^l行程序的CPU911 (也稱為中央處理單元、中央處理裝置、處理裝置、運(yùn)算裝置、微處理器、微計(jì)算機(jī)、處理器)。CPU911經(jīng)由總線912與ROM913、 RAM914、 LCD901 (液晶顯示器)、鍵盤卯2、通信板915、磁盤裝置920 (HDD、 SSD等)連接,控制這些硬件裝置。也可以是光盤裝置、存儲卡讀寫裝置等的存儲裝置來代替磁盤裝置920。
ROM913、磁盤裝置920是非易失性存儲器的一個例子。RAM914是易失性存儲器的一個例子。通信板915、 ^Jt 902是輸入裝置的一個例子。此外,通信板915和總線912是輸出裝置的一個例子。再者,通信板915和總線912是通信裝置的一個例子。此外,LCD901是顯示裝置的一個例子。
在磁盤裝置920或ROM913等中存儲了操作系統(tǒng)921( OS )、 windows系統(tǒng)922、程序組923和文件組924。利用CPU911、操作系統(tǒng)921和windows系統(tǒng)922執(zhí)行程序組923的程序。
在程序組923中存儲了在上述的說明中執(zhí)行作為r要求控制部101J、r檢索信息輸入102 J、 r順序信息輸入部103 J、 r通知部104 J、 r檢索控制部105J、 r記錄編號檢索部106 J、 r對象項(xiàng)目取得部107」、「檢索結(jié)果蓄積部108」等說明了的功能的程序或其它的程序。利用CPU911讀出并執(zhí)行程序。
在文件組924中將在上述的說明中作為r檢索設(shè)定信息200 J、 「檢索結(jié)果300 J等說明了的信息、數(shù)據(jù)、信號值、變量值或參數(shù)作為「文件J或r數(shù)據(jù)庫J的各項(xiàng)目來存儲。在盤或存儲器等的記錄介質(zhì)中存儲r文件J或「數(shù)據(jù)庫J。利用CPU911經(jīng)由讀寫電路將在盤或存儲器等的記錄介質(zhì)中存儲了的信息、數(shù)據(jù)、信號值、變量值或參數(shù)讀出到主存儲器或高速緩沖存儲器中,用于抽出、檢索、參照、比較、運(yùn)算、計(jì)算、處理、輸出、印刷、顯示等的CPU911的工作。在抽出、檢索、參照、比較、運(yùn)算、計(jì)算、處理、輸出、印刷、顯示等的CPU911的工作的期間中,在主存儲器或高速緩沖存儲器或緩沖存儲器中暫時(shí)地存儲信息、數(shù)據(jù)、信號值、變量值或#。
此外,在上述的說明中的流程圖的箭頭的部分主要表示數(shù)據(jù)或信號的輸入輸出,在RAM914、其它的如光盤等的記錄介質(zhì)中存儲數(shù)據(jù)或信號值。此外,利用總線912、信號線或電纜等其它的傳送介質(zhì)對數(shù)據(jù)或信號進(jìn)行在線傳送。
即,例如假定檢索裝置100、應(yīng)用程序110、 RDBMS120、存儲裝置130處于圖8中表示的具備硬件的1個裝置內(nèi)的情況下,由CPU911執(zhí)行在ROM913、 RAM914或磁盤裝置920中存儲了的應(yīng)用程序110,經(jīng)由總線912對檢索裝置100發(fā)送檢索開始要求等的要求。然后,由CPU911執(zhí)行在ROM913、 RAM914或磁盤裝置920中存儲了的檢索裝置100的功能,經(jīng)由總線912對在ROM913、 RAM914或磁盤裝置920中存儲了的RDBMS120發(fā)送檢索要求(SQL文等)。RDBMS120從作為ROM913、RAM914或磁盤裝置920的存儲裝置130存儲了數(shù)據(jù)庫中經(jīng)由總線912取得檢索結(jié)果,發(fā)送給檢索裝置100。然后,檢索裝置100的功能是在ROM913、 RAM914或磁盤裝置920中存儲檢索結(jié)果。此外,檢索裝置100的功能是經(jīng)由總線912將檢索結(jié)果發(fā)送給應(yīng)用程序110。
此外,如上所述,檢索裝置100、應(yīng)用程序110、 RDBMS120、存儲裝置130可分別作為各自的裝置而分開的結(jié)構(gòu)。
此外,在上述的說明中,作為「 部J說明的可以是r ~電路』、r ~裝置」、r ~機(jī)器」、r ~部件』、r ~功能』,此外,也可以是r ~步驟J、 r ~工序」、r ~處理J。此外,作為「 ~裝置」說明的可以是r ~電路J、 r ~裝置」、r 機(jī)器j、 r ~部件」、r ~功能J,此外,也可以是r ~步驟」、r ~工序」、「 處理J。再者,作為r 處理J說明的可以是r 步驟J。即,作為r ~部J說明的可以用在ROM913中存儲了的固件(firmware)來實(shí)現(xiàn)?;蛘?,只用軟件或只用元件、器件、 、布線等的硬件來實(shí)施,或者可用軟件與硬件的組合、進(jìn)而用與固件的組合來實(shí)施。固件和軟件作為程序存儲在ROM913等的記錄介質(zhì)中。由CPU911讀出程序,由CPU911來執(zhí)行。即,程序作為在上述中敘述了的「 ~部」起到計(jì)算機(jī)等的功能。或者,使計(jì)算機(jī)執(zhí)行在上述中敘述了的「 ~部」的工序或方法。
此外,在上述的說明中,作為r 信息J說明的可以是「 值J、 r ~數(shù)據(jù)J,同樣,作為「 值』說明的可以是「 ~信息』、「 ~數(shù)據(jù)J,同樣,作為「 ~數(shù)據(jù)』說明的可以是「 ~信息』、r ~值』。
2權(quán)利要求
1. 一種從數(shù)據(jù)庫檢索數(shù)據(jù)的檢索裝置,其特征在于,具備檢索信息輸入部,輸入表示取得對象項(xiàng)目、檢索對象表和檢索條件的檢索信息;記錄編號檢索部,從上述檢索信息輸入部輸入了的上述檢索信息表示的檢索對象表檢索滿足上述檢索信息表示的檢索條件的記錄,上述檢索對象表是上述數(shù)據(jù)庫的表,從所檢索的記錄一邊對唯一地確定上述檢索對象表的記錄的記錄編號進(jìn)行排序一邊進(jìn)行取得;順序信息輸入部,輸入表示規(guī)定的順序的順序信息;以及對象項(xiàng)目取得部,取得由上述順序信息輸入部輸入了的順序信息表示的順序的記錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù),上述記錄編號是上述記錄編號檢索部取得了的記錄編號。
2. 如權(quán)利要求l中所述的檢索裝置,其特征在于 上述檢索信息輸入部按照規(guī)定的檢索指示部的輸入來輸入上述檢索信息,上述記錄編號檢索部取得記錄編號,并且對滿足上述檢索條件的 記錄的件數(shù)進(jìn)行計(jì)數(shù),上述檢索裝置還具備將上述記錄編號檢索部計(jì)數(shù)的記錄的件數(shù) 通知給上述規(guī)定的檢索指示部的通知部。
3. 如權(quán)利要求l中所述的檢索裝置,其特征在于 如果上述記錄編號檢索部結(jié)束取得記錄編號,則上述對象項(xiàng)目取得部取得由上述記錄編號確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù),并 存儲在存儲裝置中,如果上述順序信息輸入部輸入上述順序信息,則 從上述存儲裝置取得由上述順序信息表示的順序的記錄編號所確定的 記錄的上述取得對象項(xiàng)目的數(shù)據(jù)。
4. 如權(quán)利要求l中所述的檢索裝置,其特征在于 如果上述記錄編號檢索部結(jié)束取得記錄編號,則上述對象項(xiàng)目取得部從上述記錄編號檢索部進(jìn)行了排序的順序的開頭起按順序取得由 上述記錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù),并存儲在存 儲裝置中,并且如果在取得上述檢索對象表的上迷取得對象項(xiàng)目的數(shù) 據(jù)并存儲在存儲裝置中的期間中上述順序信息輸入部輸入上述順序信 息,則從上述順序信息表示的順序起按順序取得由上述記錄編號所確 定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù)。
5. 如權(quán)利要求l中所述的檢索裝置,其特征在于 如果上述記錄編號檢索部結(jié)束取得記錄編號,則上述對象項(xiàng)目取得部從上述記錄編號檢索部進(jìn)行了排序的順序的開頭起按順序取得由 上述記錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù),并存儲在存 儲裝置中,并且在取得上述檢索對象表的上述取得對象項(xiàng)目的數(shù)據(jù)并 存儲在存儲裝置中的期間中上述順序信息輸入部輸入了上述順序信息 的情況下、且在已從由上述順序信息表示的順序的記錄編號所確定的 記錄中取得了上述取得對象項(xiàng)目的數(shù)據(jù)的情況下,繼續(xù)從開頭起按順 序取得由上述記錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù)并存 儲在存儲裝置中的處理。
6. 如權(quán)利要求l中所述的檢索裝置,其特征在于 如果在上述記錄編號檢索部結(jié)束取得記錄編號之前上述順序信息輸入部輸入上述順序信息,則直到上述順序信息表示的順序?yàn)橹估^續(xù) 記錄編號的取得,如果上述記錄編號檢索部直到上述順序信息表示的順序?yàn)橹谷〉?記錄編號,則上述對象項(xiàng)目取得部取得由上述順序信息表示的順序的 記錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù)。
7. 如權(quán)利要求l中所迷的檢索裝置,其特征在于 與上述記錄編號檢索部取得記錄編號一同,上述對象項(xiàng)目取得部從滿足上述檢索條件的記錄也取得規(guī)定的項(xiàng)目。
8. —種從數(shù)據(jù)庫檢索數(shù)據(jù)的方法,其特征在于,具備下述步驟 輸入裝置輸入表示取得對象項(xiàng)目、檢索對象表和檢索條件的檢索信息的檢索信息輸入步驟;處理裝置從由上述檢索信息輸入步驟輸入了的上述檢索信息表示 的檢索對象表檢索滿足上述檢索信息表示的檢索條件的記錄,上述檢 索對象表是上述數(shù)據(jù)庫的表,從所檢索的記錄中一邊對唯一地確定上 述檢索對象表的記錄的記錄編號進(jìn)行排序一邊進(jìn)行取得的記錄編號檢 索步驟;輸入裝置輸入表示規(guī)定的順序的順序信息的順序信息輸入步驟;以及處理裝置取得由上述順序信息輸入步驟輸入了的順序信息表示的 順序的記錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù)的對象項(xiàng)目 取得步驟,上述記錄編號是在上述記錄編號檢索步驟中取得了的記錄 編號。
9. 一種從數(shù)據(jù)庫檢索數(shù)據(jù)的檢索程序,其特征在于,使計(jì)算機(jī)執(zhí) 行下述處理輸入表示取得對象項(xiàng)目、檢索對象表和檢索條件的檢索信息的檢索信息輸入處理;從由上述檢索信息輸入處理輸入了的上述檢索信息表示的檢索對 象表中檢索滿足上述檢索信息表示的檢索條件的記錄,上述檢索對象 表是上述數(shù)據(jù)庫的表,從所檢索的記錄中一邊對唯一地確定上述檢索 對象表的記錄的記錄編號進(jìn)行排序一邊進(jìn)行取得的記錄編號檢索處 理;輸入表示規(guī)定的順序的順序信息的順序信息輸入處理;以及 取得由上述順序信息輸入處理輸入了的順序信息表示的順序的記 錄編號所確定的記錄的上述取得對象項(xiàng)目的數(shù)據(jù)的對象項(xiàng)目取得處 理,上述記錄編號是在上述記錄編號檢索處理中取得了的記錄編號。
全文摘要
本發(fā)明提供一種檢索裝置、檢索方法和檢索程序,其目的在于利用從在嵌入裝置等中工作的RDBMS(120)取得了的記錄的程序能高速地取得命中件數(shù)和位于檢索結(jié)果的任意的部位上的記錄。檢索裝置(100)將表示應(yīng)用程序(110)發(fā)出了的檢索條件等的檢索開始要求分割為進(jìn)行滿足檢索條件的記錄編號的檢索的處理和將利用該檢索得到的記錄編號作為檢索條件來檢索應(yīng)用程序(110)指定了的列的處理。首先,檢索裝置(100)執(zhí)行進(jìn)行記錄編號的檢索的處理,從RDBMS(120)取得滿足檢索條件的記錄的記錄編號,同時(shí)對上述記錄編號進(jìn)行排序,將命中件數(shù)通知應(yīng)用程序(110)。其次,檢索裝置(100)將應(yīng)用程序(110)指定了的順序的記錄編號作為檢索條件,從RDBMS(120)取得數(shù)據(jù),返回給應(yīng)用程序(110)。
文檔編號G06F17/30GK101458696SQ200810145418
公開日2009年6月17日 申請日期2008年8月5日 優(yōu)先權(quán)日2007年12月12日
發(fā)明者氏家純也, 水口武尚 申請人:三菱電機(jī)株式會社