JP5075653B2 - データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム - Google Patents

データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム Download PDF

Info

Publication number
JP5075653B2
JP5075653B2 JP2008010370A JP2008010370A JP5075653B2 JP 5075653 B2 JP5075653 B2 JP 5075653B2 JP 2008010370 A JP2008010370 A JP 2008010370A JP 2008010370 A JP2008010370 A JP 2008010370A JP 5075653 B2 JP5075653 B2 JP 5075653B2
Authority
JP
Japan
Prior art keywords
index
data
column
database management
search
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
JP2008010370A
Other languages
English (en)
Other versions
JP2009169902A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008010370A priority Critical patent/JP5075653B2/ja
Priority to US12/352,185 priority patent/US8161051B2/en
Publication of JP2009169902A publication Critical patent/JP2009169902A/ja
Application granted granted Critical
Publication of JP5075653B2 publication Critical patent/JP5075653B2/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures

Landscapes

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

Description

本発明は、インデクスを利用して検索可能なデータベースを管理する技術に関する。
カーナビゲーションシステム又は携帯端末をはじめとする組み込み機器において、これらの組み込み機器によって扱われる情報量は日々増加してきている。さらに、エンドユーザには、これらの情報を常時快適に利用することが望まれている。また、組み込み機器の利便性を考慮すると、機器そのものの大きさは極力小さいことがエンドユーザとしては望ましい。
組み込み機器開発において、データ処理モジュールを個別に開発していたのでは、継続的にエンドユーザの要望を満たし続けることは非常に難しい。そのため、多くのエンタープライズシステムがデータ処理をデータベース管理システム(DataBase Management System:DBMS)を用いて実現するのと同様に、組み込み機器においてもデータ操作機能を容易かつ高速に実装するためにデータ管理基盤としてDBMSを利用するようになってきている。
さらに、組み込み機器上で動作し、種々の機能をエンドユーザに提供するためのアプリケーションプログラムを開発する開発者をより多くしかも容易に確保するためには、二次元の表形式のデータモデル及びデータ操作要求としてSQLを用いることが望ましい。二次元の表形式では、1つのデータは複数の「列」と呼ぶデータフィールド(属性)を含み、「行」と呼んでいる。また、複数の「行」の集まりを「表」として表現する。そして、「表」に含まれるデータを操作するための問合せ言語がSQLである。
ここで、組み込み機器上で使用されるDBMSに期待される要件は、組み込み機器の装置としての利便性(コンパクトであること)を考慮すると、主に以下の2つである。
1.データ検索機能をはじめとするデータ操作機能を高速に、かつ、低フットプリント(CPU利用率が低い)で実現すること。
2.機器に搭載されている記憶領域に対してできるだけ多くのデータ量を記憶すること。
また、組み込み機器ではエンドユーザに対し、さまざまな観点のデータ操作サービスを提供することが望まれる。例えば、カーナビゲーションシステムでは、行き先を探すために住所、電話番号、施設名、施設分類(ジャンル)などの複数の観点からキーワードを指定して行き先を特定するようエンドユーザ入力指示させることが多くなっている。
キーワードを指定してデータベースに対して効率的に全文検索を行う技術には、さまざまな技術が開示されている。例えば、特許文献1には、格納データ本体とは別に全文検索用のインデクスを保持し、検索要求に対して当該インデクスを使用して、エンドユーザが指定したキーワードに対する条件を満たすデータを高速に特定可能な技術が記載されている。ここで述べているデータ本体は、先に説明した表形式のデータモデルにて行として実現される。行を実現する具体的なデータ構造については、非特許文献1に記載されている(非特許文献2は非特許文献1の日本語訳)。
特開2007−299021号公報 Jim Gray and Andreas Reuter、Transaction Processing: Concepts and Techniques、Morgan Kaufmann Publishers、1993、p.772-784 ジム グレイ(著)、アンドレアス ロイター(著)、喜連川 優(翻訳)、「トランザクション処理〈下〉―概念と技法」、日経BP社、2001年10月、p.912-925
前述したように、カーナビゲーションシステムなどにおける組み込み向けデータベース管理システム(DBMS)の適用分野での要件は、データ容量を小さくし、高速に検索可能であることである。エンドユーザは関心のあるキーワードを入力し、当該キーワードに関連する情報(例えば「施設」)をキーワード検索する。ただし、データベースの表は、複数の表に関連情報が分散して格納管理されている場合が多いため、データの容量は抑えられているが、検索対象である列(住所、施設名など)が複数の表にまたがって格納されている場合が多い。
しかし、表ごとにカテゴリが分割され、かつ、カテゴリを問わない検索(横串検索)を実行したい場合には、ある列に検索対象のデータをまとめ、当該列に対して全文検索インデクスを定義するのが1つの実現方法として挙げられる。この場合には、検索対象の列にデータを重複して保持することになり、データベースの容量が増大するという問題がある。近年、メモリが大容量かつ安価で入手可能になったが、必要なデータ量は急激に増加するため、データ記憶容量の問題は依然として重要である。データを記憶するために必要なメモリ量を削減すれば、削減された分の領域にさらに新たなデータを記憶し、使用することが可能となるのである。
本発明は、このような背景に鑑みてなされたものであり、表データとして記憶又は格納されるデータベース容量を少なくする技術を提供することを目的とする。
本発明の代表的な一形態は、複数行と複数列とで表現される表データと前記複数列に含まれる列に対応づけられたインデクスとを含むデータベース、を格納する記憶部を備え、前記データベースを管理するデータベース管理装置、によるデータベース管理方法であって、前記複数列は、列データが格納されないインデクス専用列と、列データが格納される非インデクス専用列とを含み、前記データベース管理装置は、前記複数列に含まれる列と前記インデクスとの対応付けを定義するインデクス定義情報を有し、前記インデクス定義情報は、前記インデクス専用列と全文検索用インデクスとの対応付けを定義し、前記データベース管理装置が、前記表データへのデータ登録要求を受け付け、前記データ登録要求が前記非インデクス専用列に対応する第1登録対象データの登録を要求する場合に、前記データベース管理装置が、前記非インデクス専用列に前記第1登録対象データを登録し、前記データ登録要求が前記インデクス専用列に対応する第2登録対象データの登録を要求する場合に、前記データベース管理装置が、前記第2登録対象データを前記インデクス専用列に登録することなく、前記インデクス定義情報を参照して前記全文検索用インデクスを特定して、前記全文検索用インデクスを、前記第2登録対象データを用いて更新し、前記データベース管理装置が、前記インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照して前記全文検索用インデクスを特定し、前記全文検索用インデクスを使用して検索を行い、前記非インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照してインデクスの使用の有無を決定する。
本発明の一形態によれば、表データとして記憶又は格納される容量を削減することができる。
以下、本発明の実施の形態について、適宜図面を参照しながら詳細に説明する。
図1は、本実施の形態の全体概要を説明する図である。
本実施の形態のデータベース管理装置におけるデータベース管理方法では、前述したように、データを表形式の行とし、データに含まれるフィールド(属性)を列として格納している。ここで、キーワード検索を実行するためのデータを関連付ける列を「インデクス専用列」として定義する。インデクス専用列として定義された列データ(値ともいう)は、表データとしてデータベースに記憶されず、インデクス専用列に対して定義されたインデクスに列データが保持される。
図1には、INSHOKU2表(211)においてALL_KANA_NAME列がインデクス専用列として定義されており、INSHOKU2表の表データの格納(記憶)イメージを示している。インデクス専用列として定義されていないSID列、TEL_NO列、SHOP_CODE列、及びAREA_CODE列は、行データを構成する列データとして記憶されている。例えば、一番目の行についてはデータ(値ともいう)「113」、「045-877-6637」、「765」、及び「002」が記憶されている。
一方、インデクス専用列として定義されているALL_KANA_NAME列は、列データとしてのデータ「とつかえき えき よこはましとつかくとつか」を記憶しない。列データは、インデクスIDX_ALLKANA(212)内のみに保持される。データ「とつかえき えき よこはましとつかくとつか」は、SHISETSU表の施設よみ列、JANRU表のジャンルよみ列、JUSHO表の住所よみ列のそれぞれの列データからアプリケーションプログラムがINSHOKU2表のALL_KANA_NAME列のデータとしてINSHOKU2表へのデータ登録時に登録データの一部として生成されたものである。ALL_KANA_NAME列に含められる情報は、本データベース管理装置を利用する利用者の求めに応じて決定される。「よみ」とは、漢字の読み方を示すものであり、本例では表音文字として平仮名を利用している。「横浜市」のよみは「よこはまし」と表すことになる。
ここで、エンドユーザがキーワード「よこはまし」を指定して検索項目(施設名、ジャンル名、住所)を限定せずに検索する場合について説明する。この場合、検索サービスを提供するアプリケーションプログラムは、以下に示すSQL文を用いた検索要求をデータベース管理システムに送信する。以下に示すSQL文の具体的な検索要求内容は、「“よこはまし”を含むデータのSID(施設ID)を取得」することである。
SELECT “SID” FROM “INSHOKU2” WHERE CONTAINS(“ALL_KANA_NAME”,“よこはまし”)
検索要求を受信したデータベース管理システムは、インデクス212にアクセスして検索条件(“よこはまし”を含む)に合致する行データを特定し、さらに特定された行データにアクセスし、要求データであるSID列のデータを検索結果として要求元であるアプリケーションプログラムに返却する。検索結果を返却されたアプリケーションプログラムは、検索結果であるデータを加工し、エンドユーザに対してサービス実行結果を提示する。
以上のように、従来の列データを記憶する場合と比較して、キーワードを指定して検索する対象である列の列データが表データとして記憶されていないため、データベース容量を最小限に抑えることができる。また、従来では複数の表に分散して情報を記憶していたために、アプリケーションプログラムでこれら複数の表に検索を要求し、検索結果をマージする処理が必要であったが、本発明の実施の形態のように1つの表のインデクス専用列に対する検索要求で実現することができる。このように、アプリケーションプログラムの開発工数の削減を図ることができ、結果として性能を向上させることができる。
図2は、本発明の実施の形態のデータベース管理装置の構成の一例を示すブロック図である。
データベース管理装置1は、入力部500、出力部600、CPU(Central Processing Unit)700、メモリ800、第1の記憶部200及び第2の記憶部300を含む。入力部500、出力部600、CPU700、メモリ800、第1の記憶部200及び第2の記憶部300は、内部バスで接続されている。
入力部500は、外部からの処理要求を受け付ける。出力部600は、アプリケーションプログラム400の出力結果を表示する。アプリケーションプログラム400の出力結果は、例えば、データベース管理システム100で処理され、さらに、アプリケーションプログラム400によってさらに加工された情報である。出力部600は、例えば、液晶ディスプレイである。
CPU700は、メモリ800に記憶されたプログラムを実行する。メモリ800は、CPU700によって実行されるプログラム及び処理に必要なデータを記憶する。メモリ800に記憶されるプログラムは、具体的には、アプリケーションプログラム400及びデータベース管理システム100である。
アプリケーションプログラム400は、CPU700に実行されることによって、所定の業務処理を実行する。アプリケーションプログラム400は、さらに、データ操作要求部410及びインデクス専用列データ生成部420を備える。
データ操作要求部410は、後述するデータベース管理システム100に対し、データベースに記憶されているデータに対する操作(データ検索(またはデータ参照やデータ読み出しともいう)、データ挿入(データ登録ともいう)、データ削除、データ更新)を要求する機能を有する。また、データ挿入もしくはデータ更新をデータ登録と言う場合もある。
インデクス専用列データ生成部420は、データ操作要求がデータ登録又はデータ更新である場合に、インデクス専用列に対する登録データ又は更新後のデータを生成する機能を有する。
インデクス専用列に対する登録データ又は更新後のデータは、例えば、登録対象のデータの属性を指定し、指定された属性に関連する値(もしくはデータ)を連結することによって生成する。具体的には、図1に示すように、ある施設について登録する場合に、施設の名称、ジャンル及び住所などを指定し、これらの情報の読み方を連結してもよい。
データベース管理システム100は、概念的に表形式で表現されるデータの集まりである表データ211と当該表データを効率的にアクセスするための手段であるインデクス212を含むデータベース210を管理する機能を有する。データベース管理システム100は、制御部110、定義情報管理部120、表データ管理部130、及び、インデクス管理部140を備える。
制御部110は、データベース管理システム100全体を制御する。具体的には、アプリケーションプログラム400などのプログラムから要求された表定義及びインデクス定義に従って、定義情報管理部120の制御を実行する。
さらに、制御部110は、アプリケーションプログラム400のデータ操作要求部410からデータ操作が要求されると、適宜インデクス212を利用しながら、要求されたデータ操作を表データ211に対して実行する。詳細に説明すると、制御部110は、まず、アプリケーションプログラム400のデータ操作要求部410から入力されたデータ操作要求(データ登録要求、データ削除要求、データ更新要求及びデータ検索要求)を解析する。次に、データベース210に対する操作(アクセス)のための適切な実行手順(どのインデクスを使用するかなどの決定)を生成し、当該実行手順に従って表データ管理部130にデータ操作を要求する。
また、制御部110は、データベース210に対する操作の実行結果データをデータ操作要求元であるアプリケーションプログラム400に返却する機能も有する。
定義情報管理部120は、表データ211及びインデクス212などのデータベース210を構成する論理的なスキーマ構成及びテーブル情報などの各種定義情報を管理する。具体的には、表データ211に対応する定義情報として表定義情報310を、インデクス212に対応する定義情報としてインデクス定義情報320を生成し、記憶する。また、データ操作が要求された場合には、表データ管理部130又はインデクス管理部140からの要求に基づいて、記憶されている定義情報を提供する。定義情報管理部120は、制御部110からの表定義要求及びインデクス定義要求を受信して解析し、解析した結果を表定義情報310及びインデクス定義情報320として第2の記憶部300に記憶する。
また、定義情報管理部120は、インデクス専用列解析部121を備える。インデクス専用列解析部121は、表定義要求又はインデクス定義要求にインデクス専用列が関係する場合に解析処理を実行する。
表データ管理部130は、第1の記憶部200に記憶されているデータベース210の表データ211を管理する。具体的には、データ操作として表データ211に対するデータの登録、削除、更新及び検索を実行する。
表データ管理部130は、行データ作成部131、行データアクセス部132、及びインデクス専用列処理部133を備える。
行データ作成部131は、データ操作として表データ211に対してデータを登録又は更新する際に、データベース210に記憶する行データを作成する機能を有する。行データを作成するための列データがインデクス専用列に対応する場合は、インデクス専用列処理部133が対応する列データを処理する。具体的には、インデクス専用列の場合の列データには実際のデータを記憶せずに、インデクス専用列であることを示す情報を列データに関連した領域に記憶する。
行データアクセス部132は、データ操作として表データ211に対するデータの登録、削除、更新及び検索を実行する機能を有する。表データ211は、インデクス専用列に対応する列を含む。この場合、インデクス専用列処理部133がインデクス専用列にデータアクセスし、処理を実行する。
インデクス専用列処理部133は、インデクス専用列にデータアクセスする機能を有する。
インデクス管理部140は、第1の記憶部200に記憶されているデータベース210のインデクス212を管理する。インデクス管理部140は、インデクスメンテナンス部141、及びインデクス検索部142を備える。
インデクスメンテナンス部141は、表データ管理部130から送信されたインデクスメンテナンス要求に基づいて、インデクスを実現するデータの更新及びインデクスの構造を変更する機能を有する。
インデクス検索部142は、表データ管理部130から送信されたインデクス検索要求に基づいて、インデクスを参照し、検索条件(キーワード検索)に合致する列データを有する行の行識別子を検索結果として取得する機能を有する。
第1の記憶部200は、表データ211、及び、表データを効率的に検索するためのインデクス212をデータベース210として記憶する。第1の記憶部200は、フラッシュメモリ又は磁気ディスクなどの記憶装置によって構成される。
第1の記憶部200は、具体的には、アプリケーションプログラム400のデータ操作要求部410によって生成された表データ211を記憶する。また、データベース管理システム100のインデクス管理部140において作成されたインデクス212を記憶する。本実施の形態のメモリ800に配置(インストール)した各処理部は、プログラムで実現することを想定しているがオブジェクトやハードウェアで実現することも可能である。本実施の形態のメモリ800に配置(インストール)された各処理部は、CD-ROMやDVD−ROMのような記憶媒体に格納されており、OSやデータベースシステムが有するインストール処理部によりメモリ800にインストールされる。
図7は、本実施の形態の表データ管理部130によって管理されるインデクス専用列を含む表の行データの格納(記憶)構造の一例を示す図である。
行データは、図7に示すデータレコード21130のような形態で記憶される。データレコード21130は、記憶領域のアクセス単位又は入出力の単位(記憶領域がディスク装置などの場合)であるページ21100の内部に記憶される。
ページ21100は、データベース210の物理的構成単位である。1つのページ21100内には、複数のデータレコード21130を記憶可能である。データレコード21130のページ内の記憶位置は、スロット21120によって特定される。スロット21120の領域には、データレコード21130が記憶されているページ21100の先頭からの記憶位置が設定されている。ページ制御情報21110は、スロットの割り当て情報などのスロット管理及びページ内の領域使用状況などの領域管理を行うための情報である。
データレコード21130は、データフィールド21132、21133及び21134を含む。データフィールド21134は、インデクス専用列に関する情報を記憶する。データフィールド21132及び21133は、インデクス専用列でない列に関する情報を記憶する。
データレコード21130は、表データ管理部130(行データ作成部131及びインデクス専用列処理部133)によってデータが記憶される。行データ作成部131は、データフィールド21133に列データそのものを記憶する。そして、列データが記憶されたデータフィールド21133の先頭記憶位置を示す情報をデータフィールド21132に記憶する。
また、インデクス専用列処理部133は、図7のデータレコード21130の構造に示されるように、インデクス専用列に対応する列データそのものをデータレコード21130内には記憶しない。この場合、列データ記憶位置を記憶したデータフィールド21132に対応するデータフィールド21134に、インデクス専用列であることを示す値(ここでの例では“1”)を記憶する。
ここで、列データとして「NULL値」を記憶する場合には、NULL値を示す情報として、データフィールド21132又はデータフィールド21134に“0”を記憶する。列データが「NULL値」の場合には、当該列に対応する列データのデータフィールド21133の領域は確保しない。また、列データ記憶位置を示す値として、データレコード21130の先頭から列データ記憶位置までのオフセット値を採用するものとする。さらに、ここでは、データレコード21130の長さなどを管理するためのレコードヘッダ21131の領域長を16バイトとしている。そのため、値“1”は、インデクス専用列であることを示す値として機能させることが可能である。
図8は、本実施の形態のキーワード指定の検索を実現するための全文検索用インデクスであるインデクス212の構造の一例を示す図である。
図8に示すように、インデクス212は、インデクス項目21210、及び、当該インデクス項目21210に対応するインデクス情報21220を含む。
インデクス項目21210は、インデクスを定義している列(インデクス専用列に限定しない)の列データに含まれる文字列21211によって構成される。図8の例では、文字列21211として「と」「つ」「か」「え」と1文字として記載しているが、複数の文字からなる文字列であってもよい。
また、インデクス情報21220は、インデクス項目21210を構成する文字列21211を列データとして有する行を一意に識別するための行識別子と文字位置との組(21222)の集合21221によって構成される。例えば、図8の例では、文字列21211「と」を含む行の識別子は「RID001」及び「RID008」などであって、それぞれの列の行データ内の文字列21211「と」の文字位置は「03」及び「12」などである。
行識別子は、具体的には、図7にて説明したデータレコード21130が記憶されるページ21100を一意に識別するためのページ識別子、及び、ページ内のデータレコード記憶位置を特定するスロットを示すスロット番号によって構成される。スロット番号は、ページ記憶構造においてページ制御情報21110側から順次番号付けされる。
図2に示した行データアクセス部132は、行識別子に基づいてデータレコード21130をアクセスする。具体的には、行識別子を構成するページ識別子に基づいて記憶ページにアクセスし、さらに、スロット番号に対応するスロットに記録されているデータレコード記憶位置を取得することによって、アクセス対応のデータレコード21130の先頭アドレスを特定し、データレコード21130内の列データなどにアクセスする。
インデクス検索部142は、キーワードを指定した検索要求を受信すると、指定されたキーワード及びインデクス項目21210を参照し、当該キーワードを含む文字列21211を特定する。そして、特定された文字列21211に関連付けされている行識別子−文字列(21222)を検索結果として取得する。
第2の記憶部300は、第1の記憶部200にデータベース210として記憶される表データ211及びインデクス212に関するデータベースの論理的な構成を示す定義情報を記憶する。第2の記憶部300は、第1の記憶部200と同様に、フラッシュメモリ又は磁気ディスクなどの記憶装置によって構成される。
第2の記憶部300は、具体的には、表データ211の定義情報として、表定義情報310を記憶する。また、インデクス212の定義情報として、インデクス定義情報320を記憶する。
なお、第1の記憶部200及び第2の記憶部300は、必ずしも別の記憶部に格納する必要はなく、一つの記憶部で構成することも可能である。
図3は、本実施の形態の表定義情報(列情報)310の一例を示す図である。
表定義情報310は、表を構成する各列を一レコードとする表形式となっている。列情報には、列情報を特定する列名312、当該列を含む表の表名311、当該列のデータの型(列データ型313)、及び、当該列がインデクス専用列であるか否かを示すインデクス専用列指定314が含まれる。
また、図3に示す表定義情報310は、図4にて後述する表定義要求の例に対応している。具体的な対応関係については、図4にて後述する。
図4は、本実施の形態の表定義情報を作成するための表定義要求(SQL)の一例を示す図である。
図4に示す表定義要求は、インデクス専用列を含むINSHOKU2表の表定義文を示しており、ALL_KANA_NAME列に対して、キーワード“TEXTSEARCH INDEX KEY”を用いてインデクス専用列を指定している。すなわち、アプリケーションプログラム400の開発者などのデータベース210の作成者は、キーワード“TEXTSEARCH INDEX KEY”を指定することによって、データベース210の表データ211の記憶容量を抑制することが可能となる。したがって、データベース管理装置1を利用してアプリケーションプログラム400のキーワード検索サービスを利用するエンドユーザに対して、高速なサービス実行時間を提供することができる。
図3に示した表定義情報(列情報)310は、前述したように、図4に示した表定義要求の例に対応する。
表名「INSHOKU2」及び列名「ALL_KANA_NAME」の列データ型は、「最大の長さが4000バイトであるVARCHAR(可変長文字列型)」であり、当該列はインデクス専用列指定が「“T”」であることから、インデクス専用列であることを示している。
図3に示した表定義情報310の上から5番目のレコード315は、ALL_KANA_NAME列を示す列情報である。当該レコードのインデクス専用列指定314に記されている“T”は、表定義要求においてインデクス専用列であることを「TEXTSEARCH INDEX KEY」を用いて指定されたことを意味している。
一方、表名「INSHOKU2」及び列名「SID」の列データ型は「INT」(Integer型(整数型))であり、当該列はインデクス専用列指定が「NULL」であることから、インデクス専用列ではないことを示している。列名「SID」と同様に列名「TEL_NO」、「SHOP_CODE」及び「AREA_CODE」はインデクス専用列ではないことを示している。
ここでは、列名「TEL_NO」は、データ型「数値部分10文字を含む全体で12文字のパック型(PACK(12,10)と表現)」の電話番号を、列名「SHOP_CODE」はデータ型「INT」の店コードを、そして、列名「AREA_CODE」はデータ型「INT」のエリアコードを示している。パック型とは、数値及び文字含むデータを1バイトで、かつ、10進2桁で表現する形式である。例えば、電話番号「045−877−6637」はパック型の内部データ形式としては、0x04、0x5A、0x87、0x7A、0x66、0x37というように6バイト(12文字)で表現される(文字“−”は0xAで表現)。
図5は、本実施の形態のインデクス定義情報320の一例を示す図である。
インデクス定義情報320は、定義されたインデクスごとに一レコードとする表形式となっている。インデクスは、表を構成する列に対して定義される。インデクス定義情報320には、インデクス名321、当該インデクスが定義される表の表名322、当該インデクスが定義される列に対応する列名323、さらに、当該インデクスのインデクス種別324が含まれる。
また、図5に示すインデクス定義情報320、図6にて後述するインデクス定義要求の例に対応している。具体的な対応関係については、図6にて後述する。
図6は、本実施の形態のインデクスを作成するためのインデクス定義要求(SQL)の一例を示す図である。
図6に示すインデクス定義要求は、図4にて示した表定義要求によって定義されたINSHOKU2表のインデクス専用列ALL_KANA_NAMEに対し、キーワード検索サービスを実現するための全文検索インデクスを定義するインデクス定義文を示している。インデクス名が「IDX_ALLKANA」であるインデクスを、INSHOKU2表のALL_KANA_NAME列に対して定義することを「ON “INSHOKU2”(“ALL_KANA_NAME”)」で示している。また、続いて指定されているキーワード“TEXTSEARCH”はインデクス種別を表している。キーワード“TEXTSEARCH”が指定されている場合には、インデクス212の実現(データ構造及び提供機能)の際に、キーワード検索サービスを実現するための全文検索インデクスを用いることを示している。一方、キーワード“TEXTSEARCH”の指定がない場合には、本実施の形態では、B木インデクスを想定している。
図5に示したインデクス定義情報320は、図6に示したインデクス定義要求の例に対応する。図5に示したインデクス定義情報320を参照すると、インデクス名「IDX_ALLKANA」のインデクス326は、表名「INSHOKU2」及び列名「ALL_KANA_NAME」に対して定義され、インデクス種別が「TEXTSEARCH」である。したがって、インデクス212がキーワード検索サービスを実現するための全文検索インデクスであることを示している。
一方、インデクス名「IDX_SID」のインデクス325は、表名「INSHOKU2」の列名「SID」に対して定義されているが、インデクス種別は「B-TREE」であることため、全文検索インデクスではなく、データ値に対する範囲検索などを実現するためのB木インデクスであることを示している。
次に、図2を参照しながら、図9に示すフローチャートに従って、本実施の形態のデータベース管理方法の処理を説明する。
図9は、本実施の形態のデータベース管理システム100によってインデクス専用列を含む表を定義する際の処理の手順を示すフローチャートである。
本処理は、CPU700によって、定義情報管理部120が実行されることによって処理される。
CPU700は、まず、定義情報管理部120を実行することによって、アプリケーションプログラム400などによって入力された表定義要求から定義対象である表の表名を取得し、メモリ800に保持する(ステップS901)。例えば、図4に示した表定義要求が入力された場合には、定義対象の表名である「INSHOKU2」が保持される。
CPU700は、次に、表定義要求から定義対象である表に含まれる列に対応する定義部分を一つ取得し、当該定義部分に含まれる列名及び列データ型をメモリ800に保持する(ステップS902)。例えば、SID列の場合には、列名及び列データ型として、「SID」及びInteger型を示す「INT」が保持される。また、別の列であるALL_KANA_NAME列の場合には、列名として「ALL_KANA_NAME」、列データ型としてデータ最大長が4000バイトである可変長文字列型と示す「VARCHAR(4000)」が保持される。
CPU700は、取得された列情報にキーワード“TEXTSEARCH INDEX KEY”が指定されているか否かを判定する(ステップS903)。キーワード“TEXTSEARCH INDEX KEY”が指定されている場合には(ステップS903の結果が「Yes」)、当該列がインデクス専用列であるため、インデクス専用列指定の値として“T”をメモリ800に保持する(ステップS904)。図4に示した表定義情報310では、ALL_KANA_NAME列に、キーワード“TEXTSEARCH INDEX KEY”が指定されているため、インデクス専用列指定の値として“T”が保持される。
一方、CPU700は、取得された列情報にキーワード“TEXTSEARCH INDEX KEY”が指定されていない場合には(ステップS903の結果が「No」)、当該列がインデクス専用列でないため、インデクス専用列指定の値として「NULL」をメモリ800に保持する(ステップS905)。図4に示した表定義情報310では、SID列、TEL_NO列、SHOP_CODE列及びAREA_CODE列には、キーワード“TEXTSEARCH INDEX KEY”が指定されていないため、インデクス専用列指定の値として「NULL」が保持される。
CPU700は、その後、メモリ800に保持されている表名、列名、列データ型及びインデクス専用列指定値を関連付けて列情報とし、表定義情報310に登録する(ステップS906)。
CPU700は、ステップS902からS906までの処理を表定義要求に含まれるすべての列定義部分に対して実行したか否かを判定する(ステップS907)。すべての列定義部分に対して処理が完了していない場合には(ステップS907の結果が「No」)、ステップS902に戻り、処理を継続する。すべての列定義部分に対して処理が完了した場合には(ステップS907の結果が「Yes」)、本処理を終了する。
図10は、本実施の形態のデータベース管理システム100によってインデクスを定義する際の処理の手順を示すフローチャートである。
CPU700は、まず、定義情報管理部120を実行することによって、アプリケーションプログラム400などによって入力されたインデクス定義要求に基づいて、定義対象であるインデクスのインデクス名及び当該インデックスに対応する表名及び列名を取得し、メモリ800に保持する(ステップS1001)。図6に示したインデクス定義要求を例として説明すると、定義対象のインデクス名は「IDX_ALLKANA」、インデクスを定義する対象の表の表名は「INSHOKU2」、列名は「ALL_KANA_NAME」となる。
CPU700は、次に、取得した表名、列名に対応する列情報を表定義情報310から取得する(ステップS1002)。図6に示したインデクス定義要求では、取得対象の列情報は図3の表定義情報(列情報)310の、列名312が「ALL_KANA_NAME」であるレコード315に対応する。
CPU700は、次に、インデクス定義要求によって指定されたインデクス種別を取得し、メモリ800に保持する(ステップS1003)。図6に示したインデクス定義要求では、インデクス種別「TEXTSEARCH」が保持される。なお、インデクス定義要求においてインデクス種別が指定されていない場合には、「NULL」が保持される。
CPU700は、メモリ800に保持されているインデクス種別と、取得された列情報に含まれる“インデクス専用列指定”とを比較評価する(ステップS1004、ステップS1005)。
CPU700は、評価結果として、メモリ800に保持されているインデクス種別が「TEXTSEARCH」である場合には(ステップS1005の結果が「インデクス種別が“TEXTSEARCH”」)、“TEXTSEARCH”をインデクス種別の値として保持する(ステップS1006)。図6に示したインデクス定義要求では、保持されたインデクス種別が「TEXTSEARCH」であるため、ステップS1006の処理が実行される。
一方、CPU700は、評価結果として、メモリ800に保持されているインデクス種別が「NULL」であって、かつ、インデクス専用列指定の値が“T”の場合には(ステップS1005の結果が「インデクス種別が“NULL”、かつ、インデクス専用列指定が“T”」)、インデクス定義要求において「TEXTSEARCH」が指定されたものと判定し、“TEXTSEARCH”をインデクス種別の値として保持する(ステップS1007)。さらに、インデクス種別の値とインデクス専用列指定の値が整合していない点について警告メッセージを出力する(ステップS1008)。
また、CPU700は、評価結果として保持されたインデクス種別が「NULL」であり、かつ、インデクス専用列指定の値が「NULL」の場合には、“B-TREE”をインデクス種別の値として保持する(ステップS1009)。インデクス種別“B-TREE”は、数値の範囲検索などに使用される木構造であるB木インデクスであることを示している。
CPU700は、メモリ800に保持されたインデクス名、表名、列名及びインデクス種別を関連付け、インデクス定義情報320に登録する(ステップS1010)。図6に示したインデクス定義要求では、図5のインデクス定義情報320に記載されたレコードのように、インデクス名321「IDX_ALLKANA」、表名322「INSHOKU2」、列名323「ALL_KANA_NAME」及びインデクス種別324「TEXTSEARCH」を含むレコードがインデクス定義情報として登録される。
ここで、本実施の形態では、ステップS1005の評価結果の判定において、評価結果として保持されたインデクス種別が「NULL」であり、かつ、インデクス専用列指定が“T”の場合には、インデクス定義要求において「TEXTSEARCH」が指定されたものと判定しているが、インデクス定義要求でインデクス種別の指定が不正(正しい指定がなされていない)と判定し、その旨のエラーメッセージを出力してもよい。
図11は、本実施の形態のデータベース管理システム100によってインデクス専用列を含む表に対してデータを登録する処理の手順を示すフローチャートである。
CPU700は、まず、表データ管理部130を実行することによって、アプリケーションプログラム400のデータ操作要求部410によって要求されたデータ登録要求に基づいて、1つの列についての登録対象データを取得し、メモリ800に保持する(ステップS1101)。
CPU700は、次に、表定義情報310を参照し、当該列に対応する列情報を取得する(ステップS1102)。
さらに、CPU700は、取得された列情報に含まれるインデクス専用列指定の値を判定する(ステップS1103)。インデクス専用列指定の値が“T”の場合には(ステップS1103の結果が「“T”」)、インデクス専用列処理部133を実行し、作成中の行データに列の値として保持されているデータを記録せずに、インデクス専用列である旨を示す情報を記録する(ステップS1104)。具体的には、図7にて説明したデータフィールド21134にオフセット値“1”を設定する。
一方、CPU700は、インデクス専用列指定の値が「NULL」の場合には(ステップS1103の結果が「NULL」)、行データ作成部131を実行し、作成中の行データに列の値として保持されているデータを記録する(ステップS1105)。
CPU700は、以上の処理が終了すると、データ登録要求に含まれるすべての列に対する処理が完了したか否かを判定する(ステップS1106)。すべての列に対して、処理が完了していない場合には(ステップS1106の結果が「No」)、ステップS1101に戻り、処理を継続する。
CPU700は、すべての列に対して、処理が完了している場合には(ステップS1106の結果が「Yes」)、作成された行データをデータベース(DB)に記憶し、当該記憶された行データの行識別子を決定する(ステップS1107)。具体的には、図7の説明にて記述したように、記憶する行データ、すなわち、データレコードを含むページ21100の識別子と、当該ページ内のデータレコードの位置を示すスロット21120のスロット番号によって行識別子が決定される。
CPU700は、次に、行データ登録対象の表に対応するインデクス情報を、インデクス定義情報320を参照し、取得する(ステップS1108)。そして、取得したインデクス情報に含まれるインデクスについて、メモリ800に保持されている登録データ及び行識別子に基づいて、インデクス管理部140にメンテナンスを要求する(ステップS1109)。インデクスのメンテナンスを要求されたインデクス管理部140は、インデクスメンテナンス部141によってインデクスを更新する。
図12は、本実施の形態のデータベース管理システム100によってインデクス専用列に対する検索条件を含む検索要求を実行する処理の手順を示すフローチャートである。
CPU700は、まず、表データ管理部130を実行することによって、アプリケーションプログラム400のデータ操作要求部410によって要求されたデータ検索要求に基づいて、条件評価又は射影対象(取出し対象)である列に対応する表名及び列名を取得する(ステップS1201)。
CPU700は、次に、表定義情報310を参照し、取得された表名及び列名に対応する列情報を取得する(ステップS1202)。
CPU700は、取得された列情報に含まれるインデクス専用列指定の値を判定する(ステップS1203)。インデクス専用列指定が「NULL」の場合には(ステップS1203の結果が「NULL」)、条件評価に適用可能なインデクスをインデクス定義情報320から取得し、インデクスの使用有無及び使用インデクスを決定する(ステップS1205)。その後、インデクス検索部142によって決定されたインデクスに基づいて、条件に合致する行の行識別子を検索結果として取得する。さらに、検索要求に応じて、行データアクセス部132が要求された列データを取得し、要求元であるアプリケーションプログラム400に返却する。
CPU700は、取得された列情報に含まれるインデクス専用列指定の値が“T”の場合には(ステップS1203の結果が「“T”」)、条件評価にインデクスの適用が可能であるか否かを判定する(ステップS1204)。インデクスの適用が可能な場合には(ステップS1204の結果が「Yes」)、インデクス定義情報320から条件評価対象の列に対応するインデクス情報を取得する(ステップS1206)。さらに、ステップS1206の処理で取得されたインデクス情報に含まれる(全文検索用)インデクスを使用することを決定する(ステップS1208)。その後、ステップS1205の処理の場合と同様に、インデクス検索部142が決定したインデクスに基づいて、条件に合致する行の行識別子を検索結果として取得する。さらに、検索要求に応じて、行データアクセス部132が要求された列データを取得して、要求元であるアプリケーションプログラム400に返却する。
一方、CPU700は、インデクスを適用できない(インデクスを利用できない)場合には(ステップS1204の結果が「No」)、検索不可としてエラーメッセージを出力し(ステップS1207)、検索処理を終了する。インデクスを適用できない場合には、表データが存在しないインデクス専用列の値を取得しようとした場合などが含まれる。
図13は、本実施の形態のデータベース管理システム100によってインデクス専用列を含む表からデータを削除する処理の手順を示すフローチャートである。
CPU700は、まず、表データ管理部130を実行し、アプリケーションプログラム400のデータ操作要求部410によって要求されたデータ削除要求に基づいて、削除対象行データにアクセスし、削除データをメモリ800に保持する(ステップS1301)。削除対象行データにインデクス専用列が含まれる場合には、インデクス専用列処理部133によって、当該インデクス専用列のデータに対応するデータは保持しない。
続いて、CPU700は、指定された行データを削除する(ステップS1302)。
次に、CPU700は、インデクス定義情報320を参照し、行データ削除対象の表に関連するインデクス情報を取得する(ステップS1303)。
さらに、CPU700は、取得されたインデクス情報に含まれるインデクスについて、メモリ800に保持されている削除データ及び行識別子に基づいて、インデクス管理部140にメンテナンスを要求する(ステップS1304)。ここで、インデクス専用列の削除列データについては、削除対象の行識別子のみに基づいて、インデクス管理部140にメンテナンスを要求する。インデクスのメンテナンスを要求されたインデクス管理部140は、インデクスメンテナンス部141によってインデクスを更新する。インデクス専用列に対するインデクスの場合には、インデクスメンテナンス部141によって当該インデクスに保持される行識別子を当該インデクスから削除する。
図14は、本実施の形態のデータベース管理システム100によってインデクス専用列を更新する処理の手順を示すフローチャートである。
まず、CPU700は、表データ管理部130を実行し、アプリケーションプログラム400のデータ操作要求部410によって要求されたデータ更新要求に基づいて、1つの列についての更新対象データ(更新後のデータ)を取得し、メモリ800に保持する(ステップS1401)。
CPU700は、次に、表定義情報310を参照し、当該列に対応する列情報を取得する(ステップS1402)。
CPU700は、取得された列情報に含まれるインデクス専用列指定を判定する(ステップS1403)。インデクス専用列指定の値が“T”の場合には(ステップS1403の結果が「“T”」)、インデクス専用列処理部133を実行し、作成中の行データに列の値として保持されているデータを記録せずに、インデクス専用列である旨を示す情報を記録する(ステップS1404)。具体的には、図7にて説明したデータフィールド21134にオフセット値“1”を設定する。
一方、CPU700は、インデクス専用列指定の値が「NULL」の場合には(ステップS1403の結果が「NULL」)、行データ作成部131を実行し、作成中の行データに列の値として保持されているデータを記録する(ステップS1405)。
CPU700は、以上の処理が終了すると、データ登録要求に含まれるすべての列に対する処理が完了したか否かを判定する(ステップS1406)。すべての列に対して、処理が完了していない場合には(ステップS1406の結果が「No」)、ステップS1401に戻り、処理を継続する。
CPU700は、すべての列に対して、処理が完了している場合には(ステップS1406の結果が「Yes」)、更新対象行データにアクセスし、更新前の列データをメモリ800に保持する(ステップS1407)。このとき、インデクス専用列処理部133によって、当該インデクス専用列のデータに対応するデータを保持しない。
CPU700は、行データ又は当該行データの一部の列データを更新する(ステップS1408)。
CPU700は、次に、インデクス定義情報320を参照し、行データ更新対象の表及び列に対応するインデクス情報を取得する(ステップS1409)。そして、取得されたインデクス情報に含まれるインデクスについて、保持されている更新前後データ及び行識別子に基づいて、インデクス管理部140にメンテナンスを要求する(ステップS1410)。インデクスのメンテナンスを要求されたインデクス管理部140は、インデクスメンテナンス部141によってインデクスを更新する。
本実施の形態によれば、インデクス専用列に指定された列に対応する表データの列データを記憶しないため、表の格納に必要な容量を少なくすることができる。表データとして格納するデータがインデクスにも格納されているため、本実施形態のように列にデータを格納しなくとも該データの操作(挿入や更新や削除)を実現することができる。
また、本実施の形態によれば、全文検索に利用されるインデクスをインデクス専用列に対応させることによって、組み込み機器でもキーワード検索を高速に実現することが可能となる。
本発明の実施の形態の全体概要を説明する図である。 本発明の実施の形態のデータベース管理装置の構成の一例を示すブロック図である。 本発明の実施の形態の表定義情報(列情報)の一例を示す図である。 本発明の実施の形態の表定義情報を作成するための表定義要求(SQL)の一例を示す図である。 本発明の実施の形態のインデクス定義情報の一例を示す図である。 本発明の実施の形態のインデクスを作成するためのインデクス定義要求(SQL)の一例を示す図である。 本発明の実施の形態の表データ管理部によって管理されるインデクス専用列を含む表の行データの格納(記憶)構造の一例を示す図である。 本発明の実施の形態のキーワード指定の検索を実現するための全文検索用インデクスであるインデクスの構造の一例を示す図である。 本発明の実施の形態のデータベース管理システムによってインデクス専用列を含む表を定義する際の処理の手順を示すフローチャートである。 本発明の実施の形態のデータベース管理システムによってインデクスを定義する際の処理の手順を示すフローチャートである。 本発明の実施の形態のデータベース管理システムによってインデクス専用列を含む表に対してデータを登録する処理の手順を示すフローチャートである。 本発明の実施の形態のデータベース管理システムによってインデクス専用列に対する検索条件を含む検索要求を実行する処理の手順を示すフローチャートである。 本発明の実施の形態のデータベース管理システムによってインデクス専用列を含む表からデータを削除する処理の手順を示すフローチャートである。 本発明の実施の形態のデータベース管理システムによってインデクス専用列を更新する処理の手順を示すフローチャートである。
符号の説明
1 データベース管理装置
100 データベース管理システム
110 制御部
120 定義情報管理部
121 インデクス専用列解析部
130 表データ管理部
131 行データ作成部
132 行データアクセス部
133 インデクス専用列処理部
140 インデクス管理部
141 インデクスメンテナンス部
142 インデクス検索部
200 第1の記憶部
210 データベース
211 表データ
212 インデクス
300 第2の記憶部
310 表定義情報(列情報)
320 インデクス定義情報
400 アプリケーションプログラム
410 データ操作要求部
420 インデクス専用列データ生成部
500 入力部
600 出力部
700 CPU
800 メモリ

Claims (3)

  1. 複数行と複数列とで表現される表データと前記複数列に含まれる列に対応づけられたインデクスとを含むデータベース、を格納する記憶部を備え、前記データベースを管理するデータベース管理装置、によるデータベース管理方法であって、
    前記複数列は、列データが格納されないインデクス専用列と、列データが格納される非インデクス専用列とを含み、
    前記データベース管理装置は、前記複数列に含まれる列と前記インデクスとの対応付けを定義するインデクス定義情報を有し、
    前記インデクス定義情報は、前記インデクス専用列と全文検索用インデクスとの対応付けを定義し、
    前記データベース管理装置が、前記表データへのデータ登録要求を受け付け
    前記データ登録要求が前記非インデクス専用列に対応する第1登録対象データの登録を要求する場合に、前記データベース管理装置が、前記非インデクス専用列に前記第1登録対象データを登録し、
    前記データ登録要求が前記インデクス専用列に対応する第2登録対象データの登録を要求する場合に、前記データベース管理装置が、前記第2登録対象データを前記インデクス専用列に登録することなく、前記インデクス定義情報を参照して前記全文検索用インデクスを特定して、前記全文検索用インデクスを、前記第2登録対象データを用いて更新し、
    前記データベース管理装置が、前記インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照して前記全文検索用インデクスを特定し、前記全文検索用インデクスを使用して検索を行い、前記非インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照してインデクスの使用の有無を決定する、ことを特徴とするデータベース管理方法。
  2. 複数行と複数列とで表現される表データと前記複数列に含まれる列に対応づけられたインデクスとを含むデータベース、を格納する記憶部を備え、前記データベースを管理する、データベース管理装置であって、
    前記複数列は、列データが格納されないインデクス専用列と、列データが格納される非インデクス専用列とを含み、
    前記データベース管理装置は、前記複数列に含まれる列と前記インデクスとの対応付けを定義するインデクス定義情報を有し、
    前記インデクス定義情報は、前記インデクス専用列と全文検索用インデクスとの対応付けを定義し、
    前記データベース管理装置は、前記表データへのデータ登録要求を受け付け、
    前記データ登録要求が前記非インデクス専用列に対応する第1登録対象データの登録を要求する場合に、前記データベース管理装置は、前記非インデクス専用列に前記第1登録対象データを登録し、
    前記データ登録要求が前記インデクス専用列に対応する第2登録対象データの登録を要求する場合に、前記データベース管理装置は、前記第2登録対象データを前記インデクス専用列に登録することなく、前記インデクス定義情報を参照して前記全文検索用インデクスを特定して、前記全文検索用インデクスを、前記第2登録対象データを用いて更新し、
    前記データベース管理装置は、前記インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照して前記全文検索用インデクスを特定し、前記全文検索用インデクスを使用して検索を行い、前記非インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照してインデクスの使用の有無を決定する、ことを特徴とするデータベース管理装置。
  3. データベース管理装置で実行されるデータベース管理プログラムであって、
    前記データベースは、複数行と複数列とで表現される表データと前記複数列に含まれる列に対応づけられたインデクスとを含み、
    前記複数列は、列データが格納されないインデクス専用列と、列データが格納される非インデクス専用列とを含み、
    前記データベース管理装置は、前記複数列に含まれる列と前記インデクスとの対応付けを定義するインデクス定義情報を有し、
    前記インデクス定義情報は、前記インデクス専用列と全文検索用インデクスとの対応付けを定義し、
    前記データベース管理プログラムは、
    前記表データへのデータ登録要求を受け付ける手順と、
    前記データ登録要求が前記非インデクス専用列に対応する第1登録対象データの登録を要求する場合に、前記非インデクス専用列に前記第1登録対象データを登録する手順と、
    前記データ登録要求が前記インデクス専用列に対応する第2登録対象データの登録を要求する場合に、前記第2登録対象データを前記インデクス専用列に登録することなく、前記インデクス定義情報を参照して前記全文検索用インデクスを特定して、前記全文検索用インデクスを、前記第2登録対象データを用いて更新する手順と、
    前記インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照して前記全文検索用インデクスを特定し、前記全文検索用インデクスを使用して検索を行う手順と、
    前記非インデクス専用列に対する検索条件を含む検索要求を受け付けた場合に、前記インデクス定義情報を参照してインデクスの使用の有無を決定する手順と、を前記データベース管理システムに実行させることを特徴とするデータベース管理プログラム。
JP2008010370A 2008-01-21 2008-01-21 データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム Expired - Fee Related JP5075653B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008010370A JP5075653B2 (ja) 2008-01-21 2008-01-21 データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム
US12/352,185 US8161051B2 (en) 2008-01-21 2009-01-12 Method and apparatus for data processing with index search

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008010370A JP5075653B2 (ja) 2008-01-21 2008-01-21 データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム

Publications (2)

Publication Number Publication Date
JP2009169902A JP2009169902A (ja) 2009-07-30
JP5075653B2 true JP5075653B2 (ja) 2012-11-21

Family

ID=40877236

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008010370A Expired - Fee Related JP5075653B2 (ja) 2008-01-21 2008-01-21 データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム

Country Status (2)

Country Link
US (1) US8161051B2 (ja)
JP (1) JP5075653B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8239389B2 (en) * 2008-09-29 2012-08-07 International Business Machines Corporation Persisting external index data in a database
US8666958B2 (en) * 2009-11-27 2014-03-04 International Business Machines Corporation Approaches to reducing lock communications in a shared disk database
US9824091B2 (en) 2010-12-03 2017-11-21 Microsoft Technology Licensing, Llc File system backup using change journal
US8620894B2 (en) * 2010-12-21 2013-12-31 Microsoft Corporation Searching files
US8527497B2 (en) * 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
CN102663107A (zh) * 2012-04-16 2012-09-12 深圳市华曦达科技股份有限公司 嵌入式数据管理的方法及系统
JP2015191258A (ja) * 2014-03-27 2015-11-02 富士通株式会社 プログラム、処理方法及び情報処理装置
US10521411B2 (en) * 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US11386089B2 (en) 2020-01-13 2022-07-12 The Toronto-Dominion Bank Scan optimization of column oriented storage

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6243730A (ja) * 1985-08-21 1987-02-25 Matsushita Electric Ind Co Ltd 情報検索装置
US6078925A (en) * 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US6519597B1 (en) * 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US6338056B1 (en) * 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
JP5108252B2 (ja) 2006-04-27 2012-12-26 株式会社日立製作所 インデクス更新方法及びそのシステム
US7925647B2 (en) * 2007-07-27 2011-04-12 Oracle International Corporation Techniques for optimizing SQL statements using user-defined indexes with auxiliary properties

Also Published As

Publication number Publication date
US20090187545A1 (en) 2009-07-23
JP2009169902A (ja) 2009-07-30
US8161051B2 (en) 2012-04-17

Similar Documents

Publication Publication Date Title
JP5075653B2 (ja) データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム
CN110291517B (zh) 图数据库中的查询语言互操作性
US8442982B2 (en) Extended database search
US8914414B2 (en) Integrated repository of structured and unstructured data
US6148296A (en) Automatic generation of database queries
US8655896B2 (en) Apparatus and methods for organizing data items having time of life intervals
CN106202207A (zh) 一种基于HBase‑ORM的索引及检索系统
EP2874077A2 (en) Stateless database cache
US20090030902A1 (en) Schematized data intelligent assistance for development environments
US20180144061A1 (en) Edge store designs for graph databases
JPH0765035A (ja) 構造化文書検索装置
US8959096B2 (en) Apparatus and methods for organizing data items by directed acyclic graphs
KR102309249B1 (ko) 데이터 관리 체계에 기반하여 데이터를 관리하는 장치 및 방법
US10445370B2 (en) Compound indexes for graph databases
WO2020108345A1 (zh) 数据库索引以及数据库查询的处理方法、装置及设备
JPWO2011111532A1 (ja) データベースシステム
CN106649636A (zh) 一种基于移动终端的人员流动性分析方法及装置
CN112286964A (zh) 一种sql语句优化方法、装置、设备及存储介质
CN116414935A (zh) 一种基于Elastic Search的分布式搜索空间矢量数据的方法
JP2008084134A (ja) 検索システム、検索方法、および情報管理装置
JP2020064482A (ja) 属性抽出装置および属性抽出方法
US11093509B2 (en) Data processing system for curating search result facets
JP7340952B2 (ja) テンプレート検索システムおよびテンプレート検索方法
JP2000090105A (ja) 文書管理方法、文書管理・検索システム
JP4825504B2 (ja) データ登録・検索システムおよびデータ登録・検索方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120517

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120827

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150831

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees