(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024001212
(43)【公開日】2024-01-09
(54)【発明の名称】クラウドデータベースのためのエラスティック列キャッシュ
(51)【国際特許分類】
G06F 16/24 20190101AFI20231226BHJP
【FI】
G06F16/24
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023175996
(22)【出願日】2023-10-11
(62)【分割の表示】P 2023504091の分割
【原出願日】2021-05-04
(31)【優先権主張番号】16/932,874
(32)【優先日】2020-07-20
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】アミリシェティ,アンジャン・クマール
(72)【発明者】
【氏名】チョン,シュン
(72)【発明者】
【氏名】シャー,バイラル
(57)【要約】 (修正有)
【課題】クラウドデータベースのためのエラスティック列キャッシュ方法を提供する。
【解決手段】列キャッシュシステム100における方法は、ユーザ12に関連付けられ、テーブル158の一部を行優先フォーマットで格納するキャッシュ160についての最大サイズ24及び増分サイズ26を示すキャッシュ構成情報22を受信し、キャッシュ内のテーブルの複数の列のサブセットを列優先フォーマットでキャッシュし、テーブルへのアクセスを要求する、複数の列のうちの1つ以上へのアクセスを必要とする対応するアクセスパターン180に関連付けられている複数のデータ要求を受信し、1つ以上のワークロードを実行している間、テーブルの列毎に、対応する列が予め定められた期間に亘ってアクセスされるアクセス頻度182を決定し、アクセスパターン、最大サイズ及び増分サイズに基づいて複数の列のサブセットを動的に調整する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
方法(400)であって、
データ処理ハードウェア(144)において、ユーザ(12)に関連付けられたキャッシュ(160)についての最大サイズ(24)および増分サイズ(26)を示すキャッシュ構成情報(22)を受信するステップを含み、前記キャッシュ(160)は、前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)に格納されたテーブル(158)の一部を格納するように構成されており、前記テーブル(158)は、行優先フォーマットで前記メモリハードウェア(146)に格納され、複数の列(310)および複数の行を含み、前記方法(400)はさらに、
前記データ処理ハードウェア(144)によって、列優先フォーマットで、前記テーブル(158)の前記複数の列(310)のサブセットを前記ユーザ(12)に関連付けられた前記キャッシュ(160)にキャッシュするステップと、
前記データ処理ハードウェア(144)において、複数のデータ要求(20)を受信するステップとを含み、前記データ要求(20)は各々、前記メモリハードウェア(146)に格納された前記テーブル(158)へのアクセスを要求するとともに、前記テーブル(158)の前記複数の列(310)のうちの1つ以上へのアクセスを必要とする対応するアクセスパターン(180)に関連付けられており、
前記データ処理ハードウェア(144)上で1つ以上のワークロードを実行している間、
前記テーブル(158)の前記複数の列(310)の列(310)ごとに、前記データ処理ハードウェア(144)によって、前記複数のデータ要求(20)の各々に関連付けられた前記対応するアクセスパターン(180)に基づいて、前記対応する列(310)が予め定められた期間にわたってアクセスされる回数を示すアクセス頻度(182)を決定するステップと、
前記データ処理ハードウェア(144)によって、前記アクセスパターン(180)、前記キャッシュ(160)についての前記最大サイズ(24)、および前記キャッシュ(160)についての前記増分サイズ(26)に基づいて、リアルタイムで前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整するステップとを含む、方法(400)。
【請求項2】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整するステップは、前記キャッシュ(160)内の前記複数の列(310)の前記サブセットから1つ以上の列(310)を除去するステップを含み、前記除去された1つ以上の列(310)は、縮小アクセス頻度(182)閾値を満たすアクセス頻度(182)に関連付けられている、請求項1に記載の方法(400)。
【請求項3】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整するステップは、前記キャッシュ(160)内の前記複数の列(310)の前記サブセットに1つ以上の列を(310)追加するステップを含み、前記追加された1つ以上の列(310)は、拡張アクセス頻度(182)閾値を満たすアクセス頻度(182)に関連付けられている、請求項1または2に記載の方法(400)。
【請求項4】
前記列優先フォーマットは前記行優先フォーマットの仮想水平分割を含む、請求項1から3のいずれか1項に記載の方法(400)。
【請求項5】
前記複数の列(310)の前記サブセットをキャッシュするステップは、1つ以上のテーブル(158)フラグメントを生成するステップを含み、前記1つ以上のテーブル(158)フラグメントは各々、前記テーブル(158)の前記複数の列(310)の1つ以上のうちのそれぞれの部分を含む、請求項1から4のいずれか1項に記載の方法(400
)。
【請求項6】
前記キャッシュ(160)は、前記データ処理ハードウェア(144)上で実行する前記1つ以上のワークロードによってアクセス可能な共有メモリを含む、請求項1から5のいずれか1項に記載の方法(400)。
【請求項7】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整するステップは、前記1つ以上のワークロードをいずれも再始動させることなく、前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整するステップを含む、請求項6に記載の方法(400)。
【請求項8】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整するステップは、前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)のサイズを増大させること、または前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)の前記サイズを減少させることのうちの1つを含む、請求項1から7のいずれか1項に記載の方法(400)。
【請求項9】
前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)の前記サイズを増大させることによって前記複数の列(310)の前記サブセットを動的に調整するステップの前に、
前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)を増加させることで前記最大サイズ(24)を超過するかどうかを、前記データ処理ハードウェア(144)によって判断するステップと、
前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)を増加させることで前記最大サイズ(24)を超過し得る場合、前記データ処理ハードウェア(144)によって、前記キャッシュ(160)の前記サイズを増大させることを拒否するステップとを含む、請求項8に記載の方法(400)。
【請求項10】
前記キャッシュは複数のセグメント(300)を含み、
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整するステップは、前記アクセスパターン(180)に基づいて複数の列(310)をまとめてセグメント(300)毎にグループ化するステップを含む、請求項1から9のいずれか1項に記載の方法(400)。
【請求項11】
前記アクセスパターン(180)に基づいて前記複数の列(310)をセグメント(300)毎にグループ化するステップは、アクセス頻度の低い列(310)をまとめてグループ化するステップを含む、請求項10に記載の方法(400)。
【請求項12】
システム(100)であって、
データ処理ハードウェア(144)と、
前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)とを含み、前記メモリハードウェア(146)は、前記データ処理ハードウェア(144)上で実行されると、前記データ処理ハードウェア(144)に複数の動作を実行させる命令を格納しており、前記複数の動作は、
ユーザ(12)に関連付けられたキャッシュ(160)についての最大サイズ(24)および増分サイズ(26)を示すキャッシュ構成情報(22)を受信する動作を含み、前記キャッシュ(160)は、前記データ処理ハードウェア(144)と通信する前記メモリハードウェア(146)に格納されたテーブル(158)の一部を格納するように構成され、前記テーブル(158)は、行優先フォーマットで前記メモリハードウェア(146)に格納され、複数の列(310)および複数の行を含み、前記複数の動作はさらに
、
前記テーブル(158)の前記複数の列(310)のサブセットを、列優先フォーマットで、前記ユーザ(12)に関連付けられた前記キャッシュ(160)にキャッシュする動作と、
複数のデータ要求(20)を受信する動作とを含み、前記データ要求(20)は各々、前記メモリハードウェア(146)に格納された前記テーブルへのアクセスを要求するとともに、前記テーブル(158)の前記複数の列(310)のうちの1つ以上へのアクセスを必要とする対応するアクセスパターン(180)に関連付けられており、前記複数の動作はさらに、
前記データ処理ハードウェア(144)上で1つ以上のワークロードを実行している間、
前記テーブル(158)の前記複数の列(310)の列(310)ごとに、前記複数のデータ要求(20)の各々に関連付けられた前記対応するアクセスパターン(180)に基づいて、前記対応する列(310)が予め定められた期間にわたってアクセスされる回数を示すアクセス頻度(182)を決定する動作と、
前記アクセスパターン(180)、前記キャッシュ(160)についての前記最大サイズ(24)、および前記キャッシュ(160)についての前記増分サイズ(26)に基づいて、リアルタイムで前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整する動作とを含む、システム(100)。
【請求項13】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整する動作は、前記キャッシュ(160)内の前記複数の列(310)の前記サブセットから1つ以上の列(310)を除去する動作を含み、前記除去された1つ以上の列(310)は、縮小アクセス頻度(182)閾値を満たすアクセス頻度(182)に関連付けられている、請求項12に記載のシステム(100)。
【請求項14】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整する動作は、前記キャッシュ(160)内の前記複数の列(310)の前記サブセットに1つ以上の列(310)を追加する動作を含み、前記追加された1つ以上の列(310)は、拡張アクセス頻度(182)閾値を満たすアクセス頻度(182)に関連付けられている、請求項12または13に記載のシステム(100)。
【請求項15】
前記列優先フォーマットは、前記行優先フォーマットの仮想水平分割を含む、請求項12から14のいずれか1項に記載のシステム(100)。
【請求項16】
前記複数の列(310)の前記サブセットをキャッシュする動作は、1つ以上のテーブル(158)フラグメントを生成する動作を含み、前記1つ以上のテーブル(158)フラグメントは各々、前記テーブル(158)の前記複数の列(310)の1つ以上のうちのそれぞれの部分を含む、請求項12から15のいずれか1項に記載のシステム(100)。
【請求項17】
前記キャッシュ(160)は、前記データ処理ハードウェア(144)上で実行する前記1つ以上のワークロードによってアクセス可能な共有メモリを含む、請求項12から16のいずれか1項に記載のシステム(100)。
【請求項18】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整する動作は、前記1つ以上のワークロードをいずれも再始動させることなく、前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整する動作を含む、請求項17に記載のシステム(100)。
【請求項19】
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整する動作は、前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)のサイズを増大させること、または、前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)の前記サイズを減少させることのうちの1つを含む、請求項12から18のいずれか1項に記載のシステム(100)。
【請求項20】
前記複数の動作はさらに、前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)の前記サイズを増大させることによって前記複数の列(310)の前記サブセットを動的に調整する動作の前に、
前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)を増加させることで前記最大サイズ(24)を超過するかどうかを判断する動作と、
前記増分サイズ(26)に等しい量だけ前記キャッシュ(160)を増加させることで前記最大サイズ(24)を超過し得る場合、前記キャッシュ(160)の前記サイズを増加させることを拒否する動作とを含む、請求項19に記載のシステム(100)。
【請求項21】
前記キャッシュ(160)は複数のセグメント(300)を含み、
前記列優先フォーマットでキャッシュされた前記複数の列(310)の前記サブセットを動的に調整する動作は、前記アクセスパターン(180)に基づいて複数の列(310)をまとめてセグメント(300)毎にグループ化する動作を含む、請求項12から20のいずれか1項に記載のシステム(100)。
【請求項22】
前記アクセスパターン(180)に基づいて前記複数の列(310)をセグメント(300)毎にグループ化する動作は、アクセス頻度の低い列(310)をまとめてグループ化する動作を含む、請求項21に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、クラウドデータベースのためのエラスティック列キャッシュに関する。
【背景技術】
【0002】
背景
クラウドデータベースは、サイズが大容量であることが多く、行優先フォーマットで格納される。すなわち、行の要素は、メモリ内に隣り合って(すなわち、連続的に)格納される。しかしながら、(例えば、ユーザからの)データ要求は、通常、列中心である。例えば、ユーザは、データベース内で従業員ごとに従業員を識別すること(すなわち、データの列)を要求する。このような場合、行優先フォーマットで格納すると応答速度に著しく影響を及ぼす。なぜなら、必要なデータがメモリ内の多数の位置にわたって分割されているからである。これに対処するために、クラウドデータベースは列キャッシュを実装することが多い。このキャッシュは、データベースの1つ以上の列を列優先フォーマットで格納している。列キャッシュのサイズと、どの列がキャッシュ内に格納されているかとは、典型的には静的であり、変更するのに再起動を必要とする。
【発明の概要】
【0003】
概要
本開示の一局面は、エラスティック列キャッシュを設けるための方法を提供する。当該方法は、データ処理ハードウェアにおいて、ユーザに関連付けられたキャッシュについての最大サイズおよび増分サイズを示すキャッシュ構成情報を受信するステップを含む。当該キャッシュは、当該データ処理ハードウェアと通信するメモリハードウェアに格納されたテーブルの一部を格納するように構成される。当該テーブルは、行優先フォーマットで当該メモリハードウェアに格納され、複数の列および複数の行を含む。当該方法はまた、当該データ処理ハードウェアによって、列優先フォーマットで、当該テーブルの当該複数の列のサブセットを当該ユーザに関連付けられた当該キャッシュにキャッシュするステップを含む。当該方法は、当該データ処理ハードウェアにおいて、複数のデータ要求を受信するステップを含む。各データ要求は、当該メモリハードウェアに格納された当該テーブルへのアクセスを要求する。当該データ要求は各々、当該テーブルの当該複数の列のうちの1つ以上へのアクセスを必要とする対応するアクセスパターンに関連付けられている。
【0004】
当該方法は、当該データ処理ハードウェア上で1つ以上のワークロードを実行している間、当該テーブルの当該複数の列の列ごとに、当該データ処理ハードウェアによって、当該複数のデータ要求の各々に関連付けられた当該対応するアクセスパターンに基づいて、予め定められた期間にわたって当該対応する列がアクセスされる回数を示すアクセス頻度を決定するステップを含む。当該方法はまた、当該データ処理ハードウェアによって、当該アクセスパターン、当該キャッシュについての当該最大サイズ、および当該キャッシュについての当該増分サイズに基づいて、リアルタイムで当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整するステップを含む。
【0005】
本開示の実現例は、以下の任意の特徴のうちの1つ以上を含み得る。いくつかの実現例では、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整するステップは、当該キャッシュ内の当該複数の列の当該サブセットから1つ以上の列を除去するステップを含む。当該除去された1つ以上の列は、縮小アクセス頻度閾値を満たすアクセス頻度に関連付けられている。任意には、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整するステップは、当該キャッシ
ュ内の当該複数の列の当該サブセットに1つ以上の列を追加するステップを含む。当該追加された1つ以上の列は、拡張アクセス頻度閾値を満たすアクセス頻度に関連付けられている。
【0006】
いくつかの例では、当該列優先フォーマットは当該行優先フォーマットの仮想水平分割を含む。当該複数の列の当該サブセットをキャッシュするステップは、1つ以上のテーブルフラグメントを生成するステップを含み得る。当該1つ以上のテーブルフラグメントは各々、当該テーブルの当該複数の列の1つ以上のうちのそれぞれの部分を含む。いくつかの実現例では、当該キャッシュは、当該データ処理ハードウェア上で実行する当該1つ以上のワークロードによってアクセス可能な共有メモリを含む。
【0007】
当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整するステップは、当該1つ以上のワークロードをいずれも再始動させることなく、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整するステップを含み得る。いくつかの例では、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整するステップは、当該増分サイズに等しい量だけ当該キャッシュのサイズを増大させること、または当該増分サイズに等しい当該量だけ当該キャッシュの当該サイズを減少させることのうちの1つを含む。
【0008】
任意には、当該方法は、当該増分サイズに等しい量だけ当該キャッシュの当該サイズを増大させることによって当該複数の列の当該サブセットを動的に調整するステップの前に、当該データ処理ハードウェアによって、当該増分サイズに等しい当該量だけ当該キャッシュを増加させることで当該最大サイズを超過するかどうかを判断するステップをさらに含む。当該増分サイズに等しい当該量だけ当該キャッシュを増加させることで当該最大サイズを超過する場合、当該方法は、当該データ処理ハードウェアによって、当該キャッシュの当該サイズを増大させることを拒否する(declining)ステップを含む。いくつかの
実現例では、当該キャッシュは複数のセグメントを含み、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整するステップは、当該アクセスパターンに基づいて複数の列をまとめてセグメント毎にグループ化するステップを含む。当該アクセスパターンに基づいて当該複数の列をセグメント毎にグループ化するステップは、アクセス頻度の低い列をまとめてグループ化するステップを含み得る。
【0009】
本開示の別の局面は、エラスティック列キャッシュのためのシステムを提供する。当該システムは、データ処理ハードウェアと、当該データ処理ハードウェアと通信するメモリハードウェアとを含む。当該メモリハードウェアは、データ処理ハードウェア上で実行されると、当該データ処理ハードウェアに複数の動作を実行させる命令を格納する。当該複数の動作は、ユーザに関連付けられたキャッシュについての最大サイズおよび増分サイズを示すキャッシュ構成情報を受信する動作を含む。当該キャッシュは、当該データ処理ハードウェアと通信するメモリハードウェアに格納されたテーブルの一部を格納するように構成される。当該テーブルは、行優先フォーマットで当該メモリハードウェアに格納され、複数の列および複数の行を含む。当該複数の動作はまた、当該テーブルの当該複数の列のサブセットを、列優先フォーマットで、当該ユーザに関連付けられた当該キャッシュにキャッシュする動作を含む。当該複数の動作は、複数のデータ要求を受信する動作を含む。各データ要求は、当該メモリハードウェアに格納された当該テーブルへのアクセスを要求するとともに、当該テーブルの当該複数の列のうちの1つ以上へのアクセスを必要とする対応するアクセスパターンに関連付けられている。
【0010】
当該複数の動作は、当該データ処理ハードウェア上で1つ以上のワークロードを実行している間、当該テーブルの当該複数の列の列ごとに、当該複数のデータ要求の各々に関連付けられた当該対応するアクセスパターンに基づいて、当該対応する列が予め定められた
期間にわたってアクセスされる回数を示すアクセス頻度を決定する動作を含む。当該複数の動作はまた、当該アクセスパターン、当該キャッシュについての当該最大サイズ、および当該キャッシュについての当該増分サイズに基づいて、リアルタイムで当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整する動作を含む。
【0011】
この局面は、以下の任意の特徴のうちの1つ以上を含み得る。いくつかの実現例では、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整する動作は、当該キャッシュ内の当該複数の列の当該サブセットから1つ以上の列を除去する動作を含む。当該除去された1つ以上の列は、縮小アクセス頻度閾値を満たすアクセス頻度に関連付けられている。任意には、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整する動作は、当該キャッシュ内の当該複数の列の当該サブセットに1つ以上の列を追加する動作を含む。当該追加された1つ以上の列は、拡張アクセス頻度閾値を満たすアクセス頻度に関連付けられている。
【0012】
いくつかの例では、当該列優先フォーマットは当該行優先フォーマットの仮想水平分割を含む。当該複数の列の当該サブセットをキャッシュする動作は、1つ以上のテーブルフラグメントを生成する動作を含み得る。当該1つ以上のテーブルフラグメントの各々は、当該テーブルの当該複数の列の1つ以上のうちのそれぞれの部分を含む。いくつかの実現例では、当該キャッシュは、当該データ処理ハードウェア上で実行する1つ以上のワークロードによってアクセス可能な共有メモリを含む。
【0013】
当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整する動作は、当該1つ以上のワークロードをいずれも再始動させることなく、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整する動作を含み得る。いくつかの例では、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整する動作は、当該増分サイズに等しい量だけ当該キャッシュのサイズを増大させる動作、または、当該増分サイズに等しい量だけ当該キャッシュの当該サイズを減少させる動作のうちの1つを含む。
【0014】
任意には、当該複数の動作は、当該増分サイズに等しい量だけ当該キャッシュの当該サイズを増大させることによって当該複数の列の当該サブセットを動的に調整する動作の前に、当該増分サイズに等しい量だけ当該キャッシュを増加させることで当該最大サイズを超過するかどうかを判断する動作をさらに含む。当該増分サイズに等しい量だけ当該キャッシュを増加させることで当該最大サイズを超過し得る場合、当該複数の動作は、当該キャッシュの当該サイズを増大させることを拒否する動作を含む。いくつかの実現例では、当該キャッシュは複数のセグメントを含み、当該列優先フォーマットでキャッシュされた当該複数の列の当該サブセットを動的に調整する動作は、当該アクセスパターンに基づいて複数の列をまとめてセグメント毎にグループ化する動作を含む。当該アクセスパターンに基づいて当該複数の列をまとめてセグメント毎にグループ化する動作は、アクセス頻度の低い列をまとめてグループ化する動作を含み得る。
【0015】
本開示の1つ以上の実現例の詳細が添付の図面および以下の説明に記載されている。他の局面、特徴、および利点は、以下の説明および添付の図面、ならびに添付の特許請求の範囲から明らかになるだろう。
【図面の簡単な説明】
【0016】
【
図1】エラスティック列キャッシュのための例示的なシステムを示す概略図である。
【
図2】エラスティック列キャッシュの例示的な構成要素を示す概略図である。
【
図3A】エラスティック列キャッシュのメモリセグメントの動的な拡張および縮小を示す概略図である。
【
図3B】エラスティック列キャッシュのメモリセグメントの動的な拡張および縮小を示す概略図である。
【
図3C】エラスティック列キャッシュのメモリセグメントの動的な拡張および縮小を示す概略図である。
【
図4】エラスティック列キャッシュを設ける方法についての動作の例示的な構成を示すフローチャートである。
【
図5】本明細書に記載のシステムおよび方法を実現するために使用され得る例示的なコンピューティングデバイスを示す概略図である。
【0017】
様々な図面中の同様の参照符号は同様の要素を示す。
【発明を実施するための形態】
【0018】
詳細な説明
データベースシステム(例えば、クラウドデータベースシステム)は、通常、アクセス頻度が高いデータを列優先フォーマットで格納するためのキャッシュとしての役割を果たす或る一定量の共有メモリを含む。このキャッシュは、行優先フォーマットで格納されたデータ(例えば、ハードディスクに格納されたデータ)と比較して、アクセス頻度が高いデータへのアクセス速度を大幅に上げるために使用される。この「メモリ内キャッシュ」特徴は、データベースのテーブル/列のサブセットを列優先フォーマットでメモリ内にキャッシュすることによって、分析クエリに効率的に役立つ。列キャッシュは、より適切に圧縮をサポートするとともにベクトル化を実行しつつ(クエリに基づいて)関連する列だけを読込むことによって性能を向上させる。
【0019】
従来、これらのクラウドデータベースシステムは、共有メモリを静的に割当て、システムまたはインスタンスの起動時に列キャッシュのサイズ(およびそこに格納された列)をロックする。列キャッシュサイズは、サーバ起動時に決定されるものであり静的であるため、ユーザは、サーバを再起動させないとキャッシュのサイズを増加または減少させることができない。
【0020】
分析ワークロードを実行すると、クエリパターン(例えば、データベース内に格納されたデータへのアクセスを要求するユーザからのクエリのパターン)により、しばしば、クエリが或る1セットのテーブル/列にアクセスする頻度が他のテーブル/列へのアクセス頻度よりも高いことが明らかになる。加えて、決してアクセスされないかまたは稀にしかアクセスされない列(すなわち、起動時に選択される列)がキャッシュ内に格納されて存在し得る。列キャッシュサイズは静的であるため、データベースサーバは、ワークロードによってアクセスされる頻度が低いテーブル/列のための共有される列キャッシュメモリを解放して、それらをよりアクセス頻度が高い列/テーブルと置換えること(これにより、キャッシュの効率性を高めること)ができない。さらに、データベースサーバは、一般に、共有される列キャッシュメモリのサイズを増加させて、静的に定義された(すなわち、起動時に定義された)容量を超えてより多くのテーブル/列をキャッシュに追加することができない。
【0021】
本明細書に記載の実現例は、クラウドデータベースのためのエラスティック列キャッシュシステムを対象とする。当該システムは、行優先データの仮想水平分割を含むテーブルフラグメントの観点から、データを格納する列キャッシュを実現する。すなわち、(行優先フォーマットで格納されたデータからの)いくつかの連続したブロックの行が列優先フォーマットに変換され、これにより、独立した自己記述的なテーブルフラグメントが得られる。テーブルフラグメント内には、より高速の集約および述語フィルタリングを可能に
するために、列のすべての値が、ソートされた順序でまとめて物理的に格納され得る。
【0022】
エラスティック列キャッシュシステムは、列キャッシュのためにアクセス頻度が高いテーブルおよび/または列を自動的に決定し指定する。当該システムは、指定されたテーブル/列を共有メモリに格納するために、(データベースの実行中に)必要な共有メモリを動的に割当てる。当該システムはまた、キャッシュされた列またはテーブルが不要になる(すなわち、アクセスされる頻度が低くなる)と、共有メモリを再利用する。このため、エラスティック列キャッシュシステムは、ユーザに対して透過的に列キャッシュ用の共有メモリを拡張および縮小/伸縮させることにより、実行時のエラスティック性をもたらす。ユーザは、しばしば、ユーザ専用のメモリまたはユーザに割当てられたメモリの量に基づいて課金されるので、エラスティック列キャッシュシステムは、より効率的かつ効果的な共有メモリの使用をもたらすだけでなくコストも削減し得る。
【0023】
ここで
図1を参照すると、いくつかの実現例では、例示的な列キャッシュシステム100は、ネットワークを介して1つ以上のユーザデバイス10と通信するリモートシステム140を含む。リモートシステム140は、コンピューティングリソース144(例えば、データ処理ハードウェア)および/またはストレージリソース146(例えば、メモリハードウェア)を含むスケーラブルな/エラスティックなリソース142を有する、単一のコンピュータ、複数のコンピュータ、または分散システム(例えば、クラウド環境)であり得る。データブロックデータストア150(すなわち、リモートストレージデバイス)は、クライアント(例えば、ユーザデバイス10)またはコンピューティングリソース144のうちの1つ以上によるストレージリソース146のスケーラブルな使用を可能にするように、ストレージリソース146上にオーバーレイされてもよい。データストア150は、各々が複数の行および列310、310Aa~310Nn(
図3)を含む1つ以上のテーブル158、158a~158n(すなわち、クラウドデータベース)内に複数のデータブロック152、152a~152nを格納するように構成される。データストア150は、任意の時点で任意の数のテーブル158を格納し得る。いくつかの例では、テーブル158は、行優先フォーマット用いて格納される。すなわち、各データブロック152は、1行のうちの連続する要素がメモリ内で隣り合うように格納されている。
【0024】
リモートシステム140はまた、1つ以上のテーブル158の1つ以上の列を列優先フォーマットで格納するように構成されたエラスティック列キャッシュ160を含む。すなわち、エラスティック列キャッシュ160は、列310の連続した要素が隣り合うような態様で、データブロックデータストア150に格納された1つ以上のテーブル158の一部を格納する。エラスティック列キャッシュ160は、リモートシステム140上で実行するいくつものプロセス(例えば、ワークロードまたはアプリケーション)にアクセス可能な共有メモリを含み得る。任意には、エラスティック列キャッシュは、データブロックデータストア150よりも高速でアクセスできるメモリを含む。例えば、データブロックデータストア150はハードディスクまたは他の不揮発性メモリであり、エラスティック列キャッシュ160はランダムアクセスメモリである。
【0025】
ここで
図2を参照すると、いくつかの例では、エラスティック列キャッシュ160は、テーブル158ごとに1つ以上のテーブルフラグメント200、200Aa~200Nnを含み、各テーブルフラグメント200は、1つ以上のテーブル158の1つ以上の列310のそれぞれの部分を含む。テーブルフラグメント200は、行優先フォーマットでデータブロック(すなわち、データブロックデータストア150に格納されたデータブロック152)の仮想水平分割を表わす。各テーブルフラグメント200は、ソートされた順序で格納された列310の値を表わす固定数のデータブロック152(例えば、4096個のデータブロック152)を含み得る。すなわち、各テーブルフラグメント200は、テーブル158の1つ以上の列310のソートされたデータブロック152を含む。図示
の例では、エラスティック列キャッシュ160は、テーブルA158AのためのN個のテーブルフラグメント200を含み、各テーブルフラグメント200は、テーブル158Aの1つ以上の列310を表わす4096個のデータブロック152を含む。エラスティック列キャッシュ160はテーブルフラグメント200をいくつ含んでもよく、各テーブルフラグメント200はデータブロック152をいくつ含んでもよい。いくつかの実現例では、各テーブルフラグメント200のサイズは同じである(すなわち、同じ数のデータブロック152を含む)が、他の実現例では、テーブルフラグメント200のサイズは様々である。
【0026】
いくつかの例では、列310の全体は、1つ以上のテーブルフラグメント200において隣り合っている。他の例では、列310は、2つ以上のテーブルフラグメント200の間で分割され得る。これにより、システム100が、データ要求20の実行中に、当該データ要求で指定された述語を満たさないテーブルフラグメント200をスキップおよび/またはフィルタリングすることが可能となる。例えば、コントローラ170は、各テーブルフラグメント200内の列310ごとに最小列値および最大列値を維持する。テーブルフラグメント200ごとの最小列値および最大列値は、それぞれのテーブルフラグメント200に存在するデータのみを表わし得るものであり、これにより、より高速で述語がプルーニングされることとなる。例えば、いくつかのテーブルフラグメント200は、データ要求20を処理する際に単に最小値および最大値に述語を適用することによって迅速に除去され得る。
【0027】
再び
図1を参照すると、リモートシステム140は、それぞれのユーザ12に関連付けられたユーザデバイス10からデータ要求20(すなわち、クエリ)を受信するように構成される。ユーザデバイス10は、デスクトップワークステーション、ラップトップワークステーション、またはモバイルデバイス(すなわち、スマートフォン)等の任意のコンピューティングデバイスに対応し得る。ユーザデバイス10は、コンピューティングリソース18(例えば、データ処理ハードウェア)および/またはストレージリソース16(例えば、メモリハードウェア)を含む。各データ要求20は、データブロックデータストア150上のテーブル158内に格納された1つ以上のデータブロック152の読出しおよび/または書込みをリモートシステム140に対して要求する。
【0028】
リモートシステム140は、エラスティック列キャッシュコントローラ170を実行する。コントローラ170は、ユーザデバイス10から直接的または間接的にキャッシュ構成情報22を受信する。キャッシュ構成情報22は、いくつかの実現例では、列キャッシュ160の最大サイズ24および増分サイズ26を示す。任意には、キャッシュ構成情報22は、列キャッシュ160の初期サイズ28を含む。最大サイズ24は、キャッシュ構成情報22に関連付けられたユーザ12による使用のためにリモートシステム140によって割当てられ得るキャッシュ(すなわち、メモリ)の最大量をコントローラ170に示す。増分サイズ26は、キャッシュ160のサイズを動的に調整する際にコントローラ170がエラスティック列キャッシュ160のサイズを増減し得るメモリの量を示す。すなわち、増分サイズ26は、キャッシュ160のサイズを動的に調整する際にコントローラ170がエラスティック列キャッシュ160に割当て得るかまたはそこから割当て解除し得るメモリの量を定義する。
【0029】
例えば、キャッシュ構成情報22は、最大サイズ24が4ギガバイトであり、増分サイズ26が1ギガバイトであることを示す。この例では、コントローラ170は、任意の時点で最大4ギガバイトのエラスティック列キャッシュ160をユーザ12に割当て得るとともに、ユーザ12に割当てられている現在の量を一度に1ギガバイトずつ(最大で4ギガバイトのサイズ24まで)増加または減少させ得る。例えば、ユーザ12に2ギガバイトが割当てられている場合、コントローラ170は、ユーザ12に割当てられる総量を最
大で3ギガバイトまで拡張してもよく、または、ユーザ12に割当てられる総量を2ギガバイトまで縮小してもよい。いくつかの例では、初期サイズ28は、エラスティック列キャッシュ160の初期サイズをコントローラ170に示す。初期サイズ28はまた、エラスティック列キャッシュ160の最小サイズを表わし得る。例えば、初期サイズ28が1ギガバイトである場合、コントローラ170は、エラスティック列キャッシュ160を1ギガバイトに初期化してもよく、ユーザ12に割当てられる総サイズを1ギガバイト未満に低減させなくてもよい。
【0030】
キャッシュ構成情報22に基づいて、コントローラ170は、ユーザ12に関連付けられた1つ以上のテーブル158のうちの複数の列310のサブセットを、列優先フォーマットを用いてエラスティック列キャッシュ160にキャッシュする。ユーザ12は、エラスティック列キャッシュ160にキャッシュされた初期の列310を選択し得る。代替的には、コントローラ170は、(例えば、ランダムに、またはユーザ12、他のユーザもしくはテーブル158に関連付けられたデータに基づいて)列310を選択してもよい。コントローラ170は、エラスティック列キャッシュ160を初期サイズ28にまで満たすのに充分な量の列310をキャッシュし得る。コントローラ170によってキャッシュされる列310の量は、列310のサイズ(すなわち、テーブル158内の行の数)およびキャッシュ構成情報22(例えば、初期サイズ28)に依存する。
【0031】
引続き
図1を参照すると、コントローラ170は、各々がデータブロックデータストア150に格納された1つ以上のテーブル158へのアクセスを要求する1つ以上のデータ要求20(すなわち、クエリ)をユーザデバイス10から受信する。エラスティック列キャッシュコントローラ170は、各々の受信データ要求20にて要求されたデータがエラスティック列キャッシュ160内に存在している(すなわち、「キャッシュヒット」である)かどうかを判定する。要求されたデータがキャッシュ160内で利用可能である場合、コントローラ170は、キャッシュ160からデータ152をフェッチし、要求されたデータ152を含むクエリ応答172を、ユーザデバイス10を介してユーザ12に送信する。要求されたデータが、エラスティック列キャッシュ160内で利用不可能であるかまたは部分的にしか利用できない(すなわち、「キャッシュミス」である)場合、コントローラ170は、データブロックデータストア150から要求されたデータ152を取出し、要求されたデータ152を含むクエリ応答172を、ユーザデバイス10を介してユーザ12に送信する。
【0032】
リモートシステム140上で1つ以上のワークロード(例えば、エラスティック列キャッシュ160および/またはデータブロックデータストア150へのアクセスを行なうかまたは当該アクセスを要求するプロセス)を実行している間、エラスティック列キャッシュコントローラ170は、各データ要求20に関連付けられたアクセスパターン180を格納または保持する。アクセスパターン180は、データ要求20に応答するためにコントローラ170がどの列310にアクセスするかを含む。コントローラ170がデータ要求20ごとにアクセスパターン180を格納しているので、コントローラ170は、対応するアクセスパターン180に基づいて、予め定められた期間にわたってデータ要求20がそれぞれのテーブル158のそれぞれの列310にアクセスする頻度を示すアクセス頻度182を列310ごとに決定し得る。例えば、アクセス頻度182は、いくつかの列310がデータ要求20によってアクセスされないかまたはまれに(例えば、週に1回または月に1回)しかアクセスされず、他の列310がデータ要求によって頻繁に(例えば、1時間に1回にまたは1日に1回)アクセスされることを示す。
【0033】
エラスティック列キャッシュコントローラ170は、1つ以上のワークロードを実行しながらも、アクセスパターン180およびアクセス頻度182、ならびにキャッシュ構成情報22(例えば、最大サイズ24および増分サイズ26)に基づいて、エラスティック
列キャッシュ160内の列優先フォーマットでキャッシュされた列310のサブセットをリアルタイムで動的に調整する。すなわち、エラスティック列キャッシュコントローラ170は、アクセス頻度182に基づいて、アクセス頻度が高い列310とアクセス頻度が低い列310とを決定し、次いで、アクセス頻度が高い列310がキャッシュ160内に存在する一方でアクセス頻度が低い列310がキャッシュ160内に存在することのないように、エラスティック列キャッシュ160を動的に調整する。コントローラ170がエラスティック列キャッシュ160を動的に調整することを可能にすることにより、キャッシュ構成情報22によって示される最大サイズ24の範囲内でユーザ12に割当てられたキャッシュ160の合計サイズを維持しつつ、より多くの「キャッシュヒット」が得られることとなる。いくつかの例では、コントローラ170は、増分サイズ26に等しい量だけサイズを増大させることによって、または増分サイズ26に等しい量だけキャッシュ160のサイズを減少させることによって、キャッシュ160のサイズを調整する。このため、コントローラ170は、キャッシュ160(すなわち、共有メモリ)へのアクセスを伴う如何なるワークロードも再始動させることなく、列優先フォーマットでキャッシュされた列310のサブセットを動的に調整する。
【0034】
ここで
図3A~
図3Cを参照すると、いくつかの実現例では、エラスティック列キャッシュ160は1つ以上のメモリセグメント300、300a~300nを含む。各メモリセグメント300は、キャッシュ構成情報22において定義された増分サイズ26に等しい固定サイズであり得る。例えば、増分サイズ26が1ギガバイトである場合、各メモリセグメント300のサイズは1ギガバイトである。このため、エラスティック列キャッシュ160にキャッシュされた列310を動的に調整する場合、コントローラ170は、キャッシュ160のサイズを(必要に応じて)一度に1メモリセグメント300ずつ増加または減少させ得る。
図3Aに示す例では、メモリセグメント300aは、テーブルA158Aの部分およびテーブルB158Bの部分を含む。テーブルA158Aの部分は2つのテーブルフラグメント200Aa、200Abを含む。フラグメント200Aa、200Abは、テーブルA158Aの列A310Aaおよび列B310Abを含む。テーブルB158Bの部分も2つのテーブルフラグメント200Ba、200Bbを含むが、この場合、テーブルフラグメント200Ba、200Bbは3つの列310Ba、310Bb、310Bcを含む。
【0035】
いくつかの例では、エラスティック列キャッシュ160において列優先フォーマットでキャッシュされた列310のサブセットを動的に調整することは、拡張アクセス頻度閾値を満たすアクセス頻度182に関連付けられた1つ以上の列310をサブセットに追加することを含む。
図3Bに示すように、列310を追加することは、追加のメモリセグメント300を追加することを含み得る。ここで、コントローラ170は、エラスティック列キャッシュ160を1つのメモリセグメント300(すなわち、メモリセグメントA300a)から2つのメモリセグメント300a、300bに動的に拡張する。第2のメモリセグメント300bは、テーブルA158Aの追加の列310と、新しいテーブルC158Cからの列310とを含む。すなわち、この場合、アクセスパターン180およびアクセス頻度182は、テーブルA158Aの列C31Aacおよび列D310Ad、ならびにテーブルC158Cの列A310Aa、列B310Cbおよび列C310Ccが、拡張アクセス頻度閾値を満たすのに十分に頻繁にアクセスされ、これにより、エラスティック列キャッシュ160に確実に包まれることを示している。この例では、コントローラ170は、第2のメモリセグメント300bを追加することでサイズを2倍にすることによりエラスティック列キャッシュ160を動的に(すなわち、如何なるワークロード、プロセスまたはアプリケーションも再起動させることなく)調整する。
【0036】
コントローラ170はまた、追加のメモリセグメント300を追加することなく、列310をエラスティック列キャッシュ160に追加し得る。例えば、コントローラ170は
、メモリセグメント300のそれまで未使用の部分を利用することにより、またはメモリセグメント300内でアクセス頻度の低い列310を置き換えることにより、既存のメモリセグメントに列を追加してもよい。
【0037】
いくつかの実現例では、コントローラ170は、縮小アクセス頻度閾値を満たさないアクセス頻度182に関連付けられた1つ以上の列310をサブセットから除去することにより、列優先フォーマットでキャッシュされた列310のサブセットを動的に調整する。縮小アクセス頻度は、拡張アクセス頻度と同じであってもよく、または全く異なる閾値であってもよい。
図3Cに示す例では、コントローラ170は、メモリセグメントA300aに関連付けられた共有メモリを解放し、ユーザ12に割当てられたメモリセグメントB300bのみを残すことによって、ユーザ12に割当てられたキャッシュの量を動的に縮小させる。すなわち、この場合、メモリセグメントA300a(すなわち、列310Aa、310Ab、310Ba、310Bb、310Bc)にキャッシュされた列310についてのアクセス頻度182は縮小アクセス頻度閾値を満たす。例えば、列30Aa、310Ab、310Ba、310Bb、310Bcに関連付けられたアクセス頻度182は、これらの列へのアクセス頻度が低く、このため、コントローラ170がメモリセグメントA300aに関連付けられたメモリを安全に回復させ得ることを示している。
【0038】
いくつかの例では、コントローラ170は、アクセスパターン180および/またはアクセス頻度182に基づいて、列310をまとめてセグメント300毎にグループ化するか組立てるかまたは収集する。例えば、コントローラ170は、アクセス頻度が最も高い列310を同じメモリセグメント300にグループ化し、アクセス頻度が最も低い列310を同じメモリセグメント300にグループ化する。
図3Bの例に戻ると、列310Aa、310Ab、310Ba、310Bb、310Bcは、これらの列がメモリセグメントB300bの列310Ac、310Ad、310Ca、310Cb、310Ccよりも頻繁にアクセスされることを示す対応するアクセスパターン180に基づいて、メモリセグメントA300aにグループ化され得る。これにより、コントローラ170が、エラスティック列キャッシュ170のサイズをより容易かつ効果的に拡張および縮小させることが可能となる。なぜなら、コントローラ170は、一般に、メモリセグメント300を調整する(例えば、除去する)前に、メモリセグメント300への全ての現在のアクセスが完了するのを待たなければならないからである。このため、メモリセグメント300へのアクセスを減らすことにより(すなわち、アクセス頻度の低い列310をグループ化することにより)、コントローラ170は、エラスティック列キャッシュ160のサイズを動的に縮小または収縮させる際にメモリセグメント300をより容易に回復させるだろう。
【0039】
いくつかの例では、増分サイズ26に等しい量だけキャッシュ160のサイズを増大させることによってキャッシュされた列310のサブセットを動的に調整する前に、コントローラ170は、キャッシュを増加させることでキャッシュ160の最大サイズ24を超過するかどうかを判断する。キャッシュ160を増大させることで最大サイズ24を超過する場合、コントローラ170は、キャッシュ160のサイズを増大させることを拒否してもよい。代わりに、コントローラ170は、既存のメモリセグメント300のうちの1つ以上においてグループ化されている列310を調整してもよい。
【0040】
例えば、引続き
図3Bを参照すると、各メモリセグメント300のサイズが1ギガバイトであり、キャッシュ160の最大サイズが2ギガバイトである場合、2つのメモリセグメント300a、300bは、最大量のキャッシュ160をユーザ12に関連付けられたものに割当てる。この例では、追加の列310をキャッシュ160に追加するべきであることをアクセスパターン180が示す場合、コントローラ170は、キャッシュ160のサイズを増大させる代わりに、メモリセグメント300a、300bのうちの1つにおいてアクセスされる頻度が低い1つ以上の列310を置き換えてもよい。現在キャッシュさ
れている列310のうち、キャッシュされるべき新しい列310よりもアクセス頻度が低いものがない場合、コントローラ170は、代わりに如何なるアクションも拒否し、代わりにアクセスパターンが変化するのを待ってもよい。例えば、ある期間の後、1つ以上の列310がアクセスされる頻度がより少なくなる可能性があり、その時、コントローラ170は、対応するアクセスパターン180に基づいて当該キャッシュされた列310を調整し得る。代替的には、コントローラ170は新しい最大サイズ24をユーザ12から受信してもよく、これにより、コントローラ170はキャッシュ160のサイズをさらに増大させることができるようになる。いくつかの例では、リモートシステム140は、キャッシュ160が最大サイズに達した場合、および/またはコントローラ170が最大サイズ24に基づいてキャッシュ160のサイズを増大させることができない場合、ユーザ12に通知し得る。
【0041】
図4は、エラスティック列キャッシュのための方法400についての動作の例示的な構成を示すフローチャートである。動作402において、方法400は、データ処理ハードウェア144において、ユーザ12に関連付けられたキャッシュ160についての最大サイズ24および増分サイズ26を示すキャッシュ構成情報22を受信するステップを含む。キャッシュ160は、データ処理ハードウェア144と通信するメモリハードウェア146に格納されたテーブル158の一部を格納するように構成されている。テーブル158は、行優先フォーマットでメモリハードウェア146に格納されており、複数の列310および複数の行を含む。
【0042】
動作404において、方法400は、データ処理ハードウェア144によって、テーブル158の複数の列310のサブセットを、列優先フォーマットで、ユーザ12に関連付けられたキャッシュ160にキャッシュするステップを含む。動作406において、方法400は、データ処理ハードウェア144において、複数のデータ要求20を受信するステップを含む。各データ要求20は、メモリハードウェア146に格納されたテーブル158へのアクセスを要求するとともに、テーブル158の複数の列310のうちの1つ以上へのアクセスを必要とする対応するアクセスパターン180に関連付けられている。
【0043】
データ処理ハードウェア144上で1つ以上のワークロードを実行している間、方法400は、動作408において、データ処理ハードウェア144によって、テーブル158の複数の列310のうちの列310ごとにアクセス頻度182を決定するステップを含む。当該アクセス頻度182は、複数のデータ要求20の各々に関連付けられた対応するアクセスパターン180に基づいて、対応する列310が予め定められた期間にわたってアクセスされる回数を示す。動作410において、方法400は、データ処理ハードウェア144によって、アクセスパターン180と、キャッシュ160についての最大サイズ24と、キャッシュ160についての増分サイズ26とに基づいて、リアルタイムで列優先フォーマットでキャッシュされた複数の列310のサブセットを動的に調整するステップを含む。
【0044】
図5は、本明細書に記載のシステムおよび方法を実現するために使用され得る例示的なコンピューティングデバイス500の概略図である。コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータ等の様々な形態のデジタルコンピュータを表わすことが意図されている。ここに示す構成要素、それらの接続および関係、ならびにそれらの機能は、例示的なものにすぎず、本明細書において説明および/または主張される本発明の実現例を限定することを意図するものではない。
【0045】
コンピューティングデバイス500は、プロセッサ510と、メモリ520と、ストレージデバイス530と、メモリ520および高速拡張ポート550に接続する高速インタ
ーフェイス/コントローラ540と、低速バス570およびストレージデバイス530に接続する低速インターフェイス/コントローラ560とを含む。構成要素510、520、530、540、550、および560の各々は、様々なバス用いて相互接続されるとともに、共通のマザーボード上に、または必要に応じて他の態様で実装され得る。プロセッサ510は、高速インターフェイス540に結合されたディスプレイ580等の外部入出力デバイス上にグラフィカルユーザインターフェイス(graphical user interface:GUI)についてのグラフィカル情報を表示するために、メモリ520またはストレージデバイス530に格納された命令を含む、コンピューティングデバイス500内で実行するための命令を処理することができる。他の実現例では、複数のプロセッサおよび/または複数のバスが、必要に応じて、複数のメモリおよび複数のタイプのメモリとともに使用され得る。また、複数のコンピューティングデバイス500が接続されてもよく、各デバイスは、必要な動作(例えば、サーババンクとして、ブレードサーバのグループとして、またはマルチプロセッサシステムとして)の部分を提供する。
【0046】
メモリ520は、コンピューティングデバイス500内で情報を非一時的に格納する。メモリ520は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであり得る。非一時的メモリ520は、コンピューティングデバイス500による使用のためにプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的または永続的に格納するために使用される物理的デバイスであり得る。不揮発性メモリの例として、フラッシュメモリおよび読出し専用メモリ(read-only memory:ROM)/プログラマブル読出し専用メモリ(programmable read-only memory:PROM)/消去可能プログラマブル読出し専用メモリ(erasable programmable read-only memory:EPROM)/電子的消去可能プログラマブル読出し専用メモリ(electronically erasable programmable read only memory:EEPROM)(例えば、典型的にはブートプログラム等のファームウェアに使用される)が含まれるが、これらに限定されない。揮発性メモリの例として、ランダムアクセスメモリ(random access memory:RAM)、ダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)、スタティックランダムアクセスメモリ(static random access memory:SRAM
)、相変化メモリ(phase change memory:PCM)、ならびにディスクまたはテープが
含まれるが、これらに限定されない。
【0047】
ストレージデバイス530は、コンピューティングデバイス500のための大容量ストレージを設けることができる。いくつかの実現例では、ストレージデバイス530はコンピュータ可読媒体である。様々な異なる実現例では、ストレージデバイス530は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくは他の構成内のデバイスを含むデバイスのアレイであり得る。付加的な実現例では、コンピュータプログラムプロダクトは情報担体において有形に具現化される。コンピュータプログラムプロダクトは、実行されると上述の方法等の1つ以上の方法を実行する命令を含む。情報担体は、メモリ520、ストレージデバイス530、またはプロセッサ510上のメモリ等のコンピュータ可読媒体または機械可読媒体である。
【0048】
高速コントローラ540は、コンピューティングデバイス500のための帯域幅集約型動作を管理し、低速コントローラ560は、より低い帯域幅の集約型動作を管理する。このようなデューティの割当ては例示的なものにすぎない。いくつかの実現例では、高速コントローラ540は、メモリ520、(例えば、グラフィックスプロセッサまたはアクセラレータを介する)ディスプレイ580、および様々な拡張カード(図示せず)を受付け得る高速拡張ポート550に結合される。いくつかの実現例では、低速コントローラ560は、ストレージデバイス530および低速拡張ポート590に結合される。様々な通信
ポート(例えば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、無線イ
ーサネット(登録商標))を含み得る低速拡張ポート590は、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータ等のネットワーキングデバイス等の1つ以上の入出力デバイスに、例えばネットワークアダプタを介して結合され得る。
【0049】
コンピューティングデバイス500は、図示のように、いくつかの異なる形態で実装され得る。例えば、標準サーバ500aとして、もしくはそのようなサーバ500aのグループ内で複数回、ラップトップコンピュータ500bとして、またはラックサーバシステム500cの一部として実装されてもよい。
【0050】
本明細書に記載のシステムおよび技術の様々な実現例は、デジタル電子および/または光回路、集積回路、特別に設計された特定用途向け集積回路(application specific integrated circuit:ASIC)、コンピュータハードウェア、ファームウェア、ソフトウ
ェア、および/またはそれらの組合わせで実現することができる。これらの様々な実現例は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスとの間でデータおよび命令の送受信を行なうように結合された、専用または汎用であり得る少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能である1つ以上のコンピュータプログラムにおける実現例を含み得る。
【0051】
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指し得る。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と称されることもある。例示的なアプリケーションは、システム診断アプリケーション、システム管理アプリケーション、システム保守アプリケーション、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションを含むが、これらに限定されない。
【0052】
(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知である)これらのコンピュータプログラムは、プログラマブルプロセッサのための機械命令を含むとともに、高水準手続き型および/もしくはオブジェクト指向型のプログラミング言語で、ならびに/またはアセンブリ/機械言語で実装され得る。本明細書で使用する場合、「機械可読媒体」および「コンピュータ可読媒体」という語は、機械可読信号として機械命令を受信する機械可読媒体を含む、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される、任意のコンピュータプログラムプロダクト、非一時的なコンピュータ可読媒体、装置、および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理デバイス(Programmable Logic Device:PLD))を指している。「機械可読信号」という語は、機械命令および/またはデ
ータをプログラマブルプロセッサに提供するために用いられる任意の信号を指す。
【0053】
本明細書に記載のプロセスおよび論理フローは、データ処理ハードウェアとも称される1つ以上のプログラマブルプロセッサによって実行することができ、1つ以上のコンピュータプログラムを実行して、入力データに対して演算を実行し出力を生成することによって機能を実行することができる。プロセスおよび論理フローはまた、専用論理回路、例えば、フィールドプログラマブルゲートアレイ(field programmable gate array:FPG
A)またはASIC(特定用途向け集積回路)によって実行することができる。コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1
つ以上のプロセッサを含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリから、またはこれら両方から命令およびデータを受信するだろう。コンピュータの必須要素は、命令を実行するためのプロセッサと、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般に、コンピュータはまた、データを格納するための1つ以上の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらとの間でデータの受信もしくは転送もしくは受信および転送を行なうように動作可能に結合されるであろう。しかしながら、コンピュータはこのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するのに適したコンピュータ可読媒体は、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイス、例として、半導体メモリデバイスなど、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組込まれ得る。
【0054】
ユーザと対話できるようにするために、この開示の1つ以上の局面は、情報をユーザに表示するためのディスプレイデバイス、例えばCRT(cathode ray tube:陰極線管)、LCD(liquid crystal display:液晶ディスプレイ)モニタ、またはタッチスクリーンと、任意には、ユーザによるコンピュータへの入力を可能にするキーボードおよびポインティングデバイス、例えばマウスまたはトラックボールとを有するコンピュータ上で実現され得る。他の種類のデバイスも同様に、ユーザとの対話を提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであり得る。また、ユーザからの入力は、音響入力、音声入力または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、当該デバイスからドキュメントを受信することによって、例えば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページを当該ウェブブラウザに送信することによって、ユーザと対話することができる。
【0055】
いくつかの実現例を説明してきた。しかしながら、本開示の精神および範囲から逸脱することなく、さまざまな変更を行ない得ることが理解されるだろう。したがって、他の実現例は添付の特許請求の範囲内にある。
【手続補正書】
【提出日】2023-11-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータによって実現される方法であって、データ処理ハードウェアによって実行されると、前記データ処理ハードウェアに以下の動作を実行させ、前記以下の動作は、
ユーザに関連付けられたキャッシュについての増分サイズを示すキャッシュ構成情報を受信する動作を含み、前記キャッシュは、前記データ処理ハードウェアと通信するメモリハードウェアに格納されたテーブルの一部を格納するように構成されており、前記テーブルは複数の列および複数の行を含み、前記以下の動作はさらに、
列優先フォーマットで、前記テーブルの前記複数の列のサブセットを前記ユーザに関連付けられた前記キャッシュにキャッシュする動作と、
複数のデータ要求を受信する動作とを含み、前記複数のデータ要求の各データ要求は、前記メモリハードウェアに格納された前記テーブルへのアクセスを要求し、前記以下の動作はさらに、
前記複数のデータ要求を受信する動作に応答して、
前記増分サイズに等しい量だけ前記キャッシュのサイズを増大させること、または、
前記増分サイズに等しい量だけ前記キャッシュの前記サイズを減少させること、
によって、前記複数の列の前記サブセットを動的に調整する動作を含む、方法。
【請求項2】
前記以下の動作はさらに、前記テーブルの前記複数の列のそれぞれの列ごとに、前記複数のデータ要求の各々に関連付けられたそれぞれのアクセスパターンに基づいて、前記それぞれの列が予め定められた期間にわたってアクセスされる回数を示すアクセス頻度を決定する動作を含む、請求項1に記載の方法。
【請求項3】
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、前記キャッシュ内の前記複数の列の前記サブセットから1つ以上の列を除去する動作を含み、前記除去された1つ以上の列は、縮小アクセス頻度閾値を満たすアクセス頻度に関連付けられている、請求項2に記載の方法。
【請求項4】
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、前記キャッシュ内の前記複数の列の前記サブセットに1つ以上の列を追加する動作を含み、前記追加された1つ以上の列は、拡張アクセス頻度閾値を満たすアクセス頻度に関連付けられている、請求項2に記載の方法。
【請求項5】
前記複数の列の前記サブセットをキャッシュする動作は、1つ以上のテーブルフラグメントを生成する動作を含み、前記1つ以上のテーブルフラグメントは各々、前記テーブルの前記複数の列の1つ以上のうちのそれぞれの部分を含む、請求項1~4のいずれかに記載の方法。
【請求項6】
前記キャッシュは、前記データ処理ハードウェア上で実行する1つ以上のワークロードによってアクセス可能な共有メモリを含む、請求項1~5のいずれかに記載の方法。
【請求項7】
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、前記1つ以上のワークロードをいずれも再始動させることなく、前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作を含む、請求項6に記載の方法。
【請求項8】
前記以下の動作はさらに、
前記増分サイズに等しい量だけ前記キャッシュの前記サイズを増加させることで最大サイズを超過するかどうかを判断する動作と、
前記増分サイズに等しい量だけ前記キャッシュの前記サイズを増加させることで前記最大サイズを超過し得る場合、前記キャッシュの前記サイズを増大させることを拒否する動作とを含む、請求項1~7のいずれかに記載の方法。
【請求項9】
前記キャッシュは複数のセグメントを含み、
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、対応するアクセスパターンに基づいて複数の列をまとめてセグメント毎にグループ化する動作を含む、請求項1~8のいずれかに記載の方法。
【請求項10】
前記対応するアクセスパターンに基づいて前記複数の列をセグメント毎にグループ化する動作は、アクセス頻度の低い列をまとめてグループ化する動作を含む、請求項9に記載の方法。
【請求項11】
システムであって、
データ処理ハードウェアと、
前記データ処理ハードウェアと通信するメモリハードウェアとを含み、前記メモリハードウェアは、前記データ処理ハードウェア上で実行されると、前記データ処理ハードウェアに以下の動作を実行させる命令を格納しており、前記以下の動作は、
ユーザに関連付けられたキャッシュについての増分サイズを示すキャッシュ構成情報を受信する動作を含み、前記キャッシュは、前記データ処理ハードウェアと通信するメモリハードウェアに格納されたテーブルの一部を格納するように構成され、前記テーブルは複数の列および複数の行を含み、前記以下の動作はさらに、
前記テーブルの前記複数の列のサブセットを、列優先フォーマットで、前記ユーザに関連付けられた前記キャッシュにキャッシュする動作と、
複数のデータ要求を受信する動作とを含み、前記複数のデータ要求の各データ要求は、前記メモリハードウェアに格納された前記テーブルへのアクセスを要求し、
前記複数のデータ要求を受信する動作に応答して、
前記増分サイズに等しい量だけ前記キャッシュのサイズを増大させること、または、
前記増分サイズに等しい量だけ前記キャッシュの前記サイズを減少させること、
によって、前記複数の列の前記サブセットを動的に調整する動作を含む、システム。
【請求項12】
前記以下の動作はさらに、前記テーブルの前記複数の列のそれぞれの列ごとに、前記複数のデータ要求の各々に関連付けられたそれぞれのアクセスパターンに基づいて、前記それぞれの列が予め定められた期間にわたってアクセスされる回数を示すアクセス頻度を決定する動作を含む、請求項11に記載のシステム。
【請求項13】
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、前記キャッシュ内の前記複数の列の前記サブセットから1つ以上の列を除去する動作を含み、前記除去された1つ以上の列は、縮小アクセス頻度閾値を満たすアクセス頻度に関連付けられている、請求項12に記載のシステム。
【請求項14】
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、前記キャッシュ内の前記複数の列の前記サブセットに1つ以上の列を追加する動作を含み、前記追加された1つ以上の列は、拡張アクセス頻度閾値を満たすアクセス頻度に関連付けられている、請求項12に記載のシステム。
【請求項15】
前記複数の列の前記サブセットをキャッシュする動作は、1つ以上のテーブルフラグメントを生成する動作を含み、前記1つ以上のテーブルフラグメントは各々、前記テーブルの前記複数の列の1つ以上のうちのそれぞれの部分を含む、請求項11~14のいずれかに記載のシステム。
【請求項16】
前記キャッシュは、前記データ処理ハードウェア上で実行する1つ以上のワークロードによってアクセス可能な共有メモリを含む、請求項11~15のいずれかに記載のシステム。
【請求項17】
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、前記1つ以上のワークロードをいずれも再始動させることなく、前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作を含む、請求項16に記載のシステム。
【請求項18】
前記以下の動作はさらに、
前記増分サイズに等しい量だけ前記キャッシュの前記サイズを増加させることで最大サイズを超過するかどうかを判断する動作と、
前記増分サイズに等しい量だけ前記キャッシュの前記サイズを増加させることで前記最大サイズを超過し得る場合、前記キャッシュの前記サイズを増大させることを拒否する動作とを含む、請求項11~17のいずれかに記載のシステム。
【請求項19】
前記キャッシュは複数のセグメントを含み、
前記列優先フォーマットでキャッシュされた前記複数の列の前記サブセットを動的に調整する動作は、対応するアクセスパターンに基づいて複数の列をまとめてセグメント毎にグループ化する動作を含む、請求項11~18のいずれかに記載のシステム。
【請求項20】
前記対応するアクセスパターンに基づいて前記複数の列をセグメント毎にグループ化する動作は、アクセス頻度の低い列をまとめてグループ化する動作を含む、請求項19に記載のシステム。
【外国語明細書】