(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-25
(45)【発行日】2023-11-02
(54)【発明の名称】迅速なデータ探索のためのユニバーサルデータインデックス
(51)【国際特許分類】
G06F 16/22 20190101AFI20231026BHJP
【FI】
G06F16/22
(21)【出願番号】P 2022529376
(86)(22)【出願日】2020-11-19
(86)【国際出願番号】 US2020061184
(87)【国際公開番号】W WO2021102083
(87)【国際公開日】2021-05-27
【審査請求日】2022-08-12
(32)【優先日】2019-11-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】タルボット,スティーブン
(72)【発明者】
【氏名】ジーマ,コリン
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特開平4-242841(JP,A)
【文献】特表2007-531115(JP,A)
【文献】特表2016-532199(JP,A)
【文献】米国特許出願公開第2003/0033275(US,A1)
【文献】米国特許出願公開第2017/0228407(US,A1)
【文献】米国特許出願公開第2003/0088715(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
ユニバーサルデータインデックスの生成および利用方法であって、
ホストコンピュー
タのデータ処理ハードウェアが、データベース管理システ
ムによってデータベー
スとの通信可能な結合を確立することと、
前記データ処理ハードウェ
アが、前記データベー
スのすべてのカラムのフィールド
値の和集
合を、前記データベー
スの前記カラムについてのすべてのメタデー
タを用いて、前記ホストコンピュー
タのメモリ内のインデック
スに作成することとを備え、前記インデック
スは、前記
すべてのカラムのフィールド値の各々および前記メタデー
タの各々を前記データベー
ス内の特定の位
置と対応付け、前記方法はさらに、
前記データ処理ハードウェ
アが、ペア単位のフィールド
値を共起リス
トとして前記インデック
スに追加することと、
前記データ処理ハードウェ
アが、前記データベース管理システ
ムに対して構造化クエリ言語(SQL)のWHERE句を発行することなく、前記インデック
スに対してクエリを発行することにより、フィルタリングされたクエリ結
果を生成することとを備える、方法。
【請求項2】
前記メタデー
タは前記カラムの各々の名前を含む、請求項1に記載の方法。
【請求項3】
前記クエリは、前記カラムのうちの1つのカラム名に対応付けられたクエリ語を含む、請求項2に記載の方法。
【請求項4】
前記クエリはフィールド
値を含み、前記フィールド
値を含むカラムの名前を前記フィールド
値に基づく前記カラムの前記名前の逆引きとして生成する、請求項2~3のいずれか1項に記載の方法。
【請求項5】
前記クエリは第1のフィールド
値を含み、前記クエリを発行することにより、前記共起リス
トの前記ペア単位のフィールド
値のうちの対応する1つから第2のフィールド
値が生成されて、前記第2のフィールド
値の位置が前記第1のフィールド
値と共起するとして特定される、請求項1~4のいずれか1項に記載の方法。
【請求項6】
少なくとも1つのプロセッサと、
メモリと、を備えるコンピューティングシステムであって、
前記メモリは、前記少なくとも1つのプロセッサによって実行されることにより、前記コンピューティングシステムに請求項1~5のいずれか1項に記載の方法を実施させる、コンピュータプログラム命令を含むプログラムを格納する、コンピューティングシステム。
【請求項7】
コンピューティングシステムの少なくとも1つのプロセッサによって実行されることにより、前記コンピューティングシステムに請求項1~5のいずれか1項に記載の方法を実施させるコンピュータプログラム命令を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はデータ分析の分野に関し、より具体的にはビジネスインテリジェンスのためのクエリ生成に関する。
【背景技術】
【0002】
背景
データベースという語は、コンピューティングシステムによって電子的に格納されアクセスされる、編成されたデータの集合体を指す。そして、データベース管理システム(DBMS)は、各エンドユーザとデータベースとのやり取りを容易にするように、データベースと1人以上のエンドユーザとの間のインターフェイスを提供するコンピュータプログラムである。DBMSは、一般に、基礎となるデータベース内のデータにアクセスするための他のコンピュータプログラムへのインターフェイスも提供する。一般的に言えば、エンドユーザおよび他のコンピュータプログラムは、対応するクエリ言語(従来の構造化クエリ言語(SQL)など)に準拠して形成されたクエリ指示を用いて、DBMSを通してデータベースとやり取りする。
【0003】
データベース内のデータを検索して管理するSQLのごく基本的な使用は、多くのエンドユーザにとってそれほど困難ではないが、より複雑なSQLクエリを定式化することは、気の弱い人には向いていない。さらに重要なことに、実際のクエリの仕組みに関係なくクエリを指定するには、データベース内のデータおよびデータ間の基本的な関係をしっかりと理解する必要がある。一般に、データベース内の特定のデータの位置を特定するには、データベースレコードの特定のフィールドの値を指定するフィルタを組み込んだSQLクエリを作成しなければならない。WHERE句は、このような場合に使用する主なツールである。しかし、このようなクエリを実行するには、まずクエリの作成者が、フィルタを適用するフィールドの名前を推測的に知っている必要があり、フィルタ内の求められている値が異なるフィールドに存在している場合、または異なるフィールドの異なる値に関連している場合、フィルタは失敗する。当然のことながら、所望のレコードを求めてデータベースを包括的に調べるためにデータベースに対して大規模なクエリ操作を行うと、時間がかかり、大量のリソースが使用され得る。
【発明の概要】
【0004】
概要
本開示の例は、データ分析に関する技術の欠陥に対処し、ユニバーサルデータインデックス構築のための新規かつ非自明な方法、システム、およびコンピュータプログラム製品を提供する。本開示の例では、ユニバーサルデータインデックス構築方法は、ホストコンピュータのデータ処理ハードウェアが、データベース管理システムによってデータベースとの通信可能な結合を確立することを含む。上記方法はまた、データ処理ハードウェアが、データベースのすべてのカラムのフィールド値の和集合を、データベースのカラムについてのすべてのメタデータを用いて、ホストコンピュータのメモリ内のインデックスに作成することを含む。これに関して、インデックスは、値の各々およびメタデータの各々をデータベース内の特定の位置と対応付ける。上記方法はさらに、データ処理ハードウェアが、ペア単位のフィールド値を共起リストとしてインデックスに追加することを含む。最後に、上記方法は、データベース管理システムに対してSQLのWHERE句を発行することなく、インデックスに対してクエリを発行することにより、フィルタリングされたクエリ結果を生成することを含む。
【0005】
本開示のこの局面は、以下の任意の特徴のうちの1つ以上を含み得る。本開示の一局面において、メタデータはカラムの各々の名前を含む。これに関して、クエリは、カラムのうちの1つのカラム名に対応付けられたクエリ語を含み得る。また、クエリはフィールド値を含み、クエリを発行することにより、フィールド値を含むカラムの名前がフィールド値に基づくカラムの名前の逆引きとして生成されてもよい。さらに、クエリは第1のフィールド値を含み、クエリを発行することにより、共起リストのペア単位のフィールド値のうちの対応する1つから第2のフィールド値が生成されて、第2のフィールド値の位置が第1のフィールド値と共起するとして特定されてもよい。
【0006】
本開示の別の局面において、データ分析データ処理システムがユニバーサルデータインデックス構築のために構成される。上記システムは、1つまたは複数のコンピュータを有するホストコンピューティングシステムを含み、コンピュータの各々はメモリと少なくとも1つのプロセッサとを有する。上記システムはさらに、ホストコンピューティングシステムのメモリ内に永続的に存在するデータベースインデックスを含む。最後に、上記システムは、ユニバーサルデータインデックス構築モジュールを含む。モジュールは、ホストコンピューティングシステムのメモリ内で実行されるコンピュータプログラム命令を含み、コンピュータプログラム命令は少なくとも1つのプロセッサに動作を実行させる。動作は、データベース管理システムによってデータベースとの通信可能な結合を確立することを含む。別の動作は、データベースのすべてのカラムのフィールド値の和集合を、データベースのカラムについてのすべてのメタデータを用いて、ホストコンピューティングシステムのメモリ内のデータベースインデックスに作成することを含み、インデックスは、値の各々およびメタデータの各々をデータベース内の特定の位置と対応付ける。別の動作は、ペア単位のフィールド値を共起リストとしてデータベースインデックスに追加することを含む。さらに別の動作は、データベース管理システムに対してSQLのWHERE句を発行することなく、データベースインデックスに対してクエリを発行することにより、フィルタリングされたクエリ結果を生成することを含む。
【0007】
本開示のこの局面は、以下の任意の特徴のうちの1つ以上を含み得る。一例では、メタデータはカラムの各々の名前を含む。これに関して、クエリは、カラムのうちの1つのカラム名に対応付けられたクエリ語を含み得る。また、クエリはフィールド値を含み、クエリを発行することにより、フィールド値を含むカラムの名前がフィールド値に基づくカラムの名前の逆引きとして生成されてもよい。さらに、クエリは第1のフィールド値を含み、クエリを発行することにより、共起リストのペア単位のフィールド値のうちの対応する1つから第2のフィールド値が生成されて、第2のフィールド値の位置が第1のフィールド値と共起するとして特定されてもよい。
【0008】
本開示の別の局面は、ユニバーサルデータインデックス構築のためのコンピュータプログラム製品を提供する。上記コンピュータプログラム製品は、プログラム命令が組み込まれたコンピュータ読取可能な記憶媒体を含む。プログラム命令はデバイスによって実行可能であり、デバイスに動作を実行させる。動作は、データベース管理システムによってデータベースとの通信可能な結合を確立することを含む。別の動作は、データベースのすべてのカラムのフィールド値の和集合を、データベースのカラムについてのすべてのメタデータを用いて、ホストコンピュータのメモリ内のデータベースインデックスに作成することを含み、インデックスは、値の各々およびメタデータの各々をデータベース内の特定の位置と対応付ける。別の動作は、ペア単位のフィールド値を共起リストとしてデータベースインデックスに追加することを含む。さらに別の動作は、データベース管理システムに対してSQLのWHERE句を発行することなく、データベースインデックスに対してクエリを発行することにより、フィルタリングされたクエリ結果を生成することを含む。
【0009】
本開示のこの局面は、以下の任意の特徴のうちの1つ以上を含み得る。一例では、メタデータはカラムの各々の名前を含む。これに関して、クエリは、カラムのうちの1つのカラム名に対応付けられたクエリ語を含み得る。また、クエリはフィールド値を含み、クエリを発行することにより、フィールド値を含むカラムの名前がフィールド値に基づくカラムの名前の逆引きとして生成されてもよい。さらに、クエリは第1のフィールド値を含み、クエリを発行することにより、共起リストのペア単位のフィールド値のうちの対応する1つから第2のフィールド値が生成されて、第2のフィールド値の位置が第1のフィールド値と共起するとして特定されてもよい。
【0010】
本開示のその他の局面は、一部は以下の説明に記載され、一部は説明から明らかであり、または本開示の実施により学ぶことができる。本開示の局面は、特に添付の特許請求の範囲において指摘される要素および組み合わせによって認識され、達成されるであろう。上記の一般的な説明も以下の詳細な説明も、クレームされている通り、例示的かつ説明的であるに過ぎず、本開示を限定するものではないということが理解されるべきである。
【0011】
本明細書に組み込まれて本明細書の一部を構成する添付の図面は、本開示の例を示しており、説明とともに、本開示の原理を説明する役割を果たす。本明細書に説明されている例は、現在好ましいものであるが、本開示は図面に示されている厳密な配置および手段に限定されないことが理解される。
【図面の簡単な説明】
【0012】
【
図1】データベースの高速クエリ検索のためにユニバーサルデータベースインデックスを生成して利用するためのプロセスを示す図である。
【
図2】データベースの高速クエリ検索のためにユニバーサルデータベースインデックスを生成して利用するように構成されたデータ処理システムの概略図である。
【
図3】データベースの高速クエリ検索のためにユニバーサルデータベースインデックスを生成するためのプロセスを示すフローチャート図である。
【発明を実施するための形態】
【0013】
詳細な説明
本開示の例は、データベースの高速クエリ検索のためのユニバーサルデータベースインデックスの生成および使用を提供する。本開示の例に従うと、データベース管理システムによってデータベースへの通信可能な接続を開くことによって、ユニバーサルデータインデックスが生成され得る。その後、データベースのすべてのカラムのフィールド値の和集合として、データベースのカラムについてのすべてのメタデータを用いて、インデックスが作成される。そしてインデックスの中で、値の各々およびメタデータの各々とデータベース内の特定の位置との対応付けが確立される。また、ペア単位のフィールド値が共起リストとしてインデックスに追加される。そして、インデックスに対してクエリを発行することによってユニバーサルデータインデックスを使用することにより、データベース管理システムに対して構造化クエリ言語(SQL)のWHERE句を発行することなく、フィルタリングされたクエリ結果が生成される。
【0014】
さらに説明すると、図には、データベースの高速クエリ検索のためにユニバーサルデータベースインデックスを生成して使用するためのプロセスが図示されている。
図1に示すように、データベース100は、それぞれ異なるフィールド110A,110B,110Nの異なる値120A,120B,120Nの異なるレコードを含み、任意に、疑似カラム、疑似カラム値、次元および次元値を含む。異なるフィールド110A,110B,110Nの各々は、メタデータ130A,130B,130N(たとえば、フィールド110A,110B,110Nの各々の名前)を含む。データベース100のレコードの値120A,120B,120Nの各々は和集合にされて、データ構造150A,150B(そのような例を3つ挙げると、アレイ、リンクリスト、またはデリミタ区切り値の単純な列など)になる。そして、データ構造150A,150Bは、レコードのうちの対応する1つがデータベース100内に位置付けられる位置140A,140Bに関連して、ユニバーサルインデックス170に格納される。
【0015】
【0016】
その後、インデックスインターフェイス190が提供され、これを通してキーワード100Aがインデックスクエリ100で受信され、これに応答してユニバーサルインデックス170が検索されて、キーワード100Aを含む対応するデータ構造150A,150Bが識別され、次にデータ構造150A,150Bのうちの識別済みの1つの対応する位置100Bが識別され得る。任意に、共起リスト180が検索されて、キーワード100Aに対応する値120A,120B,120Nのうちの1つが見つけられるデータベース内の位置100Bだけでなく、値120A,120B,120Nのうちの共起する値の位置も識別され得る。いずれの例においても、次にインデックスインターフェイス190は、WHERE指示を用いるリソース集中型のSQL問い合わせに関わることなく、位置100Bのデータベース100に対してクエリを発行することにより、結果セット100Cにおいて対応付けられたレコードを取り出す。
【0017】
図1に関連して説明したプロセスは、データ処理システムにおいて実現され得る。さらに説明すると、
図2は、データベースの高速クエリ検索のためにユニバーサルデータベースインデックスを生成して利用するように構成されたデータ処理システムを概略的に示す。このシステムは、1つまたは複数のコンピュータを含むホストコンピューティングシステム230を含み、コンピュータの各々はメモリと少なくとも1つのプロセッサとを有する。ホストコンピューティングシステムは、コンピュータ通信ネットワーク220を介して異なるクライアントデバイス210に結合される。ホストコンピューティングシステム230は、データベース240に結合され、コンピュータ通信ネットワーク220を介してクライアントデバイス210からの要求を発行する異なる要求者によるデータベース240へのアクセスを緩和するデータベース管理システム250のメモリ内での実行をサポートする。
【0018】
注目すべきは、このシステムが、ホストコンピューティングシステム230のメモリ内で実行されるコンピュータプログラム命令を含むユニバーサルデータインデックス作成モジュール300を含むことである。プログラム命令は、異なるエントリのデータフィールド和集合リスト280をインデックス270に含むことによって、実行時にデータベース240に対してインデックス270を生成することができ、上記エントリの各々は、データベース240内の対応するレコードのデータフィールドの値の和集合と、データフィールドに関連するメタデータと、対応するレコードのデータベース240内の位置とを含む。プログラム命令はさらに、データベース250の同じレコード内の共起する値の異なるペアの共起リスト290を、データベース250内のレコードの対応する位置とともに、実行時にインデックス270に含むことができる。
【0019】
最後に、プログラム命令は、コンピュータ通信ネットワーク220を介してクライアントデバイス210からキーワードクエリを受信するように適合されたインデックスクエリインターフェイス260を生成することができる。プログラム命令は、キーワードクエリを受信すると、キーワードを抽出し、インデックス270のデータフィールド和集合リスト280を検索してこのキーワードを含むエントリの位置を特定する。そして、対応する位置値が識別され、プログラム命令はその位置でデータベース240からレコードを取り出し、このレコードは次に、クエリインターフェイス260を通してクライアントデバイス210のうちの要求クライアントデバイスに返される。任意に、プログラム命令は、レコードと共に、キーワードに一致するレコードのフィールドのメタデータ(たとえば、「逆引き」を実現するためのフィールドのカラム名)を返すことができる。別の選択肢として、プログラム命令はまた、共起リスト290を検索し、キーワードに対応付けられた値と共起する他の値をクエリ結果で返す。
【0020】
ユニバーサルデータインデックス作成モジュール300の動作をさらに説明すると、
図3は、データベースの高速クエリ検索のためにユニバーサルデータベースインデックスを生成して利用するためのプロセスを示すフローチャートである。ブロック305で始まり、データベースへの接続を確立し、ブロック310において、データベースから第1のレコードを取り出す。ブロック315において、このレコードのデータベース内の位置を求め、ブロック320において、レコード内のすべてのフィールド値の和集合を計算し、さらにブロック325において、レコードのフィールドごとにメタデータを得る。次にブロック330において、値の和集合、メタデータ、および位置を含むエントリをユニバーサルデータインデックスに書き込む。決定ブロック335において、他に処理すべきレコードがデータベースに残っている場合、プロセスはブロック310に戻り、データベース内の次のレコードを取り出す。
【0021】
他に処理すべきレコードがデータベースに残っていない場合、ブロック340において、最初のインデックスエントリを処理するために選択する。ブロック345において、インデックスエントリを共起語のエントリのセットを含むように拡張し、共起語の各々は、インデックス内のエントリと同じデータベースの位置値を共有している。決定ブロック350において、他に処理すべきエントリがインデックスに残っている場合、プロセスはブロック340に戻り、インデックス内の次のエントリを処理するために選択する。決定ブロック350において、他のエントリがインデックスに残っていない場合、ブロック355において、コンピュータ通信ネットワークを介してリモートデバイスがアクセスできるようにインデックスクエリインターフェイスを公開する。
【0022】
本開示は、システム、方法、コンピュータプログラム製品、またはその任意の組み合わせの中で具体化され得る。コンピュータプログラム製品は、プロセッサに本開示の局面を実行させるためのコンピュータ読取可能なプログラム命令を有する1つまたは複数のコンピュータ読取可能な記憶媒体を含み得る。コンピュータ読取可能な記憶媒体は、命令実行装置が使用する命令を保持および格納することができる有形の装置であってもよい。コンピュータ読取可能な記憶媒体は、たとえば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、または上記の任意の適切な組み合わせであり得るが、これらに限定されない。
【0023】
本明細書に記載のコンピュータ読取可能なプログラム命令は、コンピュータ読取可能な記憶媒体からそれぞれのコンピューティング/処理装置に、またはネットワークを介して外部コンピュータもしくは外部記憶装置に、ダウンロードすることができる。コンピュータ読取可能なプログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、かつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータもしくはサーバ上で、実行されてもよい。本開示の局面は、本開示の局面に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書に説明されている。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図のブロックの組み合わせは、コンピュータ読取可能なプログラム命令によって実現することができることが理解されるであろう。
【0024】
これらのコンピュータ読取可能なプログラム命令を汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに与えてマシンを生成し、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令がフローチャートおよび/またはブロック図の1つもしくは複数のブロックに示された機能/動作を実現するための手段を生成するようにしてもよい。また、これらのコンピュータ読取可能なプログラム命令は、コンピュータ、プログラマブルデータ処理装置、および/またはその他のデバイスに対して特定の方法で機能するよう指示することができるコンピュータ読取可能な記憶媒体に格納されて、命令が格納されたコンピュータ読取可能な記憶媒体が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックに示された機能/動作の局面を実現する命令を含む製品を含むようにしてもよい。
【0025】
また、コンピュータ読取可能なプログラム命令は、コンピュータ、その他のプログラマブルデータ処理装置、またはその他のデバイス上にロードされて、一連の動作ステップを、当該コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で実行させることにより、コンピュータで実現されるプロセスを生成して、コンピュータ、その他のプログラマブル装置、またはその他の装置上で実行される命令が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックに示された機能/動作を実現するようにしてもよい。
【0026】
図面におけるフローチャートおよびブロック図は、本開示のさまざまな局面に係るシステム、方法、およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実現するための1つまたは複数の実行可能な命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替実装形態において、ブロックに記載された機能は、図面に記載された順序と異なる順序で行われてもよい。たとえば、連続して示される2つのブロックは、実際は実質的に同時に実行されてもよく、または、これらのブロックは、関与する機能に応じて、逆の順序で実行される場合があってもよい。また、ブロック図および/またはフローチャート図の各ブロック、ならびにブロック図および/またはフローチャート図のブロックの組み合わせは、指定された機能もしくは動作を実行するまたは専用ハードウェアとコンピュータ命令との組み合わせを実施する、専用ハードウェアベースのシステムによって実現可能であることにも注意されたい。
【0027】
最後に、本明細書で使用されている術語は、単に特定の局面を説明することを目的としているのであり、本開示を限定することを意図しているのではない。本明細書で使用されている単数形「a」、「an」および「the」は、文脈が明らかに別段の指定をしていない限り、複数形も包含することを意図している。「includes(含む)」および/または「including(含む)」という用語は、本明細書で使用される場合、記載されている特徴、整数、ステップ、動作、要素および/または構成要素の存在を示すが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素および/またはそれらのグループの存在または追加を排除するものではないことが、さらに理解されるであろう。
【0028】
以下の請求項におけるすべてのミーンズまたはステップ・プラス・ファンクション要素の、対応する構造、材料、動作および均等物は、具体的にクレームされているその他のクレームされている要素と組み合わせてそのファンクションを実行するための、任意の構造、材料、または動作を含むことを意図している。本開示の記載は、例示および説明を目的として示されているが、すべてを網羅するまたは開示されている形態に限定されることを意図しているわけではない。当業者には、本開示の精神および範囲から逸脱することなく、多数の修正形および変形が明らかであろう。上述の例は、本開示の原理およびその実用的な用途を最良に説明するために、かつ、当業者が、企図されている特定の使用に適するようにさまざまな修正を伴うさまざまな実施形態について本開示を理解できるようにするために、選択され記載されている。
【0029】
いくつかの実装形態について説明した。しかしながら、本開示の精神および範囲から逸脱することなく各種修正が行われ得ることが理解されるであろう。したがって、その他の実装形態が以下の特許請求の範囲に含まれる。