(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-19
(45)【発行日】2024-02-28
(54)【発明の名称】データベースをクエリするためのシステム、方法および装置
(51)【国際特許分類】
G06F 16/903 20190101AFI20240220BHJP
【FI】
G06F16/903
(21)【出願番号】P 2020533622
(86)(22)【出願日】2018-12-25
(86)【国際出願番号】 CN2018123437
(87)【国際公開番号】W WO2019128978
(87)【国際公開日】2019-07-04
【審査請求日】2021-10-28
(31)【優先権主張番号】201711482536.1
(32)【優先日】2017-12-29
(33)【優先権主張国・地域又は機関】CN
【前置審査】
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ツァン、グァンジョウ
(72)【発明者】
【氏名】リン、シャオビン
(72)【発明者】
【氏名】ファン、シャオジアン
(72)【発明者】
【氏名】ドウ、シャンミン
(72)【発明者】
【氏名】ゼン、ウェンジン
(72)【発明者】
【氏名】チョウ、ジェンジョン
(72)【発明者】
【氏名】ション、リァンチュン
(72)【発明者】
【氏名】ツァン、ウェンジエ
【審査官】成瀬 博之
(56)【参考文献】
【文献】特表2007-531087(JP,A)
【文献】特開2013-152512(JP,A)
【文献】特開2014-232483(JP,A)
【文献】米国特許出願公開第2014/0114994(US,A1)
【文献】米国特許出願公開第2016/0092542(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
マスタデータベースと、少なくとも1つのスレーブデータベースと、クエリ処理ユニットとを備えるデータベースシステムであって、前記マスタデータベースは、前記少なくとも1つのスレーブデータベースとのデータ接続を有し、前記少なくとも1つのスレーブデータベースは、前記クエリ処理ユニットとのデータ接続を有し
、各スレーブデータベースは、前記マスタデータベースのデータのセットに合致するデータのセットを格納し、前記クエリ処理ユニットは、クエリされる必要があるデータテーブルの情報を含むクエリ要求を、前記データテーブルの各記録に対応するキーの値を指す固有キーに従って、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成され、前記固有キーの値ドメインを、前記クエリ要求に関与する前記スレーブデータベースのものと同じ番号を有する複数の値ドメインに分割することで、前記クエリ要求は分割される、データベースシステム。
【請求項2】
前記クエリ処理ユニットは、前記クエリ要求を受信し、前記スレーブデータベースの数に従って前記データテーブルの記録の各行に対してモジュロ演算を実行し、前記モジュロ演算により生成される剰余を有する分散列値を取得し、前記分散列値に従って、前記クエリ要求を、前記重複しないクエリ範囲を有する前記クエリオペレーション命令に分割し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成され、前記分散列値は、前記データテーブルの各記録が前記スレーブデータベースを指定するために用いられる1つの値に対応することを示し、前記分割したクエリオペレーション命令はそれぞれ、同じ剰余の値を有する前記分散列値に対応する前記記録に対して行わ
れ、前記データテーブルの列を指定しない前記クエリ要求について、クエリされる前記データテーブルの最初の列の値が、前記分散列値として用いられる、請求項1に記載のデータベースシステム。
【請求項3】
前記分散列値は、前記データテーブルの予め保存された分散列値と、前記データテーブルの任意の列の値と、前記データテーブルの最初の列の値と、前記クエリ要求により指定される列の値とのうちの少なくとも1つの項目を含む、請求項2に記載のデータベースシステム。
【請求項4】
前記クエリ処理ユニットは、前記クエリ要求を受信し、前記データテーブルのデータページの数に従って、前記クエリ要求を、前記重複しないクエリ範囲を有する前記クエリオペレーション命令に分割し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成され、複数の前記データページは、前記少なくとも1つのスレーブデータベースによりそれぞれ処理される複数の範囲に分割される、請求項1から3のいずれか一項に記載のデータベースシステム。
【請求項5】
前記クエリ処理ユニットはさらに、クエリタスクを送信し、他のクエリ処理ユニットにより送信されるクエリタスクとクエリオペレーションの結果とを受信し、受信した前記クエリタスクにより指定されるデータベースクエリオペレーションを実行し、前記クエリオペレーションの前記結果を統合し、前記少なくとも1つのスレーブデータベースに対して実行される前記クエリオペレーションの結果または前記統合の後の結果を、前記クエリタスクにより指定される受信者に提供するように構成される、請求項1から4のいずれか一項に記載のデータベースシステム。
【請求項6】
前記クエリ処理ユニットは、前記少なくとも1つのスレーブデータベースと同じ物理ノード上に配置される、請求項5に記載のデータベースシステム。
【請求項7】
前記クエリ処理ユニットは、前記クエリ要求を、前記重複しないクエリ範囲を有する前記クエリオペレーション命令に分割し、前記クエリ要求に関与するスレーブデータベースの数を、前記データテーブルのサイズに従って動的に決定し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を、決定した前記スレーブデータベースへ送信し、クエリ結果を戻すように構成される、請求項1から6のいずれか一項に記載のデータベースシステム。
【請求項8】
前記クエリ処理ユニットはさらに、対応するスレーブデータベースへ前記クエリ要求を送信するように構成される、請求項1から7のいずれか一項に記載のデータベースシステム。
【請求項9】
クエリ処理ユニットが、クエリされる必要があるデータテーブルの情報を含むクエリ要求を取得する段階と、
前記クエリ処理ユニットが、前記クエリ要求を、前記データテーブルの各記録に対応するキーの値を指す固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段
階であって、各スレーブデータベースは、前記スレーブデータベースとのデータ接続を有するマスタデータベースのデータのセットに合致するデータのセットを格納する、段階と、
前記クエリ処理ユニットが、前記スレーブデータベースに対する前記クエリオペレーション命令を実行する段階と、
前記クエリ処理ユニットが、前記クエリ要求の結果を前記クエリ要求の要求元に提供する段階と
を備え、
前記固有キーの値ドメインを、前記クエリ要求に関与する前記スレーブデータベースのものと同じ番号を有する複数の値ドメインに分割することで、前記クエリ要求は分割される、データベースをクエリするための方法。
【請求項10】
前記クエリ処理ユニットが、前記スレーブデータベースの数に従って前記データテーブルの記録の各行に対してモジュロ演算を実行し、前記モジュロ演算により生成される剰余を有する分散列値を取得し、前記クエリ処理ユニットが、前記分散列値に従って、前記クエリ要求を、前記重複しないクエリ範囲を有する、前記スレーブデータベースに対する前記クエリオペレーション命令に分割する段階であって、前記分散列値は、前記データテーブルの各記録が前記スレーブデータベースを指定するために用いられる1つの値に対応することを示し、前記分割したクエリオペレーション命令はそれぞれ、同じ剰余の値を有する前記分散列値に対応する前記記録に対して行わ
れ、前記データテーブルの列を指定しない前記クエリ要求について、クエリされる前記データテーブルの最初の列の値が、前記分散列値として用いられる、段階を備える、請求項9に記載のデータベースをクエリするための方法。
【請求項11】
前記分散列値は、
前記データテーブルの予め保存された分散列値と、
前記データテーブルの任意の列の値と、
前記データテーブルの最初の列の値と、
前記クエリ要求により指定される列の値と
のうちの少なくとも1つの項目を含む、
請求項10に記載のデータベースをクエリするための方法。
【請求項12】
前記クエリ処理ユニットが、前記データテーブルのデータページの数に従って、前記クエリ要求を、前記重複しないクエリ範囲を有する、前記スレーブデータベースに対する前記クエリオペレーション命令に分割する段階を備え、複数の前記データページは、前記スレーブデータベースによりそれぞれ処理される複数の範囲に分割される、請求項9から11のいずれか一項に記載のデータベースをクエリするための方法。
【請求項13】
前記クエリ要求の結果を前記クエリ要求の要求元に提供する前記段階の前に、前記クエリ処理ユニットが、クエリオペレーションの結果を統合する段階をさらに備える、請求項9から12のいずれか一項に記載のデータベースをクエリするための方法。
【請求項14】
前記スレーブデータベースに対する前記クエリオペレーション命令を実行する前記段階は、前記クエリ処理ユニットが、前記クエリ要求に関与するスレーブデータベースの数を、前記データテーブルのサイズに従って決定し、決定した前記スレーブデータベースに対して前記クエリオペレーション命令を実行する段階である、請求項9から13のいずれか一項に記載のデータベースをクエリするための方法。
【請求項15】
クエリ処理ユニットが、クエリされる必要があるデータテーブルの情報を含むクエリ要求を取得する段階と、
前記クエリ処理ユニットが、前記クエリ要求を、前記データテーブルの各記録に対応するキーの値を指す固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段
階であって、各スレーブデータベースは、前記スレーブデータベースとのデータ接続を有するマスタデータベースのデータのセットに合致するデータのセットを格納する、段階と
を備え、
前記固有キーの値ドメインを、前記クエリ要求に関与する前記スレーブデータベースのものと同じ番号を有する複数の値ドメインに分割することで、前記クエリ要求は分割される、クエリオペレーションを割り当てるための方法。
【請求項16】
前記クエリ処理ユニットが、前記スレーブデータベースの数に従って前記データテーブルの記録の各行に対してモジュロ演算を実行し、前記モジュロ演算により生成される剰余を有する分散列値を取得し、前記分散列値に従って、前記クエリ要求を、前記重複しないクエリ範囲を有する、前記スレーブデータベースに対する前記クエリオペレーション命令に分割する段階であって、前記分散列値は、前記データテーブルの各記録が前記スレーブデータベースを指定するために用いられる1つの値に対応することを示し、前記分割したクエリオペレーション命令はそれぞれ、同じ剰余の値を有する前記分散列値に対応する前記記録に対して行わ
れ、前記データテーブルの列を指定しない前記クエリ要求について、クエリされる前記データテーブルの最初の列の値が、前記分散列値として用いられる、段階を備える、請求項15に記載のクエリオペレーションを割り当てるための方法。
【請求項17】
前記分散列値は、
前記データテーブルの予め保存された分散列値と、
前記データテーブルの任意の列の値と、
前記データテーブルの最初の列の値と、
前記クエリ要求により指定される列の値と
のうちの少なくとも1つの項目を含む、
請求項16に記載のクエリオペレーションを割り当てるための方法。
【請求項18】
前記クエリ処理ユニットが、前記データテーブルのデータページの数に従って、前記クエリ要求を、前記重複しないクエリ範囲を有する、前記スレーブデータベースに対する前記クエリオペレーション命令に分割する段階を有し、複数の前記データページは、前記スレーブデータベースによりそれぞれ処理される複数の範囲に分割される、請求項15から17のいずれか一項に記載のクエリオペレーションを割り当てるための方法。
【請求項19】
前記クエリ処理ユニットが、クエリタスクを取得する段階と、
前記クエリ処理ユニットが、前記クエリタスクにより指定されるクエリオペレーションを実行する段階と、
前記クエリ処理ユニットが、前記クエリオペレーションの結果を、前記クエリタスクにより指定される受信者に提供する段階と
を備える、請求項9から14のいずれか一項に記載のデータベースをクエリするための方法。
【請求項20】
前記クエリ処理ユニットが、クエリタスクを取得する段階と、
前記クエリ処理ユニットが、前記クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得する段階と、
前記クエリ処理ユニットが、前記クエリ結果を統合する段階と、
前記クエリ処理ユニットが、統合の結果を、前記クエリタスクにより指定される受信者に提供する段階と
を備える、請求項9から14のいずれか一項に記載のデータベースをクエリするための方法。
【請求項21】
前記クエリ結果を統合する前記段階の前に、前記クエリ処理ユニットが、前記クエリタスクにより指定されるクエリオペレーションを実行してクエリ結果を取得する段階をさらに備える、請求項20に記載のデータベースをクエリするための方法。
【請求項22】
クエリされる必要があるデータテーブルの情報を含むクエリ要求を取得または受信するように構成された取得ユニットと、
前記クエリ要求を、前記データテーブルの各記録に対応するキーの値を指す固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成された分割ユニッ
トであって、各スレーブデータベースは、前記スレーブデータベースとのデータ接続を有するマスタデータベースのデータのセットに合致するデータのセットを格納する、分割ユニットと、
前記スレーブデータベースに対する前記クエリオペレーション命令を実行するように構成された実行ユニットと、
前記クエリ要求のクエリ結果を前記クエリ要求の要求元に提供するように構成された提供ユニットと
を備え、
前記固有キーの値ドメインを、前記クエリ要求に関与する前記スレーブデータベースのものと同じ番号を有する複数の値ドメインに分割することで、前記クエリ要求は分割される、データベースをクエリするための装置。
【請求項23】
クエリされる必要があるデータテーブルの情報を含むクエリ要求を取得または受信するように構成された取得ユニットと、
前記クエリ要求を、前記データテーブルの各記録に対応するキーの値を指す固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成された分割ユニッ
トであって、各スレーブデータベースは、前記スレーブデータベースとのデータ接続を有するマスタデータベースのデータのセットに合致するデータのセットを格納する、分割ユニットと
を備え、
前記固有キーの値ドメインを、前記クエリ要求に関与する前記スレーブデータベースのものと同じ番号を有する複数の値ドメインに分割することで、前記クエリ要求は分割される、クエリオペレーションを割り当てるための装置。
【請求項24】
前記クエリ処理ユニットは、
クエリタスクを取得または受信するように構成された取得ユニットと、
前記クエリタスクにより指定されるクエリオペレーションを実行するように構成された実行ユニットと、
前記クエリオペレーションの結果を、前記クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を有する、請求項1から8のいずれか一項に記載のデータベースシステム。
【請求項25】
前記クエリ処理ユニットは、
クエリタスクを取得または受信するように構成された取得ユニットと、
前記クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得するように構成された第2の取得ユニットと、
前記クエリ結果を統合するように構成された統合ユニットと、
統合の結果を、前記クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を有する、請求項1から8のいずれか一項に記載のデータベースシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2018年12月25日に出願された、「データベースシステムならびにデータベースをクエリするための方法およびデバイス」と題する国際出願番号PCT/CN18/123437の国内段階移行であり、2017年12月29日に出願された、「データベースシステムならびにデータベースをクエリするための方法および装置」と題する中国特許出願第201711482536.1号の優先権を主張する。これらの出願の両方が、参照により、その全体が本明細書に組み込まれる。
[背景技術]
【0002】
開示される実施形態示は、データベースに関し、具体的には、データベースシステムに関する。開示される実施形態は、データベースをクエリするための方法およびデータベースをクエリするための装置にも関する。開示される実施形態はさらに、クエリタスクを割り当てるための方法およびクエリタスクを割り当てるための装置に関する。開示される実施形態はさらに、データベースクエリを実行するための方法およびデータベースクエリを実行するための装置に関する。開示される実施形態はさらに、データベースクエリを実行するための方法およびデータベースクエリを実行するための装置に関する。
[関連する従来技術の説明]
【0003】
非分散データベースは通常、1つのマスタデータベースに加えて1または複数のスレーブデータベースを有するマスタ‐スレーブアーキテクチャを用いる。
【0004】
このアーキテクチャにおいて、マスタデータベースは、外部で書き込み可能である。マスタデータベース内のデータが更新された場合、データは、トランザクションログを通じてスレーブデータベースへ同期される。概して、1つのマスタデータベースが1または複数のスレーブデータベースに対応し、各スレーブデータベースは、マスタデータベースのものに合致するデータの完全なセットを格納する。
【0005】
マスタデータベースが機能不全になった場合、各スレーブデータベースは、スタンバイデータベースとして機能してマスタデータベースを置換することにより、可用性を改善できる。各スレーブデータベースは、クエリ要求を実行できるので、マスタデータベースのクエリロードを共有できる。
【0006】
現在のアーキテクチャにおいて、構造化照会言語(SQL)クエリオペレーションは、1つのデータベース内でのみ実行できる。すなわち、SQLクエリは、マスタデータベース内のみで、または1つのスレーブデータベース内のみで実行できる。結果として、1つのスレーブデータベースは、高負荷かつ低速応答での大きく複雑なSQLクエリオペレーションの実行でビジーになり得るが、一方で、他のスレーブデータベースはアイドルになる。特に、スレーブデータベースは通常、デイリークエリデータベースとして機能することに加え、デイリーレポートの生成および特定の時間(例えば、早朝)におけるデータのチェックなどの複雑なオペレーションを実行する。この場合、大きく複雑なSQLクエリオペレーションを実行すると、システムの過負荷に起因して、クエリサービスの提供に失敗することさえあり得る。
【0007】
上記のように仮定すると、マスタ‐スレーブアーキテクチャを有する既存の非分散データベースは、他のスタンバイデータベースリソースを複雑なクエリには利用できないので、結果として、クエリ応答時間が低速になり、全体的に非効率になる。
【発明の概要】
【0008】
本願は、マスタ‐スレーブアーキテクチャを有する既存のデータベースのこれらの課題を解決するためのデータベースシステムを提供する。開示される実施形態は、データベースをクエリするための方法、クエリオペレーションを割り当てるための方法、データベースクエリを実行するための方法およびデータベースクエリを実行するための方法、ならびにこれらの方法に対応する装置をさらに提供する。
【0009】
一実施形態において、本開示は、データベースシステムを提供する。データベースシステムは、マスタデータベースと、少なくとも1つのスレーブデータベースと、クエリ処理ユニットとを備える。マスタデータベースは、スレーブデータベースとのデータ接続を有し、スレーブデータベースは、クエリ処理ユニットとのデータ接続を有する。クエリ処理ユニットは、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、クエリオペレーションを実行すべく、分割したクエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻す。
【0010】
一実施形態において、本開示は、
データベースに対するクエリ要求を取得する段階と、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階と、
スレーブデータベースに対するクエリオペレーション命令を実行する段階と、
クエリ要求の結果をクエリ要求の要求元に提供する段階と
を備える、データベースをクエリするための方法をさらに提供する。
【0011】
一実施形態において、本開示は、
データベースに対するクエリ要求を取得する段階と、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割する段階と
を備える、クエリオペレーションを割り当てるための方法をさらに提供する。
【0012】
一実施形態において、本開示は、
クエリタスクを取得する段階と、
クエリタスクにより指定されるクエリオペレーションを実行する段階と、
クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供する段階と
を備える、データベースクエリを実行するための方法をさらに提供する。
【0013】
一実施形態において、本開示は、
クエリタスクを取得する段階と、
クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得する段階と、
クエリ結果を統合する段階と、
統合の結果を、クエリタスクにより指定される受信者に提供する段階と
を備える、データベースクエリを実行するための方法さらに提供する。
【0014】
一実施形態において、本開示は、
データベースをクエリするためのクエリ要求を取得または受信するように構成された取得ユニットと、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成された分割ユニットと、
スレーブデータベースに対するクエリオペレーション命令を実行するように構成された実行ユニットと、
クエリ要求のクエリ結果を要求の要求元に提供するように構成された提供ユニットと
を備える、データベースをクエリするための装置をさらに提供する。
【0015】
一実施形態において、本開示は、
データベースに対するクエリ要求を取得または受信するように構成された取得ユニットと、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割するように構成された分割ユニットと
を備える、クエリオペレーションを割り当てるための装置をさらに提供する。
【0016】
一実施形態において、本開示は、
クエリタスクを取得または受信するように構成された取得ユニットと、
クエリタスクにより指定されるクエリオペレーション命令を実行するように構成された実行ユニットと、
クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を備える、データベースクエリを実行するための装置をさらに提供する。
【0017】
一実施形態において、本開示は、
クエリタスクを取得または受信するように構成された取得ユニットと、
クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得するように構成された第2の取得ユニットと、
クエリ結果を統合するように構成された統合ユニットと、
統合の結果を、クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を備える、データベースクエリを実行するための装置をさらに提供する。
【0018】
既存のシステムと比較すると、開示されるデータベースシステムの一態様は、以下の利点を提供する。クエリ処理ユニットは、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、クエリオペレーションを実行すべく、分割したクエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信する。これにより、スレーブデータベースリソースを効果的に利用でき、特定の、または単一のスレーブデータベースに対するクエリロードが高まるのを回避でき、クエリ効率の改善の効果を実現できる。
【0019】
既存のシステムと比較すると、本願において提供されるデータベースをクエリするための方法の一態様は、以下の利点を有する。クエリ要求が、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割されることにより、クエリがスレーブデータベースへオフロードされ、これにより、スレーブデータベースリソースを効果的に利用し、クエリ効率を改善する機能が実現される。
【0020】
既存のシステムと比較すると、本願において提供されるクエリオペレーションを割り当てるための方法の一態様は、以下の利点を有する。クエリ要求が、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割されることにより、クエリがスレーブデータベースへオフロードされ、これにより、スレーブデータベースリソースを効果的に利用し、クエリ効率を改善する機能が実現される。
【0021】
既存のシステムと比較すると、本願において提供されるデータベースクエリを実行するための方法の一態様は、以下の利点を有する。クエリタスクにより指定されるクエリオペレーションの結果を、指定される受信者へ送信することにより、フレキシブルなクエリを実行し、リソースを完全に利用してクエリロードを共有する機能を実現できる。
【0022】
既存のシステムと比較すると、本願において提供されるデータベースクエリを実行するための方法の一態様は、以下の利点を有する。クエリオペレーションの取得した結果を統合でき、統合の結果を、クエリタスクにより指定される受信者に提供できる。リソースを完全に利用してクエリロードを共有する機能が実現される。
【図面の簡単な説明】
【0023】
【
図1】本開示のいくつかの実施形態によるデータベースシステムのブロック図である。
【0024】
【
図2】本開示のいくつかの実施形態によるデータベースをクエリするための方法を示すフロー図である。
【0025】
【
図3】本開示のいくつかの実施形態によるクエリオペレーションを割り当てるための方法を示すフロー図である。
【0026】
【
図4】本開示のいくつかの実施形態によるデータベースクエリを実行するための方法を示すフロー図である。
【0027】
【
図5】本開示のいくつかの実施形態によるデータベースクエリを実行するための方法を示すフロー図である。
【0028】
【
図6】本開示のいくつかの実施形態によるデータベースをクエリするための装置のブロック図である。
【0029】
【
図7】本開示のいくつかの実施形態によるクエリオペレーションを割り当てるための装置のブロック図である。
【0030】
【
図8】本開示のいくつかの実施形態によるデータベースクエリを実行するための装置のブロック図である。
【0031】
【
図9】本開示のいくつかの実施形態によるデータベースクエリを実行するための装置のブロック図である。
【発明を実施するための形態】
【0032】
開示される実施形態の十分な理解を容易にすべく、以下の説明では、多くの具体的な詳細を記載する。しかしながら、開示される実施形態は、本明細書において説明するもの以外の多くの方式で実装でき、当業者であれば、本開示の本質から逸脱することなく、同様の導出を行うことができる。従って、本開示は、以下に開示される特定の実施形態によって限定されない。
【0033】
本開示の第1の実施形態は、
図1にブロック図が示されるデータベースシステムを提供する。
【0034】
例示される実施形態において、当該システムは、マスタデータベース(U101)、スレーブデータベース(U102)、スレーブデータベース(U103)、スレーブデータベース(U104)およびクエリ処理ユニット(U105)を含む。マスタデータベース(U101)は、スレーブデータベース(U102、U103、U104)の各々とのデータ接続を有し、スレーブデータベース(U102、U103、U104)の各々は、クエリ処理ユニット(U105)とのデータ接続を有する。
【0035】
例示されるように、データ接続は、ハードウェア接続、ソフトウェア接続、またはハードウェアおよびソフトウェア接続の組み合わせを含み得る。一実施形態において、ハードウェア接続は、イーサネット(登録商標)接続などの有線ネットワーク接続であってよい。代替的に、または上記と関連して、ハードウェア接続は、Bluetooth(登録商標)または無線ローカルエリアネットワーク(WLAN)などの無線ネットワーク接続であってよい。いくつかの実施形態において、ソフトウェア接続は、様々なソフトウェアプロトコルまたはプログラムプロセスの間のインタフェース接続であってよい。例示される実施形態では、データ接続を通じて、データおよび情報をやり取りできる。
【0036】
マスタデータベース(U101)は、データベースについての更新オペレーション(例えば、記録の追加、記録の修正、および記録の削除)を外部で受信および実行する。当該オペレーションに応答して、データベース情報が更新される。
【0037】
スレーブデータベース(U102、U103およびU104)(それぞれ、かつ、代替的に、0、1および2という番号が付される)は、データベースデータのセットがマスタデータベースのものと合致することを確実にすべく、マスタデータベースと個別に同期されたままである。故に、例として、マスタデータベースが機能不全になった場合、スレーブデータベースは、マスタデータベースを置換して、元のマスタデータベースにより外部で提供されていたサービスを提供できる。
【0038】
スレーブデータベース(U102、U103、U104)がマスタデータベースと同期されたままであることが可能である多くのやり方が存在し得る。一実施形態において、マスタデータベースが更新された場合、マスタデータベースは、スレーブデータベースへ更新情報を伝送する。次に、スレーブデータベースは、マスタデータベースの更新情報に従って、自らのデータベースデータを更新する。別の実施形態では、スレーブデータベースは、マスタデータベースに対して更新情報を、または、マスタデータベースの更新情報を保存するユニットを、(自らの条件に基づいて)定期的にチェックし、ひとたび更新が生じると、自らのデータベースデータを更新する。
【0039】
スレーブデータベース(U102、U103、U104)はさらに、クエリ処理ユニット(U105)からのクエリオペレーションを受信し、当該クエリオペレーションに応答する。スレーブデータベースは、データベースデータが、マスタデータベースとの同期を通じてマスタデータベースのものと合致し、故にデータベースクエリ機能を提供するために用いられ得る、ということを確実にする。
【0040】
例示される実施形態において、クエリ処理ユニット(U105)は、対応するスレーブデータベースへクエリ要求を送信できるか、または、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割できる。次に、クエリ処理ユニット(U105)は、クエリオペレーション命令を実行すべく、分割したクエリオペレーション命令を同じ(または異なる)スレーブデータベースへ送信し、クエリ結果を戻すことができる。
【0041】
具体的には、クエリ処理ユニット(U105)は、データベースに対するクエリ要求を受信し、対応するクエリオペレーション命令を当該クエリ要求に従って生成し、次に、特定の、または指定されたスレーブデータベースに対するクエリオペレーションを実行すべく、当該スレーブデータベースへクエリオペレーション命令を送信できる。例えば、当該クエリオペレーション命令は、単純なデータクエリを含んでよく、特定のスレーブデータベースのみが、クエリされる必要がある。代替的に、当該クエリオペレーション命令は、クエリオペレーションを提供するスレーブデータベースを指定し得る。代替的に、クエリ処理ユニット(U105)は、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に変換し、当該クエリオペレーション命令を同じまたは異なるスレーブデータベースへ分散させて異なるデータベースに対して異なるクエリオペレーションを実行することで、複数のスレーブデータベースを適切に利用し、効率の改善を支援し、単一のスレーブデータベースにより実行されるクエリのデータ処理負荷を減らし得る。
【0042】
クエリ処理ユニットが、クエリ要求を分割し、次に、それを異なるスレーブデータベースへ分散させてクエリオペレーションを実行し得る例が、以下に提供される。クエリ処理ユニットは、データベースに対するクエリ要求を受信した後に、当該外部クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割する。次に、クエリ処理ユニットは、スレーブデータベース(U102、U103、U104)に対してクエリオペレーションを実行する。
【0043】
概して、重複しないクエリ範囲を有するクエリオペレーション命令は、重複しないスレーブデータベースに対して実行されるクエリオペレーション命令を指す。すなわち、異なるスレーブデータベースが、異なる記録についてクエリされる。
【0044】
外部クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割するための様々な方法が存在し得る。様々なそのような方法を以下で説明する。
【0045】
方法1。第1の方法では、クエリ要求は、外部クエリ要求のクエリオブジェクトに対応する分散列値に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。クエリオブジェクトに対応する分散列値は、クエリされたオブジェクトの各記録が、スレーブデータベースを指定するために用いられ得る1つの値に対応することを指す。当該値は、分散列値と称される。分散列値に対応するスレーブデータベースの識別子が、分散列値を処理することにより取得され得る。
【0046】
例えば、クエリされたオブジェクトは、人口データテーブルを含み得る。当該テーブルの各記録は、都市および人口のサイズなどの情報を含み得る。故に、分散列値は、当該テーブルのデータの列である。データの各々は、人口データテーブルの記録の行に対応する。
【0047】
クエリ処理ユニット(U105)は、人口データテーブルについての外部クエリ要求を取得した後に、人口データテーブルに対応する分散列値を取得する。クエリ処理ユニット(U105)は、当該クエリ要求を、人口データテーブルの指定される分散列値エントリについてのクエリに変換する。いくつかの実施形態では、ハッシュ演算が、各分散列値に対して実行され得る。次に、スレーブデータベースの数(本実施形態では3)に従って、モジュロ演算が実行される。モジュロ演算の後に生成される剰余に従ってクエリオペレーションを対応するスレーブデータベースに対して実行することが決定される。
【0048】
例えば、分散列値A0、B0、C0、D0等の後に、A1、B1、C1、D1等、A2、B2、C2、D2等が、前述の処理を受け、剰余0を有する分散列値が、A0、B0、C0、D0等を含み、剰余1を有する分散列値が、A1、B1、C1、D1等を含み、剰余2を有する分散列値が、A2、B2、C2、D2等を含む。
【0049】
次に、0という番号が付されたスレーブデータベース(U102)に対して実行されるクエリオペレーションは、剰余0を有するA0、B0、C0およびD0などの分散列値に対応する様々な記録として機能する。
【0050】
1という番号が付されたスレーブデータベース(U103)に対して実行されるクエリオペレーションは、剰余1を有するA1、B1、c1およびD1などの分散列値に対応する様々な記録として機能する。
【0051】
2という番号が付されたスレーブデータベース(U104)に対して実行されるクエリオペレーションは、剰余2を有するA2、B2、C2およびD2などの分散列値に対応する様々な記録として機能する。
【0052】
クエリオブジェクトに対応する分散列値は、以下のタイプを含む。
[I.クエリオブジェクトの予め保存された分散列値。]
【0053】
データベースの様々なクエリオブジェクトに対応する分散列値テーブルが、予め生成され得る。例えば、データベースの所有者が、データベースのクエリオブジェクトの記録の各行の分散列値を予め生成し得る。クエリオブジェクトの分散列値テーブルが生成された後、分散列値テーブルは、データベースが更新された場合、格納され、同期的に更新される。クエリ処理ユニット(U105)は、外部クエリ要求を受信した場合、このクエリ要求に対応するクエリオブジェクトの分散列値を、データベースのクエリオブジェクトに対応する保存された分散列値テーブルから取得する。
【0054】
クエリオブジェクトの保存された分散列値テーブルから分散列値を取得することにより、クエリの段階を簡略化し、クエリ効率を改善できる。さらに、分散列値がデータベースの所有者により予め生成されるので、その対応する記録についてのクエリは最大限、様々なスレーブデータベースへオフロードされ得る。
[II.クエリオブジェクトの任意の列の列値。]
【0055】
外部クエリ要求が受信された場合、当該クエリ要求に対応するクエリオブジェクトの任意の列の値も、クエリオブジェクトの分散列値として用いられ得る。クエリ要求により指定される列の値は、分散列値として用いられ得る。
【0056】
例えば、様々な都市の人口データのクエリでは、人口データテーブルの都市の列における都市名の値の全てが最初にクエリされてよく、都市名の値は、分散列値として用いられ得る。
【0057】
クエリ要求に対応するクエリオブジェクトの列の値が分散列値として用いられることにより、クエリ要求の情報が完全に利用され得る。このシナリオでは、分散列値テーブルを予め生成および維持する必要がなく、データベースのメンテナンスワークロードの低減が実現され得る。
[III.クエリオブジェクトの最初の列の値。]
【0058】
クエリオブジェクトの列を指定しないクエリ要求では、クエリされるクエリオブジェクトの最初の列の値が、分散列値として用いられ得る。このシナリオでは、クエリオブジェクトの最初の列の値が分散列値として用いられることにより、クエリ要求がクエリオブジェクトの列を指定しない場合、クエリオブジェクトが確実に有する列の値が、分散列値として用いられ得る。これにより、データベースのメンテナンス作業が簡略化される。
[IV.クエリ要求により指定される列の値。]
【0059】
外部クエリ要求が受信された場合、当該クエリ要求に含まれる列の値はさらに、クエリオブジェクトの分散列値として用いられ得る。
【0060】
例えば、様々な都市の人口データのクエリでは、クエリ要求が「都市」を指定する場合、人口データテーブルの都市の列における都市名の値の全てが最初にクエリされてよく、都市名の値は、分散列値として用いられ得る。
【0061】
クエリ要求により指定される列の値が分散列値として用いられることにより、クエリ要求の情報が完全に利用され得る。分散列値テーブルを予め生成および維持する必要性が存在せず、データベースのメンテナンスワークロードの低減という効果が実現され得る。
【0062】
データベースの複数のテーブルのクエリでは、関連する条件を有する列の値が、分散列値として選択され得る。例えば、クエリ要求に対応するクエリオブジェクトがテーブルt1およびt2であり、テーブルt1の列c1がテーブルt2の列c2に関連付けられる場合には、テーブルt1の列c1と、テーブルt2の列c2とはそれぞれ、t1およびt2の分散列として選択され得る。分散列値を取得するオペレーションは、select * from t1, t2であり、t1.c1=t2.c2である。
【0063】
分散列値に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリタスクに分割することは、単一のクエリオブジェクトについてのクエリにのみ適用可能なのではなく、複数のクエリオブジェクトについてのクエリにも適用可能であり、普遍的な適用可能性を有する。
【0064】
方法2:第2の方法では、クエリ要求は、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、重複しないクエリ範囲を有するスレーブデータベースに対するクエリオペレーション命令に分割される。
【0065】
固有キーは、クエリオブジェクトの各記録に対応するキーの値を指し、各記録のキー値は異なる。キー値の値ドメインが、クエリに関与するスレーブデータベースのものと同じ番号を有する複数の値ドメインに予め分割されてよい。各スレーブデータベース(固有キーに従ってインデックスが付される)が、対応する値ドメインのデータにアクセスすることが、指定される。
【0066】
例えば、本実施形態における3つのスレーブデータベースについてはc1が固有キーであり、[0, 60]、[60, 100]および[100, 150]という3つの値ドメインが分割され、各スレーブデータベースは、対応する値ドメインの記録データに個別にアクセスする。
【0067】
この方法は、単一のクエリオブジェクトについてのクエリに適している。
【0068】
方法3:第3の方法では、クエリ要求は、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、重複しないクエリ範囲を有するスレーブデータベースに対するクエリオペレーション命令に分割される。
【0069】
クエリオブジェクトのデータページの数は、クエリに関与するスレーブデータベースのものと同じ番号を有する複数の範囲に予め分割され得る。例えば、クエリオブジェクトのデータページの数は、0から1500であり、3つのスレーブデータベースが存在し、次に、これらの数は、3つのスレーブデータベースによりそれぞれ処理される、[0-500]、[500, 1000]および[1000-1500]という3つの範囲に分割され得る。
【0070】
この方式は、単一のクエリオブジェクトについてのクエリに適している。
【0071】
クエリ処理ユニット(U105)は、スレーブデータベース(U102、U103およびU104)に対してクエリオペレーションを実行し、スレーブデータベース(U102、U103およびU104)は、クエリオペレーションの結果をクエリ処理ユニット(U105)へ戻す。
【0072】
例えば、スレーブデータベース(U102)は、人口データテーブルの分散列値A0、B0、C0、D0等に対するクエリオペレーションの結果をクエリ処理ユニット(U105)へ戻し、スレーブデータベース(U103)は、人口データテーブルの分散列値A1、B1、C1、D1等に対するクエリオペレーションの結果をクエリ処理ユニット(U105)へ戻し、スレーブデータベース(U104)は、人口データテーブルの分散列値A2、B2、C2、D2等に対するクエリオペレーションの結果をクエリ処理ユニット(U105)へ戻す。
【0073】
クエリ処理ユニット(U105)は、クエリオペレーションの実行結果を受信した後に、クエリ結果をクエリ要求の要求元に外部で提供する。
【0074】
例えば、クエリ処理ユニット(U105)は、人口データテーブルの分散列値A0、B0、C0、D0等を有する記録に対するクエリオペレーションの、スレーブデータベース(U102)により戻される実行結果と、人口データテーブルの分散列値A1、B1、C1、D1等を有する記録に対するクエリオペレーションの、スレーブデータベース(U103)により戻される実行結果と、人口データテーブルの分散列値A2、B2、C2、D2等を有する記録に対するクエリオペレーションの、スレーブデータベース(U104)により戻される実行結果とを個別に受信し、次に、これらの実行結果を外部クエリ要求の要求元へ戻す。
【0075】
この時点で、本実施形態において提供されるデータベースシステムは、外部クエリ要求に対する完全な応答を生成している。
【0076】
本実施形態において提供されるデータベースシステムのクエリ処理ユニットはさらに、クエリタスクを送信し、他のクエリ処理ユニットにより送信されるクエリタスクとクエリオペレーションの結果とを受信し、受信したクエリタスクにより指定されるデータベースクエリオペレーションを実行し、クエリオペレーションの結果を統合し、スレーブデータベースに対するクエリオペレーションの結果または統合の後の結果を、クエリタスクにより指定される受信者に提供するように構成され得る。
【0077】
クエリオペレーションのクエリ結果の統合は、クエリオペレーションの実行結果のソートまたはマージ等を含む。
【0078】
クエリ処理ユニット(U105)はさらに、クエリに関与するスレーブデータベースの数を、クエリに含まれるデータの統計情報(例えば、クエリに対応するテーブルのサイズ)に従って動的に決定し、クエリオペレーション命令を実行すべく、分割したクエリオペレーション命令を、決定したスレーブデータベースへ送信し、クエリ結果を戻し得る。つまり、クエリ処理ユニットは、いくつのスレーブデータベースがクエリに関与するかを、クエリ要求に含まれる作業の量、またはクエリオブジェクトのサイズに従って決定し得る。クエリに対応する小量の作業または小さいデータテーブルの場合、少数のスレーブデータベースが割り当てられ得るか、または、1つのスレーブデータベースがクエリオペレーションに関与することさえ可能であり、逆に、クエリオペレーションを実行する各スレーブデータベースの作業を可能な限り均衡させるために、可能な限り多くのスレーブデータベースがクエリオペレーションへの関与に割り当てられることにより、効率が改善する。
【0079】
クエリ処理ユニットは、スレーブデータベースと同じ物理ノード上に配置され得る。すなわち、スレーブデータベースおよびクエリ処理ユニットの両方が、各スレーブデータベースのノード上に提供される。このようにして、データベースに対する大きく複雑なクエリ要求を処理すべく、複数のスレーブデータベースの能力が完全に利用され得る。
【0080】
例えば、以上で説明したマスタデータベース、スレーブデータベースおよびクエリ処理ユニットに加え、データベースシステムは、スレーブデータベースに対応するクエリ処理ユニットをさらに含み得る。クエリ処理ユニットはそれぞれ、対応するスレーブデータベースが存在するノード上に配置される。いくつかの都市の人口データのクエリでは、クエリ処理ユニット(U105)により受信される外部クエリ要求は、select c1, count(c2) from t1 group by c1である。人口データテーブルt1の列c1は都市名であり、列c2は人口サイズの値である。
【0081】
クエリ処理ユニット(U105)は、外部クエリ要求をスレーブデータベース(U102、U103およびU104)に対するクエリタスクに変換し、クエリタスクを、スレーブデータベースに対応するクエリ処理ユニットへ分散させる。クエリタスクは、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令を含み得る。
【0082】
スレーブデータベースに対応するクエリ処理ユニットは、クエリタスクを受信する。重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令をクエリタスクが含まない場合には、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令は、受信したクエリタスクと、対応するスレーブデータベースとに従って形成される。
【0083】
例えば、データベースシステムのスレーブデータベースに対応するクエリ処理ユニットに対して形成されるクエリタスクは、以下のとおりである。
つまり、スレーブデータベース(U102)が位置するノード上のクエリ処理ユニットに対応するクエリタスクは、分散列値A0、B0、C0、D0等を有する都市の人口サイズデータをクエリしており、スレーブデータベース(U104)が位置するノード上のクエリ処理ユニットへクエリ結果を送信している。
【0084】
スレーブデータベース(U103)が位置するノード上のクエリ処理ユニットに対応するクエリタスクは、分散列値A1、B1、C1、D1等を有する都市の人口サイズデータをクエリしており、スレーブデータベース(U104)が位置するノード上のクエリ処理ユニットへクエリ結果を送信している。
【0085】
スレーブデータベース(U104)が位置するノード上のクエリ処理ユニットに対応するクエリタスクは、分散列値A2、B2、C2、D2等を有する都市の人口サイズデータをクエリしており、スレーブデータベース(U102)およびスレーブデータベース(U103)により送信される都市の人口サイズデータを受信しており、都市の人口サイズの和を計算しており、クエリ処理ユニット(U105)へ結果を送信している。
【0086】
各スレーブデータベースと同じノード上に配置された各クエリ処理ユニットは、現在のノード上のスレーブデータベースに対する対応するクエリタスクに対応するクエリオペレーションを実行する。スレーブデータベース(U102)が位置するノード上のクエリ処理ユニットは、分散列値A0、B0、C0、D0等を有する都市の人口サイズデータをクエリするオペレーションをスレーブデータベース(U102)に対して実行し、スレーブデータベース(U104)が位置するノード上のクエリ処理ユニットへクエリオペレーションの実行結果を送信する。
【0087】
スレーブデータベース(U103)が位置するノード上のクエリ処理ユニットは、分散列値A1、B1、C1、D1等を有する都市の人口サイズデータをクエリするオペレーションをスレーブデータベース(U103)に対して実行し、スレーブデータベース(U104)が位置するノード上のクエリ処理ユニットへクエリオペレーションの実行結果を送信する。
【0088】
スレーブデータベース(U104)が位置するノード上のクエリ処理ユニットは、分散列値A2、B2、C2、D2等を有する都市の人口サイズデータをクエリするオペレーションをスレーブデータベース(U104)に対して実行し、スレーブデータベース(U102)および(U103)が位置するノードから送信される都市の人口サイズデータを受信し、受信した都市の人口サイズデータを統合して都市の人口サイズデータを取得し、統合した都市の人口サイズデータをクエリ処理ユニット(U105)へ送信する。
【0089】
本開示の第2の実施形態は、データベースをクエリするための方法を提供する。当該方法は、
図2に概略フローチャートが示され、以下の段階を含む。
【0090】
段階S201:データベースに対するクエリ要求を取得または受信する。
【0091】
クエリ要求は通常、指定されたデータベース情報のクエリオブジェクトの情報を含み得る。クエリオブジェクトの情報は、クエリされる必要があるテーブルの名前およびクエリされる必要があるテーブルの列の値などの情報を含み得る。
【0092】
この段階の詳細な説明については、
図1および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【0093】
段階S202:クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する。
【0094】
重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令は、重複しないスレーブデータベースに対して実行されるクエリオペレーション命令を指す。すなわち、2つの異なるスレーブデータベースが、異なる記録についてクエリされる。
【0095】
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための多くの方式が存在し得る。本実施形態は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための以下の方法を提供する。
【0096】
方法1:クエリ要求は、クエリオブジェクトに対応する分散列値に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【0097】
当該要求に対応するクエリオブジェクトに対応する分散列値は、
I.クエリオブジェクトの予め保存された分散列値と、
II.クエリオブジェクトの任意の列の値と、
III.クエリオブジェクトの最初の列の値と、
IV.クエリ要求により指定される列の値と
のうちの少なくとも1つの項目を含む。
【0098】
対応する詳細な説明については、
図1の説明におけるクエリ処理ユニットの関連する説明を参照してよい。ここでは繰り返さない。
【0099】
方法2:クエリ要求は、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【0100】
方法3:クエリ要求は、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【0101】
段階S203:スレーブデータベースに対するクエリオペレーション命令を実行する。
【0102】
この段階の詳細な説明については、
図1および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【0103】
この段階の後に、クエリオペレーションの結果を統合する段階がさらに含まれ得る。関連する説明については、
図1の説明における関連する説明を参照してよい。ここでは繰り返さない。
【0104】
段階S204:クエリ要求の結果をクエリ要求の要求元に提供する。
【0105】
データベースをクエリするための要求の結果が、スレーブデータベースに対するクエリオペレーションの実行結果または統合の結果に従って、要求の要求元へ戻される。このようにして、データベースについての今回のクエリが実現される。
【0106】
本開示の第3の実施形態は、クエリオペレーションを割り当てるための方法を提供する。当該方法は、
図3に概略フローチャートが示され、以下の段階を含む。
【0107】
段階S301:データベースに対するクエリ要求を取得または受信する。
【0108】
この段階の詳細な説明については、
図1および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【0109】
段階S302:クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する。
【0110】
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための多くの方法が存在し得る。本実施形態は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための以下の方法を提供する。
【0111】
方法1:クエリ要求は、クエリオブジェクトに対応する分散列値に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【0112】
クエリオブジェクトに対応する分散列値は、
I.クエリオブジェクトの予め保存された分散列値と、
II.クエリオブジェクトの任意の列の値と、
III.クエリオブジェクトの最初の列の値と、
IV.クエリ要求により指定される列の値と
のうちの少なくとも1つの項目を含む。
【0113】
方法2:クエリ要求は、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【0114】
方法3:クエリ要求は、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【0115】
対応する詳細な説明については、
図1の関連する説明を参照してよい。ここでは繰り返さない。
【0116】
本開示の第4の実施形態は、データベースクエリを実行するための方法を提供する。当該方法は、
図4に概略フロー図が示され、以下の段階を含む。
【0117】
段階S401:クエリタスクを取得または受信する。
【0118】
段階S402:クエリタスクにより指定されるクエリオペレーションを実行する。
【0119】
段階S403:クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供する。
【0120】
図5に例示される実施形態における段階に関する詳細については、
図1および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【0121】
本開示の第5の実施形態は、データベースクエリを実行するための方法を提供する。当該方法は、
図5にフロー図が示され、以下の段階を含む。
【0122】
段階S501:クエリタスクを取得または受信する。
【0123】
段階S502:クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得する。
【0124】
段階S503:クエリ結果を統合する。
【0125】
いくつかの実施形態では、この段階S503の前に、クエリタスクにより指定されるクエリオペレーションを実行してクエリ結果を取得する段階がさらに含まれ得る。
【0126】
段階S504:統合の結果を、クエリタスクにより指定される受信者に提供する。
【0127】
図5に例示される実施形態における段階に関する詳細については、
図1および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【0128】
本開示の第6の実施形態は、データベースをクエリするための装置を提供する。当該装置は、
図6にブロック図が示され、取得ユニット(U601)と、分割ユニット(U602)と、実行ユニット(U603)と、提供ユニット(U604)とを含む。
【0129】
例示される実施形態において、取得ユニット(U601)は、データベースをクエリするためのクエリ要求を取得または受信するように構成される。
【0130】
例示される実施形態において、分割ユニット(U602)は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成される。
【0131】
いくつかの実施形態では、分割ユニットは、クエリオブジェクトに対応する分散列値に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリタスクに分割するように構成される。クエリオブジェクトに対応する分散列値は、クエリオブジェクトの予め保存された分散列値と、クエリオブジェクトの任意の列の値と、クエリオブジェクトの最初の列の値と、クエリ要求により指定される列の値とのうちの少なくとも1つの項目を含む。
【0132】
いくつかの実施形態では、分割ユニットはさらに、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【0133】
いくつかの実施形態では、分割ユニットはさらに、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【0134】
例示される実施形態において、実行ユニット(U603)は、スレーブデータベースに対するクエリオペレーションを実行するように構成される。
【0135】
例示される実施形態において、提供ユニット(U604)は、クエリ要求のクエリ結果を当該要求の要求元に提供するように構成される。
【0136】
図6に例示される、当該実施形態において提供される装置は、クエリオペレーションの結果を統合するように構成された統合ユニットをさらに含み得る。
【0137】
本開示の第7の実施形態は、クエリオペレーションを割り当てるための装置を提供する。当該装置は、
図7にブロック図が示され、取得ユニット(U701)および分割ユニット(U702)を含む。
【0138】
例示される実施形態において、取得ユニット(U701)は、データベースに対するクエリ要求を取得または受信するように構成され、分割ユニット(U702)は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成される。
【0139】
いくつかの実施形態では、分割ユニット(U702)は、クエリオブジェクトに対応する分散列値に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリタスクに分割するように構成され得る。分散列値は、クエリオブジェクトの予め保存された分散列値と、クエリオブジェクトの任意の列の値と、クエリオブジェクトの最初の列の値と、クエリ要求により指定される列の値とのうちの少なくとも1つを含む。
【0140】
いくつかの実施形態では、分割ユニット(U702)はさらに、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【0141】
いくつかの実施形態では、分割ユニット(U702)はさらに、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【0142】
本開示の第8の実施形態は、データベースクエリを実行するための装置を提供する。当該装置は、
図8にブロック図が示され、取得ユニット(U801)、実行ユニット(U802)および提供ユニット(U803)を含む。例示される実施形態において、取得ユニット(U801)は、クエリタスクを取得または受信するように構成される。例示される実施形態において、実行ユニット(U802)は、クエリタスクにより指定されるクエリオペレーションを実行するように構成される。例示される実施形態において、提供ユニット(U803)は、クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供するように構成される。
【0143】
本開示の第9の実施形態は、データベースクエリを実行するための装置を提供する。当該装置は、
図9にブロック図が示され、取得ユニット(U901)、第2の取得ユニット(U902)、統合ユニット(U903)および提供ユニット(U904)を含む。例示される実施形態において、取得ユニット(U901)は、クエリタスクを取得または受信するように構成される。例示される実施形態において、第2の取得ユニット(U902)は、クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得するように構成される。例示される実施形態において、統合ユニット(U903)は、クエリ結果を統合するように構成される。例示される実施形態において、提供ユニット(U904)は、統合の結果を、クエリタスクにより指定される受信者に提供するように構成される。
【0144】
本実施形態において提供されるデータベースクエリを実行するための装置は、実行ユニットをさらに含み得る。本実施形態において、実行ユニットは、クエリタスクにより指定されるクエリオペレーションを実行してクエリ結果を取得するように構成される。
【0145】
以上では、開示される実施形態を例示的な実施形態を通じて説明したが、開示される実施形態は、それらに限定されるように意図されてはいない。当業者であれば、本開示の趣旨および範囲から逸脱することなく、可能な変更および修正を行うことができる。従って、本開示の範囲は、特許請求の範囲によって限定されるものとする。
【0146】
典型的な構成では、コンピューティングデバイスは、1または複数のプロセッサ(CPU)と、入力/出力インタフェースと、ネットワークインタフェースと、メモリとを含む。
【0147】
メモリは、リードオンリメモリ(ROM)またはフラッシュメモリ(例えば、フラッシュRAM)などの非永続的メモリ、ランダムアクセスメモリ(RAM)および/または不揮発性メモリ等の形態のコンピュータ可読媒体を含んでよい。メモリは、コンピュータ可読媒体の例である。
【0148】
コンピュータ可読媒体は、任意の方法または技術を用いて情報の記憶を実現できる永続的および非永続的な移動可能および移動不可能な媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムのモジュール、または他のデータであってよい。コンピュータの記憶媒体の例は、限定されるものではないが、相変化メモリ(PCRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのRAMデバイス、ROM、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、カセットテープ磁気テープ/磁気ディスクストレージもしくは他の磁気ストレージデバイスまたは任意の他の非伝送媒体を含み、コンピューティングデバイスによりアクセス可能な情報を格納するために用いられ得る。本明細書における定義によれば、コンピュータ可読媒体は、変調データ信号および搬送波などの非一時的コンピュータ可読媒体を含まない。
【0149】
当業者であれば、開示される実施形態は、方法、システムまたはコンピュータプログラム製品として実装され得ることを理解するはずである。従って、開示される実施形態は、ハードウェアにおいて完全に実装され得るか、ソフトウェアにおいて完全に実装され得るか、またはソフトウェアとハードウェアとの組み合わせを用いて実装され得る。さらに、開示される実施形態は、コンピュータ使用可能プログラムコードを含む1または複数のコンピュータ使用可能記憶媒体(磁気ディスクメモリ、CD-ROM、光メモリ等を含むが、これらに限定されない)に実装されるコンピュータプログラム製品として実装され得る。