JP5994490B2 - データ検索プログラム、データベース装置および情報処理システム - Google Patents

データ検索プログラム、データベース装置および情報処理システム Download PDF

Info

Publication number
JP5994490B2
JP5994490B2 JP2012189105A JP2012189105A JP5994490B2 JP 5994490 B2 JP5994490 B2 JP 5994490B2 JP 2012189105 A JP2012189105 A JP 2012189105A JP 2012189105 A JP2012189105 A JP 2012189105A JP 5994490 B2 JP5994490 B2 JP 5994490B2
Authority
JP
Japan
Prior art keywords
data
search
key
storage unit
relational database
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
JP2012189105A
Other languages
English (en)
Other versions
JP2014048741A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012189105A priority Critical patent/JP5994490B2/ja
Priority to US13/954,044 priority patent/US20140067853A1/en
Publication of JP2014048741A publication Critical patent/JP2014048741A/ja
Application granted granted Critical
Publication of JP5994490B2 publication Critical patent/JP5994490B2/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

Landscapes

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

本発明は、データ検索プログラム、データベース装置および情報処理システムに関する。
従来、管理対象のデータとキーとを対応付けて管理するKVS(Key Value Store)が知られている。また、KVS形式のデータベースを複数のサーバに分散させる分散KVSシステムが知られている。
分散KVSシステムでは、システムを形成するサーバのメモリに、RDB(Relational Database)におけるテーブルを行毎にクラスタ化した、KVS形式のデータベースを保持させる。そして、ユーザから指定されたキーとテーブル名とを検索キーとしてサーバのメモリを検索し、検索した結果をユーザに応答する。
このような分散KVSシステムは、検索処理やデータが複数のサーバに分散されるので、各サーバが比較的低性能でも検索処理の高速化が実現できる。近年では、RDBをKVS形式に変換する際に、RDBのカラムを文字列連結してキーに格納する技術も知られている。
特開2011−8451号公報 特開平08−36514号公報 特開2000−222434号公報
しかしながら、KVSでデータを管理する場合、検索処理の性能が劣化するという問題がある。
例えば、分散KVSシステムにおいてRDBにおける列検索を実行する場合には、各キーに対応付けられる、RDBにおけるテーブルの各行をクラスタ化した情報を取り出してからでないと、列検索を実行することができない。このため、分散KVSシステムが膨大な情報を管理する場合には、検索処理に時間がかかる。
また、分散KVSシステムでは、キー値のハッシュによって格納先のサーバを分散させている。一方、RDBのカラムを文字列連結してキーに格納する手法は、キー値のフルネームがわからなければ検索処理を実行することができなので、分散KVSシステムなどには使用することができず、汎用性が低い。
1つの側面では、検索処理を高速化できるデータ検索プログラム、データベース装置および情報処理システムを提供することを目的とする。
第1の案では、コンピュータに、第1のデータベースに対して発行された検索要求に基づいて、前記データと当該データに対応付けられるキー値とを第1記憶部から特定する処理を実行させる。第1記憶部は、第1のデータベースにおける列に含まれるデータと前記第1のデータベースにおいて当該データに対応付けられるキー値とを対応付けて記憶する。前記第1のデータベースにおけるキー値と前記第1のデータベースにおいて前記キー値に対応付けられる行とを対応付けて記憶する第2記憶部から、前記特定したキー値に対応付けられる行を検索する処理を実行させる。
本発明の1実施態様によれば、検索処理を高速化できる。
図1は、実施例1に係るデータベース検索装置を説明する図である。 図2は、実施例2に係る分散KVSシステムの全体構成例を示す図である。 図3は、実施例2に係る分散KVSシステムの各装置の機能構成を示す機能ブロック図である。 図4は、RDBと第1記憶部と第2記憶部の関係を説明する図である。 図5は、実施例2に係る分散KVSシステムにおける検索処理の流れを示すフローチャートである。 図6は、実施例2に係る分散KVSシステムの検索処理の流れを示す処理シーケンス図である。 図7は、実施例2に係る分散KVSシステムのJOIN処理の流れを示す処理シーケンス図である。 図8は、検索処理の具体例を説明する図である。 図9は、JOIN処理の具体例を説明する図である。 図10は、ハードウェア構成例を示す図である。
以下に、本願の開示するデータ検索プログラム、データベース装置および情報処理システムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1に係るデータベース検索装置を説明する図である。図1に示すデータベース検索装置1は、RDB(Relational Database)で管理されるデータをKVS(Key Value Store)に変換して管理する装置である。具体的には、データベース検索装置1は、第1記憶部1a、第2記憶部1b、特定部1c、検索部1dを有し、これらによって、RDBのデータをKVSで管理する。
第1記憶部1aは、RDBにおける列に含まれるデータと、RDBにおいて当該データに対応付けられるキー値とを対応付けて記憶する。第2記憶部1bは、RDBにおけるキー値と、RDBにおいてキー値に対応付けられる行とを対応付けて記憶する。特定部1cは、アプリケーションなどからRDBに対して発行された検索要求に基づいて、データと当該データに対応付けられるキー値とを第1記憶部1aから特定する。検索部1dは、特定部1cによって特定されたキー値に対応付けられる行を、第2記憶部1bから検索する。
このように、データベース検索装置1は、RDBのデータをKVSで管理する場合に、RDBの列とキーを対応付けた転置インデックスから特定したValueで、RDBのキーと行を対応付けたKVSを検索することができる。したがって、アプリケーション等は、RDBの場合と同様に、SQLを用いて検索対象のデータを検索することができる。この結果、データベース検索装置1は、すべてのValueを取り出すことなく、列検索を実行することができ、データ検索処理を高速化することができる。
実施例1では、1台のサーバがRDBのデータをKVSで管理し、さらにデータ検索も実行する例を説明したが、これに限定されるものではない。例えば、分散KVSシステムであっても、同様に、データ検索処理を高速化することができる。そこで、実施例2では、分散KVSシステムを例にして説明する。
[全体構成]
図2は、実施例2に係る分散KVSシステムの全体構成例を示す図である。図2に示すように、この分散KVSシステムは、RDBサーバ5とアプリケーションサーバ10と複数のキャッシュサーバ20とがネットワーク6を介して接続されている。なお、図2に示したサーバの台数等は、あくまで例示であり、これに限定されるものではない。
この分散KVSシステムは、RDBサーバ5で管理されるデータをKVSで管理するシステムであり、各KVSをキャッシュサーバ20に振り分けて、キャッシュサーバ20のメモリに常駐させる。キャッシュサーバ20への振分については、キー値のハッシュによって振り分ける手法など公知の手法を用いることができるので、ここでは、詳細な説明は省略する。
RDBサーバ5は、RDBによってデータを管理するデータベースサーバである。アプリケーションサーバ10は、アプリケーションが発行したSQLを解析して、キャッシュサーバ20から所望のデータを検索して取得するサーバ装置である。各キャッシュサーバ20は、キー値のハッシュ等によって振り分けられたデータをKVSで管理するサーバ装置であり、メモリ上でKVSを管理する。
このような構成において、アプリケーションサーバ10は、アプリケーションから発行されたSQLを介して、検索対象のデータを保持するキャッシュサーバ20を特定する。そして、アプリケーションサーバ10は、キャッシュサーバ20に対してGet要求を送信して、所望のデータを取得する。
[機能構成]
図3は、実施例2に係る分散KVSシステムの各装置の機能構成を示す機能ブロック図である。図2に示したRDBサーバ5は、一般的なRDBサーバと同様の構成を有するので、ここでは詳細な説明は省略する。
(アプリケーションサーバ)
図3に示すように、アプリケーションサーバ10は、通信制御インタフェース部11、記憶部12、制御部13を有する。なお、記憶部12は、ハードディスクなどの記憶装置であり、制御部13は、CPU(Central Processing Unit)などの電子回路である。ここで示した処理部は、あくまで一例であり、ディスプレイなどの表示部やマウスなどの入力部を有していてもよい。
通信制御インタフェース部11は、他の装置との間の通信を制御する処理部である。例えば、通信制御インタフェース部11は、キャッシュサーバ20にGet要求などの各種要求を送信し、キャッシュサーバ20から検索結果を受信する。
記憶部12は、制御部13が実行するプログラムや制御部13が使用するデータ等を記憶する記憶部である。例えば、アプリケーション14が実行した処理結果、途中結果を記憶し、演算等に使用する一時領域も有する。
制御部13は、アプリケーション14、SQL解析部15、検索実行部16を有し、これらによって、キャッシュサーバ20が管理するKVSからデータを取得する処理部である。
アプリケーション14は、制御部13が実行するアプリケーションである。例えば、アプリケーション14は、所望のデータを検索するSQLや、データを統合するSQLなどをSQL解析部15に発行する。
SQL解析部15は、アプリケーション14から発行されたSQLを解析して処理フローを解析する処理部である。具体的には、SQL解析部15は、転置インデックスであるインデックステーブルとRDBの行を記憶するキャッシュテーブルとから所望のデータを取得する一連の処理フローを生成する。例えば、SQL解析部15は、SQLで指定されたキーに基づいて、転置インデックスであるインデックステーブルからValueを取得し、取得したValueに基づいて、RDBの行を記憶するキャッシュテーブルからValueを取得するフローを生成する。
また、SQL解析部15は、RDBで使用されるSQLを解析して、KVSで使用されるGet要求等に変換し、変換した要求を検索実行部16に出力する。
例えば、SQL解析部15は、発行されたSQLのFROM句およびWHERE句を組み合わせて、キャッシュサーバ20が管理するテーブルのインデックス名を生成する。そして、SQL解析部15は、生成したインデックス名と、WHERE句で指定されるキー値とを検索実行部16に出力する。さらに、SQL解析部15は、発行されたSQLにJOIN句がある場合には、JOIN句で指定されるJOIN対象のテーブル名と、JOIN対象のカラム名とからJOIN対象のインデックス名を生成して、検索実行部16に出力する。そして、SQL解析部15は、検索実行部16から検索結果を受信してアプリケーション14に返答する。
インデックス名の生成手法の一例を説明すると、SQL解析部15は、FROM句で指定されたテーブル名とWHERE句で指定されたカラム名とを用いて、「_」で連携する。具体的には、SQL解析部15は、FROM句で指定されたテーブル名「テーブルα」とWHERE句で指定されたカラム名「B」とを用いて、インデックス名「テーブルα_B」を生成する。
検索実行部16は、SQL解析部15から渡された処理フローに従い、キャッシュサーバ20にデータの取得依頼を実行する処理部である。例えば、検索実行部16は、SQL解析部15から取得したGet要求をキャッシュサーバ20に送信して、インデックステーブルから検索されたValueを取得する。そして、検索実行部16は、取得したValueをキーにしたGet要求をキャッシュサーバ20に送信して、キャッシュテーブルから検索されたValueを取得する。その後、検索実行部16は、キャッシュテーブルから取得したValueをアプリケーション14に出力する。
(キャッシュサーバ)
図3に示すように、キャッシュサーバ20は、通信制御インタフェース部21、記憶部22、制御部25を有する。なお、記憶部22は、メモリなどの記憶装置であり、制御部25は、CPUなどの電子回路である。ここで示した処理部は、あくまで一例であり、ディスプレイなどの表示部やマウスなどの入力部を有していてもよい。
通信制御インタフェース部21は、他の装置との間の通信を制御する処理部である。例えば、通信制御インタフェース部21は、アプリケーションサーバ10からGet要求などの各種要求を受信し、検索結果をアプリケーションサーバ10に送信する。
記憶部22は、第1記憶部23と第2記憶部24とを有し、これらによって、RDBサーバ5がRDBで管理するデータをKVSで管理する記憶部である。この記憶部22は、メモリに該当する。
第1記憶部23は、RDBサーバ5が記憶するRDBにおける列に含まれるデータと、RDBにおいて当該データに対応付けられるキー値とを対応付けたインデックステーブルを記憶する。第2記憶部24は、RDBにおけるキー値と、RDBにおいてキー値に対応付けられる行とを対応付けたキャッシュテーブルを記憶する。
ここで、RDBと第1記憶部23と第2記憶部24との関係を説明する。図4は、RDBと第1記憶部と第2記憶部の関係を説明する図である。図4に示すように、RDBサーバ5は、テーブルαを保持する。このテーブルαは、A列にプライマリキー「1、2、3」を対応付け、B列にデータ「あ、い、う」を対応付け、C列にデータ「ア、イ、ウ」を対応付けて管理する。また、テーブルαは、プライマリキー「1」に対応付けてデータ「あ、ア」を管理し、プライマリキー「2」に対応付けてデータ「い、イ」を管理し、プライマリキー「3」に対応付けてデータ「う、ウ」を管理する。
そして、図4に示すように、第1記憶部23は、インデックス名が「テーブルα_B」のインデックステーブルと、インデックス名が「テーブルα_C」のインデックステーブルとを記憶する。「テーブルα_B」は、RDBサーバ5のテーブルαのB列に対応付けられるデータ「あ、い、う」をキー、A列のプライマリキー「1、2、3」をValueとするKVSである。すなわち、「テーブルα_B」は、RDBのデータをキーにした転置インデックスである。この転置インデックスすなわち「テーブルα_B」は、「キー、Value」として「あ、1」、「い、2」、「う、3」を記憶する。
同様に、「テーブルα_C」は、RDBサーバ5のテーブルαのC列に対応付けられるデータ「ア、イ、ウ」をキー、A列のプライマリキー「1、2、3」をValueとするKVSである。すなわち、「テーブルα_C」は、RDBのデータをキーにした転置インデックスである。この転置インデックスすなわち「テーブルα_C」は、「キー、Value」として「ア、1」、「イ、2」、「ウ、3」を記憶する。
また、図4に示すように、第2記憶部24は、キャッシュ名が「テーブルα」のキャッシュテーブルを記憶する。キャッシュテーブル「テーブルα」は、RDBのA列に対応付けられるプライマリキー「1、2、3」をキー、RDBの各行をJPA(Java(登録商標) Persistence Application programming interface)の形式でクラス化した情報をValueとするKVSである。具体的には、キャッシュテーブル「テーブルα」は、「キー、Value」として「1、RDBのプライマリキー(1)に対応する行をクラス化したオブジェクト」を記憶する。同様に、キャッシュテーブル「テーブルα」は、「キー、Value」として「2、RDBのプライマリキー(2)に対応する行をクラス化したオブジェクト」を記憶する。同様に、キャッシュテーブル「テーブルα」は、「キー、Value」として「3、RDBのプライマリキー(3)に対応する行をクラス化したオブジェクト」を記憶する。なお、各オブジェクトに値を代入する方式は、JPAで規定される方式を用いることができる。
ここで、各テーブルの命名規則は、各キャッシュサーバ20とアプリケーションサーバ10との間で共通に用いられる。例えば、キャッシュテーブルの場合、RDBのテーブル名と同様の名前が設定される。インデックステーブルの場合、「RDBのテーブル_RDBのカラム名」が設定される。また、キャッシュテーブルのValueには、クラス化したオブジェクトではなく、配列を格納してもよい。
図3に戻り、制御部25は、要求処理部26とキャッシュ処理部27とを有し、これらによってKVSからデータを検索する処理部である。要求処理部26は、アプリケーションサーバ10からGet要求などの各種要求を受信して、キャッシュ処理部27に出力する処理部である。また、要求処理部26は、キャッシュ処理部27が検索した結果を、Get要求元のアプリケーションサーバ10に送信する。
キャッシュ処理部27は、要求処理部26から受信した各種要求に対して、キャッシュデータを返却する処理部である。例えば、キャッシュ処理部27は、キーを「あ」とするGet要求を受信した場合、記憶部22に記憶される各テーブルの「Key」を検索し、インテックステーブル「テーブルα_B」からValue「2」を取得して、アプリケーションサーバ10に返却する。また、キャッシュ処理部27は、キーを「2」とするGet要求を受信した場合、キャッシュテーブル「テーブルα」からValue「RDBのプライマリキー(2)に対応する行をクラス化したオブジェクト」を取得して、アプリケーションサーバ10に返却する。
[フローチャート]
図5は、実施例2に係る分散KVSシステムにおける検索処理の流れを示すフローチャートである。なお、ここでは、3行3列から構成される2つのRDB各々についてKVSが生成されているとする。つまり、テーブルαとテーブルβ各々について、キャッシュテーブルとインデックステーブルとが生成されているとする。
図5に示すように、アプリケーションサーバ10は、アプリケーションがSQLを実行すると(S101)、SQLにJOIN句があるか否かを判定する(S102)。そして、アプリケーションサーバ10は、SQLにJOIN句があると判定した場合(S102:Yes)、SQLにWHERE句があるか否かを判定する(S103)。
アプリケーションサーバ10は、SQLにWHERE句があると判定した場合(S103:Yes)、検索対象のテーブルに対応するインデックステーブルを、SQLで指定された値で検索する(S104)。例えば、アプリケーションサーバ10は、検索対象のテーブルαとカラム名とを組み合わせたインデックステーブル「テーブルα_B」を値「い」で検索する。
そして、アプリケーションサーバ10は、検索結果を解析し(S105)、解析されたキー値で検索対象のテーブルを検索する(S106)。例えば、アプリケーションサーバ10は、値「い」で検索されたValue「2」を検索キーにして、検索対象のキャッシュテーブルαを検索する。なお、アプリケーションサーバ10は、複数のキーが取得されたか否かを判定し、複数のキーが取得された場合に、以降の処理を各キーについて実行する。
続いて、アプリケーションサーバ10は、解析されたキー値でJOIN対象のテーブルに対応するインデックステーブルを検索する(S107)。例えば、アプリケーションサーバ10は、値「い」で、JOIN対象のテーブルβとカラム名とを組み合わせたインデックステーブル「テーブルβ_カラム名」を検索する。
そして、アプリケーションサーバ10は、検索されたキー値で、JOIN対象のテーブルを検索する(S108)。例えば、アプリケーションサーバ10は、値「い」で検索されたValue「b」を検索キーにして、JOIN対象のキャッシュテーブルβを検索する。
その後、アプリケーションサーバ10は、検索対象テーブルの検索結果と、JOIN対象テーブルとの検索結果とをマージして、アプリケーション14に返却する(S109)。例えば、アプリケーションサーバ10は、テーブルαに対する検索結果と、テーブルβに対する検索結果とをマージする。
一方、S103において、アプリケーションサーバ10は、SQLにWHERE句がないと判定した場合(S103:No)、S110を実行する。すなわち、アプリケーションサーバ10は、検索対象のテーブルのすべてのキー値について、JOIN対象のテーブルのインデックステーブルを検索し、その結果をマージしてアプリケーション14に返却する。例えば、アプリケーションサーバ10は、テーブルαのインデックステーブルの全キーに対して、テーブルβのインデックステーブルを検索し、その検索結果を用いてテーブルβのキャッシュテーブルを検索する。そして、アプリケーションサーバ10は、全検索結果をマージする。
一方、S102において、アプリケーションサーバ10は、SQLにJOIN句がないと判定し(S102:No)、SQLにWHERE句があると判定した場合(S111:Yes)、S112を実行する。すなわち、アプリケーションサーバ10は、検索対象のテーブルに対応するインデックステーブルを、SQLで指定された値で検索する。
続いて、アプリケーションサーバ10は、検索結果を解析し(S113)、解析されたキー値で検索対象のテーブルを検索する(S114)。その後、アプリケーションサーバ10は、検索結果をアプリケーション14に返却する(S115)。なお、S111において、アプリケーションサーバ10は、SQLにWHERE句がないと判定した場合(S111:No)、SQLによる一般的な検索処理を実行する(S116)。
[検索処理のシーケンス]
図6は、実施例2に係る分散KVSシステムの検索処理の流れを示す処理シーケンス図である。なお、ここでは、3行3列から構成される1つのRDBについてKVSが生成されているとする。つまり、図4と同様、テーブルαについて、キャッシュテーブルとインデックステーブルとが生成されているとする。また、ここでは、アプリケーション14からSQLとして「“SELECT * FROM テーブルα WHERE B =‘い’”」が発行されたものとする。
図6に示すように、アプリケーションサーバ10のSQL解析部15は、アプリケーション14からSQLを受信し(S201)、SQLのテーブルαからテーブル名を取得する(S202)。続いて、SQL解析部15は、SQLのWHERE句からカラム名を取得する(S203)。例えば、SQL解析部15は、FROM句からテーブル名「テーブルα」を取得し、WHERE句からカラム名「B」を取得する。
そして、SQL解析部15は、取得したテーブル名とカラム名とからインデックステーブル名を組み立てる(S204)。その後、SQL解析部15は、検索文字列とインデックステーブル名とから、キャッシュ取得処理を組み立てて、検索実行部16に送信する(S205とS206)。例えば、SQL解析部15は、SQLのWHERE句で指定された文字列「い」を検索文字列として、「テーブルα_B」名のインデックステーブルを検索する指示を検索実行部16に送信する。
検索実行部16は、インデックステーブル名のキャッシュオブジェクトをキャッシュサーバ20から取得する(S207とS208)。例えば、検索実行部16は、JPAの規約に基づいて、キャッシュサーバ20のインデックステーブル「テーブルα_B」とコネクションを確立する。
続いて、検索実行部16は、取得したキャッシュオブジェクトから、検索文字列をキーにして値を取得する(S209とS210)。すなわち、検索実行部16は、SQL解析部15から指定されたインデックステーブルに対して、SQL解析部15から受信した検索文字列「い」をキーにして値(Value)を検索する指示を、キャッシュサーバ20に送信する。そして、検索実行部16は、キャッシュサーバ20から検索結果として値「Value=2、4」を取得する。
その後、検索実行部16は、検索結果をSQL解析部15に送信し(S211)、SQL解析部15は、検索結果を要素とする配列を生成して要素1つを選択する(S212)。例えば、検索実行部16は、検索結果である「2、4」を配列として保持し、そのうちの「2」を選択する。
その後、SQL解析部15は、選択した要素とFROM句で指定されたテーブル名とからキャッシュ取得処理を組み立てて、検索実行部16に送信する(S213とS214)。すなわち、SQL解析部15は、選択した要素「2」をキーにして、SQLのFROM句で指定された「テーブルα」名のキャッシュテーブルを検索する指示を検索実行部16に送信する。
検索実行部16は、キャッシュテーブル名のキャッシュオブジェクトをキャッシュサーバ20から取得する(S215とS216)。例えば、検索実行部16は、JPAの規約に基づいて、キャッシュサーバ20のキャッシュテーブル「テーブルα」とコネクションを確立する。
続いて、検索実行部16は、取得したキャッシュオブジェクトから、選択された要素をキーにして値を取得する(S217とS218)。すなわち、検索実行部16は、SQL解析部15から指定されたキャッシュテーブルに対して、SQL解析部15から受信した要素「2」をキーにして値(Value)を検索する指示を、キャッシュサーバ20に送信する。そして、検索実行部16は、キャッシュサーバ20から検索結果として値「クラス2」を取得する。
その後、検索実行部16は、検索結果をSQL解析部15に送信し(S219)、SQL解析部15は、S212で生成した配列に未検索の要素があるか否かを判定する(S220)。そして、SQL解析部15は、配列に未検索の要素があると判定した場合(S220:Yes)、次の要素についてS212以降を繰り返す。例えば、SQL解析部15は、未検索の要素「4」についてS212以降を繰り返す。なお、要素「4」に対してはクラス4が検索されたとする。
一方、SQL解析部15は、配列に未検索の要素がないと判定した場合(S220:No)、S212からS220を繰り返して得られた検索結果を配列として組み立てて(S221)、アプリケーション14へ返却する(S222)。例えば、SQL解析部15は、最終的な検索結果である「クラス2」と「クラス4」とをアプリケーション14へ返却する。
[JOIN処理のシーケンス]
図7は、実施例2に係る分散KVSシステムのJOIN処理の流れを示す処理シーケンス図である。なお、ここでは、3行3列から構成される2つのRDB各々についてKVSが生成されているとする。つまり、テーブルαとテーブルβ各々について、キャッシュテーブルとインデックステーブルとが生成されているとする。ここでは、アプリケーション14からSQLとして「“SELECT * FROM テーブルα WHERE B=‘い’ JOIN テーブルβ ON テーブルα.B=テーブルβ.E”」が発行されたものとする。
図7に示すように、アプリケーションサーバ10のSQL解析部15は、図6と同様の検索処理を実行して、検索対象のテーブルαからデータを検索する(S301)。
続いて、SQL解析部15は、アプリケーション14から受信したSQLのJOIN句からJOIN対象のテーブル名を取得し(S302)、SQLのON句の右辺からカラム名を取得する(S303)。例えば、SQL解析部15は、JOIN句からテーブル名「テーブルβ」を取得し、ON句の右辺「テーブルβ.E」からカラム名「E」を取得する。
そして、SQL解析部15は、JOINテーブル名とJOINカラム名とからJOINインデックステーブル名を組み立てる(S304)。例えば、SQL解析部15は、S302で取得した「テーブルβ」と、S303で取得した「E」とから、インデックステーブル名「テーブルβ_E」を生成する。
続いて、SQL解析部15は、SQLのWHERE句で取得した文字列を配列で保持し、1つの要素を選択する(S305)。例えば、SQL解析部15は、WHERE句から「B =‘い’」を取得して配列で管理する。
その後、SQL解析部15は、SQLのON句の左辺からカラム名を取得し(S306)、JOINインデックステーブル名に対するキャッシュ取得処理を組み立てる(S307とS308)。例えば、SQL解析部15は、SQLのON句の左辺「テーブルα.B」からカラム名「B」を取得し、WHERE句から取得された文字列からカラム名「B」に対応する「B =‘い’」を特定する。そして、SQL解析部15は、S304で生成されたインデックステーブル名「テーブルβ_E」に対して、検索キーを「い」とする検索処理を組み立てる。
検索実行部16は、インデックステーブル名のキャッシュオブジェクトをキャッシュサーバ20から取得する(S309とS310)。例えば、検索実行部16は、JPAの規約に基づいて、キャッシュサーバ20のインデックステーブル「テーブルβ_E」とコネクションを確立する。
続いて、検索実行部16は、取得したキャッシュオブジェクトから、検索文字列をキーにして値を取得する(S311とS312)。すなわち、検索実行部16は、インデックステーブル「テーブルβ_E」に対して、「い」をキーにして値(Value)を検索する指示を、キャッシュサーバ20に送信する。そして、検索実行部16は、キャッシュサーバ20から検索結果として値「Value=b」を取得する。
その後、検索実行部16は、検索結果をSQL解析部15に送信し(S313)、SQL解析部15は、検索結果を要素とする配列を生成して要素1つを選択する(S314)。例えば、検索実行部16は、検索結果である「b」を配列として保持し、そのうちの「b」を選択する。
その後、SQL解析部15は、選択した要素とJOIN句で指定されたテーブル名とからキャッシュ取得処理を組み立てて、検索実行部16に送信する(S315とS316)。すなわち、SQL解析部15は、選択した値「b」をキーにして、SQLのJOIN句で指定された「テーブルβ」名のキャッシュテーブルを検索する指示を検索実行部16に送信する。
検索実行部16は、キャッシュテーブル名のキャッシュオブジェクトをキャッシュサーバ20から取得する(S317とS318)。例えば、検索実行部16は、JPAの規約に基づいて、キャッシュサーバ20のキャッシュテーブル名「テーブルβ」とコネクションを確立する。
続いて、検索実行部16は、取得したキャッシュオブジェクトから、選択された要素をキーにして値を取得する(S319とS320)。すなわち、検索実行部16は、キャッシュテーブル「テーブルβ」に対して、要素「b」をキーにして値(Value)を検索する指示を、キャッシュサーバ20に送信する。そして、検索実行部16は、キャッシュサーバ20から検索結果として値「クラスb」を取得する。
その後、検索実行部16は、検索結果をSQL解析部15に送信し(S321)、SQL解析部15は、S314で生成した配列に未検索の要素があるか否かを判定する(S322)。そして、SQL解析部15は、配列に未検索の要素があると判定した場合(S322:Yes)、次の要素についてS314以降を繰り返す。この例では、SQL解析部15は、S314で生成した配列には要素が「b」しかないので、NOと判定する。
一方、SQL解析部15は、配列に未検索の要素がないと判定した場合(S322:No)、S305でWHERE句から取得した文字列を格納する配列に、未検索の要素があるか否かを判定する(S323)。
そして、SQL解析部15は、S305でWHERE句から取得した文字列を格納する配列に、未検索の要素がある場合(S323:Yes)、次の要素についてS305以降を繰り返す。この例では、SQL解析部15は、S305で生成した配列には要素が「B =‘い’」しかないので、NOと判定する。
一方、SQL解析部15は、S305でWHERE句から取得した文字列を格納する配列に、未検索の要素がない場合(S323:No)、S324を実行する。すなわち、SQL解析部15は、S301で取得された検索結果と、S302からS323を繰り返して得られた検索結果とをマージし、マージした結果を配列として組み立てて、アプリケーション14へ返却する。例えば、SQL解析部15は、S301で取得された最終的な検索結果である「クラス2」と「クラス4」と、S302からS323を繰り返して得られた最終的な検索結果「クラスB」とをマージして、アプリケーション14へ返却する。
[検索処理の具体例]
図8は、検索処理の具体例を説明する図である。図8に示すように、キャッシュサーバ20の第1記憶部23は、インデックス名が「テーブルα_B」のインデックステーブルと、インデックス名が「テーブルα_C」のインデックステーブルとを記憶する。「テーブルα_B」は、「あ、い、う」をキー、「1、2、3、4」をValueとするKVSである。すなわち、「テーブルα_B」は、「キー、Value」として「あ、1」、「い、2、4」、「う、3」を記憶する。同様に、「テーブルα_C」は、データ「ア、イ、ウ」をキー、「1、2、3、4」をValueとするKVSである。すなわち、「テーブルα_C」は、「キー、Value」として「ア、1、4」、「イ、2」、「ウ、3」を記憶する。
また、図8に示すように、第2記憶部24は、キャッシュ名が「テーブルα」のキャッシュテーブルを記憶する。「テーブルα」は、「1、2、3」をキー、クラス化した情報をValueとするKVSである。具体的には、「テーブルα」は、「キー、Value」として「1、クラス1」、「2、クラス2」、「3、クラス3」、「4、クラス4」を記憶する。
このような状態において、アプリケーション14からSQL文「“SELECT * FROM テーブルα WHERE B =‘い’”」が発行されたとする。アプリケーションサーバ10は、SQL文からFROM句の「テーブルα」とWHERE句の「B」を組み合わせて「テーブルα_B」を生成する。そして、アプリケーションサーバ10は、WHERE句の文字列「い」を検索キーとして、「テーブルα_B」をテーブル名とするインデックステーブルを検索する指示をキャッシュサーバ20に送信する(S401)。
その後、アプリケーションサーバ10は、キャッシュサーバ20から検索結果として「2」と「4」を受信する。そして、アプリケーションサーバ10は、「2」と「4」それぞれを検索キーとして、「テーブルα」をテーブル名とするキャッシュテーブルを検索する指示をキャッシュサーバ20に送信する(S402)。
その後、キャッシュサーバ20は、検索キー「2」に対応するValue「クラス2」と、検索キー「4」に対応するValue「クラス4」とを検索結果として、アプリケーションサーバ10に返却する(S403)。
[JOIN処理の具体例]
図9は、JOIN処理の具体例を説明する図である。図9に示すように、キャッシュサーバ20は、テーブルαとテーブルβと各々について、キャッシュテーブルとインデックステーブルとを記憶する。
具体的には、キャッシュサーバ20の第1記憶部23は、テーブルαのインデックステーブルとして、インデックス名が「テーブルα_B」のインデックステーブルと、インデックス名が「テーブルα_C」のインデックステーブルとを記憶する。「テーブルα_B」は、「あ、い、う」をキー、「1、2、3」をValueとするKVSである。すなわち、「テーブルα_B」は、「キー、Value」として「あ、1」、「い、2」、「う、3」を記憶する。同様に、「テーブルα_C」は、データ「ア、イ、ウ」をキー、「1、2、3」をValueとするKVSである。すなわち、「テーブルα_C」は、「キー、Value」として「ア、1」、「イ、2」、「ウ、3」を記憶する。
また、キャッシュサーバ20の第1記憶部23は、テーブルβのインデックステーブルとして、インデックス名が「テーブルβ_E」のインデックステーブルと、インデックス名が「テーブルβ_F」のインデックステーブルとを記憶する。「テーブルβ_E」は、「あ、い、う」をキー、「a、b、c」をValueとするKVSである。すなわち、「テーブルβ_E」は、「キー、Value」として「あ、a」、「い、b」、「う、c」を記憶する。同様に、「テーブルβ_F」は、データ「Ω、Γ、Σ」をキー、「a、b、c」をValueとするKVSである。すなわち、「テーブルβ_F」は、「キー、Value」として「Ω、a」、「Γ、b」、「Σ、c」を記憶する。
また、図9に示すように、第2記憶部24は、キャッシュ名が「テーブルα」のキャッシュテーブルを記憶する。「テーブルα」は、「1、2、3」をキー、クラス化した情報をValueとするKVSである。具体的には、「テーブルα」は、「キー、Value」として「1、クラス1」、「2、クラス2」、「3、クラス3」を記憶する。また、第2記憶部24は、キャッシュ名が「テーブルβ」のキャッシュテーブルを記憶する。「テーブルβ」は、「a、b、c」をキー、クラス化した情報をValueとするKVSである。具体的には、「テーブルβ」は、「キー、Value」として「a、クラスA」、「b、クラスB」、「c、クラスC」を記憶する。
このような状態において、アプリケーション14からSQL文「“SELECT * FROM テーブルα WHERE B=‘い’ JOIN テーブルβ ON テーブルα.B=テーブルβ.E”」が発行されたとする。
アプリケーションサーバ10は、S501を実行する。すなわち、アプリケーションサーバ10は、SQL文からFROM句の「テーブルα」とWHERE句の「B」を組み合わせて「テーブルα_B」を生成する。そして、アプリケーションサーバ10は、WHERE句の文字列「い」を検索キーとして、「テーブルα_B」をテーブル名とするインデックステーブルを検索する指示をキャッシュサーバ20に送信する。その後、アプリケーションサーバ10は、キャッシュサーバ20から検索結果として「2」を受信する。そして、アプリケーションサーバ10は、「2」を検索キーとしてキャッシュテーブル「テーブルα」を検索する指示をキャッシュサーバ20に送信し、検索キー「2」に対応するValue「クラス2」を取得する。
続いて、アプリケーションサーバ10は、S502を実行する。すなわち、アプリケーションサーバ10は、SQL文からJOIN句の「テーブルβ」とON句の「E」を組み合わせて「テーブルβ_E」を生成する。そして、アプリケーションサーバ10は、WHERE句の文字列「い」を検索キーとして、「テーブルβ_E」をテーブル名とするインデックステーブルを検索する指示をキャッシュサーバ20に送信する。その後、アプリケーションサーバ10は、キャッシュサーバ20から検索結果として「b」を受信する。そして、アプリケーションサーバ10は、「b」を検索キーとしてキャッシュテーブル「テーブルβ」を検索する指示をキャッシュサーバ20に送信し、検索キー「b」に対応するValue「クラスB」を取得する。
その後、アプリケーションサーバ10は、S501で得られた検索結果「クラス2」と、S502で得られた検索結果「クラスB」とをマージし、マージ結果をアプリケーション14に返却する(S503)。
このように、実施例2に係るアプリケーションサーバ10は、SQLを解析し、最適なインデックスを使用して、検索キーに対応するValue(クラス)のみ返却することができる。この結果、すべてのValueを取り出さなくとも、列検索を実行することができる。また、RDBを利用する仕様のアプリケーションについて、データベースを分散KVSに移行させる場合にでも、検索コマンドをSQLからKVS用に改版することなく、SQLで検索処理を実行することができる。この結果、システムの改変に係るコストや人件費等を抑制することができる。したがって、RDBシステムからKVSシステムへの変換が容易になる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(ハードウェア)
図10は、ハードウェア構成例を示す図である。ここで示したハードウェア構成は、図2に示した各装置に該当する。図10に示すように、コンピュータ100は、メモリ101、HDD(Hard Disk Drive)102、ドライブ装置103、通信制御部104、入力装置105、表示制御部106、表示装置107、CPU108を有する。また、図10に示した各部は、バス100aで相互に接続される。
HDD102は、図3等に示した機能を実行するプログラムなどを記憶する。記録媒体の例としてHDD102を例に挙げたが、ROM(Read Only Memory)、RAM、CD−ROM等の他のコンピュータが読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータ100に読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータ100が、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
通信制御部104は、NIC(Network Interface Card)などのインタフェースであい、入力装置105は、キーボードやマウスなどである。表示制御部106は、表示装置107への表示制御実行し、表示装置107は、ディスプレイなどである。
CPU108は、図2に示した各処理部と同様の処理を実行するプログラムをHDD102等から読み出してメモリ101に展開することで、図2等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、コンピュータ100がアプリケーションサーバ10である場合には、アプリケーションサーバ10が有する各処理部と同様の機能を実行する。すなわち、このプロセスは、SQL解析部15と同様の処理を実行する手順と、検索実行部16と同様の処理を実行する手順とを実行する。
また、このプロセスは、コンピュータ100がキャッシュサーバ20である場合には、キャッシュサーバ20が有する各処理部と同様の機能を実行する。すなわち、このプロセスは、要求処理部26と同様の処理を実行する手順と、キャッシュ処理部27と同様の処理を実行する手順とを実行する。このようにコンピュータ100は、プログラムを読み出して実行することでデータベース検索方法を実行する情報処理装置として動作する。
また、コンピュータ100がキャッシュサーバ20である場合には、メモリ101は、第1記憶部23が記憶する各テーブルと、第2記憶部24が記憶する各テーブルとを記憶される。
また、コンピュータ100は、ドライブ装置103によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
第1のデータベースにおける列に含まれるデータと前記第1のデータベースにおいて当該データに対応付けられるキー値とを対応付けて記憶する第1記憶部から、前記第1のデータベースに対して発行された検索要求に基づいて、前記データと当該データに対応付けられるキー値とを特定し、
前記第1のデータベースにおけるキー値と前記第1のデータベースにおいて前記キー値に対応付けられる行とを対応付けて記憶する第2記憶部から、前記特定したキー値に対応付けられる行を検索する
各処理を実行させることを特徴とするデータ検索プログラム。
(付記2)前記第1記憶部は、複数の第1のデータベースにおける各第1のデータベースごとに、前記列に含まれるデータと前記キー値との対応付けを記憶し、
前記第2記憶部は、前記複数の第1のデータベースにおける各第1のデータベースごとに、前記キー値と前記行とを対応付けを記憶し、
前記特定する処理は、前記検索要求に検索結果を統合する要求が含まれる場合に、前記検索要求で指定される第1のデータベースごとに、前記第1記憶部から前記データと前記キー値との組み合わせを特定し、
前記検索する処理は、前記検索要求で指定される第1のデータベースごとに、前記特定されたキー値に対応付けられる行を前記第2記憶部から検索し、さらに、検索した各行を統合することを特徴とする付記1に記載のデータ検索プログラム。
(付記3)前記第2記憶部は、前記第1のデータベースにおけるキー値に対応付けて、前記キー値に対応付けられる行をクラス化したオブジェクト情報、または、前記キー値に対応付けられる行の各データ値を配列にした配列情報を記憶し、
前記検索する処理は、前記第2記憶部から、前記特定したキー値に対応付けられる前記オブジェクト情報または前記配列情報を検索し、さらに、検索結果を前記検索要求の発行元に応答することを特徴とする付記1に記載のデータ検索プログラム。
(付記4)第1のデータベースにおける列に含まれるデータと、前記第1のデータベースにおいて当該データに対応付けられるキー値と、を対応付けて記憶する第1記憶部と、
前記第1のデータベースにおけるキー値と、前記第1のデータベースにおいて前記キー値に対応付けられる行と、を対応付けて記憶する第2記憶部と、
前記第1のデータベースに対して発行された検索要求から、前記第1記憶部に記憶されるデータと当該データに対応付けられるキー値とを特定する特定部と、
前記特定部によって特定されたキー値に対応付けられる行を前記第2記憶部から検索する検索部と
を有することを特徴とするデータベース装置。
(付記5)第1のデータベースにおける列に含まれるデータと前記第1のデータベースにおいて当該データに対応付けられるキー値とを対応付けて記憶する第1記憶部から、前記第1のデータベースに対して発行された検索要求に基づいて前記データと当該データに対応付けられるキー値とを特定し、
前記第1のデータベースにおけるキー値と前記第1のデータベースにおいて前記キー値に対応付けられる行とを対応付けて記憶する第2記憶部から、前記特定したキー値に対応付けられる行を検索する
各処理をコンピュータに実行させるデータ検索プログラムを記憶する、コンピュータ読み取り可能な記憶媒体。
(付記6)第1のサーバと第2のサーバとを有する情報処理システムであって、
前記第1のサーバは、
第1のデータベースにおける列に含まれるデータと、前記第1のデータベースにおいて当該データに対応付けられるキー値と、を対応付けて記憶する第1記憶部と、
前記第1のデータベースにおけるキー値と、前記第1のデータベースにおいて前記キー値に対応付けられる行と、を対応付けて記憶する第2記憶部と、を有し、
前記第2のサーバは、
前記第1のデータベースに対して発行された検索要求から、前記第1記憶部に記憶されるデータと当該データに対応付けられるキー値とを特定する特定部と、
前記特定部によって特定されたキー値に対応付けられる行を前記第2記憶部から検索する検索部と
を有することを特徴とする情報処理システム。
(付記7)コンピュータが
第1のデータベースにおける列に含まれるデータと前記第1のデータベースにおいて当該データに対応付けられるキー値とを対応付けて記憶する第1記憶部から、前記第1のデータベースに対して発行された検索要求に基づいて前記データと当該データに対応付けられるキー値とを特定し
前記第1のデータベースにおけるキー値と前記第1のデータベースにおいて前記キー値に対応付けられる行とを対応付けて記憶する第2記憶部から、前記特定したキー値に対応付けられる行を検索する
各処理を実行することを特徴とするデータ検索方法。
(付記8)メモリと
前記メモリに接続されるプロセッサと、を有し、
前記メモリは、第1のデータベースにおける列に含まれるデータと前記第1のデータベースにおいて当該データに対応付けられるキー値とを対応付ける第1のテーブルと、前記第1のデータベースにおけるキー値と前記第1のデータベースにおいて前記キー値に対応付けられる行とを対応付ける第2のテーブルとを有し、
前記プロセッサが、
前記第1のデータベースに対して発行された検索要求に基づいて前記データと当該データに対応付けられるキー値とを、前記第1のテーブルから特定し、
特定したキー値に対応付けられる行を前記第2のテーブルから検索する
各処理を実行することを特徴とする情報処理装置。
1 データベース検索装置
1a 第1記憶部
1b 第2記憶部
1c 特定部
1d 検索部
5 RDBサーバ
6 ネットワーク
10 アプリケーションサーバ
11 通信制御インタフェース部
12 記憶部
13 制御部
14 アプリケーション
15 SQL解析部
16 検索実行部
20 キャッシュサーバ
21 通信制御インタフェース部
22 記憶部
23 第1記憶部
24 第2記憶部
25 制御部
26 要求処理部
27 キャッシュ処理部

Claims (6)

  1. コンピュータに、
    複数のデータ群を行と列とを有するテーブル形式で記憶する関係データベースにおける前記列のデータと前記関係データベースにおいて前記列のデータに対応付けられるキー値とを対応付けてキーバリューストア方式で記憶する第1記憶部から、前記関係データベースに対して発行された検索要求に基づいて、前記列のデータと当該列のデータに対応付けられるキー値とを特定し、
    前記関係データベースにおける前記行のデータと前記関係データベースにおいて前記行のデータに対応付けられるキー値とを対応付けてキーバリューストア方式で記憶する第2記憶部から、前記特定したキー値に対応付けられる行のデータを検索する
    各処理を実行させることを特徴とするデータ検索プログラム。
  2. 前記第1記憶部は、複数の前記関係データベースにおける各関係データベースごとに、前記列データと前記キー値との対応付けを記憶し、
    前記第2記憶部は、前記複数の関係データベースにおける各関係データベースごとに、前記キー値と前記行のデータとを対応付けを記憶し、
    前記特定する処理は、前記検索要求に検索結果を統合する要求が含まれる場合に、前記検索要求で指定される関係データベースごとに、前記第1記憶部から前記列のデータと前記キー値との組み合わせを特定し、
    前記検索する処理は、前記検索要求で指定される関係データベースごとに、前記特定されたキー値に対応付けられる行のデータを前記第2記憶部から検索し、さらに、検索した各行のデータを統合することを特徴とする請求項1に記載のデータ検索プログラム。
  3. 前記第2記憶部は、前記関係データベースにおけるキー値に対応付けて、前記キー値に対応付けられる行のデータをクラス化したオブジェクト情報、または、前記キー値に対応付けられる行のデータの各データ値を配列にした配列情報を記憶し、
    前記検索する処理は、前記第2記憶部から、前記特定したキー値に対応付けられる前記オブジェクト情報または前記配列情報を検索し、さらに、検索結果を前記検索要求の発行元に応答することを特徴とする請求項1に記載のデータ検索プログラム。
  4. 前記第1記憶部のテーブル名には、前記関係データベースのテーブル名と前記関係データベースにおける列名とを組み合わせたテーブル名が設定され、
    前記第2記憶部のテーブル名には、前記関係データベースのテーブル名と同じテーブル名が設定され、
    前記検索する処理は、前記テーブル名と前記列名とが指定されるとともに検索キーが指定された検索要求を受信した場合、前記テーブル名と前記列名とから前記第1記憶部のテーブル名を特定し、特定したテーブル名のテーブルに記憶されるデータのうち、前記検索キーをキー値とする前記列のデータを検索し、
    前記特定する処理は、前記検索する処理において検索された前記列のデータを検索キーとして、前記検索要求に含まれる前記テーブル名が設定された前記第2記憶部を検索し、当該検索キーをキー値とする前記行のデータを特定することを特徴とする請求項1に記載のデータ検索プログラム。
  5. 複数のデータ群を行と列とを有するテーブル形式で記憶する関係データベースにおける前記列のデータと前記関係データベースにおいて前記列のデータに対応付けられるキー値とを対応付けてキーバリューストア方式で記憶する第1記憶部と、
    前記関係データベースにおける前記行のデータと前記関係データベースにおいて前記行のデータに対応付けられるキー値とを対応付けてキーバリューストア方式で記憶する第2記憶部と、
    前記関係データベースに対して発行された検索要求から、前記第1記憶部に記憶される列のデータと当該列のデータに対応付けられるキー値とを特定する特定部と、
    前記特定部によって特定されたキー値に対応付けられる行のデータを前記第2記憶部から検索する検索部と
    を有することを特徴とするデータベース装置。
  6. 第1のサーバと第2のサーバとを有する情報処理システムであって、
    前記第1のサーバは、
    複数のデータ群を行と列とを有するテーブル形式で記憶する関係データベースにおける前記列のデータと前記関係データベースにおいて前記列のデータに対応付けられるキー値とを対応付けてキーバリューストア方式で記憶する第1記憶部と、
    前記関係データベースにおける前記行のデータと前記関係データベースにおいて前記行のデータに対応付けられるキー値とを対応付けてキーバリューストア方式で記憶する第2記憶部と、を有し、
    前記第2のサーバは、
    前記関係データベースに対して発行された検索要求から、前記第1記憶部に記憶される列のデータと当該列のデータに対応付けられるキー値とを特定する特定部と、
    前記特定部によって特定されたキー値に対応付けられる行のデータを前記第2記憶部から検索する検索部と
    を有することを特徴とする情報処理システム。
JP2012189105A 2012-08-29 2012-08-29 データ検索プログラム、データベース装置および情報処理システム Expired - Fee Related JP5994490B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012189105A JP5994490B2 (ja) 2012-08-29 2012-08-29 データ検索プログラム、データベース装置および情報処理システム
US13/954,044 US20140067853A1 (en) 2012-08-29 2013-07-30 Data search method, information system, and recording medium storing data search program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012189105A JP5994490B2 (ja) 2012-08-29 2012-08-29 データ検索プログラム、データベース装置および情報処理システム

Publications (2)

Publication Number Publication Date
JP2014048741A JP2014048741A (ja) 2014-03-17
JP5994490B2 true JP5994490B2 (ja) 2016-09-21

Family

ID=50188930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012189105A Expired - Fee Related JP5994490B2 (ja) 2012-08-29 2012-08-29 データ検索プログラム、データベース装置および情報処理システム

Country Status (2)

Country Link
US (1) US20140067853A1 (ja)
JP (1) JP5994490B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095268A (zh) * 2014-05-12 2015-11-25 深圳市同洲电子股份有限公司 结构化数据的存取方法以及装置
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
WO2018025706A1 (ja) 2016-08-05 2018-02-08 日本電気株式会社 テーブル意味推定システム、方法およびプログラム
KR101917806B1 (ko) * 2017-12-22 2018-11-12 주식회사 웨어밸리 Sql 패킷분석을 통한 이기종 데이터베이스의 데이터 복제 및 동기화 오류 탐지 방법 및 시스템
CN110609839B (zh) 2019-09-17 2021-05-25 北京海益同展信息科技有限公司 区块链数据处理的方法、装置、设备及可读存储介质
CN110704437B (zh) * 2019-09-26 2022-05-20 上海达梦数据库有限公司 数据库查询语句的修改方法、装置、设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001101233A (ja) * 1999-10-04 2001-04-13 Ricoh Co Ltd データベース処理装置
US8583657B2 (en) * 2004-05-06 2013-11-12 Oracle International Corporation Method and apparatus for using a hash-partitioned index to access a table that is not partitioned or partitioned independently of the hash partitioned index
US8356021B2 (en) * 2005-03-11 2013-01-15 Ross Neil Williams Method and apparatus for indexing in a reduced-redundancy storage system
US7512597B2 (en) * 2006-05-31 2009-03-31 International Business Machines Corporation Relational database architecture with dynamic load capability
US8745061B2 (en) * 2010-11-09 2014-06-03 Tibco Software Inc. Suffix array candidate selection and index data structure
US9208211B2 (en) * 2011-03-23 2015-12-08 Red Hat, Inc. Performing object relational mapping for a data grid
EP2724269B1 (en) * 2011-06-27 2020-02-19 Jethrodata Ltd. System, method and data structure for fast loading, storing and access to huge data sets in real time
US9031992B1 (en) * 2011-09-30 2015-05-12 Emc Corporation Analyzing big data
US8700683B2 (en) * 2011-10-24 2014-04-15 Nokia Corporation Method and apparatus for providing a key-value based storage interface
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store

Also Published As

Publication number Publication date
US20140067853A1 (en) 2014-03-06
JP2014048741A (ja) 2014-03-17

Similar Documents

Publication Publication Date Title
Curtiss et al. Unicorn: A system for searching the social graph
JP5994490B2 (ja) データ検索プログラム、データベース装置および情報処理システム
JP6691280B1 (ja) 管理システム及び管理方法
US20060074858A1 (en) Method and apparatus for querying relational databases
US20180004838A1 (en) System and method for language sensitive contextual searching
WO2019169858A1 (zh) 一种基于搜索引擎技术的数据分析方法及***
JP2012073951A (ja) 文字列比較プログラム、文字列比較装置及び文字列比較方法
CN104067273A (zh) 将搜索结果分组为简档页面
KR101651780B1 (ko) 빅 데이터 처리 기술을 이용한 연관 단어 추출 방법 및 그 시스템
CA3149710A1 (en) Data collecting method, device, computer equipment and storage medium
CN109471889A (zh) 报表加速方法、***、计算机设备和存储介质
US20060074857A1 (en) Method and apparatus for querying relational databases
JP2010257001A (ja) 検索サポートキーワード提示装置、方法及びプログラム
JP2001290840A (ja) キーワード検索装置
CN113297251A (zh) 多源数据检索方法、装置、设备及存储介质
KR101035037B1 (ko) 동적 임계값이 적용된 유사문서 분류화 장치 및 방법
JP5743938B2 (ja) 連想検索システム、連想検索サーバ及びプログラム
US10394870B2 (en) Search method
JP2009230296A (ja) 文書検索システム
JP2014089646A (ja) 電子データ処理装置、及び電子データ処理方法
JP7428250B2 (ja) 文書検索の性能を評価する方法、システム、および装置
JP5162215B2 (ja) データ処理装置、データ処理方法、および、プログラム
KR100659370B1 (ko) 시소러스 매칭에 의한 문서 db 형성 방법 및 정보검색방법
JP2009294768A (ja) 情報共有装置及び情報共有プログラム
Sazontev et al. An extensible approach for materialized big data integration in distributed computation environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160404

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160808

R150 Certificate of patent or registration of utility model

Ref document number: 5994490

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees