IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アリババ・グループ・ホールディング・リミテッドの特許一覧

特許7539884データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス
<>
  • 特許-データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス 図1
  • 特許-データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス 図2
  • 特許-データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス 図3
  • 特許-データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス 図4
  • 特許-データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス 図5
  • 特許-データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス 図6
  • 特許-データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-16
(45)【発行日】2024-08-26
(54)【発明の名称】データベースインデックスおよびデータベースクエリ処理方法、装置、およびデバイス
(51)【国際特許分類】
   G06F 16/909 20190101AFI20240819BHJP
   G06F 16/901 20190101ALI20240819BHJP
   G06F 16/28 20190101ALI20240819BHJP
【FI】
G06F16/909
G06F16/901
G06F16/28
【請求項の数】 21
(21)【出願番号】P 2021529833
(86)(22)【出願日】2019-11-19
(65)【公表番号】
(43)【公表日】2022-01-26
(86)【国際出願番号】 CN2019119394
(87)【国際公開番号】W WO2020108345
(87)【国際公開日】2020-06-04
【審査請求日】2022-11-14
(31)【優先権主張番号】201811422523.X
(32)【優先日】2018-11-27
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【弁理士】
【氏名又は名称】▲高▼橋 史生
(72)【発明者】
【氏名】ウェイ・フ
(72)【発明者】
【氏名】ジエ・ジョウ
(72)【発明者】
【氏名】デンチェン・ヘ
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2007-233658(JP,A)
【文献】特開2013-152531(JP,A)
【文献】特開2015-055914(JP,A)
【文献】特開2010-182097(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行されるデータベースインデックス処理方法であって、前記方法は、
データベースインデックスが作成されるデータベーステーブルを判定することであって、前記データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
前記データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得することと、
前記空間フィルタ条件に従って、前記データベーステーブルのツリー構造空間インデックスを生成することであって、前記ツリー構造空間インデックスのリーフノードが、前記空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成することと、を含む、方法。
【請求項2】
前記空間フィルタ条件が、空間フィールドプレフィックス情報を含み、
前記空間フィルタ条件に従って、前記データベーステーブルの前記ツリー構造空間インデックスを前記生成することが、
前記空間フィルタ条件に従って、前記ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックス情報を取得することと、
前記空間フィールドプレフィックス情報に従って、前記データベーステーブルの空間プレフィックスインデックスを生成することであって、前記空間プレフィックスインデックスのインデックス列が、前記空間フィールドプレフィックス情報を含む、生成することと、
前記ツリー構造空間インデックスとして前記空間プレフィックスインデックスを使用することと、を含む、請求項1に記載の方法。
【請求項3】
前記空間フィルタ条件が、最小境界矩形演算型のフィルタ条件を含み、
前記空間フィールドプレフィックス情報に従って、前記データベーステーブルの前記空間プレフィックスインデックスを前記生成することが、
前記最小境界矩形演算型の前記フィルタ条件に従って、前記データベーステーブルに対して最小境界ボックスフィルタリングを実行して、前記最小境界矩形演算型の前記フィルタ条件を満たす代替空間フィールドを得ることと、
前記代替空間フィールドに記憶された空間データに対して、地理空間情報のための標準バイトストリーム符号化を実行することと、
地理空間情報のための前記標準バイトストリーム符号化が実行された前記空間データ、および前記空間フィールドプレフィックス情報に従って、前記データベーステーブルの前記空間プレフィックスインデックスを生成することと、を含む、請求項2に記載の方法。
【請求項4】
前記空間フィールドプレフィックス情報が、前記空間フィールドに記憶された空間データの長さを示すための条件を含み、
地理空間情報のための前記標準バイトストリーム符号化が実行された前記空間データ、および前記空間フィールドプレフィックス情報に従って、前記データベーステーブルの前記空間プレフィックスインデックスを前記生成することが、
地理空間情報のための前記標準バイトストリーム符号化が実行された前記空間データの長さを取得することと、
前記空間フィールドプレフィックス情報に従って長さ条件を取得することと、
地理空間情報のための前記標準バイトストリーム符号化が実行された前記空間データの前記長さが前記長さ条件を満たすと判定したことに応答して、前記長さ条件を満たす前記空間データを前記空間プレフィックスインデックスのリーフノードに記憶すること、または
地理空間情報のための前記標準バイトストリーム符号化が実行されない前記空間データの前記長さが前記長さ条件を満たすと判定したことに応じて、前記空間データを前記空間プレフィックスインデックスの前記リーフノードに記憶しないと判定することと、を含む、請求項3に記載の方法。
【請求項5】
前記空間フィルタ条件に従って、前記データベーステーブルの前記ツリー構造空間インデックスを前記生成することが、
前記空間フィルタ条件に従って、前記ツリー構造空間インデックスを生成するために使用される空間フィールドの情報を取得することと、
前記ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
前記空間フィールドの前記情報および前記非空間フィールドの前記情報に従って、前記データベーステーブルの複合空間インデックスを生成することであって、前記複空間インデックスのインデックス列が、前記空間フィールドおよび前記非空間フィールドを含む、生成することと、
前記ツリー構造空間インデックスとして前記複合空間インデックスを使用することと、を含む、請求項1に記載の方法。
【請求項6】
前記空間フィルタ条件に従って、前記データベーステーブルの前記ツリー構造空間インデックスを前記生成することが、
前記空間フィルタ条件に従って、前記ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックスの情報を取得することと、
前記ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
前記空間フィールドプレフィックスの前記情報および前記非空間フィールドの前記情報に従って、複合空プレフィックスインデックスを生成することであって、前記複合空プレフィックスインデックスのインデックス列が、前記空間フィールドプレフィックスおよび前記非空間フィールドを含む、生成することと、
前記ツリー構造空間インデックスとして前記複合空間プレフィックスインデックスを使用することと、を含む、請求項1に記載の方法。
【請求項7】
前記ツリー構造空間インデックスのインデックス列が、空間フィールドを含み、
前記ツリー構造空間インデックスの非リーフノードが、前記空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する、請求項1に記載の方法。
【請求項8】
データベーステーブル作成コマンドに従って、前記データベーステーブルを作成することであって、前記データベーステーブル作成コマンドが、前記ツリー構造空間インデックスを生成するためのインデックス作成コマンドを含む、作成すること、または
前記インデックス作成コマンドに従って、前記ツリー構造空間インデックスを作成することをさらに含む、請求項1に記載の方法。
【請求項9】
コンピュータにより実行されるデータベースクエリ処理方法であって、前記方法は、
空間データがクエリされるデータベーステーブルを判定することであって、前記データベーステーブルが、空間データを記憶するための空間フィールドと非空間フィールドとを含む、判定することと、
前記データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得することと、
前記データベーステーブルのツリー構造空間インデックスを取得することであって、前記ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得することと、
前記クエリ条件に従って、前記ツリー構造空間インデックスをクエリして、クエリ結果を得ることと
を含
前記ツリー構造空間インデックスをクエリして、前記クエリ結果を得ることが、
前記クエリ条件の空間フィールドを取得することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致すると判定したことに応答して、前記クエリ条件の前記空間クエリフィールドに従って、前記データベーステーブルの複合空間インデックスをクエリして、前記クエリ条件を満たすクエリ結果を得ること、または
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致しないと判定したことに応答して、前記データベーステーブル内の前記クエリ条件に一致する非空間クエリフィールドの代替記録を得て、前記クエリ条件の前記空間クエリフィールドに従って、かつ前記代替記録から、前記クエリ条件を満たすクエリ結果を取得することと、
を含む、方法。
【請求項10】
前記クエリ条件の前記空間クエリフィールドに従って、前記データベーステーブルの前記複合空間インデックスをクエリして、前記クエリ条件を満たす前記クエリ結果を得ることが、
前記クエリ条件の非空間クエリフィールドを取得することと、
前記空間クエリフィールドおよび前記非空間クエリフィールドが、前記データベーステーブルの前記複合空間インデックスに含まれるインデックス列にあるかどうかを判定することと、
前記空間クエリフィールドおよび前記非空間クエリフィールドが、前記データベーステーブルの前記複合空間インデックスに含まれるインデックス列にあると判定したことに応答して、前記クエリ条件が前記データベーステーブルの空間インデックスクエリモードを満たすと判定し、前記クエリ条件に従って、カバリングインデックススキャンを使用して前記データベーステーブルの前記複合空間インデックスをクエリすること、または
前記空間クエリフィールドおよび前記非空間クエリフィールドが、前記データベーステーブルの前記複合空間インデックスに含まれるインデックス列にないことを判定したことに応答して、前記クエリ条件に従って、前記データベーステーブルの前記複合空間インデックスから、前記クエリ条件を満たす代替記録を見つけるためにクエリし、前記代替記録の主キーに従って、前記データベーステーブルに戻ってさらにクエリし、前記クエリ条件を満たす完全な行記録を得ることと、を含む、請求項に記載の方法。
【請求項11】
前記クエリ条件に従って、前記カバリングインデックススキャンを使用して前記データベーステーブルの前記複合空間インデックスを前記クエリすることは、
前記空間クエリフィールドに従って、前記空間クエリフィールドが、クエリされる前記データベーステーブルの前記複合空間インデックスの空間フィールドであるかどうかを判定することと、
前記空間クエリフィールドに従って、前記空間クエリフィールドが、クエリされる前記データベーステーブルの前記複合空間インデックスの空間フィールドであると判定したことに応答して、前記空間クエリフィールドのプレフィックス情報に含まれる長さ条件に従って前記カバリングインデックススキャンを使用して前記複合空間インデックスをクエリすること、または
前記空間クエリフィールドに従って、前記空間クエリフィールドが、クエリされる前記データベーステーブルの前記複合空間インデックスの空間フィールドではないと判定したことに応答して、前記カバリングインデックススキャンを使用して前記データベーステーブルの前記複合空間インデックスをクエリすることと、を含む、請求項10に記載の方法。
【請求項12】
前記空間クエリフィールドのプレフィックス情報に含まれる前記長さ条件に従って前記カバリングインデックススキャンを使用して前記複合空間インデックスを前記クエリすることが、
前記空間クエリフィールドの前記プレフィックス情報に含まれる前記長さ条件を取得することと、
前記複合空間インデックスの行記録の長さが前記長さ条件を満たすかどうかを判定することと、
前記複合空間インデックスの前記行記録の前記長さが前記長さ条件を満たすと判定したことに応答して、前記カバリングインデックススキャンのクエリ結果として前記行記録を使用することと、
前記複合空間インデックスの前記行記録の前記長さが前記長さ条件を満たさないと判定したことに応答して、主キー情報に従って前記データベーステーブルをクエリすることと、を含む、請求項11に記載の方法。
【請求項13】
前記クエリ条件の前記空間クエリフィールドに従って、かつ前記代替記録から、前記クエリ条件を満たす前記クエリ結果を前記取得することが、
代替行記録のデータに対して空間計算を実行し、計算結果に従って、前記代替行記録から、前記空間クエリフィールドと一致する行記録を取得することと、
前記クエリ条件を満たす前記クエリ結果として、前記空間クエリフィールドと一致する前記行記録を使用することと、を含む、請求項に記載の方法。
【請求項14】
前記クエリ条件の空間クエリ情報が、前記空間クエリフィールドを含む最小境界矩形演算である、請求項9に記載の方法。
【請求項15】
前記ツリー構造空間インデックスのインデックス列が、前記空間フィールドを含み、
前記ツリー構造空間インデックスの非リーフノードが、前記空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する、請求項9に記載の方法。
【請求項16】
データベースインデックス処理装置であって、前記装置が、
データベースインデックスが作成されるデータベーステーブルを判定するように構成されたデータベーステーブル判定ユニットであって、前記データベーステーブルが、空間データを記憶するための空間フィールドを含む、データベーステーブル判定ユニットと、
前記データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得するように構成されたフィルタ条件取得ユニットと、
前記空間フィルタ条件に従って、前記データベーステーブルのツリー構造空間インデックスを生成するように構成されたインデックス生成ユニットであって、前記ツリー構造空間インデックスのリーフノードが、前記空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、インデックス生成ユニットと、を備える、装置。
【請求項17】
データベースクエリ処理装置であって、前記装置が、
空間データがクエリされるデータベーステーブルを判定するように構成されたデータベーステーブル判定ユニットであって、前記データベーステーブルが、空間データを記憶するための空間フィールドと非空間フィールドとを含む、データベーステーブル判定ユニットと、
前記データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得するように構成されたクエリ条件判定ユニットと、
前記データベーステーブルのツリー構造空間インデックスを取得するように構成されたインデックス取得ユニットであって、前記ツリー構造空間インデックスのリーフノードが、前記空間データを記憶する、インデックス取得ユニットと、
前記クエリ条件に従って、前記ツリー構造空間インデックスをクエリして、クエリ結果を得るように構成されたクエリユニットと、を備え、
前記ツリー構造空間インデックスをクエリして、前記クエリ結果を得ることが、
前記クエリ条件の空間フィールドを取得することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致すると判定したことに応答して、前記クエリ条件の前記空間クエリフィールドに従って、前記データベーステーブルの複合空間インデックスをクエリして、前記クエリ条件を満たすクエリ結果を得ること、または
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致しないと判定したことに応答して、前記データベーステーブル内の前記クエリ条件に一致する非空間クエリフィールドの代替記録を得て、前記クエリ条件の前記空間クエリフィールドに従って、かつ前記代替記録から、前記クエリ条件を満たすクエリ結果を取得することと、
を含む、装置。
【請求項18】
メモリおよびプロセッサを備え、
前記メモリが、コンピュータ実行可能コマンドを記憶するように構成されており、前記プロセッサが、前記コンピュータ実行可能コマンドを実行して、
データベースインデックスが作成されるデータベーステーブルを判定することであって、前記データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
前記データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得することと、
前記空間フィルタ条件に従って、前記データベーステーブルのツリー構造空間インデックスを生成することであって、前記ツリー構造空間インデックスのリーフノードが、前記空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成することと、を含む動作を実行するように構成された、電子デバイス。
【請求項19】
メモリおよびプロセッサを備え、
前記メモリが、コンピュータ実行可能コマンドを記憶するように構成されており、前記プロセッサが、前記コンピュータ実行可能コマンドを実行して、
空間データがクエリされるデータベーステーブルを判定することであって、前記データベーステーブルが、空間データを記憶するための空間フィールドと非空間フィールドとを含む、判定することと、
前記データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得することと、
前記データベーステーブルのツリー構造空間インデックスを取得することであって、前記ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得することと、
前記クエリ条件に従って、前記ツリー構造空間インデックスをクエリして、クエリ結果を得ることと、
を含む動作を実行するように構成され
前記ツリー構造空間インデックスをクエリして、前記クエリ結果を得ることが、
前記クエリ条件の空間フィールドを取得することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致すると判定したことに応答して、前記クエリ条件の前記空間クエリフィールドに従って、前記データベーステーブルの複合空間インデックスをクエリして、前記クエリ条件を満たすクエリ結果を得ること、または
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致しないと判定したことに応答して、前記データベーステーブル内の前記クエリ条件に一致する非空間クエリフィールドの代替記録を得て、前記クエリ条件の前記空間クエリフィールドに従って、かつ前記代替記録から、前記クエリ条件を満たすクエリ結果を取得することと、
を含む、電子デバイス。
【請求項20】
記憶されたコマンドを有する記憶デバイスであって、前記コマンドは、
データベースインデックスが作成されるデータベーステーブルを判定することであって、前記データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
前記データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得することと、
前記空間フィルタ条件に従って、前記データベーステーブルのツリー構造空間インデックスを生成することであって、前記ツリー構造空間インデックスのリーフノードが、前記空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成することと、を含む動作をプロセッサに実行させるように前記プロセッサによって実行可能である、記憶デバイス。
【請求項21】
記憶されたコマンドを有する記憶デバイスであって、前記コマンドは、
空間データがクエリされるデータベーステーブルを判定することであって、前記データベーステーブルが、空間データを記憶するための空間フィールドと非空間フィールドとを含む、判定することと、
前記データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得することと、
前記データベーステーブルのツリー構造空間インデックスを取得することであって、前記ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得することと、
前記クエリ条件に従って、前記ツリー構造空間インデックスをクエリして、クエリ結果を得ることと、
を含む動作をプロセッサに実行させるように前記プロセッサによって実行可能であり、
前記ツリー構造空間インデックスをクエリして、前記クエリ結果を得ることが、
前記クエリ条件の空間フィールドを取得することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致すると判定したことに応答して、前記クエリ条件の前記空間クエリフィールドに従って、前記データベーステーブルの複合空間インデックスをクエリして、前記クエリ条件を満たすクエリ結果を得ること、または
前記空間フィールドが前記ツリー構造空間インデックスのインデックス列の空間フィールドIDに一致しないと判定したことに応答して、前記データベーステーブル内の前記クエリ条件に一致する非空間クエリフィールドの代替記録を得て、前記クエリ条件の前記空間クエリフィールドに従って、かつ前記代替記録から、前記クエリ条件を満たすクエリ結果を取得することと、
を含む、記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年11月27日に出願された「DATABASE INDEX AND DATABASE QUERY PROCESSING METHOD,APPARATUS,AND DEVICE」と題する中国特許出願第2018/11422523.X号の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【0002】
本出願は、データ処理の分野に関し、より具体的には、データベースインデックスを処理するための方法、装置、電子デバイス、および記憶デバイスに関する。本出願はまた、データベースクエリを処理するための方法、装置、電子デバイス、および記憶デバイスに関するものある。
【背景技術】
【0003】
コンピュータおよび情報技術の発展に伴い、空間データならびに空間データの記憶および管理をサポートするデータベースは、都市計画、輸送、銀行業務、および航空宇宙などの様々な業界において広く使用されている。幾何学的データとしても知られているいわゆる空間データは、空間座標を含む情報を表示するためにコンピュータによって処理できる特殊な形式のデータである。このようなデータの例は、建築設計図、機械設計図、および地図を表す空間データを含む。空間データは、空間実体の場所、形状、大きさ、および分布特性の識別など、実世界において位置決めの有意性を有するオブジェクトおよび事象の発生を定量的に記述することができる。いわゆる空間実体は、地理的オブジェクトおよび物事の発生を抽象化した結果であり、地理的実体または実体とも呼ばれる。
【0004】
現在、空間データの記憶および管理をサポートするデータベースは、一般に、そこに記憶された空間データの高速読み取りおよび整合性確認のための空間インデックス付けを提供する。いわゆる空間インデックス付けは、空間オブジェクトの位置および形状、または空間オブジェクト間の特定の空間関係に従って、特定の順序で配置されたデータ構造である。既存の空間インデックス付けは、空間オブジェクトの最小境界矩形(MBR)をカバーする可能性のある情報のみを記憶する。いわゆるMBRは、2次元において空間オブジェクトをカバーする最小境界矩形を指す。空間データがクエリされると、空間フィルタ条件を満たす空間データが最初にフィルタリングされ、選択される。次に、完全な記録を得るためのさらなるフィルタリングのために、主キーテーブルに戻る必要がある。したがって、クエリ中に空間フィルタ条件に一致する記録の数が比較的多い場合、完全な記録を得るために主キーテーブルに戻るためのCPUおよびIOのオーバーヘッドが比較的大きくなり、その結果、空間データクエリの効率が比較的低くなる。
【発明の概要】
【課題を解決するための手段】
【0005】
本出願は、空間データのクエリ効率を改善するために、データベースインデックス処理方法およびデータベースクエリ処理方法を提供する。
【0006】
本出願は、データベースインデックス処理方法を提供し、この方法は、
データベースインデックスが作成されるデータベーステーブルを判定することであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得することと、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成することであって、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成することと、を含む。
【0007】
任意選択として、空間フィルタ条件は、空間フィールドプレフィックス情報を含み、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成することは、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックス情報を取得することと、
空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することであって、空間プレフィックスインデックスのインデックス列が、空間フィールドプレフィックス情報を含む、生成することと、
ツリー構造空間インデックスとして空間プレフィックスインデックスを使用することと、を含む。
【0008】
任意選択として、空間フィルタ条件は、最小境界矩形演算型のフィルタ条件を含み、
空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することは、
最小境界矩形演型のフィルタ条件に従って、データベーステーブルに対して最小境界矩形フィルタリングを実行して、最小境界矩形演算型のフィルタ条件を満たす代替空間フィールドを得ることと、
代替空間フィールドに記憶された空間データに対して、地理空間情報のための標準バイトストリーム符号化を実行することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データ、および空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することと、を含む。
【0009】
任意選択として、空間フィールドプレフィックス情報は、空間フィールドに記憶された空間データの長さを示すための条件を含み、
地理空間情報のための標準バイトストリーム符号化が実行された空間データ、および空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することは、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さを取得することと、
空間フィールドプレフィックス情報に従って長さ条件を取得することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さが長さ条件を満たす場合、長さ条件を満たす空間データを空間プレフィックスインデックスのリーフノードに記憶することと、を含み、
それ以外の場合、空間プレフィックスインデックスのリーフノードは空間データを保存しない。
【0010】
任意選択として、空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成することは、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドの情報および非空間フィールドの情報に従って、データベーステーブルの複合空間インデックスを生成することであって、空間複合インデックスのインデックス列が、空間フィールドおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして複合空間インデックスを使用することと、を含む。
【0011】
任意選択として、空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成することは、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックスの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドプレフィックスの情報および非空間フィールドの情報に従って、複合プレフィックス空間インデックスを生成することであって、複合プレフィックス空間インデックスのインデックス列が、空間フィールドプレフィックスおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして空間複合プレフィックスインデックスを使用することと、を含む。
【0012】
任意選択として、ツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。
【0013】
任意選択として、この方法は、
データベーステーブル作成コマンドに従って、データベーステーブルを作成することであって、データベーステーブル作成コマンドが、ツリー構造空間インデックスを生成するためのインデックス作成コマンドを含む、作成すること、または
インデックス作成コマンドに従って、ツリー構造空間インデックスを作成することをさらに含む。
【0014】
本出願は、データベースクエリ処理方法をさらに提供し、この方法は、
空間データがクエリされるデータベーステーブルを判定することであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得することと、
データベーステーブルのツリー構造空間インデックスを取得することであって、ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得することと、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得ることと、を含む。
【0015】
任意選択として、クエリ条件は、非空間フィールドをさらに含み、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得ることは、
クエリ条件の空間フィールドを取得することと、
空間フィールドがツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
そうである場合、クエリ条件の空間クエリフィールドに従って、データベーステーブルの複合空間インデックスをクエリして、クエリ条件を満たすクエリ結果を得ることと、
そうではない場合、データベーステーブル内のクエリ条件に一致する非空間クエリフィールドの代替記録を得て、クエリ条件の空間クエリフィールドに従って、かつ代替記録から、クエリ条件を満たすクエリ結果を取得することと、を含む。
【0016】
任意選択として、クエリ条件の空間クエリフィールドに従って、データベーステーブルの複合空間インデックスをクエリして、クエリ条件を満たすクエリ結果を得ることは、
クエリ条件の非空間クエリフィールドを取得することと、
空間クエリフィールドおよび非空間クエリフィールドが、データベーステーブルの複合空間インデックスに含まれるインデックス列であるかどうかを判定することと、
そうである場合、クエリ条件がデータベーステーブルの空間インデックスクエリモードを満たすと判定し、クエリ条件に従って、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、
そうではない場合、クエリ条件に従って、データベーステーブルの複合空間インデックスから、クエリ条件を満たす代替記録を見つけるためにクエリし、代替記録の主キーに従って、データベーステーブルに戻ってさらにクエリし、クエリ条件を満たす完全な行記録を得ることと、を含む。
【0017】
任意選択として、クエリ条件に従って、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることは、
空間クエリフィールドに従って、空間クエリフィールドが、クエリされるデータベーステーブルの複合空間インデックスの空間フィールドであるかどうかを判定することと、
そうである場合、空間クエリフィールドのプレフィックス情報に含まれる長さ条件に従ってカバリングインデックススキャンを使用して複合空間インデックスをクエリすることと、
そうではない場合、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、を含む。
【0018】
任意選択として、空間クエリフィールドのプレフィックス情報に含まれる長さ条件に従ってカバリングインデックススキャンを使用して複合空間インデックスをクエリすることは、
空間クエリフィールドのプレフィックス情報に含まれる長さ条件を取得することと、
複合空間インデックスの行記録の長さが長さ条件を満たすかどうかを判定することと、そうである場合、カバリングインデックススキャンのクエリ結果として行記録を使用することと、
そうではない場合、主キー情報に従ってデータベーステーブルをクエリすることと、を含む。
【0019】
任意選択として、クエリ条件の空間クエリフィールドに従って、かつ代替記録から、クエリ条件を満たすクエリ結果を取得することは、
代替行記録のデータに対して空間計算を実行し、計算結果に従って、代替行記録から、空間クエリフィールドと一致する行記録を取得することと、
クエリ条件を満たすクエリ結果として、空間クエリフィールドを満たす行記録を使用することと、を含む。
【0020】
任意選択として、クエリ条件の空間クエリ情報は、空間クエリフィールドを含む最小境界矩形演算である。
【0021】
任意選択として、ツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。
【0022】
本出願は、データベースインデックス処理装置をさらに提供し、この装置は、
データベースインデックスが作成されるデータベーステーブルを判定するように構成されたデータベーステーブル判定ユニットであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、データベーステーブル判定ユニットと、
データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得するように構成されたフィルタ条件取得ユニットと、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成するように構成されたインデックス生成ユニットであって、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、インデックス生成ユニットと、を備える。
【0023】
本出願は、データベースクエリ処理装置をさらに提供し、この装置は、
空間データがクエリされるデータベーステーブルを判定するように構成されたデータベーステーブル判定ユニットであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、データベーステーブル判定ユニットと、
データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得するように構成されたクエリ条件判定ユニットと、
データベーステーブルのツリー構造空間インデックスを取得するように構成されたインデックス取得ユニットであって、ツリー構造空間インデックスのリーフノードが、空間データを記憶する、インデックス取得ユニットと、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得るように構成されたクエリユニットと、を備える。
【0024】
本出願は、
メモリとプロセッサとを備える電子デバイスをさらに提供し、
メモリは、コンピュータ実行可能コマンドを記憶するように構成され、プロセッサは、
データベースインデックスが作成されるデータベーステーブルを判定することであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得することと、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成することであって、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成することと、というコンピュータ実行可能コマンドを実行するように構成される。
【0025】
本出願は、
メモリとプロセッサとを備える電子デバイスをさらに提供し、
メモリは、コンピュータ実行可能コマンドを記憶するように構成され、プロセッサは、
空間データがクエリされるデータベーステーブルを判定することであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得することと、
データベーステーブルのツリー構造空間インデックスを取得することであって、ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得することと、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得ることと、というコンピュータ実行可能コマンドを実行するように構成される。
【0026】
本出願は、記憶されたコマンドを有する記憶デバイスをさらに提供し、コマンドは、
データベースインデックスが作成されるデータベーステーブルを判定するステップであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定するステップと、
データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得するステップと、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成するステップであって、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成するステップと、を実行するためにプロセッサによってロードされ得る。
【0027】
本出願は、記憶されたコマンドを有する記憶デバイスをさらに提供し、コマンドは、
空間データがクエリされるデータベーステーブルを判定するステップであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定するステップと、
データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得するステップと、
データベーステーブルのツリー構造空間インデックスを取得するステップであって、ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得するステップと、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得るステップと、を実行するためにプロセッサによってロードされ得る。
【0028】
従来技術と比較して、本出願は以下の利点を有する:
本出願によって提供されるデータベースインデックス処理方法は、空間フィールドを含むデータベーステーブルの空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成し、空間フィルタ条件を満たす空間データをツリー構造空間インデックスのリーフノードに記憶する。空間データをインデックスに記憶することにより、空間データのクエリ効率が向上し、それにより、空間データのクエリ効率が低いという問題が解決される。さらに、ツリー構造空間インデックスが、非空間フィールドを含む複合空間インデックスである場合、非空間列のフィルタリングがさらに提供され得、それにより、インデックスrowid演算によるテーブルアクセスの回数が減り、クエリ効率が向上する。
【0029】
空間クエリフィールドを含むクエリ条件に従って、本出願によって提供されるデータベースクエリ処理方法は、データベーステーブルのツリー構造空間インデックスをクエリして、クエリ結果を取得する。ツリー構造空間インデックスのリーフノードが空間データを記憶するため、空間データをクエリするためのオーバーヘッドが削減され、それにより、空間データのクエリ効率が低いという問題が解決される。さらに、ツリー構造空間インデックスが、非空間フィールドを含む複合空間インデックスである場合、非空間列のフィルタリングがさらに提供され得、それにより、インデックスrowid演算によるテーブルアクセスの回数が減り、クエリ効率が向上する。
【図面の簡単な説明】
【0030】
図1】本出願の第1の実施形態に係るデータベースインデックス処理方法の処理フローチャートである。
図2】本出願の第1の実施形態に係るデータベースインデックスの概略構造図である。
図3】本出願の第2の実施形態に係るデータベースクエリ処理方法の処理フローチャートである。
図4】本出願の第2の実施形態に係るデータベースクエリの実際の実装のフローチャートである。
図5】本出願の第3の実施形態に係るデータベースインデックス処理装置の概略図である。
図6】本出願の第4の実施形態に係るデータベースクエリ処理装置の概略図である。
図7】本出願の第5の実施形態に係る電子デバイスの概略図である。
【発明を実施するための形態】
【0031】
以下の説明では、当業者が本出願を完全に理解するために、多くの特定の詳細が説明される。しかしながら、本出願は、本明細書に記載されているものとは異なる他の多くの方法で実装することができる。当業者は、本出願の精神から逸脱することなく、同様の一般化を行うことができる。したがって、本出願は、以下に開示される特定の実装によって限定されない。
【0032】
本出願は、データベースインデックスを処理するための方法、装置、電子デバイス、および記憶デバイスを提供する。本出願はまた、データベースクエリを処理するための方法、装置、電子デバイス、および記憶デバイスに関する。以下の実施形態の各々において、詳細な説明が提供される。
【0033】
本出願の第1の実施形態は、データベースインデックス処理方法を提供する。
【0034】
本出願の実施形態によって提供されるデータベースインデックス処理方法は、図1および図2と組み合わせて以下に説明される。
【0035】
図1に示すデータベースインデックス処理方法は、ステップS101からS103を含む。
【0036】
ステップS101:データベースインデックスが作成されるデータベーステーブルを判定し、データベーステーブルが、空間データを記憶するための空間フィールドを含む。
【0037】
実際の適用例では、空間データをサポートするデータベースは通常、空間インデックス付けを提供する。従来の空間インデックス付けはMBR情報および/または最小境界ボックス(MBB)情報のみを記憶するため、インデックスrowid演算によるさらなるテーブルアクセスが必要とされる。いわゆるMBBおよびMBRは、空間オブジェクトを包含する最小境界範囲を指す。2次元において空間オブジェクトを包含する最小境界範囲は最小境界矩形(MBR)であり、3次元において空間オブジェクトを包含する最小境界範囲は最小境界ボックス(MBB)である。インデックスrowid演算によるテーブルアクセスは、フィルタ条件のうちの空間フィルタ条件を満たす代替記録がクエリおよび選択された後に、プロセスが、さらなるクエリのために主キーテーブルに戻って、すべてのフィールドを得、かつフィルタ条件内の他の非空間フィルタ条件が満たされるかどうかを判定することを意味する。例として、クラスタ化されたインデックステーブルのデータベースを取り上げる。クラスタ化されたインデックステーブルのためのインデックスrowid演算によるテーブルアクセスは非効率的で低速であるため、空間データのクエリが非効率的になる。いわゆるクラスタ化されたインデックステーブルは、データベーステーブルを編成するために一般的に使用される形式であり、これは、データベーステーブル内のすべての記録が主キーの順序に従って編成されることを意味する。データベーステーブルにデータを記憶するためにインデックス付けが使用され、データは、データベーステーブルの主キーを使用してインデックス付けされる。クラスタ化されたインデックステーブルに基づいて生成されたデータベースインデックスは、データベーステーブルのセカンダリインデックスである。セカンダリインデックスは非主キーインデックスを指す。さらに、クエリ中に空間フィルタ条件に一致する記録の数が比較的多い場合、完全な記録を得るためのインデックスrowid演算によるテーブルアクセスのCPUおよびIOオーバーヘッドが比較的大きく、その結果、空間データクエリの効率が比較的低くなる。本出願によって提供されるデータベースインデックス処理方法は、ヒープテーブルにも利用できることに留意されたい。
【0038】
本出願によって提案されるデータベースインデックス処理方法では、得られたデータベーステーブルのツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データを記憶し、特定の条件を満たすクエリが、データベーステーブルのツリー構造空間インデックスからクエリ結果を直接得る。すべてのクエリが、完全な記録を得るためにインデックスrowid演算によるテーブルアクセスを必要とするわけではなく、これにより、空間データのクエリを含むトランザクションが空間フィルタリングクエリに対してより高速かつより効率的になることに留意されたい。
【0039】
このステップは、データベースインデックスが作成されるデータベーステーブルを判定するためであり、データベーステーブルは空間フィールドを含む。ここでの例では、データベースAのデータベーステーブルテストを使用する(テストはテーブル名である)。テーブルテストでは、GEOMフィールドを使用して、地理情報システム(GIS)の空間データを記憶する。GIS空間データは、Geometryデータ形式に分類される。GEOMは、テーブルテストのフィールドID(またはフィールド名と呼ばれる)である。Geometryは、データベースによってサポートされる空間データ形式であり、この空間データ形式は、地理的な場所を表す経度および緯度の情報であり得る。テーブルテストは、他の非空間フィールド、すなわち、整数型のID(識別)、500の長さを持つ文字型のNAME(名前)、倍精度型のPRICE(価格)、および主キーとして使用されるIDにそれぞれ対応する、ID int、NAME varchar(500)、PRICE double、VERSION int、主キー(id)などの通常フィールドをさらに含む。そのようなものとして、テーブルテストの記録は、オブジェクトの識別、名前、価格、および場所の情報を含む。GEOMフィールドは空間フィールドであるが、非空間データを記憶する他のフィールドは、通常フィールドまたは非空間フィールドである。
【0040】
ステップS102:データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得する。
【0041】
このステップは、フィルタ条件としても知られている、空間インデックスを生成するための空間フィルタ条件を判定するためである。
【0042】
本出願の実施形態によって提供される実装方法では、空間フィルタ条件は空間フィールドを含み、対応する後続のステップにおいて得られるツリー構造空間インデックスのインデックス列はこの空間フィールドを含む。
【0043】
本出願の実施形態によって提供される別の実装方法では、空間フィルタ条件は、空間フィールドプレフィックスを含む。あるいは、空間データは、空間フィールドプレフィックスを使用して後で生成されるツリー構造インデックスに記憶することもできる。言い換えると、インデックスに記憶された空間データの制約条件は、空間フィールドプレフィックスを介して定義または指定できる。具体的には、データベーステーブル記録内の空間フィールドの空間データの実際の状況に応じて、かつクエリ効率と空間占有とのバランスを考慮して制約条件を判定する。例えば、空間占有がまだ使用可能であるとき、インデックスに空間データを記憶するための条件が緩和されて、可能な限り多くの空間データがインデックスに記憶され、それにより、クエリ効率が向上する。
【0044】
さらに、空間フィルタ条件は、非空間フィールドおよび非空間フィールドプレフィックスのうちの少なくとも1つをさらに含む。後続のステップにおいて異なる空間フィルタ条件に従って生成された空間インデックスは、異なるフィールド形式を含む。空間フィルタ条件が空間フィールドプレフィックスを参照する場合、得られる空間インデックスは空間プレフィックスインデックスであり、空間プレフィックスインデックスのインデックス列は空間フィールドプレフィックスを含む。空間フィルタ条件が、空間フィールドプレフィックスおよび非空間フィールド、空間フィールドプレフィックスおよび非空間フィールドプレフィックス、空間フィールドプレフィックス、非空間フィールド、または非空間フィールドプレフィックスを参照する場合、その後に得られる空間インデックスは、複合プレフィックス空間インデックスである。複合プレフィックス空間インデックスのインデックス列は、空間フィールドプレフィックスを含み、さらに、非空間フィールドおよび非空間フィールドプレフィックスのうちの少なくとも1つを含む。
【0045】
本出願の実施形態では、インデックス作成コマンド情報は、データベーステーブルが作成される段階において得られてもよく、またはそれは、データベーステーブルが作成された後、またはデータベーステーブルが作成されてデータが挿入された後に得られてもよい。このプロセスは、具体的には、
データベーステーブル作成コマンドに従って、データベーステーブルを作成することであって、データベーステーブル作成コマンドが、ツリー構造空間インデックスを生成するためのインデックス作成コマンドを含む、作成すること、または
インデックス作成コマンドに従って、ツリー構造空間インデックスを作成すること、を含む。
【0046】
例として、データベースAのデータベーステーブルテストを引き続き使用する。以下のコマンドを用いてテストを作成することは、空間インデックスsckを作成するためのインデックス作成コマンド情報を得るためである。
Create table test(
ID int,
NAME varchar(500),
PRICE double,
GEOM.Geometry,
VERSION int,
Primary key(id),
Spatial key sck (Geom(30)、version)
);
【0047】
テーブルテストの作成コマンドに含まれる上記の空間インデックスsckのインデックス作成コマンド情報は、空間フィールドGEOMの30バイトのプレフィックス、VERSIONフィールド、およびセカンダリインデックスとして自動的に含まれる主キーIDを含む。それはまた、テーブルテストが作成された後に、またはデータがテーブルテストに挿入された後に、「Create index」を使用することによって作成することもできる。例えば、空間インデックスsck1のインデックス作成コマンド情報は、空間フィールドGEOMの30バイトのプレフィックス、PRICEフィールド、およびセカンダリインデックスとして自動的に含まれる主キーIDを含む。コマンドは次のとおりである:create spatial key sck1(geom(20)、price)。
【0048】
ステップS103:空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成し、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する。
【0049】
このステップは、空間データを記憶するツリー構造空間インデックスを生成するためである。
【0050】
本出願の実施形態では、空間フィルタ条件が空間フィールドおよび非空間フィールドを含む場合、データベーステーブルのツリー構造空間インデックスは、具体的には、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドの情報および非空間フィールドの情報に従って、データベーステーブルの複合空間インデックスを生成することであって、空間複合インデックスのインデックス列が、空間フィールドおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして複合空間インデックスを使用することと、の処理を通じて生成される。
【0051】
本出願の実施形態では、空間フィルタ条件が空間フィールドプレフィックスの情報および非空間フィールドの情報を含む場合、データベーステーブルのツリー構造空間インデックスは、具体的には、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックスの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドプレフィックスの情報および非空間フィールドの情報に従って、複合プレフィックス空間インデックスを生成することであって、複合プレフィックス空間インデックスのインデックス列が、空間フィールドプレフィックスおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして空間複合プレフィックスインデックスを使用することと、の処理を通じて生成される。
【0052】
本出願の実施形態によって提供される特定の実装方法では、生成されたツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。
【0053】
本出願の実施形態によって提供される別の特定の実装方法では、生成されたツリー構造空間インデックスのインデックス列は、空間フィールドプレフィックス情報を含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。データベーステーブルのツリー構造空間インデックスは、具体的には、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックス情報を取得することと、
空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することであって、空間プレフィックスインデックスのインデックス列が、空間フィールドプレフィックス情報を含む、生成することと、
ツリー構造空間インデックスとして空間プレフィックスインデックスを使用することと、の処理を通じて生成される。
【0054】
さらに、空間フィルタ条件は、最小境界矩形演算型のフィルタ条件を含む。したがって、空間フィールドプレフィックス情報に従ってデータベーステーブルの空間プレフィックスインデックスを生成する処理は、
最小境界矩形演算型のフィルタ条件に従って、データベーステーブルに対して最小境界ボックスフィルタリングを実行して、最小境界矩形演算型のフィルタ条件を満たす代替空間フィールドを得ることと、
代替空間フィールドに記憶された空間データに対して、地理空間情報のための標準バイトのストリーム符号化を実行することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データ、および空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することと、を含む。
【0055】
いわゆる地理空間情報標準バイトストリームは、幾何学的情報を表現するために連続バイナリストリームを使用する、Well-known Binary(WKB)を指す。
【0056】
本出願の実施形態によって提供される特定の実装方法では、空間フィールドプレフィックス情報は、空間フィールドに記憶された空間データの長さを示すための条件を含む。したがって、地理空間情報のための標準バイトストリーム符号化が実行された空間データ、および空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することは、具体的には、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さを取得することと、
空間フィールドプレフィックス情報に従って長さ条件を取得することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さが長さ条件を満たす場合、長さ条件を満たす空間データを空間プレフィックスインデックスのリーフノードに記憶することと、を含み、
それ以外の場合、空間プレフィックスインデックスのリーフノードは空間データを保存しない。
【0057】
例として、データベースAのデータベーステーブルテストを引き続き使用する。ツリー構造の複合プレフィックス空間インデックスが、GEOM、VERSION、およびNAMEに基づいて生成される。インデックスの構造を図2に示す。図2は、ツリー構造の複合プレフィックス空間インデックスの概略構造図を示している。複合プレフィックス空間インデックスの構造は、Rツリーインデックスの構造である。この図では、201は、ルートが、最大矩形空間を記憶するRツリーのルートノードであることを示している。202によって示される非リーフノードは、空間取り出し用の最小境界矩形(MBR)と、次のページを検索するためのpageid(ページ識別)とのみを記憶する。203によって示されるリーフノードに記憶されたコンテンツは、202によって示される非リーフノードに記憶されたコンテンツとは異なる。203によって示されるリーフノードに記憶されたコンテンツは、MBRだけでなく、空間フィールドプレフィックスに含まれる制約条件の空間データも含み、それはさらに、図の20に含まれるCol1など、従来の非空間フィールドも確かに含む。この例では、コンテンツは、具体的には、VERSIONフィールドおよびNAMEフィールド、ならびに図の20に含まれているPKなど、セカンダリインデックスとして複合プレフィックス空間インデックスに自動的に含まれる主キーPKを含む。この例では、テーブルテストの主キーはIDであるため、特定の複合プレフィックス空間インデックスのリーフノードはIDフィールドも含む。
【0058】
上記の第1の実施形態に基づいて、本出願の第2の実施形態は、データベースクエリ処理方法をさらに提供する。
【0059】
本出願の第2の実施形態によって提供されるデータベースクエリ処理方法を示す図3をどうか参照されたい。この実施形態は第1の実施形態に基づくので、その説明は比較的簡潔である。関連する部分については、第1の実施形態の対応する説明を参照することができる。
【0060】
本出願の第2の実施形態によって提供されるデータベースクエリ処理方法は、ステップS301からS304を含む。
【0061】
ステップS301:空間データがクエリされるデータベーステーブルを判定し、データベーステーブルが、空間データを記憶するための空間フィールドを含む。
【0062】
このステップは、空間データがクエリされるデータベーステーブルを判定するためである。
【0063】
本出願のこの実施形態では、データベーステーブルは、クエリコマンドを取得することによって判定される。例として、データベースAのデータベーステーブルテストが引き続き使用される。クエリコマンドの例は以下のとおりである。
selectID、GEOM、VERSION from test where MBRIntersects(GEOM,,ST_GeomFromText(‘POLYGON((113.22779059410095 23.077155641028952、113.22927117347716 23.077155641028952、113.22927117347716 23.078517734365768、113.22779059410095 23.078517734365768、113.22779059410095 23.077155641028952))’、4326))and version(2、3);
テーブルテストの記録が、オブジェクトの識別、名前、価格、および場所の情報を含み、テーブルテストが、空間フィールドGEOMを使用して、経度および緯度の情報を含むGIS空間データを記憶する。テーブルテストは、他の非空間フィールド:整数型のID(識別)、500の長さを持つ文字型のNAME(名前)、倍精度型のPRICE(価格)、およびIDフィールドとして指定される主キーにそれぞれ対応する、ID int、NAME varchar(500)、PRICE double、VERSION int、主キー(id)、および他のフィールドの通常フィールドをさらに含む。上記のクエリコマンドは、テーブルテストから、where句によって指定されたクエリ条件を満たす記録されたID、GEOM、およびVERSION情報を選択するためである。この例におけるクエリ条件は、空間クエリ条件および非空間クエリ条件を含む。
【0064】
ステップS302:データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得する。
【0065】
このステップは、空間クエリフィールドを含むクエリ条件を判定するためである。
【0066】
本出願の実施形態では、クエリ条件の空間クエリ情報は、空間クエリフィールドを含み、空間クエリ情報は、具体的には、空間クエリフィールドを含む最小境界矩形演算である。
【0067】
例として、データベースAのデータベーステーブルテストのクエリコマンドを引き続き使用する。
【0068】
MBRIntersects(GEOM,,ST_GeomFromText(‘POLYGON ((113.22779059410095 23.077155641028952、113.22927117347716 23.077155641028952、113.22927117347716 23.078517734365768、113.22779059410095 23.078517734365768、113.22779059410095 23.077155641028952))’、4326))
上記のコマンドのwhere句は、最小境界矩形演算が交差または重複を含む演算であるかどうかを判定するためである。
【0069】
本出願の実施形態では、クエリ条件は、非空間フィールドおよび非空間フィールドプレフィックスのうちの少なくとも1つをさらに含む。
【0070】
ステップS303:データベーステーブルのツリー構造空間インデックスを取得し、ツリー構造空間インデックスのリーフノードが、空間データを記憶する。
【0071】
このステップは、ツリー構造空間インデックスを取得するためである。
【0072】
本出願の実施形態では、このステップは、具体的には、データベーステーブルのクエリ条件を取得することと、クエリ条件が空間クエリフィールドを含むと判定することと、データベーステーブルに対して確立された空間インデックスまたは複合空間インデックスを得ることと、の処理を含む。具体的には、ツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。好ましくは、リーフノードは、主キーIDをさらに含む。
【0073】
例として、データベースAのデータベーステーブルテストを引き続き使用する。テーブルテストでは、GEOM、VERSION、およびNAMEに基づいて生成されたツリー構造の複合プレフィックス空間インデックスが得られる。インデックスの構造を図2に示す。図2は、ツリー構造の複合プレフィックス空間インデックスの概略構造図を示している。複合プレフィックス空間インデックスの構造は、Rツリーインデックスの構造である。この図では、201は、ルートが、最大矩形空間を記憶するRツリーのルートノードであることを示している。202によって示される非リーフノードは、空間取り出し用の最小境界矩形(MBR)と、次のページを検索するためのpageid(ページ識別)とのみを記憶する。203によって示されるリーフノードに記憶されたコンテンツは、202によって示される非リーフノードに記憶されたコンテンツとは異なる。203によって示されるリーフノードに記憶されたコンテンツは、MBRだけでなく、空間フィールドプレフィックスに含まれる制約条件の空間データも含み、それはさらに、VERSIONフィールド、NAMEフィールド、およびセカンダリインデックスとして複合プレフィックス空間インデックスに自動的に含まれる主キーPKなど、従来の非空間フィールドも確かに含む。テーブルテストの主キーはIDであるため、特定の複合プレフィックス空間インデックスのリーフノードはIDフィールドも含む。
【0074】
ステップS304:クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得る。
【0075】
このステップは、クエリ条件に従って、ツリー構造空間インデックスをクエリするためである。
【0076】
本出願の実施形態では、クエリ条件は、非空間フィールドをさらに含み、クエリ結果は、具体的には、
クエリ条件の空間フィールドを取得することと、
空間フィールドがツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
そうである場合、クエリ条件の空間クエリフィールドに従って、データベーステーブルの複合空間インデックスをクエリして、クエリ条件を満たすクエリ結果を得ることと、
そうではない場合、データベーステーブル内のクエリ条件に一致する非空間クエリフィールドの代替記録を得て、クエリ条件の空間クエリフィールドに従って、かつ代替記録から、クエリ条件を満たすクエリ結果を取得することと、の処理を通じて得られる。本出願の実施形態では、代替記録から、クエリ条件を満たすクエリ結果を取得することは、具体的には、
代替行記録のデータに対して空間計算を実行し、計算結果に従って、代替行記録から、空間クエリフィールドと一致する行記録を取得することと、
クエリ条件を満たすクエリ結果として、空間クエリフィールドを満たす行記録を使用することと、の処理を含む。
【0077】
本出願の実施形態では、空間フィールドがツリー構造空間インデックスのインデックス列の空間フィールドIDに一致すると判定された場合、クエリ条件の空間クエリフィールドに従って、データベーステーブルの複合空間インデックスをクエリして、クエリ条件を満たすクエリ結果を得ることは、
クエリ条件の非空間クエリフィールドを取得することと、
空間クエリフィールドおよび非空間クエリフィールドが、データベーステーブルの複合空間インデックスに含まれるインデックス列であるかどうかを判定することと、
そうである場合、クエリ条件がデータベーステーブルの空間インデックスクエリモードを満たすと判定し、クエリ条件に従って、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、
そうではない場合、クエリ条件に従って、データベーステーブルの複合空間インデックスから、クエリ条件を満たす代替記録を見つけるためにクエリし、代替記録の主キーに従って、データベーステーブルに戻ってさらにクエリし、クエリ条件を満たす完全な行記録を得ることと、の処理を通じて行われる。
【0078】
具体的には、クエリ条件に従って、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることは、
空間クエリフィールドに従って、空間クエリフィールドが、クエリされるデータベーステーブルの複合空間インデックスの空間フィールドであるかどうかを判定することと、
そうである場合、空間クエリフィールドのプレフィックス情報に含まれる長さ条件に従ってカバリングインデックススキャンを使用して複合空間インデックスをクエリすることと、
そうではない場合、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、の処理を通じて行われる。
【0079】
本出願の実施形態では、具体的には、空間クエリフィールドのプレフィックス情報に含まれる長さ条件に従ってカバリングインデックススキャンを使用して複合空間インデックスをクエリすることは、
空間クエリフィールドのプレフィックス情報に含まれる長さ条件を取得することと、
複合空間インデックスの行記録の長さが長さ条件を満たすかどうかを判定することと、そうである場合、カバリングインデックススキャンのクエリ結果として行記録を使用することと、
そうではない場合、主キー情報に従ってデータベーステーブルをクエリすることと、の処理を通じて行われる。
【0080】
本出願の第2の実施形態によって提供されるデータベースクエリ処理方法の特定の実装のフローチャートを示す図4をどうか参照されたい。この図では、実装は以下のステップ含む。
【0081】
S401。クエリ開始、すなわち、クエリコマンドが受信され、クエリプロセスが開始される。
【0082】
S402。クエリの最適化、すなわち、クエリコマンドの記述が解読され、クエリ条件が様々なトークンに分割されて、後続のステップにおいて使用される。
【0083】
S403。空間インデックスを使用してクエリすべきかどうかを判定する。本出願の実施形態では、クエリ条件が、交差、包含、方向、距離、距離分類など、空間データのための幾何学的演算子を含む場合、空間インデックスが優先的に使用されるように判定され、そうである場合、S404に進み、そうではない場合、S404-1に進む。
【0084】
S404。複合空間インデックスがクエリオブジェクトフィールドを含むかどうか、すなわち、複合空間インデックスが、クエリコマンド内にクエリされる必要があるフィールドを含むかどうかを判定する。本出願の実施形態では、データベーステーブルの複合空間インデックスは、分割を通じて得られた各トークンに従って、クエリコマンド内にクエリされる必要があるフィールド(またはデータベーステーブルの列)を含むかどうかが判定される。複合空間インデックスが、クエリコマンド内にクエリされる必要があるフィールドを含む場合、S405に進み、複合空間インデックスが、クエリコマンド内にクエリされる必要があるフィールドを含まない場合、S405-1に進む。
【0085】
S404-1。他の非空間フィールドインデックスのための処理フローに入る。すなわち、空間インデックスクエリを優先的に実行することはできず、クエリは非空間フィールドに基づく必要がある。本出願の実施形態では、以下の演算が実行される:データベーステーブル内のクエリ条件に一致する非空間クエリフィールドの代替記録を得て、クエリ条件の空間クエリフィールドに従って、かつ代替記録から、クエリ条件を満たすクエリ結果を取得する。具体的には、
代替行記録のデータに対して空間計算を実行し、計算結果に従って、代替行記録から、空間クエリフィールドと一致する行記録を取得することと、
クエリ条件を満たすクエリ結果として、空間クエリフィールドを満たす行記録を使用することと、の処理が含まれる。
【0086】
この処理では、各行に記録された完全なデータをクエリする必要があり、次いで、標準の空間関数を使用して、交差、包含、方向、距離、距離分類などの幾何学的空間演算が実行され得るクエリ条件が満たされるかどうかを計算および決定する。
【0087】
S405。クエリコマンド内で空間フィールドがクエリされる必要があるかどうかを判定する。クエリコマンド内で空間フィールドが取得される必要がある場合、S406に進み、クエリコマンド内で空間フィールドが得られる必要がない場合、S406-1に進む。
【0088】
S405-1。インデックスrowid演算によるテーブルアクセスを実行し、これは、具体的には、クエリ条件の空間クエリ条件を満たす代替記録がクエリおよび選択された後に、プロセスが、さらなるクエリのために主キーテーブルに戻って、すべてのフィールドを得、かつクエリ条件内の他の非空間クエリ条件が満たされるかどうかを判定することを意味する。
【0089】
S406。記録された空間データの長さが空間フィールドプレフィックスの長さ条件を満たすかどうかを判定する。空間データの長さが空間フィールドプレフィックスの長さ条件を満たす場合、S406-1に進み、空間データの長さが空間フィールドプレフィックスの長さ条件を満たさない場合、S405-1に進む。
【0090】
S406-1。カバリングインデックススキャン演算を実行し、すなわち、複合空間インデックスに対してカバリングインデックススキャンを実行して、必要なクエリ結果を得る。
【0091】
例として、データベースAのデータベーステーブルテストのクエリコマンドを引き続き使用する。上記の選択コマンドは、テーブルテストから、where句によって指定されたクエリ条件を満たす記録されたID、GEOM、およびVERSION情報を選択するためである。この例におけるクエリ条件は、空間クエリ条件および非空間クエリ条件を含む。空間クエリ条件はMBRIntersects演算であり、非空間クエリ条件はVERSION条件、すなわち(2、3)におけるバージョンである。テーブルテストが作成されると、複合プレフィックス空間インデックスsckが作成される。sckは、GEOMフィールドの30バイトのプレフィックス、VERSION、およびセカンダリインデックスとして自動的に含まれる主キーIDを記録する。クエリのwhere条件には、最初に、空間インデックスのクエリフィルタリングを満たす最小境界矩形演算のフィルタ条件があり、次いで、他のフィルタ条件およびクエリされたコンテンツが、このsckインデックスのインデックス列である。その結果、S405が実行される。さらに、空間インデックスクエリモードを使用できるかどうかが判定される。複合空間インデックスの空間フィールドが、境界矩形演算、距離演算など、空間インデックスが実行できる条件によってフィルタリングされているかどうか、および複合空間インデックスが他の通常フィールドのフィルタリングをさらに含むかどうかがさらに判定される。S405の実行中、geomフィールドが選択されているため、プロセスはS406に進んで、空間プレフィックスの長さ条件をさらに判定する。インデックス内の境界矩形フィルタリングを満たす結果のgeomが、wkbを使用して符号化された後に30バイト未満である場合、例えば、対応して25のwkb長さを有するポイント(113.228、23.078)である場合、完全なgeom wkb情報がsckインデックスのリーフノードに記録され得る。この場合、プロセスは、カバリングインデックススキャンのためにS406-1に進む。それが非常に大きい複数の多角形であり、wkb符号化の長さが30バイトを超える場合、この状況の記録がsckインデックス上にマークされ、インデックスrowid演算によるテーブルアクセスがこのマークに従って実行され、これは、プロセスがS405-1に進み、主キーインデックスを再度確認して、geomの完全な記録を得ることを意味する。
【0092】
本出願の第1の実施形態によって提供されるデータベースインデックス処理方法に従って、本出願の第3の実施形態は、データベースインデックス処理装置をさらに提供する。
【0093】
本出願の第3の実施形態に従って提供されるデータベースインデックス処理装置の概略図を示す図5をどうか参照されたい。この装置の実施形態は、基本的に方法の実施形態と同様であるため、説明は比較的簡潔である。関連する部分については、方法の実施形態の対応する説明を参照することができる。
【0094】
本出願は、データベースインデックス処理装置を提供し、この装置は、
データベースインデックスが作成されるデータベーステーブルを判定するように構成されたデータベーステーブル判定ユニット501であって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、データベーステーブル判定ユニット501と、
データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得するように構成されたフィルタ条件取得ユニット502と、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成するように構成されたインデックス生成ユニット503であって、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、インデックス生成ユニット503と、を備える。
【0095】
本明細書では、空間フィルタ条件は、空間フィールドプレフィックス情報を含み、インデックス生成ユニット503は、具体的には、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックス情報を取得することと、
空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することであって、空間プレフィックスインデックスのインデックス列が、空間フィールドプレフィックス情報を含む、生成することと、
ツリー構造空間インデックスとして空間プレフィックスインデックスを使用することと、を行うように構成される。
【0096】
本明細書では、空間フィルタ条件は、最小境界矩形演算型のフィルタ条件を含み、インデックス生成ユニット503は、具体的には、
最小境界矩形演算型のフィルタ条件に従って、データベーステーブルに対して最小境界ボックスフィルタリングを実行して、最小境界矩形演算型のフィルタ条件を満たす代替空間フィールドを得ることと、
代替空間フィールドに記憶された空間データに対して、地理空間情報のための標準バイトストリーム符号化を実行することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データ、および空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することと、を行うように構成される。
【0097】
本明細書では、空間フィールドプレフィックス情報は、空間フィールドに記憶された空間データの長さを示すための条件を含み、インデックス生成ユニット503は、具体的には、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さを取得することと、
空間フィールドプレフィックス情報に従って長さ条件を取得することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さが長さ条件を満たす場合、長さ条件を満たす空間データを空間プレフィックスインデックスのリーフノードに記憶することと、を行うように構成され、
それ以外の場合、空間プレフィックスインデックスのリーフノードは空間データを保存しない。
【0098】
本明細書では、インデックス生成ユニット503は、具体的には、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドの情報および非空間フィールドの情報に従って、データベーステーブルの複合空間インデックスを生成することであって、空間複合インデックスのインデックス列が、空間フィールドおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして複合空間インデックスを使用することと、を行うように構成される。
【0099】
本明細書では、インデックス生成ユニット503は、具体的には、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックスの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドプレフィックスの情報および非空間フィールドの情報に従って、複合プレフィックス空間インデックスを生成することであって、複合プレフィックス空間インデックスのインデックス列が、空間フィールドプレフィックスおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして複合プレフィックス空間インデックスを使用することと、を行うように構成される。
【0100】
ツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。
【0101】
本明細書では、装置は、コマンドユニットをさらに含み、コマンドユニットは、
データベーステーブル作成コマンドに従って、データベーステーブルを作成することであって、データベーステーブル作成コマンドが、ツリー構造空間インデックスを生成するためのインデックス作成コマンドを含む、作成すること、または
インデックス作成コマンドに従って、ツリー構造空間インデックスを作成すること、を行うように構成される。
【0102】
本出願の第2の実施形態によって提供されるデータベースクエリ処理方法に従って、本出願の第4の実施形態は、データベースクエリ処理装置をさらに提供する。
【0103】
本出願の第4の実施形態に従って提供されるデータベースクエリ処理装置の概略図を示す図6をどうか参照されたい。この装置の実施形態は、基本的に方法の実施形態と同様であるため、説明は比較的簡潔である。関連する部分については、方法の実施形態の対応する説明を参照することができる。
【0104】
図6に示されるデータベースクエリ処理装置は、
空間データがクエリされるデータベーステーブルを判定するように構成されたデータベーステーブル判定ユニット601であって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、データベーステーブル判定ユニット601と、
データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得するように構成されたクエリ条件判定ユニット602と、
データベーステーブルのツリー構造空間インデックスを取得するように構成されたインデックス取得ユニット603であって、ツリー構造空間インデックスのリーフノードが、空間データを記憶する、インデックス取得ユニット603と、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得るように構成されたクエリユニット604と、を備える。
【0105】
クエリ条件は、非空間フィールドをさらに含み、クエリユニット604は、具体的には、
クエリ条件の空間フィールドを取得することと、
空間フィールドがツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
そうである場合、クエリ条件の空間クエリフィールドに従って、データベーステーブルの複合空間インデックスをクエリして、クエリ条件を満たすクエリ結果を得ることと、
そうではない場合、データベーステーブル内のクエリ条件に一致する非空間クエリフィールドの代替記録を得て、クエリ条件の空間クエリフィールドに従って、かつ代替記録から、クエリ条件を満たすクエリ結果を取得することと、を行うように構成される。
【0106】
本明細書では、クエリユニット604は、具体的には、クエリ条件の非空間クエリフィールドを取得することと、
空間クエリフィールドおよび非空間クエリフィールドが、データベーステーブルの複合空間インデックスに含まれるインデックス列であるかどうかを判定することと、
そうである場合、クエリ条件がデータベーステーブルの空間インデックスクエリモードを満たすと判定し、クエリ条件に従って、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、
そうではない場合、クエリ条件に従って、データベーステーブルの複合空間インデックスから、クエリ条件を満たす代替記録を見つけるためにクエリし、代替記録の主キーに従って、データベーステーブルに戻ってさらにクエリし、クエリ条件を満たす完全な行記録を得ることと、を行うように構成される。
【0107】
本明細書では、クエリユニット604は、カバリングインデックススキャンサブユニットを含み、カバリングインデックススキャンサブユニットは、空間クエリフィールドに従って、データベーステーブルの複合空間インデックスの空間フィールドがクエリされるかどうかを判定することと、
そうである場合、空間クエリフィールドのプレフィックス情報に含まれる長さ条件に従ってカバリングインデックススキャンを使用して複合空間インデックスをクエリすることと、
そうではない場合、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、を行うように構成される。
【0108】
本明細書では、カバリングインデックススキャンサブユニットは、具体的には、空間クエリフィールドのプレフィックス情報に含まれる長さ条件を取得することと、
複合空間インデックスの行記録の長さが長さ条件を満たすかどうかを判定することと、そうである場合、カバリングインデックススキャンのクエリ結果として行記録を使用することと、そうではない場合、主キー情報に従ってデータベーステーブルをクエリすることと、を行うように構成される。
【0109】
本明細書では、クエリユニット604は、具体的には、
代替行記録のデータに対して空間計算を実行し、計算結果に従って、代替行記録から、空間クエリフィールドを満たす行記録を取得することと、
クエリ条件を満たすクエリ結果として、空間クエリフィールドを満たす行記録を使用することと、を行うように構成される。
【0110】
本明細書では、クエリ条件の空間クエリ情報は、空間クエリフィールドを含む最小境界矩形演算である。
【0111】
ツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。
【0112】
本明細書では、リーフノードは、主キーIDをさらに含む。
【0113】
前述の実施形態に基づいて、本出願の第5の実施形態は、データベースインデックス処理方法を実装するための電子デバイスをさらに提供する。第5の実施形態によって提供される電子デバイスの概略図を示す図7をどうか参照されたい。
【0114】
本出願の第5の実施形態は、比較的簡潔な方法で説明される。関連する部分については、前述の実施形態の対応する説明を参照することができる。
【0115】
本出願の第5の実施形態は、
メモリ701とプロセッサ702とを備える電子デバイスを提供し、
メモリ701は、コンピュータ実行可能コマンドを記憶するように構成され、プロセッサ702は、
データベースインデックスが作成されるデータベーステーブルを判定することであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得することと、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成することであって、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成することと、というコンピュータ実行可能コマンドを実行するように構成される。
【0116】
任意選択として、空間フィルタ条件は、空間フィールドプレフィックス情報を含み、プロセッサ702は、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックス情報を取得することと、
空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することであって、空間プレフィックスインデックスのインデックス列が、空間フィールドプレフィックス情報を含む、生成することと、
ツリー構造空間インデックスとして空間プレフィックスインデックスを使用することと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0117】
任意選択として、空間フィルタ条件は、最小境界矩形演算型のフィルタ条件を含み、プロセッサ702は、
最小境界矩形演算型のフィルタ条件に従って、データベーステーブルに対して最小境界ボックスフィルタリングを実行して、最小境界矩形演算型のフィルタ条件を満たす代替空間フィールドを得ることと、
代替空間フィールドに記憶された空間データに対して、地理空間情報のための標準バイトストリーム符号化を実行することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データ、および空間フィールドプレフィックス情報に従って、データベーステーブルの空間プレフィックスインデックスを生成することと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0118】
任意選択として、空間フィールドプレフィックス情報は、空間フィールドに記憶された空間データの長さを示すための条件を含み、プロセッサ702は、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さを取得することと、
空間フィールドプレフィックス情報に従って長さ条件を取得することと、
地理空間情報のための標準バイトストリーム符号化が実行された空間データの長さが長さ条件を満たす場合、長さ条件を満たす空間データを空間プレフィックスインデックスのリーフノードに記憶することと、というコンピュータ実行可能コマンドを実行するようにさらに構成され、
それ以外の場合、空間プレフィックスインデックスのリーフノードは空間データを保存しない。
【0119】
任意選択として、プロセッサ702は、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドの情報および非空間フィールドの情報に従って、データベーステーブルの複合空間インデックスを生成することであって、空間複合インデックスのインデックス列が、空間フィールドおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして複合空間インデックスを使用することと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0120】
任意選択として、プロセッサ702は、
空間フィルタ条件に従って、ツリー構造空間インデックスを生成するために使用される空間フィールドプレフィックスの情報を取得することと、
ツリー構造空間インデックスを生成するために使用される非空間フィールドの情報を取得することと、
空間フィールドプレフィックスの情報および非空間フィールドの情報に従って、複合プレフィックス空間インデックスを生成することであって、複合プレフィックス空間インデックスのインデックス列が、空間フィールドプレフィックスおよび非空間フィールドを含む、生成することと、
ツリー構造空間インデックスとして複合プレフィックス空間インデックスを使用することと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0121】
任意選択として、ツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。
【0122】
任意選択として、プロセッサ702は、
データベーステーブル作成コマンドに従って、データベーステーブルを作成することであって、データベーステーブル作成コマンドが、ツリー構造空間インデックスを生成するためのインデックス作成コマンドを含む、作成すること、または
インデックス作成コマンドに従って、ツリー構造空間インデックスを作成すること、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0123】
前述の実施形態に基づいて、本出願の第6の実施形態は、データベースクエリ処理方法を実装するための電子デバイスをさらに提供し、その構造は、図7に示されるものと同様である。
【0124】
本出願の第6の実施形態は、比較的簡潔な方法で説明される。関連する部分については、前述の実施形態の対応する説明を参照することができる。
【0125】
本出願の第6の実施形態は、
メモリとプロセッサとを備える電子デバイスを提供し、
メモリは、コンピュータ実行可能コマンドを記憶するように構成され、プロセッサは、コンピュータ実行可能コマンドを実行するように構成され、
メモリは、コンピュータ実行可能コマンドを記憶するように構成され、プロセッサは、
空間データがクエリされるデータベーステーブルを判定することであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得することと、
データベーステーブルのツリー構造空間インデックスを取得することであって、ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得することと、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得ることと、というコンピュータ実行可能コマンドを実行するように構成される。
【0126】
任意選択として、リーフノードは、主キーIDをさらに含む。
【0127】
任意選択として、クエリ条件は、非空間フィールドをさらに含み、プロセッサは、
クエリ条件の空間フィールドを取得することと、
空間フィールドがツリー構造空間インデックスのインデックス列の空間フィールドIDに一致するかどうかを判定することと、
そうである場合、クエリ条件の空間クエリフィールドに従って、データベーステーブルの複合空間インデックスをクエリして、クエリ条件を満たすクエリ結果を得ることと、
そうではない場合、データベーステーブル内のクエリ条件に一致する非空間クエリフィールドの代替記録を得て、クエリ条件の空間クエリフィールドに従って、かつ代替記録から、クエリ条件を満たすクエリ結果を取得することと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0128】
任意選択として、プロセッサは、
クエリ条件の非空間クエリフィールドを取得することと、
空間クエリフィールドおよび非空間クエリフィールドが、データベーステーブルの複合空間インデックスに含まれるインデックス列であるかどうかを判定することと、
そうである場合、クエリ条件がデータベーステーブルの空間インデックスクエリモードを満たすと判定し、クエリ条件に従って、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、
そうではない場合、クエリ条件に従って、データベーステーブルの複合空間インデックスから、クエリ条件を満たす代替記録を見つけるためにクエリし、代替記録の主キーに従って、データベーステーブルに戻ってさらにクエリし、クエリ条件を満たす完全な行記録を得ることと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0129】
任意選択として、プロセッサは、
空間クエリフィールドに従って、空間クエリフィールドが、クエリされるデータベーステーブルの複合空間インデックスの空間フィールドであるかどうかを判定することと、
そうである場合、空間クエリフィールドのプレフィックス情報に含まれる長さ条件に従ってカバリングインデックススキャンを使用して複合空間インデックスをクエリすることと、
そうではない場合、カバリングインデックススキャンを使用してデータベーステーブルの複合空間インデックスをクエリすることと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0130】
任意選択として、プロセッサは、
空間クエリフィールドのプレフィックス情報に含まれる長さ条件を取得することと、
複合空間インデックスの行記録の長さが長さ条件を満たすかどうかを判定することと、そうである場合、カバリングインデックススキャンのクエリ結果として行記録を使用することと、
そうではない場合、主キー情報に従ってデータベーステーブルをクエリすることと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0131】
任意選択でとして、プロセッサは、
代替行記録のデータに対して空間計算を実行し、計算結果に従って、代替行記録から、空間クエリフィールドと一致する行記録を取得することと、
クエリ条件を満たすクエリ結果として、空間クエリフィールドを満たす行記録を使用することと、というコンピュータ実行可能コマンドを実行するようにさらに構成される。
【0132】
任意選択で、クエリ条件の空間クエリ情報は、空間クエリフィールドを含む最小境界矩形演算である。
【0133】
任意選択で、ツリー構造空間インデックスのインデックス列は、空間フィールドを含み、ツリー構造空間インデックスの非リーフノードは、空間データを取り出すための最小境界矩形、および次のレベルのページを検索するためのページIDを記憶する。
【0134】
本出願の第7の実施形態は、比較的簡単な方法で説明される記憶デバイスをさらに提供する。関連する部分については、前述の実施形態の対応する説明を参照することができる。
【0135】
本出願は、記憶されたコマンドを有する記憶デバイスを提供し、コマンドは、
データベースインデックスが作成されるデータベーステーブルを判定するステップであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定するステップと、
データベーステーブルについて、空間フィールドIDを含む空間フィルタ条件を取得するステップと、
空間フィルタ条件に従って、データベーステーブルのツリー構造空間インデックスを生成するステップであって、ツリー構造空間インデックスのリーフノードが、空間フィルタ条件を満たす空間データ、および主キーIDを記憶する、生成するステップと、を実行するためにプロセッサによって書き込まれ得る。
【0136】
本出願の第8の実施形態は、比較的簡単な方法で説明される記憶デバイスをさらに提供する。関連する部分については、前述の実施形態の対応する説明を参照することができる。
【0137】
本出願は、記憶されたコマンドを有する記憶デバイスを提供し、コマンドは、以下のステップを実行するためにプロセッサによって書き込まれ得、
メモリは、コンピュータ実行可能コマンドを記憶するように構成され、プロセッサは、
空間データがクエリされるデータベーステーブルを判定することであって、データベーステーブルが、空間データを記憶するための空間フィールドを含む、判定することと、
データベーステーブルについて、空間クエリフィールドを含むクエリ条件を取得することと、
データベーステーブルのツリー構造空間インデックスを取得することであって、ツリー構造空間インデックスのリーフノードが、空間データを記憶する、取得することと、
クエリ条件に従って、ツリー構造空間インデックスをクエリして、クエリ結果を得ることと、というコンピュータ実行可能コマンドを実行するように構成される。
【0138】
典型的な構成では、コンピューティングデバイスは、1つ以上のプロセッサ(CPU)と、入力/出力インターフェースと、ネットワークインターフェースと、メモリと、を含む。
【0139】
メモリは、コンピュータ可読媒体上の揮発性メモリ、ランダムアクセスメモリ(RAM)、および/または読み取り専用メモリ(ROM)もしくはフラッシュランダムアクセスメモリ(フラッシュRAM)などの不揮発性メモリなどを含み得る。メモリは、コンピュータ可読媒体の一例である。
【0140】
1.コンピュータ可読媒体は、情報記憶を達成するために任意の方法または技術を採用する不揮発性および揮発性な媒体、取り外し可能および取り外し不可能な媒体をさらに含む。情報は、コンピュータ可読コマンド、データ構造、プログラムのモジュール、または他のデータであり得る。コンピュータ記憶媒体の例は、位相変化ランダムアクセスメモリ(PRAM)、静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、他の種類のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)または他の光メモリ、磁気カセットテープ、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいはコンピューティングデバイスによってアクセスされ得る情報を記憶するために使用され得る任意の他の非伝送媒体を含むが、これらに限定されない。本明細書で定義されているように、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの一時的な媒体を含まない。
【0141】
2.当業者は、本出願の実施形態が、方法、システム、またはコンピュータプログラム製品として提供され得ることを理解すべきである。したがって、本出願は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはソフトウェア要素とハードウェア要素を組み合わせる実施形態の形態をとり得る。さらに、本発明は、コンピュータ使用可能なプログラムコードが含まれた(ディスクストレージ、CD-ROM、光学ストレージなどを含むがこれらに限定されない)1つ以上のコンピュータ使用可能な記憶媒体上に具現化されたコンピュータプログラム製品の形態をとり得る。
【0142】
本出願は、好ましい実施形態において上記のように開示されているが、本出願は、それによって限定されるべきではない。いかなる当業者も、本出願の精神および範囲から逸脱することなく、可能な変更および修正を行うことができる。したがって、本出願の保護範囲は、本出願の特許請求の範囲によって定義されるものである。
【符号の説明】
【0143】
501 データベーステーブル判定ユニット
502 フィルタ条件取得ユニット
503 インデックス生成ユニット
601 データベーステーブル判定ユニット
602 クエリ条件判定ユニット
603 インデックス取得ユニット
604 クエリユニット
701 メモリ
702 プロセッサ
図1
図2
図3
図4
図5
図6
図7