(57)【要約】  データベースシステムならびにデータベースをクエリするための方法および装置を本明細書において開示する。一実施形態において、システムは、マスタデータベースと、少なくとも１つのスレーブデータベースと、クエリ処理ユニットとを備える。マスタデータベースは、スレーブデータベースとのデータ接続を有し、スレーブデータベースは、クエリ処理ユニットとのデータ接続を有する。クエリ処理ユニットは、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、クエリオペレーションを実行すべく、分割したクエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成される。開示される実施形態により、クエリ効率が改善される。
2021508867.tif 000002
【特許請求の範囲】
【請求項１】
マスタデータベースと、少なくとも１つのスレーブデータベースと、クエリ処理ユニットとを備えるデータベースシステムであって、前記マスタデータベースは、前記少なくとも１つのスレーブデータベースとのデータ接続を有し、前記少なくとも１つのスレーブデータベースは、前記クエリ処理ユニットとのデータ接続を有し、前記クエリ処理ユニットは、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成される、データベースシステム。
【請求項２】
前記クエリ処理ユニットは、クエリ要求を受信し、前記クエリ要求に対応するクエリオブジェクトに対応する分散列値に従って、前記クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成される、請求項１に記載のデータベースシステム。
【請求項３】
クエリオブジェクトに対応するする前記分散列値は、前記クエリオブジェクトの予め保存された分散列値と、前記クエリオブジェクトの任意の列の値と、前記クエリオブジェクトの最初の列の値と、前記クエリ要求により指定される列の値とのうちの少なくとも１つの項目を含む、請求項２に記載のデータベースシステム。
【請求項４】
前記クエリ処理ユニットは、クエリ要求を受信し、前記クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、前記クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成される、請求項１から３のいずれか一項に記載のデータベースシステム。
【請求項５】
前記クエリ処理ユニットは、クエリ要求を受信し、前記クエリ要求に対応するクエリオブジェクトのデータページの数に従って、前記クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻すように構成される、請求項１から４のいずれか一項に記載のデータベースシステム。
【請求項６】
前記クエリ処理ユニットはさらに、クエリタスクを送信し、他のクエリ処理ユニットにより送信されるクエリタスクとクエリオペレーションの結果とを受信し、受信した前記クエリタスクにより指定されるデータベースクエリオペレーションを実行し、前記クエリオペレーションの前記結果を統合し、前記少なくとも１つのスレーブデータベースに対して実行される前記クエリオペレーションの結果または前記統合の後の結果を、前記クエリタスクにより指定される受信者に提供するように構成される、請求項１から５のいずれか一項に記載のデータベースシステム。
【請求項７】
前記クエリ処理ユニットは、前記少なくとも１つのスレーブデータベースと同じ物理ノード上に配置される、請求項６に記載のデータベースシステム。
【請求項８】
前記クエリ処理ユニットは、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、前記クエリ要求に関与するスレーブデータベースの数を、前記クエリ要求に含まれるデータの統計情報に従って動的に決定し、前記クエリオペレーション命令を実行すべく、分割した前記クエリオペレーション命令を、決定した前記スレーブデータベースへ送信し、クエリ結果を戻すように構成される、請求項１から７のいずれか一項に記載のデータベースシステム。
【請求項９】
前記クエリ処理ユニットはさらに、対応するスレーブデータベースへクエリ要求を送信するように構成される、請求項１から８のいずれか一項に記載のデータベースシステム。
【請求項１０】
データベースに対するクエリ要求を取得する段階と、
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階と、
前記スレーブデータベースに対する前記クエリオペレーション命令を実行する段階と、
前記クエリ要求の結果を前記クエリ要求の要求元に提供する段階と
を備える、データベースをクエリするための方法。
【請求項１１】
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する前記段階は、クエリオブジェクトに対応する分散列値に従って、前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階を有する、請求項１０に記載のデータベースをクエリするための方法。
【請求項１２】
クエリオブジェクトに対応するする前記分散列値は、
前記クエリオブジェクトの予め保存された分散列値と、
前記クエリオブジェクトの任意の列の値と、
前記クエリオブジェクトの最初の列の値と、
前記クエリ要求により指定される列の値と
のうちの少なくとも１つの項目を含む、
請求項１１に記載のデータベースをクエリするための方法。
【請求項１３】
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する前記段階は、前記クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階を有する、請求項１０から１２のいずれか一項に記載のデータベースをクエリするための方法。
【請求項１４】
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する前記段階は、前記クエリ要求に対応するクエリオブジェクトのデータページの数に従って、前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階を有する、請求項１０から１３のいずれか一項に記載のデータベースをクエリするための方法。
【請求項１５】
前記クエリ要求の結果を前記クエリ要求の要求元に提供する前記段階の前に、クエリオペレーションの結果を統合する段階をさらに備える、請求項１０から１４のいずれか一項に記載のデータベースをクエリするための方法。
【請求項１６】
前記スレーブデータベースに対する前記クエリオペレーション命令を実行する前記段階は、具体的には、前記クエリ要求に関与するスレーブデータベースの数を、前記クエリ要求に含まれるデータの統計情報に従って決定し、決定した前記スレーブデータベースに対して前記クエリオペレーション命令を実行する段階である、請求項１０から１５のいずれか一項に記載のデータベースをクエリするための方法。
【請求項１７】
データベースに対するクエリ要求を取得する段階と、
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階と
を備える、クエリオペレーションを割り当てるための方法。
【請求項１８】
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する前記段階は、クエリオブジェクトに対応する分散列値に従って、前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階を有する、請求項１７に記載のクエリオペレーションを割り当てるための方法。
【請求項１９】
クエリオブジェクトに対応するする前記分散列値は、
前記クエリオブジェクトの予め保存された分散列値と、
前記クエリオブジェクトの任意の列の値と、
前記クエリオブジェクトの最初の列の値と、
前記クエリ要求により指定される列の値と
のうちの少なくとも１つの項目を含む、
請求項１８に記載のクエリオペレーションを割り当てるための方法。
【請求項２０】
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する前記段階は、前記クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階を有する、請求項１７から１９のいずれか一項に記載のクエリオペレーションを割り当てるための方法。
【請求項２１】
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する前記段階は、前記クエリ要求に対応するクエリオブジェクトのデータページの数に従って、前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階を有する、請求項１７から２０のいずれか一項に記載のクエリオペレーションを割り当てるための方法。
【請求項２２】
クエリタスクを取得する段階と、
前記クエリタスクにより指定されるクエリオペレーションを実行する段階と、
前記クエリオペレーションの結果を、前記クエリタスクにより指定される受信者に提供する段階と
を備える、データベースクエリを実行するための方法。
【請求項２３】
クエリタスクを取得する段階と、
前記クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得する段階と、
前記クエリ結果を統合する段階と、
統合の結果を、前記クエリタスクにより指定される受信者に提供する段階と
を備える、データベースクエリを実行するための方法。
【請求項２４】
前記クエリ結果を統合する前記段階の前に、前記クエリタスクにより指定されるクエリオペレーションを実行してクエリ結果を取得する段階をさらに備える、請求項２３に記載のデータベースクエリを実行するための方法。
【請求項２５】
データベースをクエリするためのクエリ要求を取得または受信するように構成された取得ユニットと、
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成された分割ユニットと、
前記スレーブデータベースに対する前記クエリオペレーション命令を実行するように構成された実行ユニットと、
前記クエリ要求のクエリ結果を前記クエリ要求の要求元に提供するように構成された提供ユニットと
を備える、データベースをクエリするための装置。
【請求項２６】
データベースに対するクエリ要求を取得または受信するように構成された取得ユニットと、
前記クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成された分割ユニットと
を備える、クエリオペレーションを割り当てるための装置。
【請求項２７】
クエリタスクを取得または受信するように構成された取得ユニットと、
前記クエリタスクにより指定されるクエリオペレーションを実行するように構成された実行ユニットと、
前記クエリオペレーションの結果を、前記クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を備える、データベースクエリを実行するための装置。
【請求項２８】
クエリタスクを取得または受信するように構成された取得ユニットと、
前記クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得するように構成された第２の取得ユニットと、
前記クエリ結果を統合するように構成された統合ユニットと、
統合の結果を、前記クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を備える、データベースクエリを実行するための装置。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、２０１８年１２月２５日に出願された、「データベースシステムならびにデータベースをクエリするための方法およびデバイス」と題する国際出願番号ＰＣＴ／ＣＮ１８／１２３４３７の国内段階移行であり、２０１７年１２月２９日に出願された、「データベースシステムならびにデータベースをクエリするための方法および装置」と題する中国特許出願第２０１７１１４８２５３６．１号の優先権を主張する。これらの出願の両方が、参照により、その全体が本明細書に組み込まれる。
［背景技術］
【０００２】
開示される実施形態示は、データベースに関し、具体的には、データベースシステムに関する。開示される実施形態は、データベースをクエリするための方法およびデータベースをクエリするための装置にも関する。開示される実施形態はさらに、クエリタスクを割り当てるための方法およびクエリタスクを割り当てるための装置に関する。開示される実施形態はさらに、データベースクエリを実行するための方法およびデータベースクエリを実行するための装置に関する。開示される実施形態はさらに、データベースクエリを実行するための方法およびデータベースクエリを実行するための装置に関する。
［関連する従来技術の説明］
【０００３】
非分散データベースは通常、１つのマスタデータベースに加えて１または複数のスレーブデータベースを有するマスタ‐スレーブアーキテクチャを用いる。
【０００４】
このアーキテクチャにおいて、マスタデータベースは、外部で書き込み可能である。マスタデータベース内のデータが更新された場合、データは、トランザクションログを通じてスレーブデータベースへ同期される。概して、１つのマスタデータベースが１または複数のスレーブデータベースに対応し、各スレーブデータベースは、マスタデータベースのものに合致するデータの完全なセットを格納する。
【０００５】
マスタデータベースが機能不全になった場合、各スレーブデータベースは、スタンバイデータベースとして機能してマスタデータベースを置換することにより、可用性を改善できる。各スレーブデータベースは、クエリ要求を実行できるので、マスタデータベースのクエリロードを共有できる。
【０００６】
現在のアーキテクチャにおいて、構造化照会言語（ＳＱＬ）クエリオペレーションは、１つのデータベース内でのみ実行できる。すなわち、ＳＱＬクエリは、マスタデータベース内のみで、または１つのスレーブデータベース内のみで実行できる。結果として、１つのスレーブデータベースは、高負荷かつ低速応答での大きく複雑なＳＱＬクエリオペレーションの実行でビジーになり得るが、一方で、他のスレーブデータベースはアイドルになる。特に、スレーブデータベースは通常、デイリークエリデータベースとして機能することに加え、デイリーレポートの生成および特定の時間（例えば、早朝）におけるデータのチェックなどの複雑なオペレーションを実行する。この場合、大きく複雑なＳＱＬクエリオペレーションを実行すると、システムの過負荷に起因して、クエリサービスの提供に失敗することさえあり得る。
【０００７】
上記のように仮定すると、マスタ‐スレーブアーキテクチャを有する既存の非分散データベースは、他のスタンバイデータベースリソースを複雑なクエリには利用できないので、結果として、クエリ応答時間が低速になり、全体的に非効率になる。
【発明の概要】
【０００８】
本願は、マスタ‐スレーブアーキテクチャを有する既存のデータベースのこれらの課題を解決するためのデータベースシステムを提供する。開示される実施形態は、データベースをクエリするための方法、クエリオペレーションを割り当てるための方法、データベースクエリを実行するための方法およびデータベースクエリを実行するための方法、ならびにこれらの方法に対応する装置をさらに提供する。
【０００９】
一実施形態において、本開示は、データベースシステムを提供する。データベースシステムは、マスタデータベースと、少なくとも１つのスレーブデータベースと、クエリ処理ユニットとを備える。マスタデータベースは、スレーブデータベースとのデータ接続を有し、スレーブデータベースは、クエリ処理ユニットとのデータ接続を有する。クエリ処理ユニットは、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、クエリオペレーションを実行すべく、分割したクエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信し、クエリ結果を戻す。
【００１０】
一実施形態において、本開示は、
データベースに対するクエリ要求を取得する段階と、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する段階と、
スレーブデータベースに対するクエリオペレーション命令を実行する段階と、
クエリ要求の結果をクエリ要求の要求元に提供する段階と
を備える、データベースをクエリするための方法をさらに提供する。
【００１１】
一実施形態において、本開示は、
データベースに対するクエリ要求を取得する段階と、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割する段階と
を備える、クエリオペレーションを割り当てるための方法をさらに提供する。
【００１２】
一実施形態において、本開示は、
クエリタスクを取得する段階と、
クエリタスクにより指定されるクエリオペレーションを実行する段階と、
クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供する段階と
を備える、データベースクエリを実行するための方法をさらに提供する。
【００１３】
一実施形態において、本開示は、
クエリタスクを取得する段階と、
クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得する段階と、
クエリ結果を統合する段階と、
統合の結果を、クエリタスクにより指定される受信者に提供する段階と
を備える、データベースクエリを実行するための方法さらに提供する。
【００１４】
一実施形態において、本開示は、
データベースをクエリするためのクエリ要求を取得または受信するように構成された取得ユニットと、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成された分割ユニットと、
スレーブデータベースに対するクエリオペレーション命令を実行するように構成された実行ユニットと、
クエリ要求のクエリ結果を要求の要求元に提供するように構成された提供ユニットと
を備える、データベースをクエリするための装置をさらに提供する。
【００１５】
一実施形態において、本開示は、
データベースに対するクエリ要求を取得または受信するように構成された取得ユニットと、
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割するように構成された分割ユニットと
を備える、クエリオペレーションを割り当てるための装置をさらに提供する。
【００１６】
一実施形態において、本開示は、
クエリタスクを取得または受信するように構成された取得ユニットと、
クエリタスクにより指定されるクエリオペレーション命令を実行するように構成された実行ユニットと、
クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を備える、データベースクエリを実行するための装置をさらに提供する。
【００１７】
一実施形態において、本開示は、
クエリタスクを取得または受信するように構成された取得ユニットと、
クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得するように構成された第２の取得ユニットと、
クエリ結果を統合するように構成された統合ユニットと、
統合の結果を、クエリタスクにより指定される受信者に提供するように構成された提供ユニットと
を備える、データベースクエリを実行するための装置をさらに提供する。
【００１８】
既存のシステムと比較すると、開示されるデータベースシステムの一態様は、以下の利点を提供する。クエリ処理ユニットは、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割し、クエリオペレーションを実行すべく、分割したクエリオペレーション命令を同じまたは異なるスレーブデータベースへ送信する。これにより、スレーブデータベースリソースを効果的に利用でき、特定の、または単一のスレーブデータベースに対するクエリロードが高まるのを回避でき、クエリ効率の改善の効果を実現できる。
【００１９】
既存のシステムと比較すると、本願において提供されるデータベースをクエリするための方法の一態様は、以下の利点を有する。クエリ要求が、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割されることにより、クエリがスレーブデータベースへオフロードされ、これにより、スレーブデータベースリソースを効果的に利用し、クエリ効率を改善する機能が実現される。
【００２０】
既存のシステムと比較すると、本願において提供されるクエリオペレーションを割り当てるための方法の一態様は、以下の利点を有する。クエリ要求が、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーションに分割されることにより、クエリがスレーブデータベースへオフロードされ、これにより、スレーブデータベースリソースを効果的に利用し、クエリ効率を改善する機能が実現される。
【００２１】
既存のシステムと比較すると、本願において提供されるデータベースクエリを実行するための方法の一態様は、以下の利点を有する。クエリタスクにより指定されるクエリオペレーションの結果を、指定される受信者へ送信することにより、フレキシブルなクエリを実行し、リソースを完全に利用してクエリロードを共有する機能を実現できる。
【００２２】
既存のシステムと比較すると、本願において提供されるデータベースクエリを実行するための方法の一態様は、以下の利点を有する。クエリオペレーションの取得した結果を統合でき、統合の結果を、クエリタスクにより指定される受信者に提供できる。リソースを完全に利用してクエリロードを共有する機能が実現される。
【図面の簡単な説明】
【００２３】
【図１】本開示のいくつかの実施形態によるデータベースシステムのブロック図である。
【００２４】
【図２】本開示のいくつかの実施形態によるデータベースをクエリするための方法を示すフロー図である。
【００２５】
【図３】本開示のいくつかの実施形態によるクエリオペレーションを割り当てるための方法を示すフロー図である。
【００２６】
【図４】本開示のいくつかの実施形態によるデータベースクエリを実行するための方法を示すフロー図である。
【００２７】
【図５】本開示のいくつかの実施形態によるデータベースクエリを実行するための方法を示すフロー図である。
【００２８】
【図６】本開示のいくつかの実施形態によるデータベースをクエリするための装置のブロック図である。
【００２９】
【図７】本開示のいくつかの実施形態によるクエリオペレーションを割り当てるための装置のブロック図である。
【００３０】
【図８】本開示のいくつかの実施形態によるデータベースクエリを実行するための装置のブロック図である。
【００３１】
【図９】本開示のいくつかの実施形態によるデータベースクエリを実行するための装置のブロック図である。
【発明を実施するための形態】
【００３２】
開示される実施形態の十分な理解を容易にすべく、以下の説明では、多くの具体的な詳細を記載する。しかしながら、開示される実施形態は、本明細書において説明するもの以外の多くの方式で実装でき、当業者であれば、本開示の本質から逸脱することなく、同様の導出を行うことができる。従って、本開示は、以下に開示される特定の実施形態によって限定されない。
【００３３】
本開示の第１の実施形態は、図１にブロック図が示されるデータベースシステムを提供する。
【００３４】
例示される実施形態において、当該システムは、マスタデータベース（Ｕ１０１）、スレーブデータベース（Ｕ１０２）、スレーブデータベース（Ｕ１０３）、スレーブデータベース（Ｕ１０４）およびクエリ処理ユニット（Ｕ１０５）を含む。マスタデータベース（Ｕ１０１）は、スレーブデータベース（Ｕ１０２、Ｕ１０３、Ｕ１０４）の各々とのデータ接続を有し、スレーブデータベース（Ｕ１０２、Ｕ１０３、Ｕ１０４）の各々は、クエリ処理ユニット（Ｕ１０５）とのデータ接続を有する。
【００３５】
例示されるように、データ接続は、ハードウェア接続、ソフトウェア接続、またはハードウェアおよびソフトウェア接続の組み合わせを含み得る。一実施形態において、ハードウェア接続は、イーサネット（登録商標）接続などの有線ネットワーク接続であってよい。代替的に、または上記と関連して、ハードウェア接続は、Ｂｌｕｅｔｏｏｔｈ（登録商標）または無線ローカルエリアネットワーク（ＷＬＡＮ）などの無線ネットワーク接続であってよい。いくつかの実施形態において、ソフトウェア接続は、様々なソフトウェアプロトコルまたはプログラムプロセスの間のインタフェース接続であってよい。例示される実施形態では、データ接続を通じて、データおよび情報をやり取りできる。
【００３６】
マスタデータベース（Ｕ１０１）は、データベースについての更新オペレーション（例えば、記録の追加、記録の修正、および記録の削除）を外部で受信および実行する。当該オペレーションに応答して、データベース情報が更新される。
【００３７】
スレーブデータベース（Ｕ１０２、Ｕ１０３およびＵ１０４）（それぞれ、かつ、代替的に、０、１および２という番号が付される）は、データベースデータのセットがマスタデータベースのものと合致することを確実にすべく、マスタデータベースと個別に同期されたままである。故に、例として、マスタデータベースが機能不全になった場合、スレーブデータベースは、マスタデータベースを置換して、元のマスタデータベースにより外部で提供されていたサービスを提供できる。
【００３８】
スレーブデータベース（Ｕ１０２、Ｕ１０３、Ｕ１０４）がマスタデータベースと同期されたままであることが可能である多くのやり方が存在し得る。一実施形態において、マスタデータベースが更新された場合、マスタデータベースは、スレーブデータベースへ更新情報を伝送する。次に、スレーブデータベースは、マスタデータベースの更新情報に従って、自らのデータベースデータを更新する。別の実施形態では、スレーブデータベースは、マスタデータベースに対して更新情報を、または、マスタデータベースの更新情報を保存するユニットを、（自らの条件に基づいて）定期的にチェックし、ひとたび更新が生じると、自らのデータベースデータを更新する。
【００３９】
スレーブデータベース（Ｕ１０２、Ｕ１０３、Ｕ１０４）はさらに、クエリ処理ユニット（Ｕ１０５）からのクエリオペレーションを受信し、当該クエリオペレーションに応答する。スレーブデータベースは、データベースデータが、マスタデータベースとの同期を通じてマスタデータベースのものと合致し、故にデータベースクエリ機能を提供するために用いられ得る、ということを確実にする。
【００４０】
例示される実施形態において、クエリ処理ユニット（Ｕ１０５）は、対応するスレーブデータベースへクエリ要求を送信できるか、または、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割できる。次に、クエリ処理ユニット（Ｕ１０５）は、クエリオペレーション命令を実行すべく、分割したクエリオペレーション命令を同じ（または異なる）スレーブデータベースへ送信し、クエリ結果を戻すことができる。
【００４１】
具体的には、クエリ処理ユニット（Ｕ１０５）は、データベースに対するクエリ要求を受信し、対応するクエリオペレーション命令を当該クエリ要求に従って生成し、次に、特定の、または指定されたスレーブデータベースに対するクエリオペレーションを実行すべく、当該スレーブデータベースへクエリオペレーション命令を送信できる。例えば、当該クエリオペレーション命令は、単純なデータクエリを含んでよく、特定のスレーブデータベースのみが、クエリされる必要がある。代替的に、当該クエリオペレーション命令は、クエリオペレーションを提供するスレーブデータベースを指定し得る。代替的に、クエリ処理ユニット（Ｕ１０５）は、クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に変換し、当該クエリオペレーション命令を同じまたは異なるスレーブデータベースへ分散させて異なるデータベースに対して異なるクエリオペレーションを実行することで、複数のスレーブデータベースを適切に利用し、効率の改善を支援し、単一のスレーブデータベースにより実行されるクエリのデータ処理負荷を減らし得る。
【００４２】
クエリ処理ユニットが、クエリ要求を分割し、次に、それを異なるスレーブデータベースへ分散させてクエリオペレーションを実行し得る例が、以下に提供される。クエリ処理ユニットは、データベースに対するクエリ要求を受信した後に、当該外部クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割する。次に、クエリ処理ユニットは、スレーブデータベース（Ｕ１０２、Ｕ１０３、Ｕ１０４）に対してクエリオペレーションを実行する。
【００４３】
概して、重複しないクエリ範囲を有するクエリオペレーション命令は、重複しないスレーブデータベースに対して実行されるクエリオペレーション命令を指す。すなわち、異なるスレーブデータベースが、異なる記録についてクエリされる。
【００４４】
外部クエリ要求を、重複しないクエリ範囲を有するクエリオペレーション命令に分割するための様々な方法が存在し得る。様々なそのような方法を以下で説明する。
【００４５】
方法１。第１の方法では、クエリ要求は、外部クエリ要求のクエリオブジェクトに対応する分散列値に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。クエリオブジェクトに対応する分散列値は、クエリされたオブジェクトの各記録が、スレーブデータベースを指定するために用いられ得る１つの値に対応することを指す。当該値は、分散列値と称される。分散列値に対応するスレーブデータベースの識別子が、分散列値を処理することにより取得され得る。
【００４６】
例えば、クエリされたオブジェクトは、人口データテーブルを含み得る。当該テーブルの各記録は、都市および人口のサイズなどの情報を含み得る。故に、分散列値は、当該テーブルのデータの列である。データの各々は、人口データテーブルの記録の行に対応する。
【００４７】
クエリ処理ユニット（Ｕ１０５）は、人口データテーブルについての外部クエリ要求を取得した後に、人口データテーブルに対応する分散列値を取得する。クエリ処理ユニット（Ｕ１０５）は、当該クエリ要求を、人口データテーブルの指定される分散列値エントリについてのクエリに変換する。いくつかの実施形態では、ハッシュ演算が、各分散列値に対して実行され得る。次に、スレーブデータベースの数（本実施形態では３）に従って、モジュロ演算が実行される。モジュロ演算の後に生成される剰余に従ってクエリオペレーションを対応するスレーブデータベースに対して実行することが決定される。
【００４８】
例えば、分散列値Ａ０、Ｂ０、Ｃ０、Ｄ０等の後に、Ａ１、Ｂ１、Ｃ１、Ｄ１等、Ａ２、Ｂ２、Ｃ２、Ｄ２等が、前述の処理を受け、剰余０を有する分散列値が、Ａ０、Ｂ０、Ｃ０、Ｄ０等を含み、剰余１を有する分散列値が、Ａ１、Ｂ１、Ｃ１、Ｄ１等を含み、剰余２を有する分散列値が、Ａ２、Ｂ２、Ｃ２、Ｄ２等を含む。
【００４９】
次に、０という番号が付されたスレーブデータベース（Ｕ１０２）に対して実行されるクエリオペレーションは、剰余０を有するＡ０、Ｂ０、Ｃ０およびＤ０などの分散列値に対応する様々な記録として機能する。
【００５０】
１という番号が付されたスレーブデータベース（Ｕ１０３）に対して実行されるクエリオペレーションは、剰余１を有するＡ１、Ｂ１、ｃ１およびＤ１などの分散列値に対応する様々な記録として機能する。
【００５１】
２という番号が付されたスレーブデータベース（Ｕ１０４）に対して実行されるクエリオペレーションは、剰余２を有するＡ２、Ｂ２、Ｃ２およびＤ２などの分散列値に対応する様々な記録として機能する。
【００５２】
クエリオブジェクトに対応する分散列値は、以下のタイプを含む。
［Ｉ．クエリオブジェクトの予め保存された分散列値。］
【００５３】
データベースの様々なクエリオブジェクトに対応する分散列値テーブルが、予め生成され得る。例えば、データベースの所有者が、データベースのクエリオブジェクトの記録の各行の分散列値を予め生成し得る。クエリオブジェクトの分散列値テーブルが生成された後、分散列値テーブルは、データベースが更新された場合、格納され、同期的に更新される。クエリ処理ユニット（Ｕ１０５）は、外部クエリ要求を受信した場合、このクエリ要求に対応するクエリオブジェクトの分散列値を、データベースのクエリオブジェクトに対応する保存された分散列値テーブルから取得する。
【００５４】
クエリオブジェクトの保存された分散列値テーブルから分散列値を取得することにより、クエリの段階を簡略化し、クエリ効率を改善できる。さらに、分散列値がデータベースの所有者により予め生成されるので、その対応する記録についてのクエリは最大限、様々なスレーブデータベースへオフロードされ得る。
［ＩＩ．クエリオブジェクトの任意の列の列値。］
【００５５】
外部クエリ要求が受信された場合、当該クエリ要求に対応するクエリオブジェクトの任意の列の値も、クエリオブジェクトの分散列値として用いられ得る。クエリ要求により指定される列の値は、分散列値として用いられ得る。
【００５６】
例えば、様々な都市の人口データのクエリでは、人口データテーブルの都市の列における都市名の値の全てが最初にクエリされてよく、都市名の値は、分散列値として用いられ得る。
【００５７】
クエリ要求に対応するクエリオブジェクトの列の値が分散列値として用いられることにより、クエリ要求の情報が完全に利用され得る。このシナリオでは、分散列値テーブルを予め生成および維持する必要がなく、データベースのメンテナンスワークロードの低減が実現され得る。
［ＩＩＩ．クエリオブジェクトの最初の列の値。］
【００５８】
クエリオブジェクトの列を指定しないクエリ要求では、クエリされるクエリオブジェクトの最初の列の値が、分散列値として用いられ得る。このシナリオでは、クエリオブジェクトの最初の列の値が分散列値として用いられることにより、クエリ要求がクエリオブジェクトの列を指定しない場合、クエリオブジェクトが確実に有する列の値が、分散列値として用いられ得る。これにより、データベースのメンテナンス作業が簡略化される。
［ＩＶ．クエリ要求により指定される列の値。］
【００５９】
外部クエリ要求が受信された場合、当該クエリ要求に含まれる列の値はさらに、クエリオブジェクトの分散列値として用いられ得る。
【００６０】
例えば、様々な都市の人口データのクエリでは、クエリ要求が「都市」を指定する場合、人口データテーブルの都市の列における都市名の値の全てが最初にクエリされてよく、都市名の値は、分散列値として用いられ得る。
【００６１】
クエリ要求により指定される列の値が分散列値として用いられることにより、クエリ要求の情報が完全に利用され得る。分散列値テーブルを予め生成および維持する必要性が存在せず、データベースのメンテナンスワークロードの低減という効果が実現され得る。
【００６２】
データベースの複数のテーブルのクエリでは、関連する条件を有する列の値が、分散列値として選択され得る。例えば、クエリ要求に対応するクエリオブジェクトがテーブルｔ１およびｔ２であり、テーブルｔ１の列ｃ１がテーブルｔ２の列ｃ２に関連付けられる場合には、テーブルｔ１の列ｃ１と、テーブルｔ２の列ｃ２とはそれぞれ、ｔ１およびｔ２の分散列として選択され得る。分散列値を取得するオペレーションは、ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｔ１，  ｔ２であり、ｔ１．ｃ１＝ｔ２．ｃ２である。
【００６３】
分散列値に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリタスクに分割することは、単一のクエリオブジェクトについてのクエリにのみ適用可能なのではなく、複数のクエリオブジェクトについてのクエリにも適用可能であり、普遍的な適用可能性を有する。
【００６４】
方法２：第２の方法では、クエリ要求は、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、重複しないクエリ範囲を有するスレーブデータベースに対するクエリオペレーション命令に分割される。
【００６５】
固有キーは、クエリオブジェクトの各記録に対応するキーの値を指し、各記録のキー値は異なる。キー値の値ドメインが、クエリに関与するスレーブデータベースのものと同じ番号を有する複数の値ドメインに予め分割されてよい。各スレーブデータベース（固有キーに従ってインデックスが付される）が、対応する値ドメインのデータにアクセスすることが、指定される。
【００６６】
例えば、本実施形態における３つのスレーブデータベースについてはｃ１が固有キーであり、［０，  ６０］、［６０，  １００］および［１００，  １５０］という３つの値ドメインが分割され、各スレーブデータベースは、対応する値ドメインの記録データに個別にアクセスする。
【００６７】
この方法は、単一のクエリオブジェクトについてのクエリに適している。
【００６８】
方法３：第３の方法では、クエリ要求は、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、重複しないクエリ範囲を有するスレーブデータベースに対するクエリオペレーション命令に分割される。
【００６９】
クエリオブジェクトのデータページの数は、クエリに関与するスレーブデータベースのものと同じ番号を有する複数の範囲に予め分割され得る。例えば、クエリオブジェクトのデータページの数は、０から１５００であり、３つのスレーブデータベースが存在し、次に、これらの数は、３つのスレーブデータベースによりそれぞれ処理される、［０−５００］、［５００，  １０００］および［１０００−１５００］という３つの範囲に分割され得る。
【００７０】
この方式は、単一のクエリオブジェクトについてのクエリに適している。
【００７１】
クエリ処理ユニット（Ｕ１０５）は、スレーブデータベース（Ｕ１０２、Ｕ１０３およびＵ１０４）に対してクエリオペレーションを実行し、スレーブデータベース（Ｕ１０２、Ｕ１０３およびＵ１０４）は、クエリオペレーションの結果をクエリ処理ユニット（Ｕ１０５）へ戻す。
【００７２】
例えば、スレーブデータベース（Ｕ１０２）は、人口データテーブルの分散列値Ａ０、Ｂ０、Ｃ０、Ｄ０等に対するクエリオペレーションの結果をクエリ処理ユニット（Ｕ１０５）へ戻し、スレーブデータベース（Ｕ１０３）は、人口データテーブルの分散列値Ａ１、Ｂ１、Ｃ１、Ｄ１等に対するクエリオペレーションの結果をクエリ処理ユニット（Ｕ１０５）へ戻し、スレーブデータベース（Ｕ１０４）は、人口データテーブルの分散列値Ａ２、Ｂ２、Ｃ２、Ｄ２等に対するクエリオペレーションの結果をクエリ処理ユニット（Ｕ１０５）へ戻す。
【００７３】
クエリ処理ユニット（Ｕ１０５）は、クエリオペレーションの実行結果を受信した後に、クエリ結果をクエリ要求の要求元に外部で提供する。
【００７４】
例えば、クエリ処理ユニット（Ｕ１０５）は、人口データテーブルの分散列値Ａ０、Ｂ０、Ｃ０、Ｄ０等を有する記録に対するクエリオペレーションの、スレーブデータベース（Ｕ１０２）により戻される実行結果と、人口データテーブルの分散列値Ａ１、Ｂ１、Ｃ１、Ｄ１等を有する記録に対するクエリオペレーションの、スレーブデータベース（Ｕ１０３）により戻される実行結果と、人口データテーブルの分散列値Ａ２、Ｂ２、Ｃ２、Ｄ２等を有する記録に対するクエリオペレーションの、スレーブデータベース（Ｕ１０４）により戻される実行結果とを個別に受信し、次に、これらの実行結果を外部クエリ要求の要求元へ戻す。
【００７５】
この時点で、本実施形態において提供されるデータベースシステムは、外部クエリ要求に対する完全な応答を生成している。
【００７６】
本実施形態において提供されるデータベースシステムのクエリ処理ユニットはさらに、クエリタスクを送信し、他のクエリ処理ユニットにより送信されるクエリタスクとクエリオペレーションの結果とを受信し、受信したクエリタスクにより指定されるデータベースクエリオペレーションを実行し、クエリオペレーションの結果を統合し、スレーブデータベースに対するクエリオペレーションの結果または統合の後の結果を、クエリタスクにより指定される受信者に提供するように構成され得る。
【００７７】
クエリオペレーションのクエリ結果の統合は、クエリオペレーションの実行結果のソートまたはマージ等を含む。
【００７８】
クエリ処理ユニット（Ｕ１０５）はさらに、クエリに関与するスレーブデータベースの数を、クエリに含まれるデータの統計情報（例えば、クエリに対応するテーブルのサイズ）に従って動的に決定し、クエリオペレーション命令を実行すべく、分割したクエリオペレーション命令を、決定したスレーブデータベースへ送信し、クエリ結果を戻し得る。つまり、クエリ処理ユニットは、いくつのスレーブデータベースがクエリに関与するかを、クエリ要求に含まれる作業の量、またはクエリオブジェクトのサイズに従って決定し得る。クエリに対応する小量の作業または小さいデータテーブルの場合、少数のスレーブデータベースが割り当てられ得るか、または、１つのスレーブデータベースがクエリオペレーションに関与することさえ可能であり、逆に、クエリオペレーションを実行する各スレーブデータベースの作業を可能な限り均衡させるために、可能な限り多くのスレーブデータベースがクエリオペレーションへの関与に割り当てられることにより、効率が改善する。
【００７９】
クエリ処理ユニットは、スレーブデータベースと同じ物理ノード上に配置され得る。すなわち、スレーブデータベースおよびクエリ処理ユニットの両方が、各スレーブデータベースのノード上に提供される。このようにして、データベースに対する大きく複雑なクエリ要求を処理すべく、複数のスレーブデータベースの能力が完全に利用され得る。
【００８０】
例えば、以上で説明したマスタデータベース、スレーブデータベースおよびクエリ処理ユニットに加え、データベースシステムは、スレーブデータベースに対応するクエリ処理ユニットをさらに含み得る。クエリ処理ユニットはそれぞれ、対応するスレーブデータベースが存在するノード上に配置される。いくつかの都市の人口データのクエリでは、クエリ処理ユニット（Ｕ１０５）により受信される外部クエリ要求は、ｓｅｌｅｃｔ  ｃ１，  ｃｏｕｎｔ（ｃ２）  ｆｒｏｍ  ｔ１  ｇｒｏｕｐ  ｂｙ  ｃ１である。人口データテーブルｔ１の列ｃ１は都市名であり、列ｃ２は人口サイズの値である。
【００８１】
クエリ処理ユニット（Ｕ１０５）は、外部クエリ要求をスレーブデータベース（Ｕ１０２、Ｕ１０３およびＵ１０４）に対するクエリタスクに変換し、クエリタスクを、スレーブデータベースに対応するするクエリ処理ユニットへ分散させる。クエリタスクは、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令を含み得る。
【００８２】
スレーブデータベースに対応するクエリ処理ユニットは、クエリタスクを受信する。重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令をクエリタスクが含まない場合には、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令は、受信したクエリタスクと、対応するスレーブデータベースとに従って形成される。
【００８３】
例えば、データベースシステムのスレーブデータベースに対応するクエリ処理ユニットに対して形成されるクエリタスクは、以下のとおりである。
つまり、スレーブデータベース（Ｕ１０２）が位置するノード上のクエリ処理ユニットに対応するクエリタスクは、分散列値Ａ０、Ｂ０、Ｃ０、Ｄ０等を有する都市の人口サイズデータをクエリしており、スレーブデータベース（Ｕ１０４）が位置するノード上のクエリ処理ユニットへクエリ結果を送信している。
【００８４】
スレーブデータベース（Ｕ１０３）が位置するノード上のクエリ処理ユニットに対応するクエリタスクは、分散列値Ａ１、Ｂ１、Ｃ１、Ｄ１等を有する都市の人口サイズデータをクエリしており、スレーブデータベース（Ｕ１０４）が位置するノード上のクエリ処理ユニットへクエリ結果を送信している。
【００８５】
スレーブデータベース（Ｕ１０４）が位置するノード上のクエリ処理ユニットに対応するクエリタスクは、分散列値Ａ２、Ｂ２、Ｃ２、Ｄ２等を有する都市の人口サイズデータをクエリしており、スレーブデータベース（Ｕ１０２）およびスレーブデータベース（Ｕ１０３）により送信される都市の人口サイズデータを受信しており、都市の人口サイズの和を計算しており、クエリ処理ユニット（Ｕ１０５）へ結果を送信している。
【００８６】
各スレーブデータベースと同じノード上に配置された各クエリ処理ユニットは、現在のノード上のスレーブデータベースに対する対応するクエリタスクに対応するクエリオペレーションを実行する。スレーブデータベース（Ｕ１０２）が位置するノード上のクエリ処理ユニットは、分散列値Ａ０、Ｂ０、Ｃ０、Ｄ０等を有する都市の人口サイズデータをクエリするオペレーションをスレーブデータベース（Ｕ１０２）に対して実行し、スレーブデータベース（Ｕ１０４）が位置するノード上のクエリ処理ユニットへクエリオペレーションの実行結果を送信する。
【００８７】
スレーブデータベース（Ｕ１０３）が位置するノード上のクエリ処理ユニットは、分散列値Ａ１、Ｂ１、Ｃ１、Ｄ１等を有する都市の人口サイズデータをクエリするオペレーションをスレーブデータベース（Ｕ１０３）に対して実行し、スレーブデータベース（Ｕ１０４）が位置するノード上のクエリ処理ユニットへクエリオペレーションの実行結果を送信する。
【００８８】
スレーブデータベース（Ｕ１０４）が位置するノード上のクエリ処理ユニットは、分散列値Ａ２、Ｂ２、Ｃ２、Ｄ２等を有する都市の人口サイズデータをクエリするオペレーションをスレーブデータベース（Ｕ１０４）に対して実行し、スレーブデータベース（Ｕ１０２）および（Ｕ１０３）が位置するノードから送信される都市の人口サイズデータを受信し、受信した都市の人口サイズデータを統合して都市の人口サイズデータを取得し、統合した都市の人口サイズデータをクエリ処理ユニット（Ｕ１０５）へ送信する。
【００８９】
本開示の第２の実施形態は、データベースをクエリするための方法を提供する。当該方法は、図２に概略フローチャートが示され、以下の段階を含む。
【００９０】
段階Ｓ２０１：データベースに対するクエリ要求を取得または受信する。
【００９１】
クエリ要求は通常、指定されたデータベース情報のクエリオブジェクトの情報を含み得る。クエリオブジェクトの情報は、クエリされる必要があるテーブルの名前およびクエリされる必要があるテーブルの列の値などの情報を含み得る。
【００９２】
この段階の詳細な説明については、図１および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【００９３】
段階Ｓ２０２：クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する。
【００９４】
重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令は、重複しないスレーブデータベースに対して実行されるクエリオペレーション命令を指す。すなわち、２つの異なるスレーブデータベースが、異なる記録についてクエリされる。
【００９５】
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための多くの方式が存在し得る。本実施形態は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための以下の方法を提供する。
【００９６】
方法１：クエリ要求は、クエリオブジェクトに対応する分散列値に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【００９７】
当該要求に対応するクエリオブジェクトに対応する分散列値は、
Ｉ．クエリオブジェクトの予め保存された分散列値と、
ＩＩ．クエリオブジェクトの任意の列の値と、
ＩＩＩ．クエリオブジェクトの最初の列の値と、
ＩＶ．クエリ要求により指定される列の値と
のうちの少なくとも１つの項目を含む。
【００９８】
対応する詳細な説明については、図１の説明におけるクエリ処理ユニットの関連する説明を参照してよい。ここでは繰り返さない。
【００９９】
方法２：クエリ要求は、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【０１００】
方法３：クエリ要求は、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【０１０１】
段階Ｓ２０３：スレーブデータベースに対するクエリオペレーション命令を実行する。
【０１０２】
この段階の詳細な説明については、図１および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【０１０３】
この段階の後に、クエリオペレーションの結果を統合する段階がさらに含まれ得る。関連する説明については、図１の説明における関連する説明を参照してよい。ここでは繰り返さない。
【０１０４】
段階Ｓ２０４：クエリ要求の結果をクエリ要求の要求元に提供する。
【０１０５】
データベースをクエリするための要求の結果が、スレーブデータベースに対するクエリオペレーションの実行結果または統合の結果に従って、要求の要求元へ戻される。このようにして、データベースについての今回のクエリが実現される。
【０１０６】
本開示の第３の実施形態は、クエリオペレーションを割り当てるための方法を提供する。当該方法は、図３に概略フローチャートが示され、以下の段階を含む。
【０１０７】
段階Ｓ３０１：データベースに対するクエリ要求を取得または受信する。
【０１０８】
この段階の詳細な説明については、図１および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【０１０９】
段階Ｓ３０２：クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割する。
【０１１０】
クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための多くの方法が存在し得る。本実施形態は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するための以下の方法を提供する。
【０１１１】
方法１：クエリ要求は、クエリオブジェクトに対応する分散列値に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【０１１２】
クエリオブジェクトに対応する分散列値は、
Ｉ．クエリオブジェクトの予め保存された分散列値と、
ＩＩ．クエリオブジェクトの任意の列の値と、
ＩＩＩ．クエリオブジェクトの最初の列の値と、
ＩＶ．クエリ要求により指定される列の値と
のうちの少なくとも１つの項目を含む。
【０１１３】
方法２：クエリ要求は、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【０１１４】
方法３：クエリ要求は、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割される。
【０１１５】
対応する詳細な説明については、図１の関連する説明を参照してよい。ここでは繰り返さない。
【０１１６】
本開示の第４の実施形態は、データベースクエリを実行するための方法を提供する。当該方法は、図４に概略フロー図が示され、以下の段階を含む。
【０１１７】
段階Ｓ４０１：クエリタスクを取得または受信する。
【０１１８】
段階Ｓ４０２：クエリタスクにより指定されるクエリオペレーションを実行する。
【０１１９】
段階Ｓ４０３：クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供する。
【０１２０】
図５に例示される実施形態における段階に関する詳細については、図１および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【０１２１】
本開示の第５の実施形態は、データベースクエリを実行するための方法を提供する。当該方法は、図５にフロー図が示され、以下の段階を含む。
【０１２２】
段階Ｓ５０１：クエリタスクを取得または受信する。
【０１２３】
段階Ｓ５０２：クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得する。
【０１２４】
段階Ｓ５０３：クエリ結果を統合する。
【０１２５】
いくつかの実施形態では、この段階Ｓ５０３の前に、クエリタスクにより指定されるクエリオペレーションを実行してクエリ結果を取得する段階がさらに含まれ得る。
【０１２６】
段階Ｓ５０４：統合の結果を、クエリタスクにより指定される受信者に提供する。
【０１２７】
図５に例示される実施形態における段階に関する詳細については、図１および他の図に関連して説明するクエリ処理ユニットの関連する説明を参照してよい。ここではそのような詳細を繰り返さない。
【０１２８】
本開示の第６の実施形態は、データベースをクエリするための装置を提供する。当該装置は、図６にブロック図が示され、取得ユニット（Ｕ６０１）と、分割ユニット（Ｕ６０２）と、実行ユニット（Ｕ６０３）と、提供ユニット（Ｕ６０４）とを含む。
【０１２９】
例示される実施形態において、取得ユニット（Ｕ６０１）は、データベースをクエリするためのクエリ要求を取得または受信するように構成される。
【０１３０】
例示される実施形態において、分割ユニット（Ｕ６０２）は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成される。
【０１３１】
いくつかの実施形態では、分割ユニットは、クエリオブジェクトに対応する分散列値に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリタスクに分割するように構成される。クエリオブジェクトに対応する分散列値は、クエリオブジェクトの予め保存された分散列値と、クエリオブジェクトの任意の列の値と、クエリオブジェクトの最初の列の値と、クエリ要求により指定される列の値とのうちの少なくとも１つの項目を含む。
【０１３２】
いくつかの実施形態では、分割ユニットはさらに、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【０１３３】
いくつかの実施形態では、分割ユニットはさらに、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【０１３４】
例示される実施形態において、実行ユニット（Ｕ６０３）は、スレーブデータベースに対するクエリオペレーションを実行するように構成される。
【０１３５】
例示される実施形態において、提供ユニット（Ｕ６０４）は、クエリ要求のクエリ結果を当該要求の要求元に提供するように構成される。
【０１３６】
図６に例示される、当該実施形態において提供される装置は、クエリオペレーションの結果を統合するように構成された統合ユニットをさらに含み得る。
【０１３７】
本開示の第７の実施形態は、クエリオペレーションを割り当てるための装置を提供する。当該装置は、図７にブロック図が示され、取得ユニット（Ｕ７０１）および分割ユニット（Ｕ７０２）を含む。
【０１３８】
例示される実施形態において、取得ユニット（Ｕ７０１）は、データベースに対するクエリ要求を取得または受信するように構成され、分割ユニット（Ｕ７０２）は、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成される。
【０１３９】
いくつかの実施形態では、分割ユニット（Ｕ７０２）は、クエリオブジェクトに対応する分散列値に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリタスクに分割するように構成され得る。分散列値は、クエリオブジェクトの予め保存された分散列値と、クエリオブジェクトの任意の列の値と、クエリオブジェクトの最初の列の値と、クエリ要求により指定される列の値とのうちの少なくとも１つを含む。
【０１４０】
いくつかの実施形態では、分割ユニット（Ｕ７０２）はさらに、クエリ要求に対応するクエリオブジェクトの記録の固有キーに従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【０１４１】
いくつかの実施形態では、分割ユニット（Ｕ７０２）はさらに、クエリ要求に対応するクエリオブジェクトのデータページの数に従って、クエリ要求を、重複しないクエリ範囲を有する、スレーブデータベースに対するクエリオペレーション命令に分割するように構成され得る。
【０１４２】
本開示の第８の実施形態は、データベースクエリを実行するための装置を提供する。当該装置は、図８にブロック図が示され、取得ユニット（Ｕ８０１）、実行ユニット（Ｕ８０２）および提供ユニット（Ｕ８０３）を含む。例示される実施形態において、取得ユニット（Ｕ８０１）は、クエリタスクを取得または受信するように構成される。例示される実施形態において、実行ユニット（Ｕ８０２）は、クエリタスクにより指定されるクエリオペレーションを実行するように構成される。例示される実施形態において、提供ユニット（Ｕ８０３）は、クエリオペレーションの結果を、クエリタスクにより指定される受信者に提供するように構成される。
【０１４３】
本開示の第９の実施形態は、データベースクエリを実行するための装置を提供する。当該装置は、図９にブロック図が示され、取得ユニット（Ｕ９０１）、第２の取得ユニット（Ｕ９０２）、統合ユニット（Ｕ９０３）および提供ユニット（Ｕ９０４）を含む。例示される実施形態において、取得ユニット（Ｕ９０１）は、クエリタスクを取得または受信するように構成される。例示される実施形態において、第２の取得ユニット（Ｕ９０２）は、クエリタスクにより指定される他のクエリオペレーションのクエリ結果を取得するように構成される。例示される実施形態において、統合ユニット（Ｕ９０３）は、クエリ結果を統合するように構成される。例示される実施形態において、提供ユニット（Ｕ９０４）は、統合の結果を、クエリタスクにより指定される受信者に提供するように構成される。
【０１４４】
本実施形態において提供されるデータベースクエリを実行するための装置は、実行ユニットをさらに含み得る。本実施形態において、実行ユニットは、クエリタスクにより指定されるクエリオペレーションを実行してクエリ結果を取得するように構成される。
【０１４５】
以上では、開示される実施形態を例示的な実施形態を通じて説明したが、開示される実施形態は、それらに限定されるように意図されてはいない。当業者であれば、本開示の趣旨および範囲から逸脱することなく、可能な変更および修正を行うことができる。従って、本開示の範囲は、特許請求の範囲によって限定されるものとする。
【０１４６】
典型的な構成では、コンピューティングデバイスは、１または複数のプロセッサ（ＣＰＵ）と、入力／出力インタフェースと、ネットワークインタフェースと、メモリとを含む。
【０１４７】
メモリは、リードオンリメモリ（ＲＯＭ）またはフラッシュメモリ（例えば、フラッシュＲＡＭ）などの非永続的メモリ、ランダムアクセスメモリ（ＲＡＭ）および／または不揮発性メモリ等の形態のコンピュータ可読媒体を含んでよい。メモリは、コンピュータ可読媒体の例である。
【０１４８】
コンピュータ可読媒体は、任意の方法または技術を用いて情報の記憶を実現できる永続的および非永続的な移動可能および移動不可能な媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムのモジュール、または他のデータであってよい。コンピュータの記憶媒体の例は、限定されるものではないが、相変化メモリ（ＰＣＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのＲＡＭデバイス、ＲＯＭ、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ、カセットテープ磁気テープ／磁気ディスクストレージもしくは他の磁気ストレージデバイスまたは任意の他の非伝送媒体を含み、コンピューティングデバイスによりアクセス可能な情報を格納するために用いられ得る。本明細書における定義によれば、コンピュータ可読媒体は、変調データ信号および搬送波などの非一時的コンピュータ可読媒体を含まない。
【０１４９】
当業者であれば、開示される実施形態は、方法、システムまたはコンピュータプログラム製品として実装され得ることを理解するはずである。従って、開示される実施形態は、ハードウェアにおいて完全に実装され得るか、ソフトウェアにおいて完全に実装され得るか、またはソフトウェアとハードウェアとの組み合わせを用いて実装され得る。さらに、開示される実施形態は、コンピュータ使用可能プログラムコードを含む１または複数のコンピュータ使用可能記憶媒体（磁気ディスクメモリ、ＣＤ−ＲＯＭ、光メモリ等を含むが、これらに限定されない）に実装されるコンピュータプログラム製品として実装され得る。
【図１】
2021508867.tif 000003
【図２】
2021508867.tif 000004
【図３】
2021508867.tif 000005
【図４】
2021508867.tif 000006
【図５】
2021508867.tif 000007
【図６】
2021508867.tif 000008
【図７】
2021508867.tif 000009
【図８】
2021508867.tif 000010
【図９】
2021508867.tif 000011
【国際調査報告】
2021508867.tif 000012
2021508867.tif 000013
2021508867.tif 000014
2021508867.tif 000015