(57)【特許請求の範囲】
【請求項１】
配列パターンを蓄積したデータベースにアクセスし、当該データベースに蓄積されている配列パターンが所定の配列中に存在するかを問い合わせるデータベース検索装置において、
検索対象である検索配列を分割して複数の部分配列を作成する配列加工部と、
前記配列加工部により作成された前記複数の部分配列のそれぞれを問い合わせ配列として前記データベースに対しクエリーを発行するクエリー発行部と
を備え、
前記配列加工部は、前記検索配列に関するデータベース検索には寄与しないダミー配列を作成し、前記部分配列に追加することを特徴とするデータベース検索装置。
【請求項２】
配列パターンを蓄積したデータベースにアクセスし、当該データベースに蓄積されている配列パターンが所定の配列中に存在するかを問い合わせるデータベース検索装置において、
検索対象である検索配列に任意の配列を接続する配列加工部と、
前記配列加工部により加工された前記検索配列を問い合わせ配列として前記データベースに対しクエリーを発行するクエリー発行部と
を備えることを特徴とするデータベース検索装置。
【請求項３】
前記配列加工部は、前記検索配列に任意の配列を接続して得られた配列を分割して複数の部分配列を作成し、
前記クエリー発行部は、前記複数の部分配列を問い合わせ配列として前記データベースに対しクエリーを発行することを特徴とする請求項２に記載のデータベース検索装置。
【請求項４】
前記データベースから検索結果を受け取り、受け取った当該検索結果から前記検索配列に対する検索結果に相当する情報を抽出する情報抽出部をさらに備えたことを特徴とする請求項２に記載のデータベース検索装置。
【請求項５】
配列パターンを蓄積したデータベースにアクセスし、当該データベースに蓄積されている配列パターンが所定の配列中に存在するかを問い合わせるデータベース検索装置において、
検索対象である検索配列を、当該検索配列の所定の部分ごとに複数回にわたって前記データベースへの問い合わせを行う問い合わせ手段と、
前記データベースから検索結果を受け取り、前記検索配列に対する検索結果に相当する情報を抽出する情報抽出手段と
を備えることを特徴とするデータベース検索装置。
【請求項６】
前記問い合わせ手段は、前記データベースに蓄積された配列パターンの長さに応じて、所定の長さの配列要素を重複させながら前記検索配列の部分を切り出し、当該部分ごとに前記データベースへの問い合わせを行うことを特徴とする請求項５に記載のデータベース検索装置。
【請求項７】
コンピュータを制御して、配列パターンを蓄積したデータベースにアクセスし、当該データベースに蓄積されている配列パターンが所定の配列中に存在するかの問い合わせを行うプログラムであって、
検索対象である検索配列を分割して複数の部分配列を作成する配列加工手段と、
前記配列加工手段により作成された前記複数の部分配列のそれぞれを問い合わせ配列として前記データベースに対しクエリーを発行するクエリー発行手段として、
前記コンピュータを動作させ、
前記プログラムにて実現される前記配列加工手段は、前記検索配列に関するデータベース検索には寄与しないダミー配列を作成し、
前記プログラムにて実現される前記クエリー発行手段は、作成された前記ダミー配列を問い合わせ配列として前記データベースに対しクエリーを発行することを特徴とするプログラム。
【請求項８】
コンピュータを制御して、配列パターンを蓄積したデータベースにアクセスし、当該データベースに蓄積されている配列パターンが所定の配列中に存在するかの問い合わせを行うプログラムであって、
検索対象である検索配列を分割して複数の部分配列を作成する配列加工手段と、
前記配列加工手段により作成された前記複数の部分配列のそれぞれを問い合わせ配列として前記データベースに対しクエリーを発行するクエリー発行手段として、
前記コンピュータを動作させ、
前記プログラムにて実現される前記配列加工手段は、
前記検索配列の分割に先立って、当該検索配列に任意の配列を接続して新たな配列を作成し、
作成された前記新たな配列を分割して複数の部分配列を作成することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベース検索方法に関し、特にクエリーを発行するクライアント以外には検索対象を隠蔽することができるデータベース検索方法に関する。
【０００２】
【従来の技術】
近年、ＤＮＡなどの多くの遺伝子情報が解読され、その成果が、モチーフデータベースなど、様々な公開データベースに蓄積されている。そして、新しく得られたＤＮＡの解析結果などに関して、これらのデータベースを利用して関連情報の検索が行われる。
【０００３】
例えば、モチーフデータベースは、ＤＮＡや蛋白質における機能と関連した様々なパターンを集めたデータベースである。このデータベースには、
A..T..ATAT...CGATGA  （. は任意の文字を表す）
A..[AT]..ATCG.A      （[AT] はAまたはTを表す）
のようなパターンが蓄積されている。したがって、ＤＮＡの解析結果を照合することにより、当該解析結果中にどのようなパターンが含まれているか、すなわち、当該解析結果にかかるＤＮＡがどのような機能を持っているかを検索することができる。
【０００４】
一方、このようなデータベース検索においては、データベースに対するクエリー（query：問い合わせ）に個人情報や研究開発上の機密性の高い情報などが含まれる場合があり、その漏洩が懸念される。従来、このデータベース検索における情報の漏洩を防止する対策としては、クエリーにかかるデータを暗号化する方法や、Private Information Retrievalという検索手法などが知られていた。
【０００５】
【発明が解決しようとする課題】
上述したように、公開されたデータベースを用いてデータベース検索を行う場合、クエリーに含まれる情報が漏洩する可能性があり、これを効果的に防止する手段が望まれている。
【０００６】
情報の漏洩を防ぐ方法の一つである暗号化されたデータを用いた検索方法は、暗号化したデータを含むクエリーをデータベースに送り、データベースにおいて当該暗号化されたデータをデコードした後に検索処理を行い、結果を返す方法である。そして、暗号化には様々な手法が存在している。
しかしながら、この方法は、データベースにおいて暗号化されたデータをデコードする機能を持たなければならないため、導入に手間を要する。
また、データベースの所持者は、クエリーの内容を知ることができるため、情報が漏洩する可能性が残る。
【０００７】
また、Private Information Retrievalは、データベースに対して、当該データベースにおけるどのエントリーを知りたいかを知らせずにクエリーを発行する方法である。したがって、この方法によれば、情報理論的な安全性が理論的に保証され、情報の漏洩を完全に防止できる。
しかしながら、この方法は、処理手順の中にデータベースにおける特殊な動作を含むため、データベースをこの方法による検索に対応させて構築することが必要となる。このため、導入に多大な手間を要する。
また、この方法による安全性の保証に不可欠な部分として、データベースが全てのエントリーを１回ずつ見るという動作が含まれるため、巨大なデータベースにおいては多大な検索時間を要することとなり、現実的ではない。
さらにまた、データシークエンスのマッチングに不可欠な曖昧さを許した検索ができないといった不都合もある。
【０００８】
そこで、本発明は、データベース側に何ら特殊な処理を要求することなく、データベース所持者やネットワークの途中でデータベース検索を観察する者に対して、クエリーの内容を知られずに、データベース検索を行うことが可能な検索方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記の目的を達成する本発明は、配列パターンを蓄積したデータベースにアクセスし、このデータベースに蓄積されている配列パターンが所定の配列中に存在するかを問い合わせるデータベース検索装置において、検索対象である検索配列を分割して複数の部分配列を作成する配列加工部と、この配列加工部により作成された複数の部分配列のそれぞれを問い合わせ配列としてデータベースに対しクエリーを発行するクエリー発行部とを備えることを特徴とする。
【００１０】
ここで、この配列加工部は、データベースに蓄積された配列パターンの長さに応じて、所定の長さの配列要素を重複させてこの複数の部分配列を作成することができる。
このように重複部分を持たせることにより、データベース検索において部分配列を跨いで存在する配列パターンの検出を落とすことを防止できる。
【００１１】
また、この配列加工部は、この検索配列の後端部分の配列要素と、この検索配列の前端部分の配列要素とを接続した配列を作成し、この部分配列に追加することができる。
このような配列を追加し、部分配列と共にクエリーを発行することにより、元の検索配列を知らない者が部分配列から元の検索配列を復元しようとしても、どの部分配列が先頭であるかわからないため、データベース検索における検索配列の機密性を高めることができる。
【００１２】
さらに、この配列加工部は、この検索配列に関するデータベース検索には寄与しないダミー配列を作成し、この部分配列に追加することができる。
このダミー配列としては、複数の部分配列における重複部分を混在させた配列や、部分配列と同様の重複部分を持ちかつ重複しない部分に任意の配列要素を挿入した配列、任意の配列要素で構成され部分配列と共通の長さの配列などを用いることができる。
【００１３】
また、本発明のデータベース検索装置は、次のように構成することができる。すなわち、このデータベース検索装置は、検索対象である検索配列に任意の配列を接続する配列加工部と、この配列加工部により複数の配列を接続して得られた配列を問い合わせ配列としてデータベースに対しクエリーを発行するクエリー発行部とを備えることを特徴とする。
ここで、検索配列に接続する配列は、他の検索配列であっても良いし、意味のないダミー配列であっても良い。複数の配列を接続することによって、データベース検索における本来の目的である検索配列を隠蔽することができる。
【００１４】
さらに、この配列加工部は、この検索配列に任意の配列を接続して得られた配列を分割して複数の部分配列を作成することができる。この場合、クエリー発行部は、この複数の部分配列を問い合わせ配列としてこのデータベースに対しクエリーを発行する。
複数の配列を接続した後に分割することにより、元の検索配列を復元することが一層困難になる。
【００１５】
さらにまた、本発明のデータベース検索装置は、次のような構成とすることができる。すなわち、このデータベース検索装置は、検索対象である検索配列を、この検索配列の所定の部分ごとに複数回にわたってデータベースへの問い合わせを行う問い合わせ手段と、このデータベースから検索結果を受け取り、検索配列に対する検索結果に相当する情報を抽出する情報抽出手段とを備えることを特徴とする。
【００１６】
ここで、この問い合わせ手段は、データベースに蓄積された配列パターンの長さに応じて、所定の長さの配列要素を重複させながらこの検索配列の部分を切り出し、この切り出された部分ごとに前記データベースへの問い合わせを行うことができる。
【００１７】
また、本発明は、コンピュータを制御し、上述したデータベース検索装置における各構成要素として動作させるプログラムとすることができる。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、プログラム伝送装置の記録装置に格納しネットワークを介して配信したりすることにより提供することができる。
【００１８】
さらに、本発明は、次のように構成されたことを特徴とするデータベース検索システムを提供することができる。このデータベース検索システムは、ネットワーク上に設けられ所定の配列パターンを蓄積したデータベースサーバと、このネットワークを介してこのデータベースサーバに対し検索の問い合わせを行うクライアントとを備え、このクライアントは、検索対象である検索配列を分割し、分割により得られた個々の配列に関するクエリーをこのデータベースサーバに対して送信し、このデータベースサーバは、このクライアントから受信したクエリーに対するデータベース検索を行い、検索結果をこのクライアントに返送する。
【００１９】
また、本発明は、配列パターンを蓄積したデータベースにアクセスし、このデータベースに蓄積されている配列パターンが所定の配列中に存在するかを問い合わせるデータベース検索方法において、検索対象である検索配列を分割して複数の部分配列を作成するステップと、作成されたこの複数の部分配列のそれぞれを問い合わせ配列としてデータベースに対しクエリーを発行するステップと、このデータベースから受信したこのクエリーに対する検索結果に基づいて、この検索配列に対する検索結果に相当する情報を抽出するステップとを含むことを特徴とする。
【００２０】
さらに、このデータベース検索方法は、このクエリーを発行するステップに先立って、検索配列に関するデータベース検索には寄与しないダミー配列を作成するステップを含み、このクエリーを発行するステップは、前記ダミー配列を問い合わせ配列として前記データベースに対しクエリーを発行するステップを含むことができる。
【００２１】
また、この部分配列を作成するステップは、検索配列の分割に先立って、この検索配列に任意の配列を接続して新たな配列を作成するステップと、作成されたこの新たな配列を分割して複数の部分配列を作成するステップとを含む構成とすることができる。
【００２２】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本実施の形態は、ある程度の長さを持つ配列の中から特定の配列やパターンを検出するようなデータベース検索を行う。すなわち、データベースには、クエリーにかける配列（以下、問い合わせ配列と称す）に比べて十分に短い配列またはパターンが格納されており、当該問い合わせ配列中に、データベースに格納されている配列やパターンと同一または類似する配列、パターンが存在するかどうかを調べるような検索である。
具体的には、例えば、ＤＮＡの塩基配列を問い合わせ配列とし、遺伝子のモチーフデータベースに蓄積された塩基配列のパターンを検出する場合などが該当する。一般的に、遺伝子のモチーフデータベースにおけるモチーフの長さは４〜４０ｂｐ程度であり、検索にかける問い合わせ配列は、１ｋｂｐ〜数Mｂｐであるので、妥当な設定と言える。
【００２３】
図１は、本実施の形態によるデータベース検索を行うデータベース検索システムの構成を示す図である。
図１に示すように、本実施の形態のデータベース検索システムは、インターネットなどのネットワーク３０上に設けられたデータベースサーバ１０と、ネットワーク３０を介してデータベースサーバ１０にアクセスし検索を行うデータベース検索装置としてのクライアント２０とを備える。
【００２４】
データベースサーバ１０は、ワークステーションやパーソナルコンピュータなどのコンピュータ装置にて実現され、本実施の形態における検索を行うためのデータベース１１を備える。
ここで、本実施の形態にて用いられるデータベース１１について説明する。上述したように、本実施の形態では、ある程度の長さを持つ配列の中から特定の配列やパターンを検出する。したがって、データベース１１にはこの特定の配列やパターンが格納されている。例えば、次のようなデータベースが考えられる。
（ａ）配列データベース
比較的短い配列を集めたデータベース。例えば、ＤＮＡ、ＲＮＡ、蛋白質などにおけるプロモーター配列のデータベースなどが該当する。
（ｂ）モチーフデータベース
ＤＮＡや蛋白質における機能と関連した様々なパターン（モチーフ）を集めたデータベース。このデータベースには、
A..T..ATAT...CGATGA  （. は任意の文字を表す）
A..[AT]..ATCG.A       ([AT] は A または T を表す)
のようなパターンが蓄積されている。
（ｃ）マトリックスデータベース
ある長さの区間で、それぞれの位置における各塩基の出現確率を行列で表し、そのパターンを集めたデータベース。図１６に、マトリックスデータベースの中のパターンの例を示す。
（ｄ）ＨＭＭデータベース
隠れマルコフモデル（Hidden Markov Model）で表現したモチーフを集めたデータベース。ただし、本実施の形態に用いるには長さに上限があるようなものが好ましい。
【００２５】
図２は、図１に示したクライアント２０の構成を説明する図である。
上記のようなデータベースサーバ１０にアクセスするクライアント２０は、ワークステーションやパーソナルコンピュータなどのコンピュータ装置で実現され、検索対象である配列（検索配列）を加工して問い合わせ配列を作成する配列加工部２１と、データベースサーバ１０へのクエリーを発行するクエリー発行部２２と、クエリー発行部２２から発行されたクエリーに対する検索結果をデータベースサーバ１０から受け取り必要な情報を抽出する情報抽出部２３とを備える。
図２に示す配列加工部２１、クエリー発行部２２及び情報抽出部２３は、コンピュータプログラムにより制御されたＣＰＵにて実現される仮想的なソフトウェアブロックである。ＣＰＵを制御する当該コンピュータプログラムは、ＣＤ−ＲＯＭやフロッピーディスクなどの記憶媒体に格納して配布したり、ネットワークを介して伝送したりすることにより提供される。
【００２６】
配列加工部２１は、検索配列を入力し、加工する。ここで、配列加工部２１は、データベースサーバ１０においても、ネットワーク３０の途中で当該クエリーまたはその回答を観察する者に対しても、加工前の本来の検索配列を知ることができないように加工する。具体的な加工方法については口述する。
【００２７】
クエリー発行部２２は、配列加工部２１により加工された検索配列を問い合わせ配列としてクエリーを生成し、ネットワーク３０を介してデータベースサーバ１０に問い合わせを行う。
【００２８】
情報抽出部２３は、クエリー発行部２２から発行されたクエリーに対するデータベースサーバ１０からの回答を受け付けて解析し、元の検索配列に対する検索結果に相当する情報を抽出して出力する。元の検索配列に対する検索結果は、クエリー発行部２２における検索配列の加工方法に応じた手法でデータベースサーバ１０からの回答を解析処理することにより得られる。
【００２９】
次に、配列加工部２１による検索配列の加工方法について、詳細に説明する。
（１）検索配列の分割
検索配列を適当な長さの複数の配列に分割し、得られた部分配列に関して個別にデータベース検索を行うことにより、元の検索配列を隠すことができる。具体的な問い合わせ配列の分割方法を次に説明する。
まず、所定の配列あるいはパターンに対する全一致検索を行う場合は、データベースサーバ１０のデータベース１１に蓄積されている配列あるいはパターンのうちで最長の配列あるいはパターンの長さをｍとする。ホモロジー検索を行う場合は、許されるホモロジーを持つ配列における類似する部分の長さの最大値を考えることができるので、その長さをｍとする。
そして、データベース検索を行おうとする配列（文字列）をＳ[0..n] とし、次のように分割する。
Ｓ＝ A1 B1 A2 B2 A3 B3 ... Ak-1 Bk-1 Ak
ただし、Ai、Bi（i＝1,2,3,...,k-1,k）は共に配列Ｓの配列要素である部分文字列であって、Aiは長さｍ−1以上の部分文字列、Biは任意の長さ(空配列でも可)の部分文字列とする。このように分割した配列Ｓに関して、
C1＝ A1 B1 A2
C2＝ A2 B2 A3
...
Ck-1＝ Ak-1 Bk-1 Ak
として、C1,...,Ck-1のk-1個の配列を問い合わせ配列としてデータベース検索を行う。すなわち、先頭部分と最後尾とにおいて、データベース１１中の所定の配列またはパターンを含むだけの長さの文字列を重複させた一連の問い合わせ配列に関して、データベース検索を行うことになる。これにより、配列Ｓについてデータベース検索を行った場合と同じ検出結果を得ることができる。
図３は、配列Ｓと配列C1,...,Ck-1との関係を示す図である。
なお、この配列C1,...,Ck-1の問い合わせにおけるクエリー量は、最大で（全ての部分文字列B1,...,Bk-1が空集合である場合）、高々、元の配列Ｓをそのままデータベース検索する場合の倍の文字数である。
【００３０】
このように、データベース検索しようとする配列を一定の条件を満足するように分割し、得られた部分配列を新たな問い合わせ配列として個別にデータベース検索することにより、個々のデータベース検索から本来の検索目的である元の問い合わせ配列を知られることなく、当該元の配列に関するデータベース検索と同様の結果を得ることができる。
しかしながら、この場合であっても、各部分配列に対するデータベース検索のクエリーに関する情報を全て集めれば、データベース１１の所持者やネットワーク３０上の観察者において、元の配列を構築することが可能である。したがって、機密性が完全に保持されているとは言えない。そこで、本実施の形態では、上記のように分割した問い合わせ配列をさらに加工する。
【００３１】
（２）問い合わせ配列の先頭を隠す配列の追加
上述した元の配列Ｓを分割して得られた部分配列に基づく問い合わせ配列C1,...,Ck-1と共に、
Ck＝ Ak Bk A1
という配列を問い合わせ配列としてデータベース検索を行う。ここで、文字列Bkは、空配列を含むどのような配列でも良い。
図４は、図３に示した問い合わせ配列C1,...,Ck-1に問い合わせ配列Ckを付加した様子を示す図である。
これは、問い合わせ配列として、元の配列Ｓにおける最後尾を先頭につなげるような部分配列を追加することを意味する。この追加により、クエリーに関する情報からｋ個の問い合わせ配列を全て集めても、どの問い合わせ配列が元の配列Ｓの先頭に当たるのかが分からなくなる。したがって、データベース１１の所持者やネットワーク３０上の観察者が元の配列Ｓを構築することは困難になる。
ただし、この場合であっても、問い合わせ配列中の文字列Aiのうちに要素が同一の文字列が無い場合、各問い合わせ配列の並ぶ順番は特定できるので、各問い合わせ配列を先頭とする配列を全て構築すれば、その中に元の配列Ｓが含まれることとなる。
【００３２】
（３）配列の付加
元の配列Ｓの文字列において、全てのAp, Aq（p+1 != q）に対して次のような配列Dp,qを考える。
Dp,q＝ Ap Ep,q Aq
ただし、Ep,qは、空配列を含む任意の配列である。また、この配列Dp,qの個数は、ｋ（ｋ−１）となる。
図５は、配列Ｓにおける部分文字列A1,...,Akのうち、部分文字列A1に関する上述した配列D1,q（＝ A1 E1,q Aq）を示す図である。
データベースサーバ１０に対してクエリーを発行する際に、問い合わせ配列として、（１）において元の配列Ｓを分割して得られた配列C1,...,Ck-1に、上記の配列Dp,qを加える。これにより、問い合わせ配列中の文字列Aiのうちに要素が同一の文字列が無い場合であっても、各問い合わせ配列を並べて構築される配列はｋ！通り以上という膨大な数になる。したがって、ｋの値が十分に大きければ、元の配列Ｓを復元することはほぼ不可能である。
なお、問い合わせ配列中の文字列Aiのうちに要素が同一の文字列が有る場合は、元の配列Ｓの復元が一層困難となることは言うまでもない。
【００３３】
ここで、問い合わせ配列として追加する付加配列の数は、上述の手法ではｋ（ｋ−１）個としたが、付加配列を適当に間引いても良い。例えば、次のような配列Fpを加えることによっても、上記の配列Dp,qを付加する場合と同様に、元の配列Ｓの復元を困難にさせることができる。
Fp＝ Ap Gp Ap+2
（ただし、p+2＞kならばAp+2はAp+2-kを表す。Gpは任意の配列）
この場合、問い合わせ配列中の文字列Aiのうちに要素が同一の文字列が無いならば、各問い合わせ配列を並べて構築される配列は２(k-2)/2通りとなり、ｋの値が十分に大きければ、元の配列Ｓを復元することは極めて困難となる。
【００３４】
（４）別配列の付加
元の配列Ｓの文字列Apにおいて、全てのｐに対し、次のような配列Hpを考える。
Hp= ApB'pAp+1
（ただし、B'pはBpとは異なる任意の配列）
すなわち、元の配列Ｓとは関係のない配列をダミーとしてクエリーの中に含ませる。これにより、問い合わせ配列中の文字列Aiのうちに要素が同一の文字列が無い場合、各問い合わせ配列を並べて構築される配列は２k/2通り以上となる。したがって、ｋの値が十分に大きければ、元の配列Ｓを復元することは極めて困難となる。
【００３５】
（５）複数の問い合わせ配列の接続
データベース検索を行おうとする配列が複数ある場合は、これらの問い合わせ配列を接続して１つの配列とし、この配列に対して上述した（１）乃至（４）の手法を適用することができる。例えば、データベース検索を行おうとする配列が配列Ｓと配列Ｔである場合、これらを接続した配列Ｓ＋Ｔとする。そして、この配列Ｓ＋Ｔに対し、分割や配列の付加といった処理を行って複数の問い合わせ配列を作成し、クエリーを発行する。
ただし、この場合、（１）の手法により配列Ｓ＋Ｔを分割した境界を含む部分配列は、配列Ｓに対する検索結果と配列Ｔに対する検索結果の両方を含む可能性がある。したがって、配列Ｓ及び配列Ｔに対する正しい検索結果を取得するためには、検索結果を取得後、配列Ｓに対する検索結果と配列Ｔに対する検索結果とを分離する後処理を行う必要がある。
本手法の場合、複製の問い合わせ配列を合成し処理することにより、元の配列Ｓ＋Ｔが復元できたとしても、この配列自体には意味がない（意味がある配列は配列Ｓ及び配列Ｔであり、これらを接続して配列Ｓ＋Ｔが作成されたことは、データベース１１の所持者やネットワーク３０上の観察者には知り得ない）。したがって、クエリーの発行者がデータベース検索を行おうとした配列Ｓ、Ｔの機密性を一層向上させることができる。
さらに、この手法を一般化し、データベース検索を行おうとする配列Ｓに対して任意のダミー配列Ｔ、Ｕを用意して接続し、配列Ｔ＋Ｓ＋Ｕを作成した後、上記の（１）乃至（４）の手法を用いて問い合わせ配列を作成することも可能である。
また、複数の配列を接続して作成された新たな配列から元の配列Ｓを検出できない場合には、（１）乃至（４）の手法を用いることなく、この新たな配列を問い合わせ配列として用いてクエリーを発行することもできる。
【００３６】
以上説明した、データベース検索を行おうとする配列を隠蔽するための各手法は、（１）の手法により配列を分割することを基本として、（２）乃至（５）の各手法を任意に組み合わせて用いることができる。
また、（１）の手法により配列を分割する際、元の配列Ｓに長さm-1以上の全く同じ部分文字列が含まれている場合、かかる部分文字列を上述した文字列Aiの部分として選ぶことができる。これにより、作成された複数の問い合わせ配列の中に、端部の文字列が同一である複数の問い合わせ配列が含まれることとなる。このようにすれば、複数の問い合わせ配列を合成して作成される配列の種類が大幅に増加するため、元の配列Ｓを復元することがより一層困難となる。
【００３７】
次に、本実施の形態によるデータベース検索の動作について、具体的な例を挙げて説明する。
図６は、データベースサーバ１０への問い合わせ手段である図２に示した配列加工部２１及びクエリー発行部２２が、検索配列に対して上述した加工を行い、クエリーを発行する動作を説明するフローチャート、図７は、データベースサーバ１０からの回答である検索結果を受信した情報抽出部２３の動作を説明するフローチャートである。
また、図８は、蛋白質のパターンを複数含むデータベース１１の例である。図８に示すような蛋白質のパターンはモチーフとも呼ばれる。図示のパターンの中で、「．」にはいずれの文字が入っても良い。
図８に示したデータベース１１に対し、任意の蛋白質配列をクエリーとしてデータベース検索を行った場合に、当該クエリーにかかる配列（問い合わせ配列）に含まれるデータベース１１中のパターンの全てを回答するような検索システム（データベースサーバ１０）を考える。例えば、
TAAELCTLVIALGA
という蛋白質配列を問い合わせ配列としてデータベースサーバ１０に対してクエリーすると、図８のデータベース１１中の
A..L..L.IAL
というパターンが、この配列の２文字目から現れる。したがって、データベースサーバ１０は、このパターンを検索結果として返すこととなる。
【００３８】
図９は、大腸菌の蛋白質（アクセッション番号 gi2982763）の配列を示す図である。
ここで、図９に示す蛋白質配列を問い合わせ配列として、図８に示したデータベース１１を持つデータベースサーバ１０に対して、クエリーを発行する場合を考える。
図１０は、このようなクエリーに対するデータベースサーバ１０の回答（検索結果）を示す図である。
図１０に示すように、図９の蛋白質配列を問い合わせ配列としたクエリーに対し、データベースサーバ１０は、図８のデータベース１１に基づいて１８個のパターンを返す。
【００３９】
本実施の形態において、クライアント２０は、上記のようなデータベース検索を行いたい場合に、上述した（１）〜（５）の手法を用いて図９に示した配列を加工し、加工後の配列を問い合わせ配列としてデータベースサーバ１０に対してクエリーを発行する。
図６のフローチャートを参照すると、クライアント２０の配列加工部２１は、まず検索配列である図９の蛋白質配列を入力し（ステップ６０１）、（１）の手法に示したようにこの蛋白質配列を分割する（ステップ６０２）。この際、配列の分割に先立って、（５）の手法に示したように、他の検索配列やダミー配列を接続し、その後に配列の分割を行うことができる。
次に、配列加工部２１は、必要に応じてさらに（２）（３）（４）の手法に示したダミーの配列を作成し、ステップ６０２で分割された複数の配列に追加する（ステップ６０３）。
図１１は、図９に示した蛋白質配列に対して加工を施した例を示す図である。
図１１に示す例では、図９の配列を、３０塩基ずつ重複した長さ６０の配列に分割する。図１１において、各配列の後半の下線を付した部分が、次の配列における前半の下線を付していない部分と重複している。さらにここでは、配列７）が最後の配列であることを識別できないように、ランダムな文字列（図１１の例では「HRRAMK」）を付加して長さを６０に揃えている。
なお、配列を加工する（１）の手法に関して上述したように、データベース１１に蓄積されているパターンのうちで最長のものの長さをｍとした場合に、重複部分Aiの長さはｍ−１以上である。すなわち、ここでは、図８に示したデータベース１１において、ｍ≦３１であることを想定している。
また、ここでは全ての配列において部分文字列Biを空配列とし、各配列の長さを６０に揃えたが、部分文字列Biをランダムに設定することにより、各配列の長さを不揃いにすることもできる。このようにすれば、配列７）の後尾に意味のない文字列を付加しなくても、配列７）が最後の配列であることを識別できないようにすることができる。
【００４０】
次に、クエリー発行部２２は、配列加工部２１により作成された図１１に示す配列１）〜７）をそれぞれ問い合わせ配列としてクエリーを作成し、データベースサーバ１０に送信する（ステップ６０４）。なお、作成された複数の問い合わせ配列の全てについてのクエリーをまとめて送信しても良いし、何回かに分けて送信しても良い。
データベースサーバ１０では、クライアント２０から受信した複数のクエリーによる問い合わせ配列に対してデータベース検索を行い、検索結果を当該クライアント２０に返送する。このデータベース検索では、問い合わせ配列である配列１）〜７）の重複部分の長さが３０であるから、元の配列（図９の蛋白質配列）に含まれる長さ３０以下のパターンの全てについて検索を行うことができる。そして、上記のように、図８に示したデータベースサーバ１１には長さ３１よりも長いパターンは含まれない。したがって、配列１）〜７）についてデータベース検索を行うことにより、元の配列に含まれるデータベース１１中の全てのパターンが検索できることとなる。
【００４１】
次に、図７のフローチャートを参照すると、情報抽出部２３は、データベースサーバ１０から受信した検索結果を受信し（ステップ７０１）、その中から図９の配列に対する検索結果に相当するものを抽出し出力する（ステップ７０２）。
図１２は、図１１に示した配列１）に対してデータベースサーバ１０から返送される検索結果を示す図である。すなわち、配列１）には、図１２に示す７種類のパターンが含まれていることがわかる。情報抽出部２３は、各配列１）〜７）に対して同様に返送された検索結果を集めて、検索配列である図９の蛋白質配列に対する検索結果として出力する。ただし、配列７）の最後尾には意味のない文字列「HRRAMK」が存在するので、この部分にマッチするパターンは除外する。
【００４２】
以上のように、本実施の形態を用いれば、元の検索配列を知っているクライアント２０以外では、クエリーにかかる問い合わせ配列から元の検索配列を復元することは困難である。したがって、クライアント２０がどのような配列に対してデータベース検索を行っているのかを、データベース１１の所持者やネットワーク３０上の観察者に知られることを有効に防止することができる。
さらに、本実施の形態では、クライアント２０において検索配列を加工し、かつデータベースサーバ１０から返送された検索結果を検索配列に対する加工のないように基づいて処理することにより、この検索配列を直接データベース検索した場合と同様の検索結果を得ることができる。したがって、データベース１１及びこれを含むデータベースサーバ１０の設計を変更する必要がない。このため、本実施の形態によるデータベース検索手法は、既存のデータベース検索システムに対しても極めて容易に導入することが可能である。
【００４３】
以上、検索配列である図９の蛋白質配列を、上記（１）の手法で分割してデータベース検索を行う場合について説明した。本実施の形態では、さらに、図１１の７つの配列１）〜７）に、さらに上記（２）乃至（４）の手法により種々の配列を追加してクエリーを発行することができる。
例えば、（２）の手法を用いれば、図１１の７つの配列に、さらに図１３に示す配列８）を追加することができる。図１３の配列８）は、前半部（下線の無い部分）が図１１の配列７）の後半部分（下線部分）と重複しており、後半部（下線部分）が配列１）の前半部分（下線の無い部分）と重複している。したがって、この配列８）を図１１の配列１）〜７）に追加してデータベース検索を行うことにより、例え、配列１）〜８）に対する全ての検索結果を取得しても、配列１）〜８）中のどの配列が元の配列（図９の蛋白質配列）の先頭かわからないため、当該元の配列を知らなければ、正しい検出結果を直ちに得ることはできない。
【００４４】
また、（３）の手法を用いれば、次のような配列を作成することができる。
まず、図９の蛋白質配列を、図１４に示す、長さ３０の８つの部分文字列Ａ〜Ｈに分割する。ただし、部分文字列Ｈには、図１１に示した配列７）と同様に、長さを揃えるための意味のない文字列「HRRAMK」が付加されている。
ここで、図１４の各文字列Ａ〜Ｈに関して、
Ａ＋Ｃ、Ａ＋Ｄ、Ａ＋Ｅ、Ａ＋Ｆ、Ａ＋Ｇ、Ａ＋Ｈ、
Ｂ＋Ａ、Ｂ＋Ｄ、Ｂ＋Ｅ、Ｂ＋Ｆ、Ｂ＋Ｇ、Ｂ＋Ｈ、
Ｃ＋Ａ、Ｃ＋Ｂ、Ｃ＋Ｅ、Ｃ＋Ｆ、Ｃ＋Ｇ、Ｃ＋Ｈ、
Ｄ＋Ａ、Ｄ＋Ｂ、Ｄ＋Ｃ、Ｄ＋Ｆ、Ｄ＋Ｇ、Ｄ＋Ｈ、
Ｅ＋Ａ、Ｅ＋Ｂ、Ｅ＋Ｃ、Ｅ＋Ｄ、Ｅ＋Ｇ、Ｅ＋Ｈ、
Ｆ＋Ａ、Ｆ＋Ｂ、Ｆ＋Ｃ、Ｆ＋Ｄ、Ｆ＋Ｅ、Ｆ＋Ｈ、
Ｇ＋Ａ、Ｇ＋Ｂ、Ｇ＋Ｃ、Ｇ＋Ｄ、Ｇ＋Ｅ、Ｇ＋Ｆ、
Ｈ＋Ｂ、Ｈ＋Ｃ、Ｈ＋Ｄ、Ｈ＋Ｅ、Ｈ＋Ｆ、Ｈ＋Ｇ
という４８種類の配列を作成する（この配列において、例えばＡ＋Ｃは文字列Ａと文字列Ｃとを接続した配列を意味する。また、ここでは、Ａ＋Ａ、Ｂ＋Ｂというような同一の文字列を重ねた配列を作成していないが、このような配列を作成しても良い）。そして、これらの配列を図１１の配列１）〜７）に図１３の配列８）を加えた８つの配列に追加してクエリーを発行する。
【００４５】
このようにすれば、例えば、前半の文字列がＡである配列は、Ａ＋Ｂ（図１１の配列１））、Ａ＋Ｃ、Ａ＋Ｄ、Ａ＋Ｅ、Ａ＋Ｆ、Ａ＋Ｇ、Ａ＋Ｈの７種類があり、文字列Ａの次にどの文字列がくる配列が正しいのかを知る術はない。そのため、これらを組み合わせて作られる配列の可能な組合せは４０３２０（＝８！）通り存在し、全てのクエリーに対する検索結果を集めて元の配列を復元することは極めて困難である。
【００４６】
また、上記の４８種類の配列を全て追加するのではなく、例えば、図１１の配列１）（図１３の文字列を用いたＡ＋Ｂの配列に相当）に対して、Ａ＋Ｃの文字列を追加するというように、図１１の配列１）〜７）のそれぞれに対して１つずつ、Ａ＋Ｃ、Ｂ＋Ｄ、Ｃ＋Ｅ、Ｄ＋Ｆ、Ｅ＋Ｇ、Ｆ＋Ｈ、Ｇ＋Ａ、Ｈ＋Ｂという８個の配列を追加する場合を考える。この場合であっても、例えば、前半の文字列がＡである配列は、Ａ＋ＢとＡ＋Ｃの２種類が存在し、どちらが正しい配列かを知る術はない。したがって、これらを組み合わせて作られる配列の可能な組合せは４９６通りであり、全てのクエリーに対する検索結果を集めて元の配列を復元することはやはり困難と言える。
【００４７】
さらにまた、（４）の手法を用いて、図１５に示すような、長さが３０の文字列Ｉを作成し、Ａ＋Ｉ、Ｉ＋Ｄというようなダミーの配列を、図１１の配列１）〜７）に対して任意に追加することにより、元の配列の復元を困難にすることができる。
なお、具体的な例は挙げないが、（１）の手法による図９の蛋白質配列の分割に先立ち、（５）の手法により、他の配列を当該図９の蛋白質配列に接続することによって、クエリーに対する検索結果を集めて図９の蛋白質配列に対する検索結果を取得することを一層困難にすることができる。
【００４８】
【発明の効果】
以上説明したように、本発明によれば、データベース側に何ら特殊な処理を要求することなく、データベース所持者やネットワークの途中でデータベース検索を観察する者に対して、クエリーの内容を知られずに、データベース検索を行うことが可能となる。
【００４９】
また、本発明によれば、データベースの設計変更を必要とせずに、データベース所持者やネットワーク上の観察者に対して、クエリーの内容を隠蔽したデータベース検索が実現できるため、既存のデータベース検索システムに対しても導入が容易である。
【図面の簡単な説明】
【図１】  本実施の形態によるデータベース検索を行うデータベース検索システムの構成を示す図である。
【図２】  本実施の形態におけるクライアントの構成を説明する図である。
【図３】  本実施の形態における検索配列Ｓとこの検索配列Ｓを分割して得られる配列C1,...,Ck-1との関係を示す図である。
【図４】  図３に示した問い合わせ配列C1,...,Ck-1に問い合わせ配列Ckを付加した様子を示す図である。
【図５】  図３に示した問い合わせ配列C1,...,Ck-1に追加する配列の例を示す図である。
【図６】  本実施の形態における配列加工部及びクエリー発行部の動作を説明するフローチャートである。
【図７】  本実施の形態における情報抽出部の動作を説明するフローチャートである。
【図８】  本実施の形態にて用いられる、蛋白質のパターンを複数含むデータベースの例である。
【図９】  大腸菌の蛋白質（アクセッション番号 gi2982763）の配列を示す図である。
【図１０】  図８のデータベースに図９の配列を問い合わせ配列とするクエリーを発行した場合の回答を示す図である。
【図１１】  図９に示した蛋白質配列に対して本実施の形態による加工を施した例を示す図である。
【図１２】  図１１に示した配列１）に対してデータベースサーバから返送される検索結果を示す図である。
【図１３】  本実施の形態による（２）の手法を用いた配列に対する加工の例を説明する図である。
【図１４】  本実施の形態による（３）の手法を用いた配列に対する加工の例を説明する図である。
【図１５】  本実施の形態による（４）の手法を用いた配列に対する加工の例を説明する図である。
【図１６】  マトリックスデータベースの例を示す図である。
【符号の説明】
１０…データベースサーバ、１１…データベース、２０…クライアント、２１…配列加工部、２２…クエリー発行部、２３…情報抽出部、３０…ネットワーク
【図１】
0003871301.tif 000002
【図２】
0003871301.tif 000003
【図３】
0003871301.tif 000004
【図４】
0003871301.tif 000005
【図５】
0003871301.tif 000006
【図６】
0003871301.tif 000007
【図７】
0003871301.tif 000008
【図８】
0003871301.tif 000009
【図９】
0003871301.tif 000010
【図１０】
0003871301.tif 000011
【図１１】
0003871301.tif 000012
【図１２】
0003871301.tif 000013
【図１３】
0003871301.tif 000014
【図１４】
0003871301.tif 000015
【図１５】
0003871301.tif 000016
【図１６】
0003871301.tif 000017