(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-17
(54)【発明の名称】スタンドインテーブル
(51)【国際特許分類】
G06F 16/2453 20190101AFI20240110BHJP
【FI】
G06F16/2453
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023541080
(86)(22)【出願日】2022-01-04
(85)【翻訳文提出日】2023-08-28
(86)【国際出願番号】 US2022011197
(87)【国際公開番号】W WO2022150313
(87)【国際公開日】2022-07-14
(32)【優先日】2021-01-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】タブ,ロイド
(72)【発明者】
【氏名】トイ,マイケル
(72)【発明者】
【氏名】スリマー,コンラッド
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA03
5B175GC02
5B175KA03
(57)【要約】
リフレッシュ前にテーブル(140)を事前利用するための方法(300)は、データ分析アプリケーション(204)における実行のためのクエリ(120)を選択することと、クエリによって指定されるテーブル(140)、例えば、マテリアライズドテーブルを識別することとを含む。別のオペレーションは、識別されたテーブルの少なくとも1つの部分のための、ハッシュ値などの、エンコーディング(150)を計算することを含む。別のオペレーションは、計算されたエンコーディングを、識別されたテーブルの少なくとも1つの部分のための事前記憶されたエンコーディング(170)と比較することを含む。計算されたエンコーディングが事前記憶されたエンコーディングと同一であるという条件で、オペレーションは、識別されたテーブルを再マテリアライゼーションする代わりにクエリを実行するときに識別されたテーブルを利用することを含む。さもなければ、計算されたエンコーディングが事前記憶されたエンコーディングと異なるという条件で、オペレーションは、クエリの結果(190)を返す前に、識別されたテーブルを再マテリアライゼーションすることを含む。
【特許請求の範囲】
【請求項1】
リフレッシュ前にテーブル(140)を事前利用するためのコンピュータ実装方法(302)であって、データ処理ハードウェア(214)によって実行されたとき前記データ処理ハードウェア(214)に、
データ分析アプリケーション(204)における実行のためのクエリ(120)を選択することと、
前記クエリ(120)によって指定されたテーブル(140)を識別することと、
識別された前記テーブル(140)の少なくとも1つの部分のためのエンコーディング(150)を計算することと、
計算された前記エンコーディング(150)を、識別された前記テーブル(140)の前記少なくとも1つの部分のための事前記憶されたエンコーディング(170)と比較することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と同一であるという条件で、識別された前記テーブル(140)を再マテリアライゼーションする代わりに前記クエリ(120)を実行するときに識別された前記テーブル(140)を利用することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)とは異なるという条件で、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)を再マテリアライゼーションすることと、を含むオペレーションを行わせる、コンピュータ実装方法(302)。
【請求項2】
識別された前記テーブル(140)の前記少なくとも1つの部分が、識別された前記テーブル(140)のみのテーブル構造であり、識別された前記テーブル(140)が、バックグラウンドプロセスにおいて再マテリアライゼーションされ、再マテリアライゼーションが完了すると、識別された前記テーブル(140)が、再マテリアライゼーションされた前記テーブル(140)と置き換えられる、請求項1に記載の方法(302)。
【請求項3】
識別された前記テーブル(140)が、二次テーブル(140)に依存し、前記エンコーディング(150)の計算が、識別された前記テーブル(140)および前記二次テーブル(140)の両方のためのハッシュ値(150)を計算することを含み、前記比較が、計算された前記ハッシュ値(150)を、識別された前記テーブル(140)および前記二次テーブル(140)の両方のための事前記憶されたハッシュ値(170)と比較することを含む、請求項1または2に記載の方法(302)。
【請求項4】
前記オペレーションが、さらに、
計算された前記ハッシュ値(150)が前記事前記憶されたハッシュ値(170)と異なるという条件で、計算された前記ハッシュ値(150)を、前記二次テーブル(140)のためではなく、識別された前記テーブル(140)だけのためのハッシュ値と比較し、
計算された前記ハッシュ値(150)が、識別された前記テーブル(140)だけのための前記ハッシュ値と同一であるという条件で、バックグラウンドプロセスにおいて同時に前記二次テーブル(140)を再マテリアライゼーションしながら、識別された前記テーブル(140)を利用し、しかし他の場合、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)および前記二次テーブル(140)を再マテリアライゼーションすることを含む、請求項3に記載の方法(302)。
【請求項5】
リフレッシュ前にマテリアライズドテーブルを事前利用するために適合されたデータ処理システム(200)であって、
それぞれがメモリ(212)および少なくとも1つのプロセッサ(214)を含む1つまたは複数のコンピュータを含むホストコンピューティングシステム(210)と、
前記ホストコンピューティングシステム(210)において実行しながら、オペレーションを行うことを有効にされるコンピュータプログラム命令を含む事前利用モジュール(300)と、を備え、前記オペレーションが、
データ分析アプリケーション(204)における実行のためのクエリ(120)を選択することと、
前記クエリ(120)によって指定されたテーブル(140)を識別することと、
識別された前記テーブル(140)の少なくとも1つの部分のためのエンコーディング(150)を計算することと、
計算された前記エンコーディング(150)を、識別された前記テーブル(140)の前記少なくとも1つの部分のための事前記憶されたエンコーディング(170)と比較することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と同一であるという条件で、識別された前記テーブル(140)を再マテリアライゼーションする代わりに前記クエリ(120)を実行するときに識別された前記テーブル(140)を利用することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と異なるという条件で、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)を再マテリアライゼーションすることと、を含む、データ処理システム(200)。
【請求項6】
識別された前記テーブル(140)の前記少なくとも1つの部分が、識別された前記テーブル(140)のみのテーブル構造であり、識別された前記テーブル(140)が、バックグラウンドプロセスにおいて再マテリアライゼーションされ、再マテリアライゼーションが完了すると、識別された前記テーブル(140)が、再マテリアライゼーションされた前記テーブル(140)と置き換えられる、請求項5に記載のシステム(200)。
【請求項7】
識別された前記テーブル(140)が、二次テーブル(140)に依存し、前記エンコーディング(150)の計算が、識別された前記テーブル(140)および前記二次テーブル(140)の両方のためのハッシュ値(150)を計算することを含み、前記比較が、計算された前記ハッシュ値(150)を、識別された前記テーブル(140)および前記二次テーブル(140)の両方のための事前記憶されたハッシュ値(170)と比較することを含む、請求項5または6に記載のシステム(200)。
【請求項8】
前記オペレーションが、さらに、
計算された前記ハッシュ値(150)が前記事前記憶されたハッシュ値(170)と異なるという条件で、計算された前記ハッシュ値(150)を、前記二次テーブル(140)のためではなく、識別された前記テーブル(140)だけのためのハッシュ値と比較することと、
計算された前記ハッシュ値(150)が識別された前記テーブル(140)だけのためのハッシュ値と同一であるという条件で、バックグラウンドプロセスにおいて同時に前記二次テーブル(140)を再マテリアライゼーションしながら、識別された前記テーブル(140)を利用し、しかし他の場合、クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)および前記二次テーブル(140)を再マテリアライゼーションすることと、を含む、請求項7に記載のシステム(200)。
【請求項9】
リフレッシュ前にマテリアライズドテーブル(140)を事前利用するためのコンピュータプログラム製品(202)であって、前記コンピュータプログラム製品(202)が、それと共に具体化されるプログラム命令を有するコンピュータ可読記憶媒体を含み、前記プログラム命令が、装置(210)に、
データ分析アプリケーション(204)における実行のためのクエリ(120)を選択することと、
前記クエリ(120)によって指定されたテーブル(140)を識別することと、
識別された前記テーブル(140)の少なくとも1つの部分のためのエンコーディング(150)を計算することと、
計算された前記エンコーディング(150)を、識別された前記テーブル(140)の前記少なくとも1つの部分のための事前記憶されたエンコーディング(170)と比較することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と同一であるという条件で、識別された前記テーブル(140)を再マテリアライゼーションする代わりに前記クエリ(120)を実行するときに識別された前記テーブル(140)を利用することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と異なるという条件で、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)を再マテリアライゼーションすることと、を含むオペレーションを行わせるように前記装置(210)によって実行可能である、コンピュータプログラム製品(202)。
【請求項10】
識別された前記テーブル(140)の前記少なくとも1つの部分が、識別された前記テーブル(140)のみのテーブル構造であり、識別された前記テーブル(140)が、バックグラウンドプロセスにおいて再マテリアライゼーションされ、前記再マテリアライゼーションが完了すると、識別された前記テーブル(140)が、再マテリアライゼーションされた前記テーブル(140)と置き換えられる、請求項9に記載のコンピュータプログラム製品(202)。
【請求項11】
識別された前記テーブル(140)が、二次テーブル(140)に依存し、前記エンコーディング(150)の計算が、識別された前記テーブル(140)および前記二次テーブル(140)のためのハッシュ値(150)を計算することを含み、前記比較が、計算された前記ハッシュ値(150)を、識別された前記テーブル(140)および前記二次テーブル(140)の両方のための事前記憶されたハッシュ値(170)と比較することを含む、請求項9または10に記載のコンピュータプログラム製品(202)。
【請求項12】
前記オペレーションが、さらに、
計算された前記ハッシュ値(150)が前記事前記憶されたハッシュ値(170)と異なるという条件で、計算された前記ハッシュ値(150)を、前記二次テーブル(140)のためではなく、識別された前記テーブル(140)だけのためのハッシュ値と比較することと、
計算された前記ハッシュ値(150)が、識別された前記テーブル(140)だけのための前記ハッシュ値と同一であるという条件で、バックグラウンドプロセスにおいて同時に前記二次テーブル(140)を再マテリアライゼーションしながら、識別された前記テーブル(140)を利用し、しかし他の場合、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)および前記二次テーブル(140)を再マテリアライゼーションすることと、を含む、請求項11に記載のコンピュータプログラム製品(202)。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、データベース管理のためのクエリ処理の分野、特に、クエリ処理におけるマテリアライズドテーブル利用に関する。
【背景技術】
【0002】
背景
従来のデータベース管理システムは、プログラマチックユーザインターフェースを提供し、これを通じて、データクエリが、ローカルまたはリモートのその他のコンピューティングプロセスから受信され得、そこから、これらのクエリに対する結果が、クエリを行っているコンピューティングプロセスに提供され得る。クエリの共通の形態は、考慮するためのデータベースにおけるレコードのセット、次元、例えば、データベースのレコードのセットにおける関心のある一次フィールド、および手段、例えば、レコードの結果セットにおける関心のある対応する二次フィールドのための値、を選択する。フィルタリングおよび制限基準も、レコードの結果セットの表示をどのように分類するかに関する分類命令に加えて指定され得、クエリに応答してリターンされたレコードのセットの中のリターンされた手段に対して動作する機能を集める。
【0003】
一般的に言って、クエリを行うための3つの一般的な方法、すなわち、メニュードリブン、例によるクエリおよびクエリ言語構築がある。第1の例において、メニューにおけるパラメータの選択に基づいて、クエリが構築および発行される。第2の例において、情報検索システムは、ブランクレコードを表示し、エンドユーザが、クエリを規定するフィールドおよび値を指定することを許容する。第3の例において、エンドユーザは、クエリ言語で書かれた、定型化されたクエリを利用して、クエリを構築する。後者は、特別な言語の使用を要求するため最も複雑な方法であるが、情報検索システムにクエリする最も制約されないモードであるため最も強力でもある。
【0004】
単純なクエリを実行することは、計算的に軽く、基礎となるデータベース管理システムのリソースに対してほとんど影響しないものとすることができる。しかしながら、より複雑なクエリは、データベース管理システムのリソースに対する著しい影響を有する可能性があり、クエリのための結果セットを提供することができる前に処理リードタイムを要求する可能性がある。これにより、このリードタイムおよびデータベース管理システムのコンピューティングリソースへの影響を減じる意図で、複数の技術が提案されている。1つのこのような技術は、マテリアライズドテーブルの使用である。
【0005】
マテリアライズドテーブルは、クエリの結果を含んだデータベーステーブルである。マテリアライズドテーブルを確立するプロセスは、マテリアライゼーションとして知られており、これは、関数型言語における関数の値の記憶と類似の、クエリの結果をキャッシュに格納する1つの形態である。マテリアライズドテーブルは、ビューの概念と対照させられるべきである。関係モデルに従うデータベース管理システムにおいて、ビューは、データベースクエリの結果を表示する仮想テーブルである。クエリまたはアップデートがビューの仮想テーブルにアドレスするときはいつでも、データベース管理システムは、1つまたは複数の基礎となるデータベーステーブルに対して、クエリまたはアップデートを変換する。マテリアライズドテーブルは、オリジナルのベーステーブルから時々アップデートされ得るビューとは、クエリ結果が具体的なマテリアライズドテーブルとしてキャッシュに格納されるという点で異なる。
【0006】
その結果、従来のビューの場合にそうであったような、マテリアライズドテーブルに対するアップデートは生じないので、マテリアライズドテーブルの内容がマテリアライゼーションの時間から変化していない限り、後続のクエリのための結果セットへのより効率的なアクセスが達成され得る。しかしながら、マテリアライズドテーブルの内容がマテリアライゼーションの時間以後に変化している場合、再マテリアライゼーションが要求され、マテリアライズドテーブルを利用する利点が失われる。重要なことには、それ自体のマテリアライゼーション以後にマテリアライズドテーブルの内容が変化しているか否かを決定することは、リソース消費的である可能性があり、マテリアライズドテーブルを参照するクエリを処理する場合に追加的な時間的遅れを生じる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0007】
概要
本開示の態様は、クエリ処理におけるマテリアライズドテーブルの使用に関する技術の欠点を解決し、リフレッシュの前にマテリアライズドテーブルを事前利用するための、新規かつ非自明の方法、システムおよびコンピュータプログラム製品を提供する。開示の1つの態様は、データ処理ハードウェアによって実行されたときにデータ処理ハードウェアにオペレーションを実行させる、リフレッシュ前にテーブルを事前利用するためのコンピュータ実装方法を提供する。方法の1つのオペレーションは、データ分析アプリケーションにおいて実行するためのクエリを選択し、クエリによって指定されるテーブル、例えば、マテリアライズドテーブルを識別することを含む。別のオペレーションは、識別されたテーブルの少なくとも1つの部分のための、ハッシュ値などのエンコーディングを計算することを含む。別のオペレーションは、計算されたエンコーディングを、識別されたテーブルの少なくとも1つの部分のための事前記憶されたエンコーディングと比較することを含む。計算されたエンコーディングが事前記憶されたエンコーディングと同一であるという条件で、オペレーションは、識別されたテーブルを再マテリアライゼーションする代わりに、クエリを実行する際に、識別されたテーブルを利用することを含む。そうではなく、計算されたエンコーディングが事前記憶されたエンコーディングとは異なるという条件で、オペレーションは、クエリの結果を返す前に、識別されたテーブルを再マテリアライゼーションすることを含む。
【0008】
開示のこの態様は、以下の任意選択の特徴のうちの1つまたは複数を含んでよい。開示の1つの態様において、識別されたテーブルの少なくとも1つの部分は、識別されたテーブルのみのテーブル構造であり、識別されたテーブルは、バックグラウンドプロセスにおいて再マテリアライゼーションされ、識別されたテーブルは、再マテリアライゼーションが完了すると、再マテリアライゼーションされたテーブルと置き換えられる。1つの例において、識別されたテーブルは、二次テーブルに依存し、エンコーディングの計算は、識別されたテーブルおよび二次テーブルの両方のためのハッシュ値を計算することを含む。ここで、比較は、計算されたハッシュ値を、識別されたテーブルおよび二次テーブルの両方のための事前記憶されたハッシュ値と比較することを含む。
【0009】
別の実装において、オペレーションは、さらに、計算されたハッシュ値が事前記憶されたハッシュ値と異なるという条件で、計算されたハッシュ値を、二次テーブルではなく、識別されたテーブルだけのためのハッシュ値と比較することを含む。計算されたハッシュ値が、識別されたテーブルだけのためのハッシュ値と同一であるという条件で、オペレーションは、バックグラウンドプロセスにおいて同時に二次テーブルを再マテリアライゼーションしながら、識別されたテーブルを利用し、しかし他の場合、クエリの結果を返す前に、識別されたテーブルおよび二次テーブルを再マテリアライゼーションすることを含む。
【0010】
開示の別の態様は、リフレッシュの前にマテリアライズドテーブルを事前利用するように適応されたデータ処理システムを提供する。システムは、それぞれがメモリおよび少なくとも1つのプロセッサを含む1つまたは複数のコンピュータを含むホストコンピューティングプラットフォームと、オペレーションを実行するために、ホストコンピューティングプラットフォームにおいて実行しながら有効にされるコンピュータプログラム命令を含む事前利用モジュールと、を含む。1つのオペレーションは、データ分析アプリケーションにおいて実行するためにクエリを選択し、クエリによって指定されたテーブル、例えば、マテリアライズドテーブルを識別することを含む。別のオペレーションは、識別されたテーブルの少なくとも1つの部分のために、ハッシュ値などのエンコーディングを計算することを含む。別のオペレーションは、計算されたエンコーディングを、識別されたテーブルの少なくとも1つの部分のための事前記憶されたエンコーディングと比較することを含む。計算されたエンコーディングが、事前記憶されたエンコーディングと同一であるという条件で、オペレーションは、識別されたテーブルを再マテリアライゼーションする代わりに、クエリを実行する際に、識別されたテーブルを利用することを含む。そうではなく、計算されたエンコーディングが、事前記憶されたエンコーディングとは異なるという条件で、オペレーションは、クエリの結果を返す前に、識別されたテーブルを再マテリアライゼーションすることを含む。
【0011】
開示のこの態様は、以下の任意選択の特徴のうちの1つまたは複数を含んでよい。開示の1つの態様において、識別されたテーブルの少なくとも1つの部分は、識別されたテーブルのみのテーブル構造であり、識別されたテーブルは、バックグラウンドプロセスにおいて再マテリアライゼーションされ、識別されたテーブルは、再マテリアライゼーションが完了すると、再マテリアライゼーションされたテーブルと置き換えられる。1つの例において、識別されたテーブルは、二次テーブルに依存し、エンコーディングの計算は、識別されたテーブルおよび二次テーブルの両方のためのハッシュ値を計算することを含む。ここで、比較は、計算されたハッシュ値を、識別されたテーブルおよび二次テーブルの両方のための事前記憶されたハッシュ値と比較することを含む。
【0012】
別の実装において、オペレーションは、さらに、計算されたハッシュ値が、事前記憶されたハッシュ値と異なるという条件で、計算されたハッシュ値を、二次テーブルではなく、識別されたテーブルだけのためのハッシュ値と比較することを含む。計算されたハッシュ値が、識別されたテーブルだけのためのハッシュ値と同一であるという条件で、オペレーションは、バックグラウンドプロセスにおいて同時に二次テーブルを再マテリアライゼーションしながら、識別されたテーブルを利用し、しかし他の場合、クエリの結果を返す前に、識別されたテーブルおよび二次テーブルを再マテリアライゼーションすることを含む。
【0013】
開示の別の態様は、リフレッシュの前にマテリアライズドテーブルを事前利用するためのコンピュータプログラム製品を提供し、コンピュータプログラム製品は、それと共に具体化されるプログラム命令を有するコンピュータ可読記憶媒体を含み、プログラム命令は、装置にオペレーションを実行させるために、装置によって実行可能である。
【0014】
1つのオペレーションは、データ分析アプリケーションにおける実行のためのクエリを選択し、クエリによって指定されたテーブル、例えば、マテリアライズドテーブルを識別することを含む。別のオペレーションは、識別されたテーブルの少なくとも1つの部分のための、ハッシュ値などのエンコーディングを計算することを含む。別のオペレーションは、計算されたエンコーディングを、識別されたテーブルの少なくとも1つの部分のための事前記憶されたエンコーディングと比較することを含む。計算されたエンコーディングが、事前記憶されたエンコーディングと同一であるという条件で、オペレーションは、識別されたテーブルを再マテリアライゼーションする代わりに、クエリを実行する際に、識別されたテーブルを利用することを含む。そうではなく、計算されたエンコーディングが、事前記憶されたエンコーディングとは異なるという条件で、オペレーションは、クエリの結果を返す前に、識別されたテーブルを再マテリアライゼーションすることを含む。
【0015】
開示のこの態様は、以下の任意選択の特徴のうちの1つまたは複数を含んでよい。開示の1つの態様において、識別されたテーブルの少なくとも1つの部分は、識別されたテーブルのみのテーブル構造であり、識別されたテーブルは、バックグラウンドプロセスにおいて再マテリアライゼーションされ、再マテリアライゼーションが完了すると、識別されたテーブルは、再マテリアライゼーションされたテーブルと置き換えられる。1つの例において、識別されたテーブルは二次テーブルに依存し、エンコーディングの計算は、識別されたテーブルおよび二次テーブルの両方のためのハッシュ値を計算することを含む。ここで、比較は、計算されたハッシュ値を、識別されたテーブルおよび二次テーブルの両方のための事前記憶されたハッシュ値と比較することを含む。
【0016】
別の実装において、オペレーションは、さらに、計算されたハッシュ値が、事前記憶されたハッシュ値と異なるという条件で、計算されたハッシュ値を、二次テーブルではなく、識別されたテーブルだけのためのハッシュ値と比較することを含む。計算されたハッシュ値が、識別されたテーブルだけのためのハッシュ値と同一であるという条件で、オペレーションは、バックグラウンドプロセスにおいて同時に二次テーブルを再マテリアライゼーションしながら、識別されたテーブルを利用し、しかし他の場合、クエリの結果を返す前に、識別されたテーブルおよび二次テーブルを再マテリアライゼーションすることを含む。
【0017】
開示の1つまたは複数の実装の詳細は、添付の図面および以下の説明に示されている。その他の態様、特徴および利点は、説明および図面、ならびに請求項から明らかになる。
【図面の簡単な説明】
【0018】
【
図1】リフレッシュ前にマテリアライズドテーブルを事前利用するためのプロセスの絵による図である。
【
図2】リフレッシュ前にマテリアライズドテーブルを事前利用するために構成されたデータプロセシングシステムの概略図である。
【
図3】リフレッシュ前にマテリアライズドテーブルを事前利用するためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0019】
様々な図面における同じ参照符号は、同じ要素を示している。
詳細な説明
開示の態様は、リフレッシュ前にマテリアライズドテーブルを事前利用することを提供する。開示の態様によれば、データベースのそれぞれ異なるデータクエリに応答して異なるマテリアライズドテーブルが生成されるので、ハッシュが、マテリアライズドテーブルのそれぞれ1つの少なくとも1つの部分のために生成され得、マテリアライズドテーブルの対応する1つに関連して関連付けられ得る。例えば、その部分は、マテリアライズドテーブルの対応する1つのためのテーブル構造であることができる。その後、マテリアライズドテーブルを参照するクエリが処理のために受信されると、ハッシュが、参照されたマテリアライズドテーブルのマッチする部分のために生成され得、マテリアライズドテーブルの対応する1つの部分のためのハッシュの記憶された1つと比較される。ハッシュがマッチする限り、記憶されたマテリアライズドテーブルが使用され得る。そうでなければ、参照されたマテリアライズドテーブルは、クエリのための結果セットに含まれる前に、再マテリアライゼーションされ得る。
【0020】
さらなる例示において、
図1は、リフレッシュ前にマテリアライズドテーブルを事前利用するためのプロセスを絵によって示す。
図1に示したように、データベースクエリ120が、データベース110におけるデータに対して発行され得る。データベースクエリ120は、マテリアライズドテーブル140への参照130を含む。次いで、参照されたマテリアライズドテーブル140の部分に関して、ハッシュ値150が計算され、このハッシュ値150は、例えば、2つ例を挙げれば、参照されたマテリアライズドテーブル140の構造のみ、すなわち、列見出し、行数もしくはその両方、または参照されたマテリアライズドテーブル140における関連する内容の1つの部分を含む。次いで、コンパレータ180は、計算されたハッシュ値150を、対応するマテリアライズドテーブルのための事前記憶されたハッシュ値のセット160に記憶された事前記憶されたハッシュ値170A、170Nと比較する。計算されたハッシュ150が、事前記憶されたハッシュ値170A、170Nの対応する1つとマッチする限り、参照されたマテリアライズドテーブル140は、データベースクエリ120のためのクエリ結果セット190に組み込まれ得る。しかしながら、そうでないならば、参照されたマテリアライズドテーブル140は、クエリ結果セット190に含むために再マテリアライゼーションされ得る。
【0021】
再マテリアライゼーションの間、例えば、参照されたマテリアライズドテーブル140の構造のための計算されたハッシュ値150を、参照されたマテリアライズドテーブル140の構造の事前記憶されたハッシュ値170A、170Nと比較することによって、参照されたマテリアライズドテーブル140の構造が変化していないと決定され得る。その例において、参照されたマテリアライズドテーブル140は、再マテリアライゼーションの間にクエリ結果セット190に含まれ得る。次いで、再マテリアライゼーションの後、参照されたマテリアライズドテーブル140の再マテリアライゼーションされた形態は、次いで、クエリ結果セット190内に置き換えられ得る。
【0022】
さらに、参照されたマテリアライズドテーブル140が1つまたは複数の他のマテリアライズドテーブル140A、140Bに依存する限り、計算されたハッシュ値150は、参照されたマテリアライズドテーブル140および依存するマテリアライズドテーブル140A、140Bのうちの1つまたは複数のために計算され得る。代替的に、計算されたハッシュ値150は、参照されたマテリアライズドテーブル140および依存するマテリアライズドテーブル140A、140Bのうちの1つまたは複数の構造だけのために計算され得る。いずれの状況においても、コンパレータ180が、計算されたハッシュ値150が、参照されたマテリアライズドテーブル140および1つまたは複数の依存したマテリアライズドテーブル140A、140Bのための事前記憶された値170A、170Bのうちの対応する1つとは異なると決定するという条件で、参照されたマテリアライズドテーブル140および1つまたは複数の依存するマテリアライズドテーブル140A、140Bのために、完全な再マテリアライゼーションが行われ得る。
【0023】
任意選択で、コンパレータ180は、計算されたハッシュ値150が、事前記憶されたハッシュ値170A、170Bの対応する1つと等価ではないことを決定し得る。この状況において、次いで、コンパレータ180は、参照されたマテリアライズドテーブル140の構造のみに起因する計算されたハッシュ値150の1つの部分が、事前記憶されたハッシュ値170A、170Bの対応する1つの対応する部分と同じであることを決定し得る。その結果、参照されたマテリアライズドテーブル140が再マテリアライゼーションされる一方で、参照されたマテリアライズドテーブル140がクエリ結果セット190に組み込まれ得る。その後、参照されたマテリアライズドテーブル140の再マテリアライゼーションされた形態が、クエリ結果セット190内に置き換えられ得る。
【0024】
図1に関連して説明されたプロセスは、データ処理システム200内で実施され得る。さらなる例示において、
図2は、リフレッシュ前にマテリアライズドテーブルを事前利用するように構成されたデータ処理システム200を概略的に示す。システム200は、それぞれがメモリ212および少なくとも1つのプロセッサ214を備える1つまたは複数のコンピュータを含むホストコンピューティングシステム210を含む。ホストコンピューティングシステム210は、ホストコンピューティングシステム210において実行するデータベース管理システム250を通じてアクセスされるデータベース260に、コンピュータ通信ネットワーク220を介して通信可能に結合されている。これに関して、データベース管理システム250は、データ分析アプリケーション204における実行のための異なるクライアントコンピューティング装置230のそれぞれにおけるクエリインターフェース240によって異なるクライアントコンピューティング装置230からデータベース260におけるデータについてのデータベースクエリを受信するように適応されている。
【0025】
特に、システムは、マテリアライズドテーブル事前利用モジュール300も含む。マテリアライズドテーブル事前利用モジュール300は、データベースクエリを受信しかつそこからマテリアライズドテーブルへの参照を抽出するためにホストコンピューティングシステム210のメモリ212における実行の間に有効にされるコンピュータプログラム命令を備えるコンピュータプログラム製品202を含む。プログラム命令は、さらに、参照されたマテリアライズドテーブルの1つの部分のためのハッシュ値、例えば、異なる列ラベルを含む参照されたマテリアライズドテーブルの構造を計算し、計算されたハッシュ値を、参照されたマテリアライズドテーブルのためのハッシュデータストア270における事前記憶された値と比較するために有効にされる。プログラム命令は、さらに、ハッシュ値がマッチする限り、参照されたマテリアライズドテーブルをマテリアライズドテーブルに組み込むために有効にされる。なぜならば、マテリアライズドテーブルの構造は、マテリアライズドテーブルの基礎となるデータにおける変化にかかわらず変化しないからである。その後、プログラム命令は、クエリ結果セットへのその後の置き換えのために参照されたマテリアライズドテーブルの再マテリアライゼーションを指示する。
【0026】
マテリアライズドテーブル事前利用モジュール300のオペレーションのさらに別の例示において、
図3は、リフレッシュ前にマテリアライズドテーブルを事前利用するためのプロセスまたは方法302を例示するフローチャートである。ブロック310において始まり、データベースクエリが受信され、ブロック320において、マテリアライズドテーブルへの参照が、クエリから抽出され得る。ブロック330において、参照されたマテリアライズドテーブルの1つの部分、例えば、列ラベルのセット、もしくは参照されたテーブルの内容、または参照されたマテリアライズドテーブルが二次マテリアライズドテーブルに依存する限り、両テーブルの内容の組合せもしくはテーブルのうちの一次テーブルのみの内容が、決定される。ブロック340において、その部分のために同時ハッシュ値が計算される。ブロック350において、参照されたマテリアライズドテーブルのための事前計算されたハッシュ値は、ハッシュ値のデータストアから検索され、ブロック360において、事前計算されたハッシュ値は、同時計算ハッシュ値と比較される。
【0027】
ブロック370において、参照されたマテリアライズドテーブルの再マテリアライゼーションと同時に、参照されたマテリアライズドテーブルの一時的利用を可能にするために、事前計算されたハッシュ値が、参照されたマテリアライズドテーブルの1つの部分のための同時計算ハッシュ値と同一であるか否かが決定される。事前計算されたハッシュ値が同時計算ハッシュ値と同一でないという条件で、参照されたマテリアライズドテーブルは事前利用することができない。ブロック360において、事前計算されたハッシュ値が同時計算ハッシュ値と同一であるという条件で、参照されたマテリアライズドテーブルは、受信されたクエリに対するクエリ結果において事前利用することができる。その後、ブロック370において、参照されたテーブルは、再マテリアライゼーションされる。最後に、ブロック380において、再マテリアライゼーションされたテーブルは、次いで、クエリサーチ結果に含まれる。
【0028】
本開示は、システム、方法、コンピュータプログラム製品またはそれらのあらゆる組合せの中で実装され得る。コンピュータプログラム製品は、コンピュータ可読記憶媒体、またはプロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有する媒体を含んでよい。コンピュータ可読記憶媒体は、命令実行装置による使用のための命令を保持および記憶することができる有形装置であることができる。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、または前記のあらゆる適切な組合せであり得るが、これらに限定されない。
【0029】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置へ、またはネットワークを介して外部コンピュータもしくは外部記憶装置へダウンロードすることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータにおいて、部分的にユーザのコンピュータにおいて、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータにおいておよび部分的にリモートコンピュータにおいてまたは完全にリモートコンピュータもしくはサーバにおいて実行し得る。本開示の態様は、開示の態様による方法、装置(システム)およびコンピュータプログラム製品のフローチャート図および/またはブロック図に関して本明細書に記載されている。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されるであろう。
【0030】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブルデータ処理装置のプロセッサを介して実行する命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに明示された機能/作用を実装するための手段を生成するように、マシンを製造するために汎用コンピュータ、専用コンピュータ、またはその他のプログラマブルデータ処理装置のプロセッサに提供され得る。これらのコンピュータ可読プログラム命令は、記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに明示された機能/作用の態様を実装する命令を含む製品を含むように、特定の形態で機能するようにコンピュータ、プログラマブルデータ処理装置、および/またはその他の装置に指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0031】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置、またはその他の装置において実行する命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに明示された機能/作用を実装するように、コンピュータ実装されたプロセスを製造するためにコンピュータ、その他のプログラマブル装置またはその他の装置において一連のオペレーションステップが実施されるためにコンピュータ、その他のプログラマブルデータ処理装置、またはその他の装置にロードされてもよい。
【0032】
図面におけるフローチャートおよびブロック図は、本開示の様々な態様によるシステム、方法およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能およびオペレーションを示している。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能な命令を含むモジュール、セグメントまたは命令の部分を表し得る。幾つかの代替的な実装において、ブロックに示された機能は、図に示された順序とは異なる順序で行われ得る。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行され得る、またはブロックは、関係する機能に応じて、時には逆の順序で実行されてもよい。ブロック図および/またはフローチャート図の各ブロック、ならびにブロック図および/またはフローチャート図におけるブロックの組合せは、指定された機能もしくは作用を実行するまたは専用ハードウェアおよびコンピュータ命令の組合せを行う専用ハードウェアベースシステムによって実装することができることにも留意されたい。
【0033】
最後に、本明細書において使用された用語は、特定の態様を説明するためのものでしかなく、開示の限定は意図されていない。本明細書において使用される場合、文脈が明らかにそうでないことを指示していない限り、単数形「a」、「an」および「the」は、複数形も含むことが意図されている。「include」、「includes」および/または「including」という用語は、本明細書において使用される場合、述べられた特徴、整数、ステップ、オペレーション、要素、および/または構成要素の存在を明示しているが、1つもしくは複数のその他の特徴、整数、ステップ、オペレーション、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことがさらに理解されるであろう。
【0034】
以下の請求項における全ての手段またはステップおよび機能要素の対応する構造、材料、作用および均等物は、特に請求されたようにその他の請求された要素との組合せにおいて機能を実行するためのあらゆる構造、材料または作用を含むことが意図されている。本開示の説明は、例示および説明のために提供されているが、排他的であることまたは開示された形態の開示に限定されることは意図されていない。開示の範囲および趣旨から逸脱することなく、多くの修正および変更が当業者に明らかになるであろう。例は、開示の原理および実用的適用を最も良く説明するために、および考えられる特定の使用に適合した様々な修正を備える様々な実装のために他の当業者が開示を理解することを可能にするために、選択および説明されている。
【0035】
複数の実装が説明されている。しかしながら、開示の趣旨および範囲から逸脱することなく様々な修正が行われ得ることが理解されるであろう。したがって、その他の実装は、以下の請求項の範囲に含まれる。
【手続補正書】
【提出日】2023-09-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
リフレッシュ前にテーブル(140)を事前利用するためのコンピュータ実装方法(302)であって、データ処理ハードウェア(214)によって実行されたとき前記データ処理ハードウェア(214)に、
データ分析アプリケーション(204)における実行のためのクエリ(120)を選択することと、
前記クエリ(120)によって指定されたテーブル(140)を識別することと、
識別された前記テーブル(140)の少なくとも1つの部分のためのエンコーディング(150)を計算することと、
計算された前記エンコーディング(150)を、識別された前記テーブル(140)の前記少なくとも1つの部分のための事前記憶されたエンコーディング(170)と比較することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と同一であるという条件で、識別された前記テーブル(140)を再マテリアライゼーションする代わりに前記クエリ(120)を実行するときに識別された前記テーブル(140)を利用することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)とは異なるという条件で、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)を再マテリアライゼーションすることと、を含むオペレーションを行わせる、コンピュータ実装方法(302)。
【請求項2】
識別された前記テーブル(140)の前記少なくとも1つの部分が、識別された前記テーブル(140)のみのテーブル構造であり、識別された前記テーブル(140)が、バックグラウンドプロセスにおいて再マテリアライゼーションされ、再マテリアライゼーションが完了すると、識別された前記テーブル(140)が、再マテリアライゼーションされた前記テーブル(140)と置き換えられる、請求項1に記載の
コンピュータ実装方法(302)。
【請求項3】
識別された前記テーブル(140)が、二次テーブル(140)に依存し、前記エンコーディング(150)の計算が、識別された前記テーブル(140)および前記二次テーブル(140)の両方のためのハッシュ値(150)を計算することを含み、前記比較が、計算された前記ハッシュ値(150)を、識別された前記テーブル(140)および前記二次テーブル(140)の両方のための事前記憶されたハッシュ値(170)と比較することを含む、請求項1または2に記載の
コンピュータ実装方法(302)。
【請求項4】
前記オペレーションが、さらに、
計算された前記ハッシュ値(150)が前記事前記憶されたハッシュ値(170)と異なるという条件で、計算された前記ハッシュ値(150)を、前記二次テーブル(140)のためではなく、識別された前記テーブル(140)だけのためのハッシュ値と比較し、
計算された前記ハッシュ値(150)が、識別された前記テーブル(140)だけのための前記ハッシュ値と同一であるという条件で、バックグラウンドプロセスにおいて同時に前記二次テーブル(140)を再マテリアライゼーションしながら、識別された前記テーブル(140)を利用し、しかし他の場合、前記クエリ(120)の結果(190)を
返す前に、識別された前記テーブル(140)および前記二次テーブル(140)を再マテリアライゼーションすることを含む、請求項3に記載の
コンピュータ実装方法(302)。
【請求項5】
リフレッシュ前にマテリアライズドテーブルを事前利用するために適合されたデータ処理システム(200)であって、
それぞれがメモリ(212)および少なくとも1つのプロセッサ(214)を含む1つまたは複数のコンピュータを含むホストコンピューティングシステム(210)と、
前記ホストコンピューティングシステム(210)において実行しながら、オペレーションを行うことを有効にされるコンピュータプログラム命令を含む事前利用モジュール(300)と、を備え、前記オペレーションが、
データ分析アプリケーション(204)における実行のためのクエリ(120)を選択することと、
前記クエリ(120)によって指定されたテーブル(140)を識別することと、
識別された前記テーブル(140)の少なくとも1つの部分のためのエンコーディング(150)を計算することと、
計算された前記エンコーディング(150)を、識別された前記テーブル(140)の前記少なくとも1つの部分のための事前記憶されたエンコーディング(170)と比較することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と同一であるという条件で、識別された前記テーブル(140)を再マテリアライゼーションする代わりに前記クエリ(120)を実行するときに識別された前記テーブル(140)を利用することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と異なるという条件で、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)を再マテリアライゼーションすることと、を含む、データ処理システム(200)。
【請求項6】
識別された前記テーブル(140)の前記少なくとも1つの部分が、識別された前記テーブル(140)のみのテーブル構造であり、識別された前記テーブル(140)が、バックグラウンドプロセスにおいて再マテリアライゼーションされ、再マテリアライゼーションが完了すると、識別された前記テーブル(140)が、再マテリアライゼーションされた前記テーブル(140)と置き換えられる、請求項5に記載の
データ処理システム(200)。
【請求項7】
識別された前記テーブル(140)が、二次テーブル(140)に依存し、前記エンコーディング(150)の計算が、識別された前記テーブル(140)および前記二次テーブル(140)の両方のためのハッシュ値(150)を計算することを含み、前記比較が、計算された前記ハッシュ値(150)を、識別された前記テーブル(140)および前記二次テーブル(140)の両方のための事前記憶されたハッシュ値(170)と比較することを含む、請求項5または6に記載の
データ処理システム(200)。
【請求項8】
前記オペレーションが、さらに、
計算された前記ハッシュ値(150)が前記事前記憶されたハッシュ値(170)と異なるという条件で、計算された前記ハッシュ値(150)を、前記二次テーブル(140)のためではなく、識別された前記テーブル(140)だけのためのハッシュ値と比較することと、
計算された前記ハッシュ値(150)が識別された前記テーブル(140)だけのためのハッシュ値と同一であるという条件で、バックグラウンドプロセスにおいて同時に前記二次テーブル(140)を再マテリアライゼーションしながら、識別された前記テーブル(140)を利用し、しかし他の場合、クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)および前記二次テーブル(140)を再マテリアライゼーションすることと、を含む、請求項7に記載の
データ処理システム(200)。
【請求項9】
リフレッシュ前にマテリアライズドテーブル(140)を事前利用するためのコンピュータプログラム
(202)であって、前記コンピュータプログラム
(202)は、プログラム命令を有し
、前記プログラム命令が、装置(210)に、
データ分析アプリケーション(204)における実行のためのクエリ(120)を選択することと、
前記クエリ(120)によって指定されたテーブル(140)を識別することと、
識別された前記テーブル(140)の少なくとも1つの部分のためのエンコーディング(150)を計算することと、
計算された前記エンコーディング(150)を、識別された前記テーブル(140)の前記少なくとも1つの部分のための事前記憶されたエンコーディング(170)と比較することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と同一であるという条件で、識別された前記テーブル(140)を再マテリアライゼーションする代わりに前記クエリ(120)を実行するときに識別された前記テーブル(140)を利用することと、
計算された前記エンコーディング(150)が前記事前記憶されたエンコーディング(170)と異なるという条件で、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)を再マテリアライゼーションすることと、を含むオペレーションを行わせるように前記装置(210)によって実行可能である、コンピュータプログラ
ム(202)。
【請求項10】
識別された前記テーブル(140)の前記少なくとも1つの部分が、識別された前記テーブル(140)のみのテーブル構造であり、識別された前記テーブル(140)が、バックグラウンドプロセスにおいて再マテリアライゼーションされ、前記再マテリアライゼーションが完了すると、識別された前記テーブル(140)が、再マテリアライゼーションされた前記テーブル(140)と置き換えられる、請求項9に記載のコンピュータプログラ
ム(202)。
【請求項11】
識別された前記テーブル(140)が、二次テーブル(140)に依存し、前記エンコーディング(150)の計算が、識別された前記テーブル(140)および前記二次テーブル(140)のためのハッシュ値(150)を計算することを含み、前記比較が、計算された前記ハッシュ値(150)を、識別された前記テーブル(140)および前記二次テーブル(140)の両方のための事前記憶されたハッシュ値(170)と比較することを含む、請求項9または10に記載のコンピュータプログラ
ム(202)。
【請求項12】
前記オペレーションが、さらに、
計算された前記ハッシュ値(150)が前記事前記憶されたハッシュ値(170)と異なるという条件で、計算された前記ハッシュ値(150)を、前記二次テーブル(140)のためではなく、識別された前記テーブル(140)だけのためのハッシュ値と比較することと、
計算された前記ハッシュ値(150)が、識別された前記テーブル(140)だけのための前記ハッシュ値と同一であるという条件で、バックグラウンドプロセスにおいて同時に前記二次テーブル(140)を再マテリアライゼーションしながら、識別された前記テーブル(140)を利用し、しかし他の場合、前記クエリ(120)の結果(190)を返す前に、識別された前記テーブル(140)および前記二次テーブル(140)を再マテリアライゼーションすることと、を含む、請求項11に記載のコンピュータプログラ
ム(202)。
【国際調査報告】