JP6393805B2 - カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理 - Google Patents

カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理 Download PDF

Info

Publication number
JP6393805B2
JP6393805B2 JP2017108105A JP2017108105A JP6393805B2 JP 6393805 B2 JP6393805 B2 JP 6393805B2 JP 2017108105 A JP2017108105 A JP 2017108105A JP 2017108105 A JP2017108105 A JP 2017108105A JP 6393805 B2 JP6393805 B2 JP 6393805B2
Authority
JP
Japan
Prior art keywords
data
column
bucket
buckets
histogram
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017108105A
Other languages
English (en)
Other versions
JP2017146994A (ja
Inventor
グプタ,アヌラグ・ウィンドラス
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2017146994A publication Critical patent/JP2017146994A/ja
Application granted granted Critical
Publication of JP6393805B2 publication Critical patent/JP6393805B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Description

情報を作成、追跡、および保持するための構成に関する技術力が成長し続けるにつれて
、増加する情報を管理および格納するための様々な異なる技術が開発されている。例えば
、データベースシステムは、格納された情報を管理するためのハードウェアおよびソフト
ウェアの多数の異なる特殊化構成またはカスタマイズ化構成をクライアントに提供する。
しかし、増加するデータ編成は、しばしば、データベースシステムのように、データ記憶
および管理技術のサイズおよび複雑さの両方における対応する増加を格納および管理する
必要があり、それは、その結果として、情報を維持する費用を増大させる。新しい技術は
、データを維持するために要求される複雑さとストレージの両方をますます削減しようと
努めながら、同時にデータ記憶およびデータ管理の効率性を改善する。
1つのかかる技術は、列指向データベーステーブル(しばしば「カラムナ」と呼ばれる
)を使用してデータがデータベーステーブル内に格納されるときにデータの位置付けまた
は配置を修正して、それを管理するために要求されるアクセス動作数を削減することを伴
う。通常、様々な入力(例えば、データの書込み)および出力(例えば、データの読取り
)などの、アクセス動作は、データを格納および管理する際に最も費用がかかり最も効率
が悪いことが分かる。カラムナデータベースは、あるタイプのデータに対して、例えば、
データベースシステムが、データベーステーブルの行よりもデータベーステーブルの列に
おいて主に生じる情報に対するクエリーに応答する場合に、アクセス動作数を大幅に削減
し得る。しかし、カラムナデータベーステーブルなどの技術が出現しても、収集された情
報の持続的な増大は、データの格納および管理に対するさらなる最適化を必要とする。
いくつかの実施形態に従った、カラムナデータベースの列に対する高さのバランスを調整したヒストグラムを使用した効率的なクエリー処理のデータフローブロック図を示す。 いくつかの実施形態に従った、分散データベースウェアハウスサービス例を示すブロック図である。 いくつかの実施形態に従った、分散データウェアハウスクラスタ例を示すブロック図である。 いくつかの実施形態に従った、リーダーノード例を示すブロック図である。 いくつかの実施形態に従った、計算ノード例を示すブロック図である。 いくつかの実施形態に従い、カラムナデータベーステーブルの列に対するヒストグラムを使用してクエリーを処理する方法を示す高レベル流れ図である。 いくつかの実施形態に従い、カラムナデータベーステーブル内の列に対するデータの均等な分布を表す、ヒストグラムに対するバケット範囲サイズを判断する方法を示す高レベル流れ図である。 いくつかの実施形態に従い、カラムナデータベーステーブルの列内のデータのヒストグラム内の各バケットを表すビットマップを生成する方法を示す高レベル流れ図である。 いくつかの実施形態に従い、カラムナデータベーステーブルの列内のデータに対するクエリーに応答して、どのデータブロックが読み取る必要がないかを判断する方法の流れ図を示す。 いくつかの実施形態に従い、リバランス事象の検出に応答して、データブロックに対する確率的データ構造を修正する方法の流れ図を示す。 いくつかの実施形態に従い、データブロックに対する確率的データ構造を更新する方法の流れ図を示す。 いくつかの実施形態に従った、システム例を示す。
本明細書では、実施形態は、いくつかの実施形態および例証する図に対する例として説
明されているが、当業者は、実施形態が説明する実施形態または図に制限されないことを
理解するであろう。図およびそれに対する詳細な記述は、開示する特定の形式に実施形態
を制限することを意図せず、それとは逆に、意図は、添付の請求項によって定義されるよ
うに、精神および範囲に含まれる、全ての修正、均等物および代替手段を包含することで
あることを理解されたい。本明細書で使用する見出しは編成目的のためだけであり、記述
または請求項の範囲を制限するために使用されることを意図しない。本出願全体を通して
、用語「〜し得る(may)」は、強制的な意味(すなわち、〜しなければならないこと
を意味する)ではなく、許容的な意味(すなわち、〜する可能性があることを意味する)
で使用される。同様に、用語「含む(include)」、「含む(including
)」、および「含む(includes)」は、制限することではなく、包含することを
意味する。
以下の詳細な記述では、請求された主題の完全な理解を提供するために、多数の具体的
詳細が説明される。しかし、請求された主題は、これらの具体的詳細なしでも実施され得
ることが当業者によって理解されよう。他の例では、当業者によって知られている方法、
装置、またはシステムは、請求された主題を曖昧にしないために、詳細には説明されてい
ない。
第1、第2などの用語は、本明細書では様々な要素を記述するために使用され得るが、
これらの要素は、これらの用語によって制限されるべきでないことも理解されたい。これ
らの用語は、1つの要素を別の要素と区別するためにのみ使用される。例えば、第1の接
触は、第2の接触と称せられ得、同様に、第2の接触は、本発明の範囲から逸脱すること
なく、第1の接触と称せられ得る。第1および第2の接触は両方とも接触であるが、それ
らは同じ接触ではない。
本明細書において本発明の記述に使用される用語は、特定の実施形態を記述することの
みを目的とし、本発明を制限することを意図していない。本発明の記述および添付の請求
項では、単数形の「1つの(a)」、「1つの(an)」および「その(the)」は、
コンテキストで別段の明確な指示がない限り、複数形も含むことを意図する。本明細書で
は、用語「および/または」は、関連するリストされた項目の1つ以上の任意および全て
の可能な組合せを参照および包含することも理解されたい。用語「含む(include
s)」、「含む(including)」、「含む(comprises)」、および/
または「含む(comprising)」は、本明細書で使用される場合、明記された特
徴、整数、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つ以
上の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグルー
プの存在または追加を除外しないこともさらに理解されたい。
本明細書では、用語「もし〜ならば(if)」は、コンテキストに応じて、「〜の場合
(when)」または「〜すると(upon)」または「判断に応答して」もしくは「検
出に応答して」を意味すると解釈され得る。同様に、句「〜ことが判断される場合」また
は「[明記された条件もしくは事象]が検出された場合」は、コンテキストに応じて、「
〜と判断すると」もしくは「判断に応答して」または「[明記された条件もしくは事象]
を検出すると」もしくは「[明記された条件もしくは事象]の検出に応答して」を意味す
ると解釈され得る。
カラムナデータベースの列に対するヒストグラムを使用する効率的なクエリー処理の様
々な実施形態が本明細書で説明される。分散データウェアハウスシステムなどの、データ
ベース管理サービス、または他のデータベース管理システムは、効率的なデータ管理をク
ライアントに提供するために、列指向データベーステーブル(以下、「カラムナデータベ
ーステーブル」と呼ぶ)を実装し得る。通常、カラムナデータベーステーブル内のデータ
は、日付によってなど、データベーステーブルの1つの列に従ってソートされる。データ
がソートされている列に対するデータをソートしているブロックかどうかを判断する際に
、各データブロックに対する異なる範囲が格納または推定されて、クエリーが、要求され
たデータがデータブロック内に恐らく格納されていると分かっているデータブロックの読
取りのみを指示するのを可能にする。しかし、かかる技術は、一度に1つの列だけがソー
トされ得るので、カラムナデータベーステーブルがソートされている列内のデータに対す
るクエリーに応答する場合にのみ適用され得る。
ヒストグラムは、異なる値の範囲内のデータセットの分布を表し、それは、しばしば、
バケットと呼ばれる。例えば、天気温度のヒストグラムは、最高気温が90度台、80度
台、70度台などであった日数を示す棒グラフを示し得る。ヒストグラムを表す棒グラフ
における棒の高さは、いくつかの値の範囲がデータセット内でより頻出する値を有し得る
ので、大きく変わり得る。しかし、高さのバランスを調整したヒストグラムは、異なるサ
イズの値の範囲(すなわち、バケット)を提供し、この特徴により、プロットされたヒス
トグラムの棒の高さは、均等であるか、またはバランスを取られ得る。カラムナデータベ
ーステーブルの列は、様々な頻度のデータ値を含み得る。これらのデータ値に基づき生成
されたヒストグラムは、データブロック内に格納されている異なる範囲の値を識別するた
めに使用され得、従って、どのブロックが読み取る必要がないかを判断し得る。少なくと
もいくつかの実施形態では、これらのデータ値に基づき生成された高さのバランスを調整
したヒストグラムは、クエリーを処理するために十分な選択性(例えば、特定のバケット
内のデータ値の区別または確率)を提供し得、この特徴により、クエリーが受信されると
、列の高さのバランスを調整したヒストグラムが、列に対するデータを格納しているどの
データブロックが読み取る必要がないかを判断するために使用され得る。例えば、次いで
、受信したクエリーに対応するためのデータを取得するために、少ない読取り動作(また
は他の様々なアクセス動作)が実行され得る。このように、クエリーを処理するためにカ
ラムナデータベースの列に対するヒストグラムまたは高さのバランスを調整したヒストグ
ラムを使用することにより、いくつかの実施形態は、大量のデータのより効率的な管理お
よびそれらに対するアクセスを提供し得る。
クライアント(または顧客、組織、実体など)が、後に格納または管理を必要とし得る
大量のデータを収集することは稀ではない。いくつかのクライアントは、このデータに対
して独自のデータ管理システムを実装することを望み得るが、データ管理サービスを得る
ことは、自身のデータを管理することを望まないクライアントにとって、より効率的で費
用効果が高い選択肢であると分かり得ることがますます明らかになる。例えば、小企業は
、将来のデータ分析のために売上レコードおよび関連データを維持することを望み得る。
データを維持するためのデータ管理システム、ならびにそのシステムのセットアップおよ
び保守に必要な専門知識に直接投資をする代わりに、小企業は、代替方法として、自身の
データを格納および管理するためにデータ管理サービスと契約を結ぶことはより効率的で
あることが分かり得る。
図2〜図4Bに関して以下で説明する分散データウェアハウスサービスなどの、データ
管理サービスは、クライアントに、その様々なニーズに応じて、様々な異なるデータ管理
サービスを提供し得る。ある場合には、クライアントは、売上レコードマーケティング、
管理報告、ビジネスプロセス管理、予算予測、財務報告、ウェブサイト解析、または他の
多くのタイプもしくは種類のデータなどの、大量のデータを格納および維持することを望
み得る。データに対するクライアントの利用は、そのデータを格納するために使用される
データ管理システムの構成にも影響し得る。例えば、データの大きな集合を各行内の少数
の列から集めるような、あるタイプのデータ分析および他の操作に対して、カラムナデー
タベーステーブルは、もっと効率的な性能を提供し得る。言い換えれば、(従来型のデー
タベース方式におけるように)列の行全体を各データブロック内に格納するのではなく、
データベーステーブルからの列情報がディスク上のデータブロックに格納され得る。
いくつかの実施形態では、テーブルデータをかかるカラムナ方式で格納することは、様
々なクエリーに対する全体的なディスクI/O要件を削減し得、かつ解析クエリー性能を
向上し得る。例えば、データベーステーブル情報をカラムナ方式で格納すると、クエリー
処理の一部としてデータベース操作を実行するためにデータをメモリ内に読み出す場合(
例えば、テーブル内の全ての行に対する全ての列フィールド値を読み出す場合)に実行さ
れるディスクI/O要求数を削減し得、かつクエリーを処理する際にディスクからロード
する必要のあるデータの量を削減し得る。逆に、一定数のディスク要求に対して、各デー
タブロックがテーブル行全体を格納した場合よりもはるかに多くの行に対する列フィール
ド値が読み出され得る。いくつかの実施形態では、ディスク要件は、カラムナ記憶データ
タイプと適合する圧縮方法を使用して、さらに削減され得る。例えば、各ブロックが均一
のデータ(すなわち、全てが同じデータタイプの列フィールド値)を含むので、ディスク
記憶および読出し要件が、特定の列データタイプに最も適した圧縮方法を適用することに
よりさらに削減され得る。いくつかの実施形態では、単一列のフィールド値のみを含むデ
ータブロックをディスク上に格納するためのスペースにおける節約が、データを読み出し
、次いでそのデータをシステムメモリ内に格納する場合(例えば、読み出したデータを分
析するか、または他の方法で処理する場合)にスペースにおける節約になり得る。例えば
、一度に1つまたは少数の列にアクセスし、かつ/またはそれらを操作する必要があるだ
けのデータベース操作に対して、クエリーを実行するために実際に必要な特定の列内のデ
ータを格納しているデータブロックだけが読み出されてメモリ内に格納され得るので、従
来型の行ベース記憶よりも少ないメモリ空間しか必要とされない可能性がある。カラムナ
データベーステーブルを実装する効率を向上させるため、カラムナデータベースの列に対
するヒストグラムが生成されて、クエリーに応答する際に読み取る必要のないデータブロ
ックを判断するために使用される確率的データ構造を作成し得る。
図1は、いくつかの実施形態に従った、カラムナデータベースの列に対する高さのバラ
ンスを調整したヒストグラムを使用した効率的なクエリー処理のデータフローブロック図
を示す。高さのバランスを調整したヒストグラム110は、カラムナデータベーステーブ
ルの列132内の複数のデータブロックに格納されたデータ値に基づき作成され得る。ヒ
ストグラム110のバケット範囲サイズは、データ値がヒストグラムのバケット120の
間で均等に分布されるように、判断され得る。高さのバランスを調整したヒストグラム1
10内のバケット110のどの特定のバケットに対してデータブロック内に格納されたデ
ータ値があるかを示す、確率的データ構造が作成され得る。より一般的には、確率的デー
タ構造は、所与の値が、データブロック内に格納されたデータ値のセットなどの、データ
セットのメンバーであるかをテストするために使用され得る。確率的データ構造は、特定
の値がデータ値のセットのメンバーではないことを確信をもって示し得る。選択データに
列132を対象としたクエリー140に対応するため、スーパーブロックデータ構造10
0内のそれぞれのエントリが、どのブロックが読み取る必要がないかを判断するために検
査され得る。
記憶装置130は、カラムナデータベーステーブルのためのデータを格納するように構
成された記憶ディスク装置または他のタイプの記憶装置などの、1つ以上の記憶装置であ
り得る。図1では、記憶装置130は、列132を含め、複数の列に対するデータを格納
するように構成される。データは、例えば、日付、引用、量、またはウェブ測定基準のリ
スト、および、より一般的には、カラムナデータベーステーブルの列に対するデータブロ
ック内に格納可能な任意の他のタイプまたは形式のデータ値であり得る。様々な実施形態
では、列内に格納されたデータ値はソートされていない。データブロックは、データ記憶
の単位(例えば、データページ)、論理的抽象化、またはこれらのデータ値をデータベー
スまたは他の記憶システムに格納する記憶装置の物理ブロックであり得る。カラムナデー
タベーステーブルは、列のデータ値を一緒に格納するように構成されたデータのための列
指向記憶システムであり得る。少なくともいくつかの実施形態では、記憶装置130は、
分散型データベースシステム内の複数の異なるノードにわたって分散され得る。
ヒストグラム110は、列132内に格納されたデータブロックのデータ値に基づき生
成され得る。バケット120のバケット範囲サイズを判断するために、データブロックか
らの列のデータが取得され得る。次いで、複数のバケットが生成され得、それらは、デー
タブロック内に格納され得る値の数よりも大幅に多い可能性がある。バケット範囲サイズ
は、列のデータがバケット間で均等に分布されるように、バケットに対して設定され得る
。図1は、様々なバケット120の範囲サイズを示す。例えば、小売業者は、一定の期間
、商品をその小売業者から購入する顧客に関して、年齢などの、人口動態情報をカラムナ
データベーステーブルの列内に格納し得る。顧客の年齢がある年齢範囲(例えば、45〜
60歳)に高度に集中して、残りの顧客年齢がもっと散らばっていた場合、均等なバケッ
トサイズ範囲(例えば、10歳)をもつヒストグラムは、多数を有する40〜50および
50〜60の、2つのバケット、ならびにはるかに少数の顧客を有する他のバケットをも
ち得る。代わりに、バケット範囲サイズが、いくつかのバケット範囲が年齢0〜25を含
むが、他は、もっと少ない45〜47であり得るように、バケット範囲サイズにおいて変
化し得、これにより、各バケットで表される顧客数が全てのバケットにわたって均等に分
布されるようになる。
確率的データ構造は、バケット範囲サイズ120に基づき、各データブロックに対して
生成され得る。これらの確率的データ構造は、バケット120のどのバケットに対して、
データ値が、バケットによって表される値の範囲内であり、データブロック内に格納され
ているかを示す。いくつかの実施形態では、図1に示すように、確率的データ構造は、ビ
ットマップとして格納され得る。ビットマップの各ビットは、ヒストグラムのバケットに
対応し得る。設定されたビットは、バケットの範囲内のデータ値がデータブロック内に格
納されていることを示す。従って、例えば、クエリーが処理されていて、ビットマップが
あるデータ値について検査される場合に、クエリー内で求められたデータ値を含むバケッ
トを表すビットマップのビットが設定されていると、そのデータ値がデータブロック内に
格納されている可能性がある。そうでない場合、データブロックは、読み取る必要がない
可能性がある。高さのバランスを調整したヒストグラム110として示されているが、少
なくともいくつかの実施形態では、確率的データ構造を生成するために、高さのバランス
を調整していないヒストグラムが使用され得る。
確率的データ構造は、スーパーブロックデータ構造100などの、ブロックメタデータ
のデータ構造内に格納され得、スーパーブロックデータ構造100は、列内のデータブロ
ックに関する情報を格納する。各データブロックは、スーパーブロックデータ構造100
内にそれぞれのエントリを有し得る。いくつかの実施形態では、列に対する新しいデータ
が受信されると、どのバケットが、そのバケット範囲内のデータブロックに格納されたデ
ータ値を有するかを示すために、新しい確率的データ構造が生成され得る。少なくともい
くつかの実施形態では、列に追加された新規データのある閾値、またはヒストグラムの作
成からの一定期間の経過などの、リバランス事象が検出され得る。いくつかの実施形態で
は、列に対して格納される追加データにおけるある程度の偏りもリバランス事象をトリガ
ーし得る。バケット範囲サイズが修正され得、そして、スーパーブロックデータ構造内に
格納されているものなどの、確率的データ構造が更新され得る。修正された確率的データ
構造が、列を対象とした将来のクエリーのサービスにおいて使用されるとき、誤判定(す
なわち、確率的データ構造は、データ値がバケットサイズの範囲内に格納されていること
を示すが、実際にはデータブロックは、そのバケットサイズの範囲内に値を格納していな
い場合)が、データブロック内に格納されたデータ値をより正確に反映するために、確率
的データ構造を更新することにより訂正され得る。いくつかの実施形態では、新しいスー
パーブロックデータ構造が、クエリーに対応するために使用されるように作成され得、確
率的データ構造の更新時にクエリー処理が中断されないように、現在のスーパーブロック
データ構造を置き換える。
カラムナデータベースの列に対するヒストグラムを使用した効率的なクエリー処理の実
施形態が、様々な異なるデータベース管理システムにおいて実装され得る。分散データウ
ェアハウスサービスまたはクライアントに提供される他のデータベースサービスなどの、
データ管理サービスが、データ管理サービスで格納されたクライアントデータに対して、
カラムナデータベースの列に対するヒストグラムを使用するクエリー処理を実装し得る。
同様に、クライアントに所有されるか、操作されるか、または制御されるデータベースシ
ステムも、列のクエリー処理のためにヒストグラムを実装し得る。より一般的には、カラ
ムナデータベーステーブルにデータを格納する任意のシステムは、カラムナデータベース
の列に対するヒストグラムを使用する効率的なクエリー処理の様々な実施形態を実装し得
、従って、前の例は、想定される様々な他のシステムに関して制限される必要がない。
分散データウェアハウスサービスにおけるクエリー処理のためのヒストグラムの実装
前述のように、様々なクライアント(または、顧客、組織、実体、もしくユーザー)は
、データ管理サービスを使用してデータを格納および管理することを望み得る。図2は、
いくつかの実施形態に従って、データ管理サービスをクライアントに提供し得る、分散デ
ータウェアハウスシステム例を示す。具体的には、データウェアハウスクラスタは、他の
多くのデータ管理または記憶サービスとともに、データに対する格納要求(例えば、デー
タの記憶装置への書込み)またはクエリー(例えば、選択データに対するサーバークエリ
ー言語要求(SQL)など)に応答し得る。
複数のユーザーまたはクライアントがデータウェアハウスサービスを得るためにデータ
ウェアハウスクラスタにアクセスし得る。クライアントは、いくつかの実施形態によれば
、ユーザー、クライアントアプリケーション、および/またはデータウェアハウスサービ
ス加入者を含み得る。この例では、クライアント250a〜250nの各々は、分散デー
タウェアハウスサービス280内のデータウェアハウスクラスタ225および235にそ
れぞれアクセスすることが可能である。分散データウェアハウスクラスタ225および2
35は、それらのクラスタにアクセスできるクライアント250a〜250nの代わりに
データが格納され得る2つ以上のノードを含み得る。
クライアント250a〜250nなどのクライアントは、デスクトップコンピュータ、
ラップトップコンピュータ、タブレットコンピュータ、携帯情報端末、モバイル機器、サ
ーバー、または要求をデータウェアハウスクラスタ225および235に送信し、かつ/
もしくは分散データウェアハウスクラスタ225および235から応答を受信するように
構成された、図11に関して以下で説明するコンピュータシステム1000などの、任意
の他のコンピューティングシステムもしくは他の装置を介して、データウェアハウスクラ
スタ225または235と通信し得る。要求は、例えば、データウェアハウスクラスタに
よって提供される特定の機能またはサービスと関連したパラメータおよび/またはデータ
を含むメッセージとしてフォーマットされ得る。かかるメッセージは、拡張マークアップ
言語(XML)などの特定のマークアップ言語に従ってフォーマットされ得、かつ/また
はシンプルオブジェクトアクセスプロトコル(SOAP)などのプロトコルを使用してカ
プセル化され得る。アプリケーションプログラマインタフェース(API)が、クライア
ントが分散データウェアハウスサービスマネージャ202と通信している場合など、クラ
イアントに対して標準化されたメッセージフォーマットを提供するために実装され得る。
クライアント250a〜250nは、ワイドエリアネットワーク(WAN)260(例
えば、インターネット)経由など、様々な異なる通信方法を使用して、分散データウェア
ハウスサービス280によってホストされる、分散データウェアハウスクラスタ225お
よび235と通信し得る。プライベートネットワーク、イントラネット、および他の形式
の通信ネットワークも、クライアントとデータウェアハウスクラスタとの間の通信を容易
にし得る。クライアントは、要求を含むメッセージを組み立てて、そのメッセージをネッ
トワークエンドポイント(例えば、データウェアハウスクラスタに対応するユニフォーム
リソースロケーター(URL))に伝達し得る。例えば、クライアント250aは、ハイ
パーテキスト転送プロトコル(HTTP)要求をデータウェアハウスクラスタ225にW
AN 260を経由して送信するように構成されている、ウェブクライアントなどの、ロ
ーカルソフトウェアアプリケーションを実行しているデスクトップコンピュータを介して
通信し得る。クライアントに送信される応答または他のデータも同様の方法でフォーマッ
トされ得る。
少なくともいくつかの実施形態では、280で示すような、分散データウェアハウスサ
ービスは、クラスタ225および235などの、分散データウェアハウスクラスタをホス
トし得る。分散データウェアハウスサービス280は、ネットワークエンドポイントをク
ラスタのストレージクライアント250a〜250nに提供し得、それは、クライアント
250a〜250nが要求および他のメッセージを直接、特定のクラスタに送信するのを
可能にする。前述のように、ネットワークエンドポイントは、例えば、特定のクラスタを
指す、URLなどの、特定のネットワークアドレスであり得る。例えば、クライアント2
50aは、様々な要求メッセージを送信するためのネットワークエンドポイント「htt
p://mycluster.com」が与えられ得る。複数のストレージクライアント
(または特定のストレージクライアントのユーザー)は、特定のクラスタに対するネット
ワークエンドポイントを与えられ得る。権限のないユーザーがクラスタにアクセスするの
を防ぐために、様々なセキュリティ機能が実装され得る。逆に言えば、クライアントは、
複数のクラスタに対するネットワークエンドポイントを与えられ得る。
データウェアハウスクラスタ225および235などの、分散データウェアハウスクラ
スタは、1つ以上のノードで構成され得る。これらのクラスタは、異なる数のノードを含
み得る。ノードは、サーバー、デスクトップコンピュータ、ラップトップ、またはもっと
一般的には、図11のコンピュータシステム1000に関して以下で説明するものなどの
、任意の他のコンピューティング装置であり得る。いくつかの実施形態では、データウェ
アハウスクラスタ内のノード数は、クラスタスケーリング要求によってなど、修正され得
る。データウェアハウスクラスタのノードは、データを格納するための1つ以上のデータ
スライスを実装し得る。これらのデータスライスは、図3および図4Bに関して以下で説
明するディスク記憶装置などの、記憶装置の一部であり得る。クラスタは、要求および他
の連絡をWAN 260を経由して、クライアント250a〜250nなどの、ストレー
ジクライアントから受信するように構成され得る。クラスタは、要求を複数のクライアン
トからクラスタのネットワークエンドポイント介して受信するように構成され得る。
いくつかの実施形態では、分散データウェアハウスサービス280は、ユーザーがクラ
ウドコンピューティング環境内でデータウェアハウスをセットアップ、操作、およびスケ
ーリングするのを可能にするウェブサービスの一部として実装され得る。ウェブサービス
によってホストされるデータウェアハウスクラスタは、ユーザーが、クラスタスケーリン
グ要求を、ウェブサービスによって実装されたクラスタ制御インタフェースに送信するこ
とによってなど、クラスタをスケーリングすることを可能にする、企業規模のデータベー
ス照会および管理システムを提供し得る。クラスタのスケーリングは、ウェブサービスの
ユーザーが、それらのデータウェアハウス機能、例えば、構造化データを介した迅速な問
合せ機能、様々なデータローディングおよびETL(抽出、変換、およびロード)ツール
との統合、そのクラスで最高のビジネスインテリジェンス(BI)報告、データマイニン
グ、および解析ツールとのクライアント接続、ならびに複数テーブル結合、サブクエリ−
、および集計を含むものなどの複雑な解析クエリーの非常に迅速な実行の最適化など、を
さらに効率的に実行するのを可能にし得る。
様々な実施形態では、分散データウェアハウスサービス280は、クライアント(例え
ば、分散データウェアハウスシステムによって提供されるデータウェアハウスサービスの
加入者)に、ストレージクライアントからの要求に応答して、作成、構成、管理、スケー
リング、および終了され得る、データ記憶および管理リソースを提供し得る。例えば、い
くつかの実施形態では、分散データウェアハウスサービス280は、システムのクライア
ントに、仮想計算ノードから成るデータウェアハウスクラスタを提供し得る。これらの仮
想計算ノードは、ハードウェア仮想マシン、またはハードウェア構成をシミュレートする
ように実装された他の形式のソフトウェアなどの、仮想マシンによって実装されたノード
であり得る。仮想ノードは、物理ハードウェア上で実装されたノードと同じタスク、機能
、および/またはサービスを実行するように構成され得る。
分散データウェアハウスサービス280は、カスタマイズされたか、もしくは既製のコ
ンピューティングシステム、サーバー、または、図11に関して以下で説明する、様々な
タイプの装置などの、コンピューティングシステムもしくは装置の任意の他の組合せなど
、多数のコンピューティング装置によって実装され得る。これらのコンピューティング装
置の異なるサブセットが、分散データウェアハウスサービスマネージャ202によって制
御され得る。分散データウェアハウスサービスマネージャ202は、例えば、クラスタ制
御インタフェースを、クライアント250a〜250nなどのクライアント、もしくは任
意の他のクライアントまたは、分散データウェアハウスサービスマネージャ202によっ
て管理される分散データウェアハウスクラスタとやりとりすることを望むユーザーに提供
し得、分散データウェアハウスクラスタは、この図示例では、データウェアハウスクラス
タ225および235であろう。例えば、分散データウェアハウスサービスマネージャ2
02は、ストレージクライアントに対して1つ以上のグラフィカルユーザーインタフェー
ス(GUI)を生成し得、それは、次いで、制御インタフェースによって提供される様々
な制御機能を、分散データウェアハウスサービス280内でホストされるデータウェアハ
ウスクラスタに対して選択するために利用され得る。
図3は、一実施形態に従った、分散データウェアハウスサービス内の分散データウェア
ハウスクラスタを示すブロック図である。この例に示すように、分散データウェアハウス
クラスタ300は、リーダーノード320ならびに計算ノード330、340、および3
50を含み得、それらは相互接続360を経由して互いに通信し得る。リーダーノード3
20は、分散データウェアハウスクラスタ300上でクエリーを実行するための1つ以上
のクエリープラン325を生成および/または維持し得る。本明細書で説明するように、
分散データウェアハウスクラスタ内の各ノードは、クライアント(例えば、ユーザー、ク
ライアントアプリケーション、および/または分散データウェアハウスサービス加入者)
の代わりに、データブロックが格納され得る複数のディスクを含み得る。この例では、計
算ノード330はディスク331〜338を含み、計算ノード340はディスク341〜
348を含み、計算ノード350はディスク351〜358を含む。いくつかの実施形態
では、分散データウェアハウスクラスタの構成要素(またはその構成要素である分散デー
タウェアハウスシステム)は、様々な適用可能な負荷分散技術のいずれかを使用して、負
荷分散をサポートし得る。例えば、いくつかの実施形態では、リーダーノード320は、
負荷分散構成要素(図示せず)を含み得る。
少なくともいくつかの実施形態では、分散データウェアハウスクラスタ300は、前述
したものなどの、ウェブベースのデータウェアハウスサービスの一部として実装され得、
リーダーノード320ならびに、計算ノード330、340、および350などの、複数
の計算ノードを含む。リーダーノード320は、図2に関して前述したストレージクライ
アント250a〜250nなどの、ストレージクライアントとの通信を管理し得る。例え
ば、リーダーノードは、様々なストレージクライアントプログラム(例えば、アプリケー
ション)および/または加入者(ユーザー)から要求を受信し、次いでそれらを解析して
、関連したデータベース操作(複数可)を実行するための実行プラン(例えば、クエリー
プラン(複数可)325)を開発するサーバーであり得る。より詳細には、リーダーノー
ドは、複雑なクエリーおよび結合に対する結果を得るために必要な一連のステップを開発
し得る。リーダーノード320は、データウェアハウスクラスタ300内に格納されたデ
ータに対してデータベース操作を実行するように指示された、計算ノード330〜350
の間の通信も管理し得る。例えば、コンパイル済みコードが、クエリーを実行するために
必要なステップを実行するために、リーダーノード320によって、計算ノード330〜
350のうちの様々な1つに配信され得、それらのクエリーの中間結果がリーダーノード
320に返送され得る。リーダーノード320は、データおよびクエリー応答または結果
を計算ノード330、340、および350から受信し得る。データベーススキーマおよ
び/または、クラスタ内に格納されたデータテーブルなどの、計算ノード間に格納された
データに対する他のメタデータ情報が、リーダーノード320によって管理および格納さ
れ得る。
分散データウェアハウスクラスタ300は、計算ノード330、340、および350
などの、計算ノードも含み得る。これらの1つ以上の計算ノードは、例えば、図11のコ
ンピュータシステム1000に関して以下で説明するものなどの、サーバーまたは他のコ
ンピューティング装置上に実装され得、各々は、例えば、サーバーのマルチコアプロセッ
サの各コアに対して定義された、個々のクエリー処理「スライス」を含み得る。計算ノー
ドは、リーダーノード320から計算ノード330、340、および350に送信された
命令に基づき、クエリーなどの、データベース操作の処理を実行し得る。命令は、例えば
、それが送信される、特定のデータ計算ノードによって実行可能な実行プランセグメント
およびステップからのコンパイル済みコードであり得る。データ計算ノードは、クエリー
からの中間結果を最終集計のためにリーダーノード320に返送し得る。各データ計算ノ
ードは、計算ノード330、340、または350のうちの1つ以上に送信されるクエリ
ー(または他のデータベース操作)に対する作業負荷の一部を処理するために、図4Bに
示すような、あるメモリおよびディスクスペースにアクセスするように構成され得る。従
って、計算ノード330は、例えば、ディスク431、432、ディスク438までアク
セスし得る。
図3に示すディスク331〜358などのディスクは、データ計算ノードがアクセス可
能なデータの格納に適した任意のタイプの記憶装置および/または記憶システムの1つ以
上として実装され得:独立ディスクの冗長アレイ(RAID)装置、単純ディスク束(J
BOD)などのディスクドライブまたはディスクドライブのアレイ、(RAIDに従って
構成されていないディスクを指すために使用される)、光学式記憶装置、テープドライブ
、RAMディスク、ストレージエリアネットワーク(SAN)、ネットワークアクセスス
トレージ(NAS)、またはそれらの組合せを含むが、それらに制限されない。様々な実
施形態では、ディスクは、様々な列指向データベース方式を通してカラムナデータベース
テーブルを格納するようにフォーマットされ得る。
いくつかの実施形態では、分散データウェアハウスクラスタ内の計算ノードの各々は、
所与のクエリーを実行するために、例えば、コマンドの受信、データの返送、およびコン
パイル済みコードの(例えば、各コアまたはノード上のスライスに対する)個々のクエリ
ープロセスへのルーティングのための、リーダーノードとの通信を管理する、ノードサー
バーの(または他のコンピューティング装置の)オペレーティングシステム上で実行して
いるプロセスのセットを実装し得る。いくつかの実施形態では、計算ノードの各々は、ノ
ード上に格納されたブロックに対するメタデータを含む。少なくともいくつかの実施形態
では、このブロックメタデータは、スーパーブロックデータ構造に統合され得、スーパー
ブロックデータ構造は、そのエントリがそのノード上に格納されたデータブロックの各々
(すなわち、データブロックにつき1つのエントリ)に関する情報(例えば、メタデータ
)を格納する、データ構造(例えば、データのアレイ)である。いくつかの実施形態では
、スーパーブロックデータ構造の各エントリは、それぞれのブロックに対する一意のID
を含み、その一意のIDは、データブロックに関連した様々な操作を実行するために使用
され得る。例えば、データブロック内に格納されたデータに適用された列固有の圧縮技術
の表示、データブロック内に格納されたデータに適用されたデフォルトの圧縮技術の表示
、またはデータブロックに格納されていないデータ値を示す確率的データ構造が全て、デ
ータブロックに対するそれぞれのエントリ内に格納され得る。いくつかの実施形態では、
一意のIDは、データブロックが分散データウェアハウスシステム内で最初に書き込まれ
るときに、リーダーノードによって、またはコンピューティングノードによって生成され
(かつ、スーパーブロック内の対応するエントリが作成され)得る。
図4Aは、いくつかの実施形態に従った、リーダーノード例を示す。前述のように、リ
ーダーノード400は、カラムナデータベーステーブルを管理し、追加のデータを格納す
るための様々なメッセージおよびクエリーを受信する、分散データウェアハウスシステム
内の様々なクライアントとやりとりし得る。関連したデータベース操作を実行するための
クエリープラン410の開発に加えて、リーダーノードは、いくつかの実施形態では、ヒ
ストグラム生成器420も含み得る。ヒストグラム生成器420を実装するために、様々
な異なるハードウェアおよびソフトウェア装置が、単独で、または組み合わせて、使用さ
れ得る。ヒストグラム生成器420は、カラムナデータベーステーブルの列内の複数のバ
ケット間でのデータの分布を表す、高さのバランスを調整したヒストグラムに対するバケ
ット範囲サイズを判断するように構成され得る。ヒストグラム生成器420は、高さのバ
ランスを調整したヒストグラムなどの、クエリー処理のために使用される異なるヒストグ
ラムを生成し得る。いくつかの実施形態では、カラムナデータベーステーブルの列に対す
るデータが、図4Bに示す計算ノード450などの、多数の異なる計算ノード上に物理的
に格納され得る。ヒストグラム生成器420は、それ故、列に対する異なる計算ノードか
らのデータを入力として取得し、列内のデータのヒストグラムに対するバケットを生成し
て、データがバケット間で均等に分布されるように、バケットの各々に対してバケット範
囲サイズを設定し得る。ヒストグラム生成器420は、列内のデータに対するヒストグラ
ムのバケットに基づき、列に対するデータを格納している1つ以上のデータブロックの各
データブロックに対する確率的データ構造も生成し得る。確率的データ構造は、前述のよ
うに、所与の値が、データブロック内に格納されたデータ値などの、値のセット内にある
可能性が高いかを示す。従って、列内のデータに対する、高さのバランスを調整したヒス
トグラムなどの、ヒストグラムに基づく場合、確率的データ構造は、ヒストグラムの複数
のバケットのどのバケットに対して、データブロック内に格納されたバケット範囲サイズ
内のデータ値があるかを示し得る。
ヒストグラム生成器420は、列内のデータブロックに対する新しい確率的データ構造
の生成を含め、所与の列に対するヒストグラムがいつ再生成されるべきかも判断し得る。
いくつかの実施形態では、列に対する高さのバランスを調整したヒストグラムが最後に生
成されてからある時間が経過した時、またはある量の新規データが列内に格納された時な
ど、高さのバランスを調整したヒストグラムに対してリバランス事象が検出され得る。ヒ
ストグラム生成器420は、少なくともいくつかの実施形態では、列の高さのバランスを
調整したヒストグラムに対するバケットサイズ範囲を修正するように構成され得、修正さ
れたバケット範囲サイズに従って確率的データ構造を更新し得る。あるいは、いくつかの
実施形態では、ヒストグラム生成器420は、所与の列内に格納されたデータ値に対する
新しい高さのバランスを調整したヒストグラムに対して新しいバケット範囲サイズを判断
するように構成され得る。
図4Bは、いくつかの実施形態に従った、計算ノード例を示す。リーダーノード320
などの、リーダーノードに送信されて、リーダーノードから計算ノードに送信された、様
々なクエリーおよびメッセージなどの、アクセス要求452が、計算ノード450で受信
され得る。クエリー実行モジュール460が、アクセス要求を処理して、読取り、書込み
、および他のアクセス操作をディスク450〜458に向け得る。様々な異なるハードウ
ェアおよびソフトウェア装置が、クエリー実行モジュール460を実装するために単独で
、または組み合わせて使用され得る。クエリーを処理する際に、クエリー実行モジュール
460は、列に対するデータを格納している各データブロックに対する確率的データ構造
を検査して、クエリーに対応するために読み取る必要のないデータブロックを判断し、次
いで、読み取る必要のないそれらのデータブロックを除いて、列に対するデータを格納し
ているデータブロックを読み取り得る。
いくつかの実施形態では、計算ノード450は、計算ノードにローカルに格納されるか
、またはリモートに格納されるが、計算ノードがアクセス可能な、前述したスーパーブロ
ックデータ構造などの、スーパーブロックデータ構造470も含み得、それは、データブ
ロックに対する確率的データ構造を含むブロックメタデータを格納する計算ノード450
上に格納されたデータブロックに対するそれぞれのエントリ472を含み得る。しかし、
いくつかの実施形態では、データブロックに対するメタデータは、データブロック自身内
、または他の個々のデータ構造内など、複数の異なる位置に格納され得ることに留意され
たい。それ故、スーパーブロックデータ構造470は、データブロックに対するメタデー
タ情報を保存するために適用され得る、様々な他の構造、位置、方法、または技術に関し
て制限することを意図しない。
前述のように、図2〜図4は、カラムナデータベーステーブルの列に対するヒストグラ
ムを使用してクエリーを処理する実施形態例を示し、カラムナデータベーステーブルを格
納および管理するために使用され得る他のアーキテクチャ、システム、構成要素、または
配置に関して制限することを意図しない。例えば、図3に関して前述した、分散データウ
ェアハウスクラスタ300は、リーダーノードを含まない可能性があるか、またはデータ
の格納および管理のために異なる機能を実行する1つ以上の他の異なるノードを含み得る
高さのバランスを調整したヒストグラムを使用したクエリー処理のワークフロー
上で説明してきたように、データベース管理システムは、もっと効率的なデータ管理機
能を提供するためにカラムナデータベーステーブルを利用するように構成され得る。これ
らの機能をさらに効率的に実行するために、列内のデータのヒストグラムに基づき、カラ
ムナデータベーステーブル内の列に対するデータを格納しているデータブロックに対して
、確率的データ構造が生成され得る。少なくともいくつかの実施形態では、このヒストグ
ラムは、高さのバランスを調整したヒストグラムである。図5は、いくつかの実施形態に
従い、カラムナデータベーステーブル内の列に対するデータの分布を表すヒストグラムに
対してバケット範囲サイズを判断するための方法を示す高レベル流れ図である。様々な異
なるシステムおよび装置が、以下で説明する様々な方法および技法を実装し得る。図4に
関して前述したヒストグラム生成器420などの、ヒストグラム生成器が、様々な方法を
実装するために、クエリー実行モジュール460などの、クエリー実行モジュールととも
に協力し得る。あるいは、例えば、共に動作する、図3に示す複数の計算ノードなどの、
異なるシステムおよび装置の組合せも、以下の方法および技法を実行し得る。それ故、前
述の例およびまたは、図示した方法を実行するとして参照された任意の他のシステムもし
くは装置は、システムおよび装置の他の異なる個体または構成に関して制限することを意
図しない。
様々な実施形態では、500に示すように、カラムナデータベーステーブルの列に対す
るヒストグラムのバケットに対するバケット範囲サイズが判断され得る。前述のように、
ヒストグラムは、しばしば「バケット」と呼ばれる、値の範囲にわたるデータの分布を表
す。通常、これらのバケットは均等なサイズにされ得る。例えば、ヒストグラムが、アプ
リケーションデモの使用に費やした時間に基づき、ソフトウェアアプリケーションのダウ
ンロード数に対して生成された場合、バケットは、2時間までの10分間隔の範囲サイズ
を有し得る。しかし、データ値の、高さのバランスを調整したヒストグラムなどの、ヒス
トグラムは、各バケット内のダウンロード数を均等に分布するために、いくつかのバケッ
トは5分間隔にすべきであり、いくつかは30分間隔にすべきであると判断し得る。図6
は、いくつかの実施形態に従い、カラムナデータベーステーブル内の列に対するデータの
均等な分布を表すヒストグラムに対するバケット範囲サイズを判断するための1つのかか
る方法を示す。
602に示すように、ヒストグラムが表す列のデータが取得され得る。前述のように、
いくつかの実施形態では、単一のノード、記憶装置が、特定の列に対するデータブロック
の全てを1つの位置に物理的に格納し得る。しかし、少なくともいくつかの他の実施形態
では、データブロックが、カラムナデータベーステーブルの特定の列に対するデータを格
納しているデータブロックとして論理的にグループ化され得るが、データブロック自体は
、図3に関して前述した分散データウェアハウスクラスタ内の複数の計算ノードなどの、
いくつかの異なる装置上の複数の位置にわたって物理的に分散され得る。従って、いくつ
かの場合には、データは、さらなる計算が実行される前に、複数の装置またはシステムか
ら取得され得る。
604に示すように、データブロック内に格納されたデータ値の範囲を表す、いくつか
のバケットが次いで生成され得る。特定数のバケットが、データブロック内に格納され得
るデータ値の数に基づいて判断され得る。いくつかの実施形態では、生成されるバケット
数が、格納され得るデータ値の数よりもはるかに多い可能性がある。例えば、ヒストグラ
ムに対するバケット数は、データブロック内に格納され得るデータ値の数の特定の係数(
または倍数)に基づき判断され得る。従って、データブロックが100個のデータ値を格
納し得る場合、列を表すヒストグラムに対して生成されるバケットの数は、10倍の1,
000バケットまで増加され得る。確率的データ構造がバケット数に基づいて生成される
選択性(精度)は、バケット数と、データブロック内に格納され得るデータ値の数との間
のより大きいか、またはより多い有意差に基づき得る。しかし、他の可能な実施形態は、
列内に格納されたデータのタイプ(例えば、名前、データ、数、製品番号など)または通
常データを対象とするクエリーのタイプ(例えば、範囲クエリー)などの、代替基準に従
って、生成されるバケット数を判断し得るので、これは、必ずしも制限するものではない
606に示すように、バケットの範囲サイズが、次いで、高さのバランスを調整したヒ
ストグラムに対するバケット間で列のデータのバランスを取るように調整され得る。本明
細書では、用語「均等に」または「バランス」は、「厳密に同じ値」に限定されず、また
それを意味すると意図しないことに留意されたい。ヒストグラムに対するバケット間での
近接バランス(near balance)、近似バランス(approximate
balance)、または推定されたバランスさえ、同様の選択性に対して提供され得、
そのため、それらの用語は1つの特定の意味に限定されない。
ヒストグラムのバケットに対するバケット範囲サイズを判断すると、510に示すよう
に、カラムナデータベーステーブルの列に対するデータを格納している各データブロック
に対して、確率的データ構造が生成され得る。前述のように、確率的データ構造は、所与
の値が、データブロック内に格納されたデータなどの、データのセットのメンバーである
かどうかを示し得る。確率的データ構造は、列全体に対する高さのバランスを調整したヒ
ストグラム内のどのバケットに対して、データブロック内に格納されたデータ値があるか
を示し得る。少なくともいくつかの実施形態では、確率的データ構造は、ビットマップで
あり得る。図7は、いくつかの実施形態に従い、カラムナデータベーステーブルの列内の
データのヒストグラム内の各バケットを表すビットマップを生成するための方法の流れ図
を示す。
612に示すように、カラムナデータベーステーブル内の列に対するデータを格納して
いるデータブロックに対するビットマップが生成され得る。ビットマップ内のビット数は
、ヒストグラム内のバケット数に対応し得る。各ビットは、列内のデータの分布を表して
いるヒストグラム内のバケットを表し得る。例えば、図1に示すように、ヒストグラムと
共に示されている8つのバケットは、スーパーブロック100内に格納されたビットマッ
プ内の8ビットに対応する。一旦、作成されると、データブロック内に格納された各デー
タ値は、高さのバランスを調整したヒストグラムに対するバケットの1つ内に配置され得
る。614に示すように、バケットに対する値の範囲内のデータ値を含むバケットに対す
るそれぞれのビットが設定される(例えば、「1」の値に設定される)。データ値の全て
がヒストグラムのバケット内に配置されて、バケット内にデータ値を含むバケットに対し
て対応するビットが設定されると、ビットマップがブロックメタデータ内に格納され得る
。616に示すように、いくつかの実施形態では、ビットマップは、図4Bに関して前述
したスーパーブロック470などの、スーパーブロックのそれぞれのエントリ内に格納さ
れ得る。
様々な実施形態では、520に示すように、選択データに対するカラムナデータベース
テーブルの列を対象としたクエリー、またはクエリーの指示が受信され得る。図2〜図4
Bに関して前述したように、クエリーまたは他のアクセス要求メッセージが、SQLなど
の、様々な異なる標準クエリープロトコルもしくは言語、または、APIで説明したよう
な、カスタマイズされたフォーマットに従ってフォーマットされ得る。少なくともいくつ
かの実施形態では、クエリーは、図4Bに関して前述した計算ノード450などの、計算
ノードに、図4Aに関して前述したリーダーノード400などの、リーダーノードから、
向けられた1つ以上のクエリーであり得る。クエリーの受信に応答して、530に示すよ
うに、列内のデータを格納している各データブロックに対する確率的データ構造が検査さ
れ得る。確率的データ構造の検査は、選択データに対するクエリーに対応するために読み
取る必要がない特定のデータブロックを判断し得る。
図8は、いくつかの実施形態に従い、カラムナデータベーステーブルの列内のデータに
対するクエリーに応答して、どのデータブロックが読み取る必要がないかを判断する方法
の流れ図を示す。700に示すように、選択されたデータに対するカラムナデータベース
テーブルの列を対象としたクエリーの指示が受信され得る。クエリーは、データ値の範囲
(例えば、ある日付の間のデータ、ある発注金額と関連したデータなど)などの、特定デ
ータに対する要求を含み得る。選択データのデータ値が、次いで、クエリーが対象とする
列に対するヒストグラムのバケット内に配置され得る。一旦識別されると、710に示す
ように、ビットマップなどの、確率的データ構造が、スーパーブロックなどの、ブロック
メタデータから取得されて、特定のデータがデータブロック内に格納されていないかを判
断するために検査され得る。720に示すように、選択データ内のデータ値のバケット位
置に対するビットマップの対応するビットが設定されていない場合、ビットマップは、そ
のデータブロックが読み取られる必要がないことを示す。例えば、図1を振り返って見る
と、スーパーブロック100内に格納された第1のビットマップは、ヒストグラム120
に対するバケットに対応する、8ビット値「10010110」を有する。第1のバケッ
トがデータ値1〜10を表し、第2のバケットが値11〜30を表す場合、選択されたデ
ータ値の20に対して、第2のバケットに対応するビットが検査されるであろう。この場
合、ビットが0に設定されて、列132内の対応するデータブロック内に格納された11
〜30の範囲内にデータ値がないことを示す。このように、ビットマップは、選択データ
値が20の場合に、第1のデータブロックが読み取る必要のないことを示すであろう。し
かし、選択データ値の5がある場合、第1のバケットに対して対応するビットが1に設定
されて、1〜10の値がデータブロック内に格納されている可能性があることを示す。こ
のように、ビットマップは、720に示すように、データブロックがそのデータ値を格納
している可能性があることを示し得る。結果として、730に示すように、データブロッ
クが読み取られ得る。
図8に示すように、このプロセスは、740に示すように、スーパーブロック内のデー
タブロックに対するそれぞれのエントリなどの、ブロックメタデータの全てが、列に対す
るデータを格納しているデータブロックの全てに対して検査されるまで繰り返され得る。
例えば、両方の「No」分岐は、列内の次のデータブロックに対するビットマップがスー
パーブロックから取得され得ることを示す、要素712を指す。750に示すように、デ
ータブロックから読み取られたデータは、次いで、選択データに対するクエリーに対応す
るために提供され得る。データブロックが読み取られるのは、選択データがそのデータブ
ロック内にあるに違いないことを示すからではなく、データがそのデータブロック内に格
納されている可能性があることを示すことに留意されたい。データがデータブロックから
読み取られると、さらなるフィルタリング、処理、または他のクエリー操作が実行され得
る。データの少なくともいくつかは、リーダーノード、ストレージクライアント、または
他のシステムもしくは装置に返され得る。
データ値の追加または修正などの、データ操作が列内のデータに関して実行されるので
、列内のデータブロックに対する確率的データ構造は最新の状態でない可能性がある。例
えば、いくつかの実施形態では、列に対する追加のデータが受信されて、新しいデータブ
ロック内に格納され得る。新しいデータが格納されると、以前に作成された高さのバラン
スを調整したヒストグラム内のバケットに対応するビットマップ内のビットを新しいデー
タ値に対して設定することによるなど、確率的データ構造が、新しいデータブロックに対
して生成され得る。時間とともに、これはヒストグラムを偏らせて、ヒストグラムを、高
さのバランスがあまり調整されていないものにし得るか、または列データがバケット間で
あまり均等に分布していないものにし得る。高さのバランスを調整したヒストグラムを実
装するいくつかの実施形態に対して、この追加のデータは、高さのバランスを調整したヒ
ストグラムを使用する効率を低減し得る。改善措置として、少なくともいくつかの実施形
態では、カラムナデータベーステーブルの列内に格納されている現在のデータに対する新
しい高さのバランスを調整したヒストグラムが計算され得、バケット範囲サイズが判断さ
れて、新しい確率的データ構造が列に対するデータを格納している各データブロックに対
して生成される。しかし、この操作は、計算資源の観点から高くつくことが分かり得る。
それ故、少なくともいくつかの実施形態では、バケット範囲自体は、列内の新しいデータ
または修正されたデータを含めるために、列のデータの分布を再計算することなく、修正
され得る。
図9は、いくつかの実施形態に従い、リバランス事象の検出に応答して、データブロッ
クに対する確率的データ構造を修正する方法の流れ図を示す。802に示すように、リバ
ランス事象が検出され得る。例えば、図4Aに関して前述したヒストグラム生成器420
などの、ヒストグラム生成器が、列に対する高さのバランスを調整したヒストグラムの最
後の計算または修正から、リバランス時間閾値(例えば、24時間)を上回る、一定の時
間が経過したことを検出し得る。他の実施形態は、リバランス閾値を上回る、追加のデー
タブロック内に格納された追加データの量が、列に対して格納されている可能性があるこ
とを判断し得る。例えば、リバランス閾値は、列に対する20の新規データブロックであ
り得、列に対して20を上回るデータブロックの書き込み後、リバランス事象が検出され
得る。
少なくともいくつかの実施形態では、リバランス事象は、列に対する追加のデータの分
布に基づき判断され得る。この追加のデータは、列内のデータの現在の分布と比較した、
高さのバランスを調整したヒストグラムのバケット間での追加のデータの分布などの、追
加のデータの分布における変化を判断するために分析され得る。次いで、変化が、一定の
割合、または追加データの分布が、ヒストグラムに対する分布がもはや高さのバランスを
調整されていないような、現在のヒストグラムとは異なる分布に向かって偏らされ得るこ
とを示す他の値などの、分布閾値を上回るかどうかが判断され得る。
追加データに対する分布の分析は、様々な異なる方法で実行され得る。追加データのデ
ータ値の分析は、追加データが追加のデータブロック内に格納されるとき、または追加デ
ータが追加のデータブロック内に格納された後のいずれかで、追加データの分布を分析す
るために実行され得る。例えば、データに対するデータ値の分布は、格納プロセス中に、
各データブロックに対するデータ値を格納前に検査することにより追跡されるか、または
監視され得る。あるいは、一定数の追加のデータブロックが格納された後、データ値が取
得されて分析され得る。
追加データのデータ値の分析に加えて、少なくともいくつかの実施形態では、追加デー
タに対して生成された、ビットマップなどの、確率的データ構造が、代わりに検査され得
る。例えば、前述したように、ヒストグラムのどのバケットが追加のデータブロック内の
追加データのデータ値を含むかを示す、ビットマップが生成され得る。これらのビットマ
ップは、追加データの分布を判断するために分析され得る。例えば、バケット範囲内のデ
ータ値を示す、設定されたビットの数が、カウントされるか、または追跡され得る。この
追跡は、各追加のビットマップが、追加データを格納している追加のデータブロックに対
して生成されるときに、維持され得る(または代替として、ビットマップが生成されて、
追加データがデータブロック内に格納された後に取得され得る)。同じバケット設定また
は範囲設定に近いバケットを有するものなどの、追加データに対して設定されたバケット
数に基づき、追加データの分布が判断され得る。列内のデータの元の分布と比較した変化
が、次いで判断され得る。例えば、追加のデータブロックに対する特定のバケット範囲を
表す設定されたビット数が、ある閾値を上回る場合、(例えば、格納された30の追加の
データブロックに対する20の閾値などの、格納された追加のデータブロック数に対する
カウント値)、追加データに対するデータの分布が、列に対するデータの以前の分布と比
較した場合に、特定のバケット範囲に向かって偏っていることが判断され得る。リバラン
ス事象がトリガーされ得る。かかる分析も、ヒストグラムの他のバケットの1つ以上に対
して実行され得る。個々のバケットに対する結果が、例えば、追加データに対する分布を
判断するために結合され得、それは、次いで、追加データの前のデータの分布と比較され
得る。この変化が何らかの分布閾値を上回る場合、リバランス事象がトリガーされ得る。
列のデータを表す高さのバランスを調整したヒストグラムに対するリバランス事象の検
出に応答して、804に示すように、高さのバランスを調整したヒストグラムに対するバ
ケット範囲サイズが修正され得る。バケット範囲サイズの修正は、追加データの分布を推
定するために追加のデータブロックに対する確率的データ構造を検査することによるなど
、多数の異なるバケット範囲技術に従って実行され得る。例えば、列に追加された新しい
データがより高い範囲値に偏る場合、分布は、より高い範囲値を表すバケットのサイズが
減少すると判断され得る。あるいは、バケット範囲サイズが、ビットマップ確率的データ
構造内の設定ビットに隣接したビットを設定することによるなど、重なり合うように修正
され得る。列に対するデータの分布を表す高さのバランスを調整したヒストグラムに対す
るバケット範囲サイズが修正されると、806に示すように、データブロックに対する確
率的データ構造が更新されて、高さのバランスを調整したヒストグラムに対する修正され
たバケット範囲サイズを表し得る。以下でさらに説明する、図10は、確率的データ構造
を更新するための技術例を説明する。かかる更新は、例えば、ビットマップとして表され
ているような確率的データ構造内の異なるビットを設定するか、または修正されたバケッ
ト範囲サイズに従ってデータのバケット間での分布を表す異なる確率的データ構造に変更
するほど、単純であり得る。例えば、高さのバランスを調整したヒストグラムは、ビット
マップではなく、代わりに数式として表され得る。あるいは、更新は、列のデータに対す
るクエリーに対応するために使用される現在のブロックメタデータ構造を置換するために
、更新された確率的データ構造で満たされた、スーパーブロックなどの、新しいブロック
メタデータ構造を生成することを含み得る。現在のスーパーブロックデータ構造は、新し
いスーパーブロックデータ構造が完成するまで利用される。
図10は、いくつかの実施形態に従い、データブロックに対する確率的データ構造を更
新する方法の流れ図を示す。900に示すように、カラムナデータベーステーブルの列に
対する追加のデータが受信され得る。910に示すように、データが1つ以上のデータブ
ロックに格納され得る。920に示すように、作成されたデータブロック数などの、格納
されたデータ量が、図9に関して前述したリバランス事象をトリガーするために使用され
る様々な閾値の1つなどの、リバランス閾値を上回り得る。そうでない場合は、912に
示すように、バケット間でのデータの分布を表す高さのバランスを調整したヒストグラム
のバケット内に配置されたデータ値に対してビットを設定する1つ以上のデータブロック
に対するビットマップを生成する。リバランス閾値を上回る場合、930に示すように、
列内のデータのバケット間での分布を表す高さのバランスを調整したヒストグラムに対す
る各バケットに対するバケット範囲サイズを修正する。次いで、940に示すように、現
在、修正されたバケット範囲サイト内のデータ値を格納するように示されている、列内の
データブロックに対するバケットを表すビットマップの未設定のビットが識別され、95
0に示すように、設定される。
様々な実施形態では、修正されたバケット範囲サイズに起因して更新された確率的デー
タ構造が、データ構造に対応するデータブロックの後続の読み取り後に、さらに更新され
得る。例えば、確率的データ構造が、ある値の範囲内のデータ値がデータブロック内に格
納されていることを示していて、データブロックの読取り後に、かかる値がその範囲内に
ないと判断される場合、確率的データ構造が、その値がその範囲内に格納されていないこ
とを示すように更新され得る。再度、図1を参照して、例えば、バケット8が、以前より
もさらに大きい修正されたバケット範囲サイズに変更されていて、第1のデータブロック
に対するスーパーブロック100ビットマップが、ビット8が現在、(バケット8によっ
て表される修正された値の範囲内に格納されている値を示す)0ではなく、1に設定され
ていることを示すように更新され、次いで、データブロックが読み取られて、ビット8内
の1によって示されるように、データ値が修正された範囲内に実際には格納されていない
場合、ビットマップがさらに更新されて、ビットを0に戻し得る。
少なくともいくつかの実施形態では、データブロックに対する確率的データ構造の選択
性レベルが判断され得る。例えば、データビットマップのビットのほとんどが1に設定さ
れている場合、ほとんどの検査がデータブロックを読み取るべきことを示すので、ビット
マップは高度に選択的ではない。選択性レベルが選択性閾値を下回る場合、いくつかの実
施形態では、ブルームフィルタ、指数フィルタ(quotient filter)、ま
たはスキップリストが、高さのバランスを調整したヒストグラムの代わりに実装されて、
クエリー処理を容易にするために、ブロックメタデータ内に格納され得る。
システム例
本明細書で説明するようなカラムナデータベースの列に対するヒストグラムを使用する
効率的なクエリー処理の実施形態が、1つ以上のコンピュータシステム上で実行され得、
それらは様々な他の装置とやりとりし得る。1つのかかるコンピュータシステムを図11
に示す。異なる実施形態では、コンピュータシステム1000は、パーソナルコンピュー
タシステム、デスクトップコンピュータ、ラップトップ、ノートブック、もしくはネット
ブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ
、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モ
バイル機器、消費者向け装置、ビデオゲーム機、ハンドヘルドビデオゲーム機、アプリケ
ーションサーバー、記憶装置、周辺機器(スイッチ、モデム、ルーターなど)、または任
意のタイプのコンピューティング装置もしくは電子装置一般を含むが、それらに限定され
ず、様々なタイプの装置のいずれかであり得る。
図示した実施形態では、コンピュータシステム1000は、入力/出力(I/O)イン
タフェース1030を経由してシステムメモリ1020に結合された1つ以上のプロセッ
サ1010を含む。コンピュータシステム1000は、I/Oインタフェース1030に
結合されたネットワークインタフェース1040、ならびにカーソル制御装置1060、
キーボード1070、およびディスプレイ(複数可)1080などの、1つ以上の入力/
出力装置1050をさらに含む。ディスプレイ(複数可)1080は、標準的なコンピュ
ータモニター(複数可)および/または他のディスプレイシステム、技法もしくは装置を
含み得る。少なくともいくつかの実施態様では、入力/出力装置1050は、それを用い
てユーザーがスタイラスタイプ装置での入力および/もしくは1つ以上の数字を入力でき
るパッドまたはタブレットなどの、タッチまたはマルチタッチ対応装置も含み得る。いく
つかの実施形態では、実施形態はコンピュータシステム1000の単一のインスタンスを
使用して実装され得、他方、他の実施形態では、複数のかかるシステム、またはコンピュ
ータシステム1000を構成する複数のノードが、実施形態の異なる部分もしくはインス
タンスをホストするように構成され得ると考えられる。例えば、一実施形態では、いくつ
かの要素が、他の要素を実装しているノードとは異なる、コンピュータシステム1000
の1つ以上のノードを介して実装され得る。
様々な実施形態では、コンピュータシステム1000は、1つのプロセッサ1010を
含むユニプロセッサシステム、またはいくつか(例えば、2、4、8、または別の適切な
数)のプロセッサ1010を含むマルチプロセッサシステムであり得る。プロセッサ10
10は、命令を実行可能な任意の適切なプロセッサであり得る。例えば、様々な実施形態
では、プロセッサ1010は、x86、PowerPC、SPARC、またはMIPS
ISA、もしくは任意の他の適切なISAなどの、様々な命令セットアーキテクチャ(I
SA)のいずれかを実装する、汎用または組込みプロセッサであり得る。マルチプロセッ
サシステムでは、プロセッサ1010の各々は一般に、必ずしもではないが、同じISA
を実装し得る。
いくつかの実施形態では、少なくとも1つのプロセッサ1010が、グラフィック処理
装置であり得る。グラフィック処理装置すなわちGPUは、パーソナルコンピュータ、ワ
ークステーション、ゲーム機、または他のコンピューティング装置もしくは電子装置に対
する専用のグラフィックスレンダリング装置と考えられ得る。最新のGPUは、コンピュ
ータグラフィックスの操作および表示の効率が非常に良い可能性があり、その高度な並列
構造は、ある範囲の複雑なグラフィカルアルゴリズムに対して、典型的なCPUよりも、
それらを効率的にし得る。例えば、グラフィックスプロセッサは、いくつかのグラフィッ
クス基本処理を、ホスト中央処理装置(CPU)で画面に直接描くよりもはるかに高速に
それらを実行させる方法で、実装し得る。様々な実施形態では、グラフィックスレンダリ
ングは、かかるGPUの、1つ上での実行、または2つ以上での並列実行に対して構成さ
れたプログラム命令によって、少なくとも一部、実装され得る。GPUは、プログラマが
GPUの機能を呼び出すのを許可する1つ以上のアプリケーションプログラマインタフェ
ース(API)を実装し得る。適切なGPUは、NVIDIA Corporation
、ATI Technologies(AMD)、およびその他などのベンダーから市販
されている可能性がある。
システムメモリ1020は、プロセッサ1010によってアクセス可能なプログラム命
令および/またはデータを格納するように構成され得る。様々な実施形態では、システム
メモリ1020は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダ
イナミックRAM(SDRAM)、不揮発性/フラッシュタイプメモリ、または任意の他
のタイプのメモリなどの、任意の適切なメモリ技術を使用して実装され得る。図示した実
施形態では、本明細書で説明したような分散システム内のコンピューティングクラスタを
スケーリングするための前述したものなどの、所望の機能を実装するプログラム命令およ
びデータが、それぞれ、プログラム命令1025およびデータ記憶1035として、シス
テムメモリ1020内に格納されて示されている。他の実施形態では、プログラム命令お
よび/またはデータは、異なるタイプのコンピュータアクセス可能媒体上、またはシステ
ムメモリ1020もしくはコンピュータシステム1000から離れた類似の媒体上で、受
信、送信、または格納され得る。一般的に言えば、コンピュータアクセス可能媒体は、磁
気または光媒体などの記憶媒体またはメモリ媒体を含み得、例えば、I/Oインタフェー
ス1030を介してコンピュータシステム1000に結合されたディスクまたはCD/D
VD−ROMである。コンピュータアクセス可能媒体を用いて格納されたプログラム命令
およびデータは、伝送媒体または、電気信号、電磁信号、もしくはデジタル信号などの信
号によって伝送され得、それらは、ネットワークインタフェース1040を用いて実装さ
れ得るように、ネットワークおよび/または無線リンクなどの通信媒体を経由して伝達さ
れ得る。
一実施形態では、I/Oインタフェース1030は、プロセッサ1010、システムメ
モリ1020、およびネットワークインタフェース1040または、入力/出力装置10
50などの、他の周辺インタフェースを含む、装置内の任意の周辺機器の間のI/Oトラ
フィックを調整するように構成され得る。いくつかの実施形態では、I/Oインタフェー
ス1030は、1つの構成要素(例えば、システムメモリ1020)からのデータ信号を
別の構成要素(例えば、プロセッサ1010)による使用に適したフォーマットに変換す
るための、任意の必要なプロトコル、タイミングまたは他のデータ媒体変換を実行し得る
。いくつかの実施形態では、I/Oインタフェース1030は、例えば、Periphe
ral Component Interconnect(PCI)バス規格の変形また
はユニバーサルシリアルバス(USB)規格などの、様々なタイプの周辺機器用バスを通
じて取り付けられた装置に対するサポートを含み得る。いくつかの実施形態では、I/O
インタフェース1030の機能は、例えば、ノースブリッジおよびサウスブリッジなどの
、2つ以上の別個の構成要素に分割され得る。さらに、いくつかの実施形態では、システ
ムメモリ1020へのインタフェースなどの、I/Oインタフェース1030の機能の一
部または全部が、プロセッサ1010に直接組み込まれ得る。
ネットワークインタフェース1040は、データが、コンピュータシステム1000と
、他のコンピュータシステムなどの、ネットワークに取り付けられた他の装置との間で、
またはコンピュータシステム1000のノード間で、交換できるように構成され得る。様
々な実施形態では、ネットワークインタフェース1040は、例えば、任意の適したタイ
プのイーサネット(登録商標)ネットワークなどの、有線もしくは無線の一般データネッ
トワークを経由した;アナログ音声ネットワークもしくはデジタルファイバー通信ネット
ワークなどの通信/電話網を経由した;ファイバーチャネルSANなどのストレージエリ
アネットワークを経由した、または任意の他の適切なタイプのネットワークおよび/もし
くはプロトコルを経由した、通信をサポートし得る。
入力/出力装置1050は、いくつかの実施形態では、1つ以上のディスプレイ端末、
キーボード、キーパッド、タッチパッド、スキャン装置、音声もしくは光学的認識装置、
または1つ以上のコンピュータシステム1000によるデータの入力もしくは取得に適し
た任意の他の装置を含み得る。複数の入力/出力装置1050がコンピュータシステム1
000内に存在し得るか、またはコンピュータシステム1000の様々なノード上に分散
され得る。いくつかの実施形態では、類似の入力/出力装置が、コンピュータシステム1
000から分離され得、ネットワークインタフェース1040を介してなど、有線もしく
は無線接続を通して、コンピュータシステム1000の1つ以上のノードとやりとりし得
る。
図11に示すように、メモリ1020は、本明細書で説明するようなスケジューリング
された配信指示に対して時間ベースの品目推奨を提供するように構成された、プログラム
命令1025、およびプログラム命令1025によってアクセス可能な様々なデータを含
む、データ記憶1035を含み得る。一実施形態では、プログラム命令1025は、本明
細書で説明し、図に示すような、実施形態のソフトウェア要素を含み得る。データ記憶1
035は、実施形態で使用され得るデータを含み得る。他の実施形態では、その他または
異なるソフトウェア要素およびデータが含まれ得る。
当業者は、コンピュータシステム1000は例示にすぎず、本明細書で説明するステレ
オ描画技法の範囲に制限することを意図しないことを理解するであろう。具体的には、コ
ンピュータシステムおよび装置は、コンピュータ、パーソナルコンピュータシステム、デ
スクトップコンピュータ、ラップトップ、ノートブック、もしくはネットブックコンピュ
ータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステー
ション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイル機器、ネ
ットワーク装置、インターネット家電、PDA、無線電話、ポケットベル、消費者向け装
置、ビデオゲーム機、ハンドヘルドビデオゲーム機、アプリケーションサーバー、記憶装
置、周辺機器(スイッチ、モデム、ルーターなど)、または任意のタイプのコンピューテ
ィング装置もしくは電子装置一般を含む、指示された機能を実行できる、ハードウェアま
たはソフトウェアの任意の組合せを含み得る。コンピュータシステム1000は、図示し
ていない他の装置にも接続され得るか、または代わりに、スタンドアロンシステムとして
動作し得る。加えて、図示する構成要素によって提供される機能は、いくつかの実施形態
では、もっと少ない構成要素に結合され得るか、または追加の構成要素内に分散され得る
。同様に、いくつかの実施形態では、図示する構成要素のいくつかの機能が提供されない
可能性があり、かつ/または他の追加の機能が利用可能であり得る。
様々な項目が、使用されている間に、メモリ内または記憶装置上に格納されているとし
て示されているが、当業者は、これらの項目またはそれらの一部は、メモリ管理およびデ
ータの整合性を目的として、メモリと他の記憶装置との間で転送され得ることも理解する
であろう。あるいは、他の実施形態では、ソフトウェア構成要素の一部または全部が、他
の装置上のメモリ内で実行して、図示するコンピュータシステムとコンピュータ間通信を
経由して通信し得る。システム構成要素またはデータ構造の一部または全部が、コンピュ
ータアクセス可能媒体または適切なドライブによって読み取られる可搬型品目上にも(例
えば、命令または構造化データとして)格納され得、その様々な例が上で説明されている
。いくつかの実施形態では、コンピュータシステム1000から離れたコンピュータアク
セス可能媒体上に格納された命令は、ネットワークおよび/もしくは無線リンクなどの通
信媒体を経由して伝達される、伝送媒体または、電気信号、電磁信号、もしくはデジタル
信号などの信号によってコンピュータシステム1000に伝送され得る。様々な実施形態
は、前述の説明に従って実装された、受信、送信、もしくは格納命令、および/またはデ
ータをコンピュータアクセス可能媒体上にさらに含み得る。その結果、本発明は、他のコ
ンピュータシステム構成で実施され得る。
本明細書で説明する分散システム実施形態のいずれも、またはそれらの構成要素のいず
れも、1つ以上のウェブサービスとして実装され得ることに留意されたい。例えば、デー
タウェアハウスシステム内のリーダーノードは、データ記憶サービスおよび/またはデー
タベースサービスをウェブサービスとしてクライアントに提示し得る。いくつかの実施形
態では、ウェブサービスは、ネットワークを介して相互運用可能なマシン同士のインタラ
クションをサポートするように設計されたソフトウェアおよび/またはハードウェアシス
テムによって実装され得る。ウェブサービスは、ウェブサービス記述言語(WSDL)な
どの、マシン処理可能なフォーマットで記述されたインタフェースを有し得る。他のシス
テムは、ウェブサービスのインタフェースの記述によって規定される方法で、ウェブサー
ビスとやりとりし得る。例えば、ウェブサービスは、他のシステムが呼び出し得る様々な
動作を定義し得、他のシステムが、様々な動作を要求する際に従うと予期され得る、特定
のアプリケーションプログラミングインタフェース(API)を定義し得る。
様々な実施形態では、ウェブサービスは、ウェブサービス要求と関連したパラメータお
よび/またはデータを含むメッセージの使用を通じて、要求され得るか、または呼び出さ
れ得る。かかるメッセージは、拡張マークアップ言語(XML)などの特定のマークアッ
プ言語に従ってフォーマットされ得、かつ/またはシンプルオブジェクトアクセスプロト
コル(SOAP)などのプロトコルを使用してカプセル化され得る。ウェブサービス要求
を実行するため、ウェブサービスクライアントは、要求を含むメッセージを組み立てて、
そのメッセージを、ウェブサービスに対応するアドレス可能なエンドポイント(例えば、
ユニフォームリソースロケーター(URL))に、ハイパーテキスト転送プロトコル(H
TTP)などのインターネットベースのアプリケーション層転送プロトコルを使用して、
伝達し得る。
いくつかの実施形態では、ウェブサービスは、メッセージベースの技法ではなく、表現
状態転送(「RESTful」)技法を使用して、実装され得る。例えば、RESTfu
l技法に従って実装されたウェブサービスは、SOAPメッセージ内にカプセル化される
のではなく、PUT、GET、またはDELETEなどのHTTPメソッド内に含まれる
パラメータを通じて呼び出され得る。
前述の実施形態は、以下の付記項を考慮してより良く理解され得る:
1.分散データウェアハウスシステムであって、
複数のノードを含み、
複数のノードの少なくともいくつかのノードの各々が:
カラムナデータベーステーブルのための記憶装置であって、前記記憶装置が複数の
データブロックを含む、記憶装置と、
クエリー実行モジュールと
を含み、
複数のノードの少なくとも1つのノードが、
カラムナデータベーステーブルの列内の複数のバケット間でのデータの分布を表す
高さのバランスを調整したヒストグラムに対して複数のバケット範囲サイズを判断するこ
とであって、複数のバケットの各バケットが、列内のデータの1つ以上のデータ値が値の
範囲内に存在することを表す、複数のバケット範囲サイズを判断することと、
列に対するデータを格納している1つ以上のデータブロックの各データブロックに対
する確率的データ構造を生成することであって、確率的データ構造が、複数のバケットの
どのバケットに対して、データブロック内に格納されているバケット範囲サイズ内のデー
タ値があるかを示す、確率的データ構造を生成することと
を行うように構成された、高さのバランスを調整したヒストグラム生成器を含み、
クエリー実行モジュールが:
選択データに対するカラムナデータベーステーブルの列を対象としたクエリーの指
示を受信することと、
クエリーの指示の受信に応答して:
列に対するデータを格納している1つ以上のデータブロックの各々に対する確率
的データ構造を検査して、選択データに対するクエリーに対応するために読み取る必要の
ない、1つ以上のデータブロックのうちの特定のものを判断することと、
読み取る必要のない1つ以上のデータブロックのうちの特定のものを除いて、列
に対するデータを格納している1つ以上のデータブロックを読み取ることと
を行うように構成されている、
分散データウェアハウスシステム。
2.カラムナデータベーステーブルの列を表す高さのバランスを調整したヒストグラム
に対する複数のバケットに対して複数のバケット範囲サイズを判断するために、高さのバ
ランスを調整したヒストグラム生成器が:
列のデータを取得することと、
複数のバケットを生成することと、
列のデータがバケット間で均等に分布されるように、高さのバランスを調整したヒス
トグラムに対する各バケットに対して、複数のバケット範囲サイズのうちのバケット範囲
サイズを設定することと
を行うように構成されている、付記項1に記載のシステム。
3.確率的データ構造が、複数のビットを含むビットマップであり、ビットマップの各
ビットが、高さのバランスを調整したヒストグラムに対する複数のバケットの各バケット
を表し、かつデータブロック内に格納されているバケット範囲サイズ内に含まれる全ての
データ値に対して、バケットに対応するビットマップのビットが設定される、付記項1に
記載のシステム。
4.高さのバランスを調整したヒストグラム生成器が、1つ以上のデータブロックの各
々の確率的データ構造を、1つ以上のデータブロックに関する情報を格納するブロックメ
タデータ構造内のそれぞれのエントリ内に格納するようにさらに構成されている、付記項
1に記載のシステム。
5.少なくとも1つのノードが、分散データウェアハウスクラスタのリーダーノードで
あり、かつ、少なくともいくつかのノードのうちの少なくとも1つが、分散データウェア
ハウスクラスタの計算ノードである、付記項1に記載のシステム。
6.1つ以上のコンピューティング装置によって、
カラムナデータベーステーブルの列のヒストグラムに対する複数のバケットの各々に
対してバケット範囲サイズを判断することであって、ヒストグラムが列内のデータの複数
のバケット間での分布を表し、複数のバケットの各バケットが、列内のデータの1つ以上
のデータ値が判断されたバケット範囲サイズに従って値の範囲内に存在することを表す、
バケット範囲サイズを判断することと、
カラムナデータベーステーブルの列に対するデータを格納している1つ以上のデータ
ブロックの各々に対して確率的データ構造を生成することであって、確率的データ構造が
、複数のバケットのどの特定のバケットに対して、データブロック内に格納されたデータ
値があるかを示す、確率的データ構造を生成することと、
選択データに対する列を対象としたクエリーの指示を受信することと、
クエリーの指示の受信に応答して、列に対するデータを格納している1つ以上のデー
タブロックの各々に対する確率的データ構造を検査して、選択データに対するクエリーに
対応するために読み取る必要のない、1つ以上のデータブロックのうちの特定のものを判
断することと
を実行することを含む、方法。
7.カラムナデータベーステーブルの列のヒストグラムに対する複数のバケットの各々
に対してバケット範囲サイズを前記判断することが:
列のデータを取得することと、
複数のバケットを生成することと、
列のデータがバケット間で均等に分布されるように、各バケットに対して複数のバケ
ット範囲サイズのうちのバケット範囲サイズを設定することと
を含む、付記項6に記載の方法。
8.カラムナデータベーステーブルの列に対するデータを格納している1つ以上のデー
タブロックの各々に対して確率的データ構造を前記生成することが:
複数のビットを含むデータブロックに対するビットマップを生成することであって、
各ビットがヒストグラムに対する複数のバケットの異なるバケットを表す、ビットマップ
を生成することと、
ビットマップ内のそれぞれのビットを、データブロック内に格納されたデータ値があ
る、特定のバケットの各々に対して設定することと
を含む、付記項6に記載の方法。
9.1つ以上のデータブロックの各々の確率的データ構造を、1つ以上のデータブロッ
クに関する情報を格納するブロックメタデータ構造内のそれぞれのエントリ内に格納する
ことをさらに含む、付記項8に記載の方法。
10.列に対するデータを格納している1つ以上のデータブロックの各々に対する確率
的データ構造を前記検査して、選択データに対するクエリーに対応するために読み取る必
要のない1つ以上のデータブロックのうちの特定のものを判断することが:
選択データを含む値の範囲内の1つ以上のバケットを表す1つ以上のビットを判断す
ることと、
1つ以上のデータブロックに対するブロックメタデータ構造内に格納されている各ビ
ットマップ内の1つ以上のビットを検査して、1つ以上のビットのうちの1つも、選択デ
ータに対するクエリーに対応するために読み取る必要のない特定のものとして設定されて
いない、データブロックを識別することと
を含む、付記項9に記載の方法。
11.カラムナデータベーステーブルの列のヒストグラムが、高さのバランスを調整し
たヒストグラムである、付記項6に記載の方法。
12.列内のデータの複数のバケット間での分布に対するリバランス事象を検出するこ
とと、
リバランス事象の検出に応答して、
列の高さのバランスを調整したヒストグラムに対する複数のバケットの各々に対する
バケット範囲サイズを修正することと、
複数のバケットの修正されたバケット範囲サイズに従って1つ以上のデータブロック
の各々に対する各確率的データ構造を更新することと
をさらに含む、付記項11に記載の方法。
13.列内のデータの複数のバケット間での分布に対するリバランス事象を前記検出す
ることが、1つ以上の新しいデータブロック内に格納されている列に対する追加のデータ
量がリバランス閾値を上回っていると判断することを含む、付記項12に記載の方法。
14.列内のデータの複数のバケット間での分布に対するリバランス事象を前記検出す
ることが、列内のデータの分布と比較したデータの追加量の分布間の変化が分布閾値を上
回っていると判断するために、列に対するデータの追加量の分布を分析することを含む、
付記項12に記載の方法。
15.各確率的データ構造を前記更新することに続いて、クエリーに対応するために1
つ以上のデータブロックの1つから読み取ったデータが、1つのデータブロックに対する
確率的データ構造によって示される通りのデータ値の範囲内のデータ値を含んでいないと
いう指示を受信することと、
データ値がデータ値の範囲内に含まれているという指示を除去するために1つのデータ
ブロックに対する確率的データ構造を更新することと
をさらに含む、付記項12に記載の方法。
16.列に対する1つ以上のデータブロック内に格納されているデータがソートされて
いない、付記項6に記載の方法。
17.コンピューティング装置の1つ以上が、分散データウェアハウスシステムを実装
する膨大なコンピューティング装置の一部であり、1つ以上のコンピューティング装置が
、データベースウェアハウスクラスタの1つ以上の計算ノードであり、膨大なコンピュー
ティング装置の異なるコンピューティング装置が、データベースウェアハウスクラスタの
リーダーノードであり、かつ方法が、リーダーノードによって、カラムナデータベーステ
ーブルの列を対象とした1つ以上のクエリーを1つ以上の計算ノードに送信することを実
行することをさらに含む、付記項6に記載の方法。
18.プログラム命令を格納している、持続性コンピュータ可読記憶媒体であって、プ
ログラム命令が、1つ以上のコンピューティング装置によって実行される場合に:
カラムナデータベーステーブルの列のヒストグラムに対する複数のバケットの各々に対
して、バケット範囲サイズを判断することであって、ヒストグラムが列内のデータの複数
のバケット間での分布を表し、複数のバケットの各バケットが、列内のデータの1つ以上
のデータ値が判断されたバケット範囲サイズに従って値の範囲内に存在することを表す、
バケット範囲サイズを判断することと、
カラムナデータベーステーブルの列に対するデータを格納している1つ以上のデータブ
ロックの各々に対してビットマップを生成することであって、ビットマップ内の各ビット
が複数のバケットの異なる1つを表し、かつ、ビットマップ内の設定されたビットが、デ
ータブロック内に格納されたデータ値がある、ヒストグラム内の複数のバケットのうちの
特定のバケットを示す、ビットマップを生成することと、
選択データに対する列を対象としたクエリーの指示を受信することと、
クエリーの指示の受信に応答して:
列に対するデータを格納している1つ以上のデータブロックの各々に対するビットマ
ップを検査して、選択データに対するクエリーに対応するために読み取る必要のない、1
つ以上のデータブロックのうちの特定のものを判断することと、
読み取る必要のない、1つ以上のデータブロックのうちの特定のものを除いて、列に
対するデータを格納している1つ以上のデータブロックを読み取ることと
を実装する、持続性コンピュータ可読記憶媒体。
19.カラムナデータベーステーブルの列に対するヒストグラムが、高さのバランスを
調整したヒストグラムである、付記項18に記載の持続性コンピュータ可読記憶媒体。
20.プログラム命令が、1つ以上のコンピューティング装置によってさらに実行され
る場合に:
列内のデータの複数のバケット間での分布に対するリバランス事象を検出することと、
リバランス事象の検出に応答して:
列の高さのバランスを調整したヒストグラムに対する複数のバケットの各々に対する
バケット範囲サイズを修正することと、
複数のバケットの修正されたバケット範囲サイズに従って1つ以上のデータブロック
の各々に対する各ビットマップを更新することと
を実装する、付記項19に記載の持続性コンピュータ可読記憶媒体。
21.列内のデータの複数のバケット間での分布に対するリバランス事象を前記検出す
る際に、プログラム命令が、1つ以上のコンピューティング装置によって実行される場合
に、複数のバケットの各々に対するバケット範囲サイズが判断されてからの時間が、リバ
ランス時間閾値を上回っていると判断することを実装する、付記項20に記載の持続性コ
ンピュータ可読記憶媒体。
22.複数のバケットの修正されたバケット範囲サイズに従って1つ以上のデータブロ
ックの各々に対する各ビットマップを前記更新する際に、プログラム命令が、1つ以上の
コンピューティング装置によって実行される場合に:
修正されたバケット範囲サイズ内のデータブロック内に格納されたデータ値があること
を示す、複数のバケットのうちのバケットを表すビットマップの1つ以上の未設定のビッ
トを識別することと、
ビットマップの1つ以上の未設定のビットを設定することと
をさらに実装する、付記項20に記載の持続性コンピュータ可読記憶媒体。
23.各ビットマップが、1つ以上のデータブロックに関する情報を格納している現在
のブロックメタデータ構造内のそれぞれのエントリ内に格納されていて、かつ、複数のバ
ケットの修正されたバケット範囲サイズに従って1つ以上のデータブロックの各々に対す
る各ビットマップを前記更新する際に、プログラム命令が、1つ以上のコンピューティン
グ装置によって実行される場合に:
現在のブロックメタデータ構造のそれぞれのエントリで満たされた新しいブロックメタ
データ構造を生成することと、
複数のバケットの修正されたバケット範囲サイズに従って、1つ以上のデータブロック
の各々に対する新しいブロックメタデータ構造内のそれぞれのエントリ内の各ビットマッ
プを修正することと
を実装し、
新しいブロックメタデータ構造を前記生成すること、および新しいブロックメタデータ
構造内のそれぞれのエントリ内の各ビットマップを修正することが完了するまで、クエリ
の指示に応答したビットマップの前記検査の実行が、現在のブロックメタデータ構造内に
格納されているビットマップを利用する、
付記項20に記載の持続性コンピュータ可読記憶媒体。
結論
様々な実施形態は、コンピュータアクセス可能媒体上での、前述の説明に従って実装さ
れた命令および/またはデータの受信、送信または格納をさらに含み得る。一般的に言え
ば、コンピュータアクセス可能媒体は、磁気または光媒体、例えば、ディスクもしくはD
VD/CD−ROM、不揮発性媒体(RAM(例えば、SDRAM、DDR、RDRAM
、SRAMなど)、ROMなど)などの記憶媒体またはメモリ媒体、ならびにネットワー
クおよび/または無線リンクなどの通信媒体を経由して伝達される、伝送媒体または、電
気信号、電磁信号、もしくはデジタル信号などの信号を含み得る。
図に示し、本明細書で説明する様々な方法は、方法の実施形態例を表す。方法は、ソフ
トウェア、ハードウェア、またはそれらの組合せで実装され得る。方法の順序は変更され
得、様々な要素は、追加、並べ替え、結合、省略、修正、などが行われ得る。
様々な修正および変更は、本開示の利益を有する当業者に明らかであるように、行われ
得る。本発明は、かかる修正および変更の全てを包含し、それに応じて、前述の説明は、
制限的な意味ではなく例示的と見なされることを意図する。

Claims (15)

  1. 分散データウェアハウスシステムであって、
    複数のノードを含み、
    前記複数のノードの少なくともいくつかのノードの各々が、
    カラムナデータベーステーブルのための記憶装置であって、前記記憶装置が複数のデータブロックを含む、記憶装置と、
    クエリー実行モジュールと
    を含み、
    前記複数のノードの少なくとも1つのノードが、
    前記カラムナデータベーステーブルの列内の複数のバケット間でのデータの分布を表す高さのバランスを調整したヒストグラムに対して複数のバケット範囲サイズを判断することであって、前記複数のバケットの各バケットが、前記列内の前記データの1つ以上のデータ値が値の範囲内に存在することを表す、複数のバケット範囲サイズを判断することと、
    前記列に対するデータを格納している1つ以上のデータブロックの各データブロックに対する確率的データ構造を生成することであって、前記確率的データ構造が、前記複数のバケットに対して判断された前記複数のバケット範囲サイズのうちの個々のバケット範囲サイズ内に前記データブロックに格納されたデータ値があるかどうかを示す、確率的データ構造を生成することと
    を行うように構成された、高さのバランスを調整したヒストグラム生成器を含み、
    前記クエリー実行モジュールが、
    選択データに対する前記カラムナデータベーステーブルの前記列を対象としたクエリーの指示を受信することと、
    前記クエリーの前記指示の受信に応答して、
    前記列に対するデータを格納している前記1つ以上のデータブロックの各々に対する前記確率的データ構造を検査して、前記選択データに対する前記クエリーに対応するために読み取る必要のない前記1つ以上のデータブロックのうちの特定のものを判断することと、
    読み取る必要のない、前記1つ以上のデータブロックのうちの前記特定のものを除いて、前記列に対するデータを格納している前記1つ以上のデータブロックを読み取ることとを行うように構成されている、
    分散データウェアハウスシステム。
  2. 前記カラムナデータベーステーブルの前記列を表す前記高さのバランスを調整したヒストグラムに対する前記複数のバケットに対して前記複数のバケット範囲サイズを判断するために、前記高さのバランスを調整したヒストグラム生成器が、
    前記列の前記データを取得することと、
    前記複数のバケットを生成することと、
    前記列の前記データが前記バケット間で均等に分布されるように、前記高さのバランスを調整したヒストグラムに対する各バケットに対して、前記複数のバケット範囲サイズのうちのバケット範囲サイズを設定することとを行うように構成されている、請求項1に記載のシステム。
  3. 前記確率的データ構造が、複数のビットを含むビットマップであり、前記ビットマップの各ビットが、前記高さのバランスを調整したヒストグラムに対する前記複数のバケットの各バケットを表し、かつ前記データブロック内に格納されている前記バケット範囲サイズ内に含まれる全てのデータ値に対して、前記バケットに対応する前記ビットマップの前記ビットが設定される、請求項1に記載のシステム。
  4. 前記少なくとも1つのノードが、分散データウェアハウスクラスタのリーダーノードであり、かつ、前記少なくともいくつかのノードのうちの前記少なくとも1つが、前記分散データウェアハウスクラスタの計算ノードである、請求項1に記載のシステム。
  5. 1つ以上のコンピューティング装置によって、
    カラムナデータベーステーブルの列のヒストグラムに対する複数のバケットの各々に対して、バケット範囲サイズを判断することであって、前記ヒストグラムが前記列内のデータの前記複数のバケット間での分布を表し、前記複数のバケットの各バケットが、前記列内の前記データの1つ以上のデータ値が前記判断されたバケット範囲サイズに従って値の範囲内に存在することを表す、バケット範囲サイズを判断することと、
    前記カラムナデータベーステーブルの前記列に対するデータを格納している1つ以上のデータブロックの各々に対して確率的データ構造を生成することであって、前記確率的データ構造が、前記複数のバケットに対して判断された前記複数のバケット範囲サイズのうちの個々のバケット範囲サイズ内に前記データブロックに格納されたデータ値があるかどうかを示す、確率的データ構造を生成することと、
    選択データに対する前記列を対象としたクエリーの指示を受信することと、
    前記クエリーの前記指示の受信に応答して、前記列に対するデータを格納している前記1つ以上のデータブロックの各々に対する前記確率的データ構造を検査して、前記選択データに対する前記クエリーに対応するために読み取る必要のない、前記1つ以上のデータブロックのうちの特定のものを判断することとを実行することを含む、方法。
  6. 前記カラムナデータベーステーブルの前記列の前記ヒストグラムに対する複数のバケットの各々に対してバケット範囲サイズを前記判断することが:
    前記列の前記データを取得することと、
    前記複数のバケットを生成することと、
    前記列の前記データが前記バケット間で均等に分布されるように、各バケットに対して前記複数のバケット範囲サイズのうちのバケット範囲サイズを設定することとを含む、請求項5に記載の方法。
  7. 前記カラムナデータベーステーブルの前記列に対するデータを格納している前記1つ以上のデータブロックの各々に対して前記確率的データ構造を前記生成することが、
    複数のビットを含む前記データブロックに対するビットマップを生成することであって、各ビットが前記ヒストグラムに対する前記複数のバケットの異なるバケットを表す、ビットマップを生成することと、
    前記ビットマップ内の前記それぞれのビットを、前記データブロック内に格納された前記データ値がある、前記特定のバケットの各々に対して設定することとを含む、請求項5に記載の方法。
  8. 前記1つ以上のデータブロックの各々の前記確率的データ構造を、前記1つ以上のデータブロックに関する情報を格納するブロックメタデータ構造内のそれぞれのエントリ内に格納することをさらに含む、請求項7に記載の方法。
  9. 前記列に対するデータを格納している前記1つ以上のデータブロックの各々に対する前記確率的データ構造を前記検査して、前記選択データに対する前記クエリーに対応するために読み取る必要のない、前記1つ以上のデータブロックのうちの前記特定のものを判断することが、
    前記選択データを含む、前記値の範囲内の前記1つ以上のバケットを表す1つ以上のビットを判断することと、
    前記1つ以上のデータブロックに対する前記ブロックメタデータ構造内に格納されている各ビットマップ内の前記1つ以上のビットを検査して、前記1つ以上のビットのうちの1つも、前記選択データに対する前記クエリーに対応するために読み取る必要のない前記特定のものとして設定されていない、データブロックを識別することとを含む、請求項8に記載の方法。
  10. 前記カラムナデータベーステーブルの前記列の前記ヒストグラムが、高さのバランスを調整したヒストグラムである、請求項5に記載の方法。
  11. 前記列内のデータの前記複数のバケット間での前記分布に対するリバランス事象を検出することと、
    前記リバランス事象の検出に応答して、 前記列の前記高さのバランスを調整したヒストグラムに対する前記複数のバケットの各々に対する前記バケット範囲サイズを修正することと、
    前記複数のバケットの前記修正されたバケット範囲サイズに従って、前記1つ以上のデータブロックの各々に対する各確率的データ構造を更新することをさらに含む、請求項10に記載の方法。
  12. 前記列内のデータの前記複数のバケット間での前記分布に対する前記リバランス事象を前記検出することが、1つ以上の新しいデータブロック内に格納されている前記列に対する追加のデータ量がリバランス閾値を上回っていると判断することを含む、請求項11に記載の方法。
  13. 各確率的データ構造を前記更新することに続いて、前記クエリーに対応するために前記1つ以上のデータブロックの1つから読み取ったデータが、前記1つのデータブロックに対する前記確率的データ構造によって示される通りのデータ値の前記範囲内のデータ値を含んでいないという指示を受信することと、
    前記データ値がデータ値の前記範囲内に含まれているという前記指示を除去するために前記1つのデータブロックに対する前記確率的データ構造を更新することとをさらに含む、請求項11に記載の方法。
  14. 前記コンピューティング装置の1つ以上が、分散データウェアハウスシステムを実装するコンピューティング装置の一部であり、前記1つ以上のコンピューティング装置が、データベースウェアハウスクラスタの1つ以上の計算ノードであり、前記コンピューティング装置の異なるコンピューティング装置が、前記データベースウェアハウスクラスタのリーダーノードであり、かつ前記方法が、前記リーダーノードによって、前記カラムナデータベーステーブルの前記列を対象とした1つ以上のクエリーを前記1つ以上の計算ノードに送信することを実行することをさらに含む、請求項5に記載の方法。
  15. プログラム命令を格納している、持続性コンピュータ可読記憶媒体であって、前記プログラム命令が、1つ以上のコンピューティング装置によって実行される場合に、
    カラムナデータベーステーブルの列のヒストグラムに対する複数のバケットの各々に対して、バケット範囲サイズを判断することであって、前記ヒストグラムが前記列内のデータの前記複数のバケット間での分布を表し、前記複数のバケットの各バケットが、前記列内の前記データの1つ以上のデータ値が前記判断されたバケット範囲サイズに従って値の範囲内に存在することを表す、バケット範囲サイズを判断することと、
    前記カラムナデータベーステーブルの前記列に対するデータを格納している1つ以上のデータブロックの各々に対してビットマップを生成することであって、前記ビットマップ内の各ビットが前記複数のバケットの異なる1つを表し、かつ、前記ビットマップ内の設定されたビットが、前記データブロック内に格納されたデータ値がある、前記ヒストグラム内の前記複数のバケットのうちの特定のバケットを示す、ビットマップを生成することと、
    選択データに対する前記列を対象としたクエリーの指示を受信することと、
    前記クエリーの前記指示の受信に応答して、
    前記列に対するデータを格納している前記1つ以上のデータブロックの各々に対する前記ビットマップを検査して、前記選択データに対する前記クエリーに対応するために読み取る必要のない、前記1つ以上のデータブロックのうちの特定のものを判断することと、
    読み取る必要のない、前記1つ以上のデータブロックのうちの前記特定のものを除いて、前記列に対するデータを格納している前記1つ以上のデータブロックを読み取ることとを実装する、持続性コンピュータ可読記憶媒体。
JP2017108105A 2013-01-15 2017-05-31 カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理 Active JP6393805B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/742,287 US8949224B2 (en) 2013-01-15 2013-01-15 Efficient query processing using histograms in a columnar database
US13/742,287 2013-01-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015553801A Division JP6378207B2 (ja) 2013-01-15 2014-01-15 カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理

Publications (2)

Publication Number Publication Date
JP2017146994A JP2017146994A (ja) 2017-08-24
JP6393805B2 true JP6393805B2 (ja) 2018-09-19

Family

ID=51165980

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015553801A Active JP6378207B2 (ja) 2013-01-15 2014-01-15 カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理
JP2017108105A Active JP6393805B2 (ja) 2013-01-15 2017-05-31 カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2015553801A Active JP6378207B2 (ja) 2013-01-15 2014-01-15 カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理

Country Status (8)

Country Link
US (4) US8949224B2 (ja)
EP (2) EP2946333B1 (ja)
JP (2) JP6378207B2 (ja)
KR (3) KR101903926B1 (ja)
CN (2) CN107766568B (ja)
AU (2) AU2014207599B2 (ja)
CA (1) CA2898054C (ja)
WO (1) WO2014113474A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949224B2 (en) 2013-01-15 2015-02-03 Amazon Technologies, Inc. Efficient query processing using histograms in a columnar database
US9471629B2 (en) * 2013-04-19 2016-10-18 Software AG USA Inc. Method and apparatus for visual dynamic discovery and analytics exploration application on static and/or real-time data using an a priori model-free process
WO2015094312A1 (en) 2013-12-20 2015-06-25 Hewlett-Packard Development Company, L.P. Identifying a path in a workload that may be associated with a deviation
US10489266B2 (en) * 2013-12-20 2019-11-26 Micro Focus Llc Generating a visualization of a metric at one or multiple levels of execution of a database workload
US10140353B2 (en) 2013-12-23 2018-11-27 Teredata, US, Inc. Techniques for query processing using high dimension histograms
US10282371B1 (en) * 2014-12-02 2019-05-07 Western Digital Technologies, Inc. Object storage device with probabilistic data structure
US10133760B2 (en) * 2015-01-12 2018-11-20 International Business Machines Corporation Hardware for a bitmap data structure for efficient storage of heterogeneous lists
US10970285B2 (en) * 2015-02-26 2021-04-06 Red Hat, Inc. Grid topology change in a distributed data grid when iterating on the contents of the data grid
US11681674B2 (en) 2015-04-30 2023-06-20 Micro Focus Llc Consolidated metadata in databases
WO2016195728A1 (en) * 2015-05-29 2016-12-08 Hewlett Packard Enterprise Development Lp Generating test data based on histogram statistics
US10191944B2 (en) * 2015-10-23 2019-01-29 Oracle International Corporation Columnar data arrangement for semi-structured data
US10152429B2 (en) 2015-10-27 2018-12-11 Medallia, Inc. Predictive memory management
US9607062B1 (en) * 2015-11-19 2017-03-28 International Business Machines Corporation Data locality in data integration applications
US10719554B1 (en) 2016-09-19 2020-07-21 Amazon Technologies, Inc. Selective maintenance of a spatial index
US10324911B1 (en) * 2016-09-30 2019-06-18 Virtustream Ip Holding Company Llc Storage system with bucket contents rebalancer providing adaptive partitioning for database buckets
US10242055B2 (en) * 2016-12-07 2019-03-26 Medallia, Inc. Dual filter histogram optimization
US10185507B1 (en) * 2016-12-20 2019-01-22 Amazon Technologies, Inc. Stateless block store manager volume reconstruction
US11507283B1 (en) * 2016-12-20 2022-11-22 Amazon Technologies, Inc. Enabling host computer systems to access logical volumes by dynamic updates to data structure rules
US10268593B1 (en) 2016-12-20 2019-04-23 Amazon Technologies, Inc. Block store managamement using a virtual computing system service
US10921991B1 (en) * 2016-12-20 2021-02-16 Amazon Technologies, Inc. Rule invalidation for a block store management system
US10809920B1 (en) 2016-12-20 2020-10-20 Amazon Technologies, Inc. Block store management for remote storage systems
US11030177B1 (en) * 2017-05-04 2021-06-08 Amazon Technologies, Inc. Selectively scanning portions of a multidimensional index for processing queries
US11138076B2 (en) 2017-06-30 2021-10-05 Redis Ltd. Methods, systems, and media for controlling append-only file rewrites
US10567992B2 (en) 2018-01-25 2020-02-18 Hewlett Packard Enterprise Development Lp Network device KPI monitors based on bitmaps
US11016971B2 (en) 2018-01-26 2021-05-25 Vmware, Inc. Splitting a time-range query into multiple sub-queries for parallel execution
US11016972B2 (en) 2018-01-26 2021-05-25 Vmware, Inc. Splitting a time-range query into multiple sub-queries for serial execution
US10860576B2 (en) 2018-01-26 2020-12-08 Vmware, Inc. Splitting a query into native query operations and post-processing operations
US11144570B2 (en) 2018-01-26 2021-10-12 Vmware, Inc. Data ingestion by distributed-computing systems
US11178213B2 (en) 2018-02-28 2021-11-16 Vmware, Inc. Automated configuration based deployment of stream processing pipeline
US10824623B2 (en) 2018-02-28 2020-11-03 Vmware, Inc. Efficient time-range queries on databases in distributed computing systems
US10812332B2 (en) 2018-02-28 2020-10-20 Vmware Inc. Impartial buffering in stream processing
US11216706B2 (en) * 2018-03-15 2022-01-04 Datorama Technologies Ltd. System and method for visually presenting interesting plots of tabular data
GB201816808D0 (en) * 2018-10-16 2018-11-28 Palantir Technologies Inc Data storage method and system
US10628442B1 (en) * 2018-11-09 2020-04-21 Hewlett Packard Enterprise Development Lp Histograms based on varying data distribution
CN109933592B (zh) * 2019-03-22 2021-06-01 杭州复杂美科技有限公司 数据存储方法、数据回滚方法、设备和存储介质
US11693889B2 (en) * 2019-03-28 2023-07-04 Hewlett Packard Enterprise Development Lp Effective materialization strategy utilizing statistical set-theoretic approach for generation of multi-interval multi-column histogram and histograms in general
CN110647566B (zh) * 2019-09-03 2023-04-14 平安科技(深圳)有限公司 模板表格的智能导入方法、装置及计算机可读存储介质
CN111177433B (zh) * 2019-12-31 2021-07-20 北京百度网讯科技有限公司 用于并行处理信息的方法和装置
US20230221864A1 (en) * 2022-01-10 2023-07-13 Vmware, Inc. Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table
CN114860848A (zh) * 2022-07-06 2022-08-05 北京奥星贝斯科技有限公司 分布式数据库系统的选主方法及装置

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761652A (en) * 1996-03-20 1998-06-02 International Business Machines Corporation Constructing balanced multidimensional range-based bitmap indices
US6226629B1 (en) * 1997-02-28 2001-05-01 Compaq Computer Corporation Method and apparatus determining and using hash functions and hash values
US6278989B1 (en) 1998-08-25 2001-08-21 Microsoft Corporation Histogram construction using adaptive random sampling with cross-validation for database systems
US6460045B1 (en) 1999-03-15 2002-10-01 Microsoft Corporation Self-tuning histogram and database modeling
US6529872B1 (en) * 2000-04-18 2003-03-04 Matsushita Electric Industrial Co., Ltd. Method for noise adaptation in automatic speech recognition using transformed matrices
KR100398142B1 (ko) 2000-08-29 2003-09-19 한국과학기술원 대용량 데이터베이스에서의 고속에 의한 다해상도의 최적탐색방법
US6691099B1 (en) 2001-05-31 2004-02-10 Oracle International Corporation Method and system for histogram determination in a database
JP2003256222A (ja) 2002-03-04 2003-09-10 Matsushita Electric Ind Co Ltd 分散処理システム、ジョブ分散処理方法およびプログラム
US6732985B1 (en) * 2003-02-20 2004-05-11 Douglas Chet Cantrell Beach utility pole
US7424498B1 (en) * 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7299248B2 (en) 2004-06-29 2007-11-20 International Business Machines Corporation Method, system, program for determining frequency of updating database histograms
US7386538B2 (en) * 2005-03-24 2008-06-10 International Business Machines Corporation Building database statistics across a join network using skew values
GB0513045D0 (en) 2005-06-27 2005-08-03 Vidus Ltd Resource scheduling method and system
US7512574B2 (en) * 2005-09-30 2009-03-31 International Business Machines Corporation Consistent histogram maintenance using query feedback
US7707005B2 (en) * 2006-09-02 2010-04-27 Microsoft Corporation Generating histograms of population data by scaling from sample data
US7991763B2 (en) * 2007-04-13 2011-08-02 International Business Machines Corporation Database query optimization utilizing remote statistics collection
US20080288444A1 (en) * 2007-05-16 2008-11-20 John Francis Edwards Evaluating Multi-Table Join Selectivity in a Computer Database
US8234282B2 (en) * 2007-05-21 2012-07-31 Amazon Technologies, Inc. Managing status of search index generation
US7512754B1 (en) * 2008-01-31 2009-03-31 International Business Machines Corporation System and method for optimizing storage utilization
JP2009245424A (ja) * 2008-03-28 2009-10-22 Mitsubishi Electric Research Laboratories Inc コンピュータにより実施される、確率論的クエリー及び確率論的クエリーマッチング関数に対して順位付けした結果セットをレンダリングする方法
US8392406B1 (en) * 2008-05-30 2013-03-05 Oracle International Corporation Determining a height-balanced histogram incrementally
US8290972B1 (en) * 2009-04-29 2012-10-16 Netapp, Inc. System and method for storing and accessing data using a plurality of probabilistic data structures
US8832142B2 (en) * 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US8145669B2 (en) * 2009-12-11 2012-03-27 At&T Intellectual Property I, L.P. Methods and apparatus for representing probabilistic data using a probabilistic histogram
KR101117709B1 (ko) * 2009-12-15 2012-02-24 한국과학기술원 공간 분할 트리의 최소 데이터-불균등 커버를 이용한 다차원 히스토그램 방법 및 이를 실행하기 위한 프로그램이 저장된 기록매체
CN101826098B (zh) * 2010-02-03 2013-05-08 中国科学院地理科学与资源研究所 一种基于ab直方图的空间查询选择率估计方法
US9239996B2 (en) 2010-08-24 2016-01-19 Solano Labs, Inc. Method and apparatus for clearing cloud compute demand
US8458547B2 (en) * 2010-10-26 2013-06-04 Hewlett-Packard Development Company, L.P. Method for constructing a histogram
US8229917B1 (en) * 2011-02-24 2012-07-24 International Business Machines Corporation Database query optimization using clustering data mining
US20120246158A1 (en) * 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
US20120254199A1 (en) * 2011-03-31 2012-10-04 Harumi Kuno Merge optimization system
CN102609439A (zh) * 2011-12-23 2012-07-25 浙江大学 一种高维环境中模糊数据的概率窗口查询方法
US9720967B2 (en) * 2012-09-28 2017-08-01 Oracle International Corporation Adaptive query optimization
US8949224B2 (en) 2013-01-15 2015-02-03 Amazon Technologies, Inc. Efficient query processing using histograms in a columnar database
CN103984695B (zh) * 2014-03-21 2017-06-20 华为技术有限公司 一种数据库中的数据查询方法及装置

Also Published As

Publication number Publication date
AU2014207599A1 (en) 2015-08-13
US9767174B2 (en) 2017-09-19
CN105074724B (zh) 2017-12-05
KR20170121343A (ko) 2017-11-01
CA2898054C (en) 2019-04-02
EP2946333A4 (en) 2016-09-07
CN107766568A (zh) 2018-03-06
JP6378207B2 (ja) 2018-08-22
US9268838B2 (en) 2016-02-23
KR101792582B1 (ko) 2017-11-02
US20150149402A1 (en) 2015-05-28
EP3299972A1 (en) 2018-03-28
US10372723B2 (en) 2019-08-06
KR20150107829A (ko) 2015-09-23
EP2946333B1 (en) 2017-12-06
US20160171064A1 (en) 2016-06-16
EP2946333A1 (en) 2015-11-25
KR101702321B1 (ko) 2017-02-06
KR20170015538A (ko) 2017-02-08
EP3299972B1 (en) 2019-08-21
JP2016508277A (ja) 2016-03-17
CN107766568B (zh) 2021-11-26
US20180025065A1 (en) 2018-01-25
CA2898054A1 (en) 2014-07-24
AU2017202873A1 (en) 2017-05-18
JP2017146994A (ja) 2017-08-24
US20140201129A1 (en) 2014-07-17
AU2017202873B2 (en) 2019-04-11
US8949224B2 (en) 2015-02-03
CN105074724A (zh) 2015-11-18
WO2014113474A1 (en) 2014-07-24
AU2014207599B2 (en) 2017-02-02
KR101903926B1 (ko) 2018-10-02

Similar Documents

Publication Publication Date Title
JP6393805B2 (ja) カラムナデータベース内のヒストグラムを使用した効率的なクエリー処理
Muniswamaiah et al. Big data in cloud computing review and opportunities
CN109997126B (zh) 事件驱动提取、变换、加载(etl)处理
US8972337B1 (en) Efficient query processing in columnar databases using bloom filters
US9740738B1 (en) Data retrieval from datastores with different data storage formats
US9747128B1 (en) Worldwide distributed file system model
US11494339B2 (en) Multi-level compression for storing data in a data store
US9489233B1 (en) Parallel modeling and execution framework for distributed computation and file system access
US20160139961A1 (en) Event summary mode for tracing systems
US11841827B2 (en) Facilitating generation of data model summaries
US11475008B2 (en) Systems and methods for monitoring user-defined metrics
US11799890B2 (en) Detecting anomalous downloads

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170630

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180731

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180827

R150 Certificate of patent or registration of utility model

Ref document number: 6393805

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250