[go: up one dir, main page]

JP2011530234A - 大規模なデータストレージのための効率的な列ベースデータの符号化 - Google Patents

大規模なデータストレージのための効率的な列ベースデータの符号化 Download PDF

Info

Publication number
JP2011530234A
JP2011530234A JP2011521368A JP2011521368A JP2011530234A JP 2011530234 A JP2011530234 A JP 2011530234A JP 2011521368 A JP2011521368 A JP 2011521368A JP 2011521368 A JP2011521368 A JP 2011521368A JP 2011530234 A JP2011530234 A JP 2011530234A
Authority
JP
Japan
Prior art keywords
data
encoding
column
compression
sequence
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.)
Granted
Application number
JP2011521368A
Other languages
English (en)
Other versions
JP5466232B2 (ja
JP2011530234A5 (ja
Inventor
ネッツ アミール
ペトクレスク クリスチャン
ボグダン クリバット ヨアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011530234A publication Critical patent/JP2011530234A/ja
Publication of JP2011530234A5 publication Critical patent/JP2011530234A5/ja
Application granted granted Critical
Publication of JP5466232B2 publication Critical patent/JP5466232B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • H03M7/48Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/24561Intermediate data storage techniques for performance improvement
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

主題開示は、列ベースデータの符号化に関し、これにおいて、圧縮されるべき生データが列により組織化され、次に、データサイズ削減の第1および第2の層として、列により組織化されるように、辞書符号化および/または値符号化がデータに適用され、列に対応する整数のシーケンスが作成される。次に、ハイブリッドでグリーディなランレングス符号化・ビットパッキング圧縮のアルゴリズムは、ビットセービングの分析に従って、データをさらにコンパクトにする。列ベース組織化を合わせたハイブリッドなデータ削減の技術のシナジーは、コンパクトなデータの表現に因るスキャニングおよびクエリの効率における利益と相まって、従来のシステムの何分の一かのコストで、かなり向上したデータ圧縮をもたらした。

Description

主題開示は概して、膨大な量のデータサイズを削減し、かつ、データを処理またはクエリするスピードを高めるための、効率的な列ベースデータの符号化に関する。
従来の圧縮に関する背景技術として、膨大な量のデータをデータベースに記憶させる時、例えば、サーバコンピュータが、長期間に渡るデータの大量のレコードまたはトランザクションを収集する時、他のコンピュータが、このデータまたはこのデータの目的のサブセットへのアクセスを要求することがある。このような場合、該他のコンピュータは、1つまたは複数のクエリ演算子を介して、要求するデータにクエリを行うことができる。これに関して歴史的には、リレーショナルデータベースが、この目的のために発達して、そのような大規模なデータ収集に対して使用され、また、種々のクエリ言語が開発され、これによりデータベース管理ソフトウェアに命令して、クエリを行うクライアントに代わってリレーショナルデータベースまたは分散データベースの組からデータを検索させるようになった。
従来、リレーショナルデータベースは、行に従って組織化されるものであって、行はレコードに対応し、フィールドを有する。例えば、第1の行には、第1の行のレコードを定義する列に対応するフィールドの様々な情報(名前1、年齢1、住所1、性別1、等)が含まれ、第2の行には、第2の行のフィールドの様々な異なる情報(名前2、年齢2、住所2、性別2、等)が含まれる。しかし従来、クライアントによるローカルなクエリまたはローカルなビジネスインテリジェンスのための、莫大なデータ量に渡るクエリ、または、莫大なデータ量の検索は、リアルタイムまたはほぼリアルタイムの要求を満たすことができない程度のものに限られてきた。特に、クライアントが、サーバから最新のデータのローカルコピーを取り出したい場合、サーバからそのような大規模な量のデータを転送することは、限られたネットワーク帯域幅および限られたクライアントのキャッシュストレージを考えると、実用的ではなく、多くのアプリケーションに対して時代遅れなものとなった。
例えば、現在、2つの「group by」操作と4つの「aggregate」操作をサンプルクエリとして使用して、ほぼ160バイトのデータをそれぞれ持つ6億行のデータ(約100ギガバイトのデータ)をスキャンおよび集計すると、最速の既知のリレーショナルデータベース管理システム(RDBMS)は、業界標準のTPC−Hの測定基準による測定では、データを約39.9秒で配信および処理することが可能である。これは、ほぼ2.5Gb/秒のビットレート、すなわち約1500万行/秒での配信を表す。しかし、従来技術のシステムの今日の状態では、コストの観点からは、200,000ドル近い費用がかかり、ほとんどのユーザにとって、参入への高い障壁になっている。さらに、39.9秒は、速いとは言えるが、最も厳しいリアルタイムのデマンドおよび要求は満たされてはおらず、また、多くの改善の余地が残されている。
さらなる背景技術として、アーキテクチャの一部としてリレーショナルデータベースを伴う異なるレコードとして異なる行を概念化することの利便性により、データセットのサイズを削減するための技術では、従って、リレーショナルデータベースをどのように組織化するかについての性質のため、さらに行に焦点が向けられてきた。言い換えれば、行情報には、レコードの全てのフィールドを一緒に1行に保持することにより、各レコードが維持され、集計データサイズを削減するための従来の技術では、符号化自体の一部として、フィールドが一緒に維持される。
ランレングス符号化(RLE)は従来の形式のデータ圧縮であり、連続するデータ、すなわち、同じデータ値が多くの連続するデータ要素において現れるシーケンス、が、元の連続するデータではなく、単一のデータ値とカウントとして記憶される。実際には、エントリとして「EEEEEE」と記載する代わりに、「6E」というランレングスが、その多数のEに対して定義される。RLEは、多くのそのような連続データ、例えば、アイコン、線画、およびアニメーション等の比較的シンプルなグラフィック画像、を含むデータに対しては有用である。しかし、データが、値ごと、またはピクセルごと等に一意的であったり、または、どの場所においてもほとんど一意的である傾向がある場合、RLEは、あまり効率的でないことが分かっている。従って、RLEは、単独では効率的なデータ削減には役に立たず、貴重な処理時間を浪費してもほとんどまたは全く利得が無いことがある。
データに適用される別のタイプの圧縮には辞書符号化があり、これは、フィールドデータ値を、得られるデータと一緒に使用される辞書を介したコンパクトにされた表現で、連続した整数等の減少させたビットセットにトークン化することにより動作し、コンパクトにされた表現から元のフィールドデータ値が取得される。
データに適用される別のタイプの圧縮には値符号化があり、これは、よりコンパクトな表現を可能にする何らかの変換をデータ全体に実行することにより、例えば、可逆的な数学関数をデータに適用して、データを表現するのに必要なビット数を減少させることにより、実数を整数に変換する。例えば、浮動小数値等の実数は、メモリ内で整数値よりもより多くの空間をとり、従って、浮動小数値を整数値に可逆的に変換することにより、ストレージのサイズを減少させ、そして、データを使用するプロセッサが、必要に応じて浮動小数値を得ることが可能である。
データに適用されるさらに別のタイプの圧縮には、ビットパッキングがあり、これは、データの別個の値の数をカウントし、または、異なる値が及ぶ範囲を判定し、そして、数または値のこの組を最適化関数により決定されるような最小ビット数で表す。例えば、所定の列の各フィールドが限られた範囲にしか及ばない可能性があると、各値を、例えば、このフィールドに対して最初に定義された10ビットで表す代わりに、6ビットのみがその値を表すのに必要であるということになるかもしれない。ビットパッキングでは、データのより効率的な6ビットの表現に従って値が再記憶される。
これらの従来の圧縮技術の各々は、リレーショナルデータベースの行組織化された情報に、例えば、rowset演算子を介して、それぞれ無関係に適用され、その上、これらの技術の各々は、データベースから、最新のデータを求めてリアルタイムの要求を有するであろう消費側のクライアントに、素早く、膨大な量のデータを配信することを満たすという問題が適切に対処されていないという点において、不都合を有する。主に、従来の方法論では、記憶するデータサイズを削減して、所定のディスクのサイズまたはストレージ制限に対して、記憶可能なデータの量を最大化することに焦点が向けられてきた。
しかし、これらの技術それ自体でも、実際は、データ集約型の復号、または問い合わせに応えるために伝送されなければならない巨大なサイズの圧縮ストレージ構造の為、データのスキャンまたはクエリに従ったデータ全体を処理する時間を長くさせてしまう。例えば、多くの従来の圧縮技術において、データの圧縮に長く時間がかかるほど、サイズについて達成されるセービング(節減)が大きくなる。しかし、一方で、そのような従来の圧縮スキームを用いたデータの圧縮に長く時間がかかるほど、結局、解凍および処理に長く時間がかかる。従って、従来のシステムでは、データを圧縮するだけでなく、データをより早くクエリ、検索、スキャンする方法でデータを圧縮するデータ符号化技術を、提供することはできない。
加えて、ネットワーク伝送帯域幅における制限により、圧縮データがクライアントによってどのくらい速く受信され得るかが、本質的に制限され、莫大な量のデータを求める要求に対しての障壁となる。従って、データサイズの削減とクエリ処理のスピードを同時に向上させる解決策を提供することが望ましい。大量のデータのためのクエリベースのシステムにおいて高度に効率的な圧縮および処理を可能にする、改善されたデータ符号化技術を提供することがさらに望ましい。
今日のリレーショナルデータベースおよび対応する圧縮技術の欠陥についての上記の記載では、単に従来のシステムのいくつかの問題の概要を提供することを意図しており、網羅することを意図していない。従来のシステムの他の問題、および本明細書に記載される種々の非制限的実施形態の対応する利益は、以下の記載を精査することによりさらに明らかになるであろう。
本明細書において、簡素化された概要が提供され、より詳細な説明および添付の図面に続く例示の非制限的実施形態の種々の態様の、基本的または一般的な理解を可能にする助けとなる。しかし、この概要は広範囲または網羅的な概観として意図されない。その代わりに、この概要の唯一の目的は、いくつかの例示の非制限的実施形態に関するいくつかの概念を、後に続く種々の実施形態のより詳細な記載の前置きとして、簡素化された形式で表すことである。
列ベースデータの符号化の実施形態が記載される。種々の非限定的実施形態において、圧縮されるべき生データが列により組織化され、次に、データサイズ削減の第1および第2の層として、列により組織化されるように、辞書符号化および/または値符号化がデータに適用され、列に対応する整数のシーケンスが作成される。次に、圧縮の追加の層として、ハイブリッドランレングス符号化・ビットパッキングのアルゴリズムは、データをさらにコンパクトにすることが可能である。一実施形態において、ハイブリッドランレングス符号化・ビットパッキングでは、最大限の圧縮によるセービングが達成される列のランレングス符号化に対して有利に働く、所定のデータセットに対する反復圧縮分析に従って操作が行われる。この圧縮分析に従って、セービングが比較的重要でない場所では、例えば、ランレングス符号化が適用されなかった列の残りのデータセットの値が、お互いに比較的一意的である時は、ランレングス符号化は、使用されない。その代わり、そのような状況ではビットパッキングが使用される。
列ベース組織化を合わせたハイブリッドなデータ削減の技術のシナジーは、列ベースのコンパクトな表現に因るスキャンおよびクエリの効率における利得と相まって、従来のシステムの何分の一かのコストで、例えば、最速の既知の従来のシステムのコストの1/10より少ないコストで、400倍という率の速さの、かなり向上したデータ圧縮をもたらした。
これらおよび他の実施形態が、より詳細に以下に記載される。
種々の非限定的実施形態が、添付の図面を参照してさらに記載される。
列ベースの符号化技術および符号化されたデータ全体に渡るクエリのインメモリのクライアント側の処理を例示する概略的なブロック図である。 列ベースの符号化技術を採用する符号化装置の例示の非限定的な実装を例示するブロック図である。 列ベースの符号化を大規模なデータに適用するための例示の非限定的な処理を例示するフロー図である。 レコードがそのそれぞれのフィールドに分割され、同じタイプのフィールドがシリアル化されベクトルが形成される、生データの列ベースの表現を例示する図である。 レコードデータのカラム化を例示する非限定的ブロック図である。 クエリに関連して受け取られる列データのインメモリのクライアント側の処理の作業を、複数のコアの間で分けて、列組織全体に渡る大量の行を処理する負荷を共有させることができることを例示する図である。 辞書符号化の概念を例示する非限定的ブロック図である。 値符号化の概念を例示する非限定的ブロック図である。 ハイブリッドな圧縮技術の一態様に適用されるビットパッキングの概念を例示する非限定的ブロック図である。 ハイブリッドな圧縮技術の別の態様に適用されるランレングス符号化の概念を例示する非限定的ブロック図である。 列ベースの符号化技術を採用する符号化装置の例示の非限定的な実装を例示するブロック図である。 一実装に従って列ベースの符号化を大規模なデータに適用するための例示の非限定的な処理を例示するフロー図である。 代替の圧縮技術を適用するための閾値セービングのアルゴリズムを選択的に適用することを含んで、グリーディ(貪欲)なランレングス符号化圧縮のアルゴリズムを実行する方法を例示する図である。 代替の圧縮技術を適用するための閾値セービングのアルゴリズムを選択的に適用することが含んで、グリーディなランレングス符号化圧縮のアルゴリズムを実行する方法を例示する図である。 グリーディなランレングス符号化圧縮のアルゴリズムをさらに例示するブロック図である。 ハイブリッドランレングス符号化・ビットパッキング圧縮のアルゴリズムを例示するブロック図である。 トータルビットセービング分析に基づく異なるタイプの圧縮を適応的に提供する、ハイブリッドな圧縮技術の適用を例示するフロー図である。 主題開示の種々の実施形態に従って、データの全体のサイズを削減する、列ベースの符号化のサンプルの性能を例示するブロック図である。 純粋領域と非純粋領域の間での遷移に関して、列ベース符号化データに適用することが可能なバケット化処理を例示する図である。 一実施形態に従って、列のバケット化に関する非純粋のレベルを例示する図である。 クエリ/スキャン演算子を、現在のクエリ/スキャンに関する列に存在する異なるタイプのバケットに対応するサブ演算子に分割する効率的な分割を例示する図である。 得られる純粋バケットがデータの行の50%超を表す場所における、列ベース符号化の指数を例示する図である。 標準化された様式でデータ全体に渡ってクエリを指定するためのクエリ言語の例示の非限定的なクエリのビルディングブロックを例示する図である。 ネットワークを介して利用可能な大規模なデータ全体に渡る、消費側のクライアントデバイスにより要求されるサンプルクエリの代表的な処理を例示する図である。 様々な実施形態に従う、列に従ってデータを符号化する処理を例示するフロー図である。 1つまたは複数の実施形態に従う、整数のシーケンスをビットパッキングする処理を例示するフロー図である。 データの列ベース表現全体に渡ってクエリを行う処理を例示するフロー図である。 本明細書に記載される種々の実施形態が実装される、例示の非限定的なネットワーク化環境を表すブロック図である。 本明細書に記載される種々の実施形態の1つまたは複数の態様を実装可能な、例示の非限定的なコンピュータシステムまたは動作環境を表すブロック図である。
背景技術において検討したように、とりわけ、従来のシステムは、非常に大量のデータをサーバまたは「クラウド」内の他のデータストアからメモリに極めて速く読み込むという問題を、現在の圧縮技術についての制限、ネットワーク上の伝送帯域幅についての制限、およびローカルキャッシュメモリについての制限の為、適切に処理しない。例えば、1秒当たり1.5テラバイト相当のデータを読み込むことは、主要な高価な従来の解決法でもそのスピードの何分の一か(〜2.5Gb/秒)で動作する今日においては、非常な偉業であり桁違いのコストがかかる。
従って、種々の非限定的実施形態において、列指向の符号化技術が大量のデータに適用されて、データをコンパクトにし、同時にそのデータを組織化して、その後のデータ全体に渡るスキャン/検索/クエリの操作を大幅により効率的なものにする。以下に続くロードマップとしては、種々の実施形態の概要について最初に記載し、次に、例示の非限定的な選択的実装について、補足的なコンテキストおよび理解のためにより詳細に検討される。まず、大量のデータをパッキングするための列ベースの符号化技術について記載し、ハイブリッドな圧縮技術を介するランレングス符号化およびビットパッキングのパフォーマンス利益を適応的にトレードオフする例示の実施形態が含まれる。
例示の非限定的な一実施形態において、各列に対して1つ、生データを値のシーケンスの組にカラム化した後(例えば、列のデータのフィールドをシリアル化することであり、例えば、全ての姓を1つのシーケンスに、または、全ての注文書番号を別のシーケンスにするなど)、データは「整数化」されて、各列にする整数のシーケンスが形成され、シーケンスは、辞書符号化、値符号化、または辞書符号化および値符号化の両方に従って、どちらかの順番で均一に表される。この整数化の段階により、均一に表される列ベクトルが得られ、これ自体で大幅なセービングが、特に、テキスト文字列等の、長いフィールドがデータに記録される場所で、達成される。次に、全ての列を検査しながら、圧縮の段階ではランレングス符号化が列のランに繰り返し適用され、これにより列ベクトルの組全体に渡る全体のサイズの削減の量が最も高くなる。
以上のように、パッキング技術は、列ベースであり、優れた圧縮を提供するだけでなく、コンパクトにされた整数の列ベクトルが一旦クライアント側に配信されると、圧縮技術自体がデータを素早く処理する際の助けとなる。
種々の非限定的実施形態において、図1に示すように、列ベースエンコーダ/コンプレッサ110が提供され、大規模なデータストレージ100をコンパクトにし、かつ、その後のデータ全体に渡るスキャン/検索/クエリの操作を大幅により効率的なものにする。データ処理ゾーンC内のデータ消費側のデバイス120によるクエリに応答して、コンプレッサ110が、クエリに関係する圧縮された列を、データ伝送ゾーンBの伝送ネットワーク115を介して伝送する。データはインメモリストレージ130に配信され、従って、該当する列の解凍はデータ処理ゾーンC内のデコーダ・クエリプロセッサ140により高速で処理可能である。これに関して、バケット移動(bucket walking)が、効率的な処理で追加の層に対してなされるクエリに関連して、解凍された列により表される行に適用される。行との類似点が、バケット移動中に有効利用されて、繰り返しの動作が一緒に実行されるようにする。以下にさらに詳述するように、この技術が、標準のまたは196GbのRAMを有する汎用のサーバを用いて、大量のウェブトラフィックデータまたはトランザクションデータ等の実在のサンプルデータに適用されると、サーバのデータのクエリ/スキャンは、1秒当たりおよそ1.5テラバイトのデータの速さで達成され、これは従来のシステムの能力を桁はずれに上回り、ハードウェアのコストを大幅に減少させるものである。
圧縮可能な特定のデータタイプが任意の特定のデータタイプに限られるものではなく、かつ、莫大な量のデータの大規模なスキャンに依存する多数のシナリオが、同様に制限されるものではない一方、これらの技術を、リアルタイムのビジネス人工知能応用においてビジネスのデータまたはレコードに適用することの商業的重要性は、疑う余地が無い。リアルタイムの報告およびトレンド同定が、圧縮技術により達成されるクエリ処理のスピードにおける法外な利得により、全く新しい段階に入る。
<列ベースデータの符号化>
概要において触れたように、列指向の符号化および圧縮は、種々の実施形態において大量のデータに適用されて、データをコンパクトにし、同時に組織化して、その後のデータ全体に渡るスキャン/検索/クエリの操作を大幅により効率的なものにすることが可能である。種々の実施形態において、符号化および圧縮を開始するにあたって、生データは、最初に、データのカラム化されたストリームとして再組織化される。
エンコーダの一実施形態が、概して図2に示されるが、200にて生データがストレージから受け取られ、または読み込まれ、その時点で210にて符号化装置および/または符号化ソフトウェア250がデータを列として組織化する。220にて、列ストリームが均一のベクトル表現に変換される。例えば、整数符号化を、名前または住所等の地図的な個人の項目に適用して整数にすることが可能である。そのような整数符号化技術は、辞書符号化技術とすることができ、データを2倍から10倍削減することが可能である。加えて、または代替えとして、値符号化は、1倍から2倍のサイズ削減をさらに提供することが可能である。これにより、220にて各列は整数のベクトルとされる。そのような性能向上は、コンパクト化されているデータから敏感に影響を受け、従って、そのようなサイズ削減の範囲は、単に非制限的な予測として与えられ、異なる工程での相対的性能についての一般的な概念を与えるものである。
次に、230にて、符号化された均一な列ベクトルがさらにコンパクト化される。一実施形態において、ランレングス符号化技術を適用して、全ての列に渡って最も頻出する値すなわちある値の出現を判定し、その場合、その値のランレングスが定義され、かつ、処理は、ランレングス符号化による利得が限界になるポイントまで、例えば、整数値が列内で少なくとも64回の出現を繰り返すまで、繰り返される。
別の実施形態において、ランレングス符号化を適用することによるビットセービングが検査され、繰り返す処理の各工程において、ランレングスの並べ替えおよび定義の適用を介して最大限のビットセービングを達成する列が列の中ら選択される。言い換えれば、列をできるだけ少ないビットで表すことが目的であるため、各工程において、ビットセービングは、最大のセービングを提供する列において最大化される。これに関して、ランレングス符号化は、例えば、それ自体で100倍以上という、著しい圧縮向上を提供することが可能である。
別の実施形態において、230にて、ビットパッキングとランレングス符号化を組み合わせて採用するハイブリッドな圧縮技術が適用される。圧縮分析を適用して、2つの技術による潜在的なセービングを検査し、例えば、ランレングス符号化では正味のビットセービングが不十分であると思われる場所には、列ベクトルの残りの値に対してビットパッキングを適用する。従って、ランレングスセービングが、1つまたは複数の基準に従って最低であると判定されると、アルゴリズムは、列の残りの比較的一意的な値に対してビットパッキングに切替える。例えば、列内に表される値が比較的一意的になる場所には(一意的でない値または繰り返す値が既にランレングス符号化されている場所)、ランレングス符号化の代わりに、ビットパッキングをそれらの値に適用することができる。240にて、上述の技術に従って符号化および圧縮されるような列の値に対応する圧縮列のシーケンスの組が出力される。
図3は、上記の方法論を、生データ300の入力で開始されるフロー図に従って概して記載する。310にて、上述したように、従来のシステムのようなレコードの各フィールドを一緒に保持することとは対照的に、データが、生データ300の列に従って認識される。例えば、図4に示すように、各列は、シーケンスC401、C402、C403、C404、C405、C406等の独立したシーケンスを形成する。小売りのトランザクションデータがデータである場所では、例えば、列C401が製品の価格の文字列であり、列C402が仕入れの日付を表し、列C403が店舗立地を表す、などとすることができる。列ベースの組織は、コンピュータシステムにより収集されるほとんどの実在のデータが、表される値の観点からはそれほど多様ではないということを考慮すると、データ型において特有の類似性を保持する。320にて、列ベースデータは1つまたは複数の変換を施されて、均一に表される列ベースデータのシーケンスが形成される。一実施形態において、ステップ320では、辞書符号化および/または値符号化を介して、各列を削減しての整数のシーケンスのデータにする。
330にて、列ベースシーケンスは、ランレングス符号化処理および選択的にビットパッキングで、圧縮される。一実施形態において、ランレングス符号化処理は、全ての列の、列の列データ値のシーケンスを並べ替え、これにより最も高い圧縮によるセービングが達成される。従って、ランレングス符号化により最高の削減が達成される列は、並べ替えられて、ランレングス符号化により置き換えられている共有の値をグループ化し、次に、ランレングスが並べ替えられたグループに対して定義される。一実施形態において、ランレングス符号化のアルゴリズムが列全体に渡って繰り返し適用され、各列を各工程で検査して、最高の圧縮によるセービングを達成するであろう列を判定する。
ランレングス符号化を適用することによる利得が、1つまたは複数の基準に従うと限界または最小となり、例えば、ビットセービングが不十分であったり、削減が閾値より低くなると、その適用による利得が相応して低下する。その結果、アルゴリズムを停止させることが可能であり、または、各列におけるランレングス符号化により符号化されない残りの値に対してビットパッキングを適用して、それらの値のストレージの必要性をさらに減少させることができる。ハイブリッドランレングス符号化およびビットパッキングの技術は、組み合わせて、列のシーケンス、特に、シーケンス内に表される値の数が有限または制限される列のシーケンス、を強力に削減することが可能である。
例えば、「性別」のフィールドが、男および女という2つのフィールドの値のみを持つ。ランレングス符号化では、そのようなフィールドは、データが、上述のように生データの列ベース表現に従って符号化される限り、非常にシンプルに表すことができる。これは、背景技術において記載した行に注目する従来の技術が、実際には各レコードのフィールドを一緒に保持することにより、列データの共通点を断ち切るからである。「21」等の年齢の値の隣にある「男」は、単なる「男」または「女」という値の隣にある「男」という値と同じようには、圧縮されない。従って、データの列ベースの組織化は、効率的な圧縮を可能にし、かつ、処理の結果は、別個の、均一に表されコンパクト化される、データの列ベースシーケンスの組340となる。
図5は、実際のデータに基づくカラム化処理の例を与える。図5の例には、4つのデータレコード500、501、502および503があるが、これは例示の簡素化のためのものであり、本発明は数テラバイトのデータに適用可能である。一般的に言えば、トランザクションデータは、コンピュータシステムにより記録される時、レコードごとに記録され、かつ、一般的にはレコードを受け取る時の時間順で記録される。従って、データは実際には行を持ち、行は各レコードに対応する。
図5において、レコード500は、値「Jon」511を持つ名前フィールド510、値「555−1212」521を持つ電話番号フィールド520、値「jon@go」531を持つ電子メールフィールド530、値「2 1st St」541を持つ住所フィールド540、および、値「Wash」551を持つ州フィールド550、を有する。
レコード501は、値「Amy」512を持つ名前フィールド510、値「123−4567」522を持つ電話番号フィールド520、値「Amy@wo」532を持つ電子メールフィールド530、値「1 2nd Pl」542を持つ住所フィールド540、および、値「Mont」552を持つ州フィールド550、を有する。
レコード502は、値「Jimmy」513を持つ名前フィールド510、値「765−4321」523を持つ電話番号フィールド520、値「Jim@so」533を持つ電子メールフィールド530、値「9 Fly Rd」543を持つ住所フィールド540、および、値「Oreg」553を持つ州フィールド550、を有する。
レコード503は、値「Kim」514を持つ名前フィールド510、値「987−6543」524を持つ電話番号フィールド520、値「Kim@to」534を持つ電子メールフィールド530、値「91 Y St」544を持つ住所フィールド540、および、値「Miss」554を持つ州フィールド550、を有する。
行表現560が再組織化列表現570にカラム化される時、それぞれ5個のフィールドを有する4つのレコードを有する代わりに、5つの列がフィールドに対応して形成される。
従って、列1は、値「Jon」511、続いて値「Amy」512、続いて値「Jimmy」513、続いて値「Kim」514、を持つ名前フィールド510に対応する。同様に列2は、値「555−1212」521、続いて値「123−4567」522、続いて値「765−4321」523、続いて値「987−6543」524、を持つ電話番号フィールド520に対応する。列3は、値「jon@go」531、続いて値「Amy@wo」532、続いて値「Jim@so」533、続いて値「Kim@to」534、を持つ電子メールフィールド530に対応する。更には、列4は、値「2 1st St」541、続いて値「1 2nd Pl」542、続いて値「9 Fly Rd」543、続いて値「91 Y St」544、を持つ住所フィールド540に対応する。そして、列5は、値「Wash」551、続いて値「Mont」552、続いて値「Oreg」553、続いて値「Miss」554、を持つ州フィールド550に対応する。
一実施形態において、上述の技術に従って圧縮された列が、消費側のクライアントシステム上のメモリにロードされる時、データは各列C1、C2、C3、C4、C5、C6に渡って分割されて、セグメント600、602、604、606等を形成する。これに関して、各セグメントは数億以上の行を含むことができるため、例えば、クエリに従って、並列化によりデータの処理またはスキャンのスピードを向上させる。各セグメントの結果が集計されて結果の完全な組が形成され、一方、各セグメントが別個に処理される。
図7は、本明細書に記載される実施形態により採用されるような、辞書符号化の非限定的な例を例示するブロック図である。都市名の典型的な列700には、値「Seattle」、「Los Angeles」、「Redmond」等を含むことができ、そのような値はそれ自体が何度も繰り返される。辞書符号化では、符号化された列710には、それぞれの別個の値に対するシンボル、例えば、値ごとの一意的な整数、が含まれる。従って、テキスト「Seattle」が何度も表される代わりに、整数「1」が記憶され、よりコンパクトである。より頻繁に繰り返される値は、最もコンパクトな表現(最小ビット、ビットにおける最小変更、等)にマッピングで列挙可能である。値「Seattle」は、辞書720の一部としてさらに符号化に含まれるが、「Seattle」は何度もではなく、一度表されれば良い。符号化される列710のストレージセービングは、辞書720に関わる余分に必要なストレージを大きく上回る。
図8は、本明細書に記載される実施形態により採用されるような、値符号化の非限定的な例を例示するブロック図である。列800は、売上高を表し、浮動小数のストレージに関わる、小数を含む典型的なドルとセントの表現を含む。ストレージをよりコンパクトにするため、値符号化で符号化された列810では、浮動小数値の代わりに、より少ないビット数で記憶できる整数で値を表すために、それに10の倍数、例えば、10を掛ける。変換は、値を表す整数の数の削減にも同様に適用することができる。例えば、値が、ある列では、2,000,000、185,000,000等のように一貫して百万台で終わる場合、全て10で除算して、値を削減して2、185等のよりコンパクトな表現にすることができる。
図9は、本明細書に記載される実施形態により採用されるような、ビットパッキングの非限定的な例を例示するブロック図である。列900は、辞書符号化および/または値符号化により整数化されたような注文量を表すが、値の表現には一行あたり32ビットが予約されている。ビットパッキングでは、セグメント内の値に対して最小ビット数を使用することが努力される。本例では10ビット/行を使用して、590、110、680および320の値を表すことができ、ビットパッキングが適用された第1の層に対して大幅なセービングが表され、列910が形成される。
ビットパッキングはまた、共通の10(または他の数字)の累乗を削除して、第2のパッキング化列920を形成することが可能である。従って、例におけるように値が0で終わる場合、注文量を表すために使用される3ビット/行が必要ではなく、ストレージ構造を7ビット/行に減らすことができることを意味する。辞書符号化と同様に、10の何乗を使用するのかなどの、データを列900に復元するのに必要なメタデータによる任意のストレージの増加を、ビットセービングは大幅に上回る。
第3のパッキング化列930を形成するためのビットパッキングの別の層としては、68などの値を表すのに7ビット/行を要することは認識されるであろうが、最小の値は11であるため、範囲は11だけずらすことができ(各値から11を減じる)、従って、最高の数は68−11=57となり、これは6ビット/行で表すことが可能であるが、値の可能性が2=64であるためである。図9は、層をパッキングする特定の順番を表すが、層に対して異なる順番で実行することが可能であり、または、層のパッキングは、他の既知のビットパッキング技術で選択的に削除または補足することが可能である。
図10は、本明細書に記載される実施形態により採用されるような、ランレングス符号化の非限定的な例を例示するブロック図である。例示するように、注文の型を表す列1000等の列は、値が繰り返されているためランレングス符号化で効率的に符号化することが可能である。列の値のランテーブル1010は、注文の型を注文の型のランレングスにマッピングする。テーブル1010のメタデータの表現にわずかなばらつきは許容されるが、基本的な考え方は、ランレングス符号化ではランレングス「100」に対して50倍の圧縮が与えられることが可能であるということであり、これは、ビットパッキングが一般に同じデータセットに対して提供できる利得に勝る。
図11は、本明細書に提供される実施形態の概略的なブロック図であり、図7から10の技術が統合符号化・圧縮スキームの種々の実施形態に組み合わせられている。生データ1100は、列組織1110に従って列ストリームとして組織化される。辞書符号化1120および/または値符号化1130が、上述のようにそれぞれのサイズ削減を提供する。そして、ハイブリッドRLE・ビットパッキングの段階において、圧縮分析1140が、ランレングス符号化1150またはビットパッキング1160を適用するかどうかを判定する時に、列全体に渡って潜在的なビットセービングを検査する。
図11は、図12のフロー図でさらに詳しく説明される。1200にて、生データが特有の行表現に従って受け取られる。1210にて、データは列として再組織化される。1220にて、辞書符号化および/または値符号化が適用されて、1回目のデータの削減がなされる。1230にて、ハイブリッドRLE・ビットパッキング技術が、上述のように、適用される。1240にて、データの圧縮および符号化された列ベースシーケンスが記憶される。そして、クライアントがデータの圧縮符号化された列ベースシーケンスの全てまたはサブセットに対してクエリを行う時、1250にて、影響をうける列が要求クライアントに伝送される。
図13は、ハイブリッドな圧縮技術の圧縮分析を実行する例示の方法のブロック図である。例えば、ヒストグラム1310は、値の出現の頻度、または個々のランレングスの出現の頻度を表す、列1300から計算される。選択的に、閾値1312を設定し、ランレングスの利得が最小である、少ない回数の値の再出現には、ランレングス符号化が適用されないようにすることができる。あるいは、または加えて、ビットセービングヒストグラム1320は、値の出現の頻度だけでなく、ハイブリッド圧縮モデルの圧縮技術のどれか1つを適用することにより達成されるトータルビットセービングを表す。加えて、閾値1322を、再度、選択的に適用して、技術を適用してもランレングス符号化の利得が十分ではない場所に線引きすることができる。その代わりに、ビットパッキングを列のそのような値に適用することができる。
加えて、選択的に、列1300のランレングス符号化を適用する前に、列1300を並べ替えて、最も類似する値の全てを、並べ替えられた列1330としてグループ化することができる。本例において、これは、ランレングス符号化のためにAを一緒にグループ化すること、および、ビットパッキングのためにBを残すことを意味するが、頻度でもトータルビットセービングでも、2つのBという値のランレングス符号化が正当であるとはされないからである。これに関して、並べ替えを他の列に適用して、レコードデータを標準的な工程で保持すること、または、列特有のメタデータを介してランレングス符号化の並べ替えをどのように元に戻すのかを記憶させることができる。
図14は、圧縮分析が同様の列1400に適用される、同様の例を例示するが、ここでは、ランレングスの置き換えによるビットセービングが変更されて、今度は、ハイブリッドな圧縮分析に従うと、2つのBという値では正味のビットセービングがより高くなるため、10個のAという値の前でも、2つのBという値にランレングス符号化を実行することが正当であるとされる。この点において、上に盛られる料理が変化する異なる10枚の皿の中から選ぶ大食漢に良く似て、ランレングス符号化の適用は、各工程において全ての列に渡ってサイズの削減における最高の利得を繰り返し求めるという点で「グリーディ」である。図13と同様に、頻度のヒストグラム1410および/またはビットセービングヒストグラム1420のデータ構造は、上述のようにランレングス符号化を適用すべきか、またはビットパッキングをすべきかについて判定させるように構築することができる。また、選択的閾値1412および1422は、RLEまたはビットパッキングを続行するかどうかを判定する時に使用することができる。並べ替えられた列1430は、ランレングス符号化の補助となり、より長いランレングスを定義して、より大きなランレングスセービングを達成させることが可能である。
図15は、ランレングス符号化の「グリーディ」な態様を例示し、ここでは、各工程で最高のビットセービングが達成される場所が列全体に渡って検査され、選択的に、列を列1530、1532等に並べ替えてランレングスセービングを最大にすることができる。ある時点では、値が比較的一意的であるために、ランレングスセービングが比較的重要でない場合があり、その時点でランレングス符号化は停止される。
ハイブリッドな実施形態において、ビットパッキングが残りの値の範囲に適用され、これが図16に例示される。これに関して、ハイブリッドな圧縮技術を適用すると、並べ替えられた列1600には、RLE部1610およびビットパッキング部1620が含まれ、これらは一般にそれぞれ、繰り返す値および比較的一意的な値に対応する。同様に、並べ替えられた列1602には、RLE部1612およびBP部1622が含まれる。
図17に示す一実施形態において、ハイブリッドなアルゴリズムにより、1700にて、ビットパッキングによるビットセービングと、ランレングス符号化によるビットセービングが計算され、次に、1710にて、ビットパッキングによるビットセービングと、ランレングスによるビットセービングが比較され、または、1720にて、検査されて、ビットセービングを最大にする圧縮技術が判定される。
上述の符号化および圧縮の技術の例示の性能では十分な利得が例示され、これは実在のデータサンプル1801、1802、1803、1804、1805、1806、1806、1807および1808に対して達成可能であり、9倍から99.7倍程度の範囲の性能の向上があるが、これは、他の要因の中でも、特定の大規模なデータサンプル内において繰り返す値の相対量に依存する。
図19は、種々の実施形態において本明細書に記載される、カラム化、符号化および圧縮の処理の最終結果を示すブロック図である。これに関して、各列Cl、C2、C3、...、CNには、ランレングス符号化が適用された同種の繰り返す値を有する領域と、図面において「他の」または「他」と記される、列内に異種の値のグループを表す他の領域と、が含まれる。凡例で示すように、ランレングスにより定義される同種の繰り返す値を持つ領域は、純粋領域1920であり、多様な値を持つ領域は非純粋領域1910である。この点において、視線を列に沿って「下げる」と、本明細書で検討される圧縮技術の特有の利得として、データについての新しい見解が浮かび上がる。
全ての列に渡って、非純粋領域1910と純粋領域1920との間の、または逆の、最初の遷移の時点において、バケットは、第1の行から遷移時点の行までの行として定義される。これに関して、バケット1900は、点線で示されるような各遷移時点ごとに列を下って定義される。バケット1900は、遷移の間にある行により定義される。
図20は、特定の行に渡る純粋領域と非純粋領域の数に基づきバケットに対して定義される用語体系を示す。純粋バケット2000は、非純粋領域を持たない。シングル非純粋バケット2010は、バケットの行に渡って非純粋領域を1つ持つ。ダブル非純粋バケット2010は、バケットの行に渡って非純粋領域を2つ持つ。トリプル非純粋は3つ持つ等々である。
従って、例示のデータロード処理中、データは符号化され、圧縮され、後の効率的なクエリに適切な表現で記憶されて、圧縮技術には、セグメント内でのデータ分散を予期して、ビットパッキングよりもRLE圧縮を頻繁に使用しようとするものが使用される。これに関して、RLEは、圧縮とクエリの両方に以下の利点を提供する。(A)RLEは典型的には、必要とするストレージがビットパッキングより極めて少ない、(B)RLEには、「Group By」、「Filtering(フィルタリング)」および/または「Aggregation(集計)」のようなクエリビルディングブロック操作を実行しながら、データの範囲に渡って効率的に「速く進ませる」能力があり、そのような操作は、列として組織化されたデータに対する効率的な操作になるように、数学的に削減される。
種々の非限定的な実施形態において、1つの列セグメントを、同一セグメント内の別の列をソートする前の時点でソートする代わりに、圧縮アルゴリズムにより、行のデータがその配信に基づきクラスタ化され、このことがセグメント内でのRLEの使用を増加させる。本明細書において使用される場合、用語「バケット」は、行のクラスタを説明するために使用され、誤解を避けるために、用語「パーティション」とは異なるものとみなされるべきであり、明確に定義されたオンライン分析処理(OLAP)およびRDBMSのコンセプトである。
上記で検討した技術は、データ分散が偏っていること、かつ、大量のデータにおいては均一な分散はほとんど存在しないことが認識されているため、効果的である。圧縮の専門用語では、「算術符号化」がこのことを活用し、頻繁に使用される文字をより少ないビットで表し、あまり頻繁に使用されない文字をより多くのビットで表すことにより、全体としてより少ないビットを使用することを目的としている。
ビットパッキングでは、固定のサイズのデータ表現が、より速いランダムなアクセスのために利用される。しかし、本明細書に記載される圧縮技術には、RLEを使用する能力もあり、これにより、より頻度の高い値に対してより少ないビットを使用する方法が提供される。例えば、元のテーブル(簡単に例示するため、1つの列Col1が含まれる)が以下の通りである場合、
Figure 2011530234
圧縮後、Col1は以下のようになり、ランレングス符号化が適用される第1の部分と、ビットパッキングが適用される第2の部分に分けられる。
Figure 2011530234
上記から分かるように、最も共通する値である100の出現がRLE内に折り畳まれ、あまり頻繁に現れない値が、固定の幅のビットパッキングされたストレージにまだ記憶されている。
これに関して、データパッキングの上述の実施形態には、2つの別個のフェーズが含まれる:(1)バケット化を判定するためのデータ分析、および(2)バケット化されたレイアウトに従うセグメントデータの再組織化、である。これらはそれぞれ、以下で例示してさらに詳細に記載される。
バケット化を判定するためのデータ分析について、目的はRLEのセグメント内のデータをできるだけ多くカバーすることである。そのため、この処理は、「より厚い」列、すなわち、クエリ時により頻繁に使用されるであろう列ではなく、大きな濃度を有する列、に有利に働くように偏っている。利用ごとの最適化も適用される。
別の簡素な例として、例示の目的で、以下の小さなテーブルを使用する。実際には、そのような小さいテーブルは、一般的には上述の圧縮の範囲には含まれないが、それは、そのようなテーブルの圧縮による利得にはそれほど価値が無いためである。また、そのような小さなテーブルが、一般的には含まれないのは、圧縮が、符号化が実行された後に生じ、一実施形態においては、値そのものではなくデータ識別(ID)と共に連動するからである。従って行番号の列が例示のために追加される。
Figure 2011530234
列全体に渡って、バケット化処理が、セグメントデータにおいて最も大きな空間をとる1つの値を発見することにより開始される。図13および14に関連して上記で触れたように、これは、各列の1つのヒストグラムの統計値を使用して行われ、例えば、以下の通りである。
Figure 2011530234
この値が一度選択されると、セグメント内の行は論理的に記録され、この値の全ての出現が連続して生じるようにされ、RLEのランの長さが最大化される。
Figure 2011530234
一実施形態において、同一の行に属する全ての値は、各列セグメントにおいて同一のインデックスで存在し、例えば、col1[3]およびcol2[3]は両方とも第3の行に属する。これを確実にすることにより、同一の行内の値への効率的なランダムなアクセスが提供され、マッピングテーブルを介したそれぞれのアクセスに間接的であることによるコストがかからない。従って、グリーディなRLEアルゴリズム、またはハイブリッドRLE・ビットパッキングアルゴリズムの適用についての現在記載している実施形態において、1つの列に値を並び替える際、これは他の列セグメント内の値が同様に並び替えられることを意味する。
上記の例において、ここでは2つのバケット、{1,2,4,6,7}および{3,5}が存在する。以上のように、本明細書において適用されるRLEは、グリーディなアルゴリズムであり、これは、アルゴリズムが、各段階において大域的最適性を発見するという望みを持って、局所最適性を選択するという問題解決のメタヒューリスティックに従うということを意味する。最大のバケットを発見するという第1のフェーズの後、次のフェーズは、次に最大のバケットを選択し、そのバケット内で処理を繰り返すことである。
Figure 2011530234
今度は、3つのバケット{2,7}、{1,4,6}、{3,5}があり、行がそれに従って再組織化される。最大のバケットは、2番目のものであるが、そこには繰り返す値は無い。1番目のバケットは、全ての列がRLEのランを有し、残りの値が一意的であり、さらなるRLEの利得がCol1内には無いということが分かる。{3,5}バケットを考慮に入れると、別の値1231が存在し、これをRLEに変換することが可能である。興味深いことに、1231は、前のバケットにも現れており、そのバケットを並べ替えて、1231を一番下にして、次のバケットの先頭と統合させるようにすることが可能である。次の工程は以下のようになる。
Figure 2011530234
上記の例において、ここでは4つのバケット{2,7}、{6,4}、{1}、{3,5}が存在する。さらにデータを削減することはできないため、処理は、セグメントデータの再組織化という次のフェーズに進む。
例示では最上部で行を同様に並べ替えたが、性能上の理由で、バケットの判定は、各列セグメント内のデータを並べ替えるという動作から、純粋に統計に基づくことが可能である。各列セグメント内のデータを並べ替える動作では、ジョブスケジューラを使用して利用可能なコアに基づき並列化することが可能である。
以上のように、上述の技術を、小さなデータセット使用することは実用的ではない。顧客のデータセットでは、上述の技術は度々数万の工程を経るが、これには時間がかかり得る。アルゴリズムのグリーディな性質のため、空間のセービングの大半は、最初の数工程で生じる。最初の数千の工程において、セービングされるであろうほとんどの空間が、既にセービングされている。しかし、圧縮データのスキャン側では分かるように、パッキングされた列におけるRLEの存在により、クエリ時の大幅なパフォーマンスブーストが与えられ、わずかな圧縮の利得でさえもクエリ時の恩恵を受ける。
1つのセグメントは一度に処理されるため、複数のコアを使用して、データソースからセグメントへのデータの読み込みにかかる時間を、前のセグメントの圧縮にかかる時間に重複させることができる。従来の技術では、リレーショナルデータベースから10万行/秒のレートで読み込むと、800万行のセグメントには80秒かかり、これは、そのような作業で利用可能なかなりの時間量である。選択的に、一実施形態において、前のセグメントのパッキングは、次のセグメントのデータが利用可能になると停止させることができる。
<列ベースデータの符号化の処理>
以上のように、列ベースの符号化の種々の実施形態に従ってデータを組織化する方法は、それ自体が、データを消費する側において効率的なスキャンに適しており、そこでは、処理を、メモリ内の選択された数の列に対して非常に速く実行させることが可能である。上述のデータパッキングおよび圧縮の技術は、行の符号化時における圧縮のフェーズを更新し、一方で、スキャニングには、インテリジェント符号化を利用するクエリオプイティマイザ・プロセッサが含まれる。
スキャンまたはクエリの機構を使用して、ビジネスインテリジェンス(BI)のクエリに効率的に結果を戻すことが可能であり、また、スキャンまたはクエリの機構は、上述のデータパッキングおよび圧縮の技術により作られるクラスタ化されたレイアウトのために設計され、かつ、拡大するRLEの使用に対して最適化され、例えば、クエリ処理の間に、クエリに使用される有意な数の列がRLEを使用して圧縮されることが期待される。加えて、高速のスキャン処理により、列ストアへの行型のクエリプロセッサの代わりに、列指向のクエリエンジンが導入される。そのため、ビットパックデータ(RLEデータに対して)を含むバケットでも、データ局所性による性能の利得は、かなりものとなり得る。
上述のデータパッキングおよび圧縮の技術ならびに効率的なスキャニングを導入することに加えて、以下のことを、高度に効率的な様式でサポートすることができる。すなわち、クエリでの「OR」スライス、および、関係が指定されている複数のテーブル間での「Join」である。
上記で示唆したように、スキャニングの機構では、セグメントがセグメント全体に渡るバケットを含み、かつ、図19に示すように「純粋」なRLEのランまたは「非純粋」な他のビットパックストレージ内の列の値を含むこととされる。
一実施形態において、スキャニングは、セグメントにかけられ、キーは一度に1つのバケットに働く。バケット内では、スキャニング処理が、クエリ指定に応じて、列指向の処理を段階的に実行する。第1のフェーズは、どの列領域が純粋で、どの領域が非純粋であるかについて統計値を集めることである。次に、フィルタ処理が行われ、Group By操作、プロキシ列の処理、と続く。次に、集計処理が別のフェーズとして行われる。
上記で触れたように、本明細書に示されるスキャニングの実施形態では、従来のシステムのような行指向ではなく、列指向のクエリ処理が実装されることに留意すべきである。従って、これらのフェーズそれぞれに対して、実行される実際のコードは、(1)操作されている列がランレングス符号化されているか否か、(2)ビットパッキングに使用される圧縮のタイプ、(3)結果が薄いか濃いか、等に対して特定させることができる。Aggregation句については、追加的に(1)符号化のタイプ(ハッシュまたは値)、(2)集計関数(sum/min/max/count)等、が考慮される。
一般に、スキャニング処理は図21の形式に従い、種々の標準のクエリ/スキャン操作2100からのクエリの結果は全バケット行の関数である。クエリ/スキャン操作2100は、実際には数学的に分割可能であり、フィルタ、Group By、プロキシ列、および集計を、お互いに別々に段階的に処理することができる。
これに関して、処理工程のそれぞれについて、2110にて、演算子が、バケット移動処理に応じてバケットの異なる純粋度に従って処理される。その結果、全てのバケット行に対する一般化された高価なスキャンではなく、本明細書に記載される符号化および圧縮のアルゴリズムの働きによりもたらされた、異なるバケットに特化することで、その結果が、純粋バケット、シングル非純粋バケット、ダブル非純粋バケット等を処理した集約結果となる。
図24は、バケットのサンプルの分散および圧縮アーキテクチャの力を示し、純粋バケットに実行される処理が、処理の計算を削減して操作が簡素になったことにより最も早く、続いて、2番目に速いシングル非純粋バケットが続き、追加の非純粋バケットが同様に続く。さらに、驚くほど大量のバケットが純粋であることが分かる。例えば、図25に示すように、クエリに関連する6列について、各列が約90%の純粋度を有する場合(値の約90%の意味は、同様のデータによるランレングス符号化で表される)、約60%のバケットが純粋であり、約1/3がシングル非純粋、約8%がダブル非純粋であり、残りはほんの1%である。純粋バケットの処理が一番速く、かつ、シングル非純粋バケットおよびダブル非純粋バケットの処理もかなり速いため、3個またはそれ以上の非純粋領域を有するバケットの「より複雑な」処理が、最小限度に維持される。
図23は、サンプルクエリ2300を示し、サンプルの「filter by column」クエリビルディングブロック2302、サンプルの「Group by Column」クエリビルディングブロック2304、および、サンプルの「Aggregate by Column」クエリビルディングブロック2306等の、いくつかのサンプルの標準クエリビルディングブロックが示される。
図24は、列選択性を介した帯域幅削減の追加の態様を例示するブロック図である。サンプルクエリ2400を精査すると、全列2420のうちわずか6列2410のみが関係しており、従って、高度に効率的なクエリに対して6列のみがローカルRAMにロードされれば良いことが分かる。
種々の実施形態が本明細書に記載された。図25には、データ符号化の実施形態が例示され、2500にて、データの異なるデータフィールドに対応する値の列ベースシーケンスの組に従って、データを組織化することが含まれる。次に、2510にて、値の列ベースシーケンスの組が、辞書符号化および/または値符号化等の少なくとも1つの符号化アルゴリズムに従って、値の列ベースの整数シーケンスの組に変換される。次に、2520にて、列ベースの整数のシーケンスの組が、列ベースの整数のシーケンスの組全体に渡って適用されるグリーディなランレングス符号化アルゴリズム、またはビットパッキングアルゴリズム、または、ランレングス符号化とビットパッキングの組み合わせ、を含む少なくとも1つの圧縮アルゴリズムに従って、圧縮される。
一実施形態において、整数のシーケンスを分析して、ランレングス符号化(RLE)圧縮またはビットパッキング圧縮を適用するかどうかを判定するが、これには、ビットパッキング圧縮と比較したRLE圧縮のビットセービングを分析して、最大のビットセービングが達成される場所を判定することが含まれる。この処理には、ヒストグラムを生成して、最大のビットセービングが達成される場所の判定を支援することを含むことができる。
別の実施形態において、図26に示すように、ビットパッキング技術には、2600にて、列のデータを表す値の整数のシーケンスの一部を受け取ること、および、ビットパッキングによる潜在的な削減の3つの段階が含まれる。2610にて、データフィールドを表すのに必要なビット数に基づき、データを削減することができる。2620にて、整数のシーケンスの一部の値全体に渡って任意の共有される数値の累乗を削除することにより、データを削減することができる。2630にて、ある範囲に及ぶ整数のシーケンスの一部の値をオフセットすることにより、データを削減することもできる。
別の実施形態において、図27のフロー図に示すように、クエリに応答して、2700にて、データのサブセットを、そのデータの異なる列に対応する、値の整数の符号化・圧縮シーケンスとして検索する。次に、2710にて、処理バケットは、データのサブセットの値の整数の符号化・圧縮シーケンス内のいずれかで生じる圧縮タイプの変更に基づき、データのサブセット全体に及ぶものと定義される。次に、2720にて、クエリ操作は、効率的なクエリ処理のために、処理されている現在のバケットのタイプに基づき実行される。操作はメモリ内で実行され、マルチコアアーキテクチャで並列化することができる。
異なるバケットに含まれるものは、(1)純粋バケットを定義する、シーケンス全体に渡るバケット内の値の異なる部分が、ランレングス符号化圧縮に従って全て圧縮されている場所、(2)シングル非純粋バケットを定義する、ランレングス符号化に従って圧縮された1つの部分を除く全て、または、(3)ダブル非純粋バケットを定義する、ランレングス符号化に従って圧縮された2つの部分を除く全て、である。
改善されたスキャニングでは、様々な標準クエリおよびスキャン演算子を、特に最も純粋なバケットに対して、さらに効率的に実行することが可能にされる。例えば、論理ORクエリのスライス操作、関係が指定されている複数のテーブル間でのクエリのjoin操作、filter操作、Group By操作、プロキシ列操作、またはaggregation操作は全て、バケット移動の技術が適用され、かつ、処理がバケットタイプに基づき実行される場合は、より効率的に実行することができる。
<例示のネットワーク化分散環境>
当業者は、理解するであろうが、本明細書に記載される列ベースの符号化およびクエリ処理の種々の実施形態は、任意のコンピュータまたは他のクライアントデバイスもしくはサーバデバイスに関連して実装可能であり、これらはコンピュータネットワークの一部として、または、分散コンピュータ環境において展開可能であり、かつ、任意の種類のデータストアに接続可能である。これに関して、本明細書に記載される種々の実施形態は、任意の数のメモリまたは記憶装置、ならびに、任意の数のアプリケーションおよび任意の数の記憶装置に渡って起こる処理を有する、任意のコンピュータシステムまたは環境において実装可能である。これには、ネットワーク環境または分散コンピュータ環境において展開される、サーバコンピュータおよびクライアントコンピュータを有し、リモートまたはローカルなストレージを持つ環境、が含まれるが、これに限定されない。
分散コンピューティングでは、コンピュータデバイスおよびコンピュータシステムにおける通信可能な交換により、コンピュータリソースおよびサービスが共有される。これらのリソースおよびサービスには、情報の交換、キャッシュストレージ、および、ファイル等のオブジェクトのディスクストレージ、が含まれる。これらのリソースおよびサービスにはまた、ロードバランシング、リソースの拡大、処理の特化等のための、複数の処理ユニットに渡る処理能力の共有が含まれる。分散コンピューティングでは、ネットワーク接続性を利用して、クライアントの能力を集結させてクライアントに利用させ、企業に利益を与えることができる。これに関して、様々なデバイスが、主題開示の種々の実施形態のいずれかの1つまたは複数の態様を実行すべく協働することができるアプリケーション、オブジェクト、またはリソースを有することができる。
図28は、例示のネットワーク化または分散コンピュータ環境の概略ブロック図を提供する。分散コンピュータ環境には、コンピュータオブジェクト2810、2812、等、およびコンピュータオブジェクトまたはコンピュータデバイス2820、2822、2824、2826、2828等が含まれ、これには、アプリケーション2830、2832、2834、2836、2838により表されるような、プログラム、メソッド、データストア、プログラム可能論理等を含むことができる。オブジェクト2810、2812等およびコンピュータオブジェクトまたはコンピュータデバイス2820、2822、2824、2826、2828等は、PDA、音声/映像デバイス、携帯電話、MP3プレイヤ、パーソナルコンピュータ、ラップトップ等の異なるデバイスを含むことができることは理解できるであろう。
各オブジェクト2810、2812等、およびコンピュータオブジェクトまたはコンピュータデバイス2820、2822、2824、2826、2828等は、1つまたは複数の他のオブジェクト2810、2812等、およびコンピュータオブジェクトまたはコンピュータデバイス2820、2822、2824、2826、2828等と、通信ネットワーク2840を介して、直接または間接的に通信することができる。図28には1つの要素として例示されるが、ネットワーク2840は、図28のシステムにサービスを提供する他のコンピュータオブジェクトおよびコンピュータデバイスを含むことができ、および/または、図示されない、複数の相互接続するネットワークを表すことができる。各オブジェクト2810、2812等、または2820、2822、2824、2826、2828等はまた、アプリケーション2830、2832、2834、2836、2838等の、APIを使用することができるアプリケーション、または、主題開示の種々の実施形態に従って提供される列ベースの符号化およびクエリ処理の、通信、処理、または実装、に適切な他のオブジェクト、ソフトウェア、ファームウェアおよび/またはハードウェア、を含むこともできる。
分散コンピュータ環境を支援する、様々なシステム、コンポーネント、および、ネットワーク構成がある。例えば、コンピュータシステムは、ローカルネットワークまたは広く分散したネットワークで、有線または無線のシステムにより、一緒に接続することができる。現在、多くのネットワークがインターネットに連結され、インターネットにより、広く分散したコンピューティングにインフラストラクチャが提供され、かつ、多くの異なるネットワークが包含されるが、任意のネットワークインフラストラクチャを、種々の実施形態において記載されるような列ベースの符号化およびクエリ処理に付随する例示の通信に使用することが可能である。
従って、クライアント/サーバ、ピアツーピア、またはハイブリッドなアーキテクチャ等の、ネットワークトポロジとネットワークインフラストラクチャのホスト、を利用することが可能である。「クライアント」は、自身が関連しないクラスまたはグループのサービスを使用するクラスまたはグループの構成要素である。クライアントは、別のプログラムまたは処理により提供されるサービスを要求する、処理、すなわち、概略的には命令またはタスクの組とすることができる。クライアントの処理は、他のプログラムまたはサービスそのものについての任意の動作の詳細を「知る」必要なく、要求されたサービスを利用する。
クライアント/サーバアーキテクチャ、特に、ネットワーク化されたシステムにおいて、クライアントは、通常、別のコンピュータ、例えば、サーバ、により提供される、共有ネットワークリソースにアクセスするコンピュータである。図28の例示では、非限定的な例として、コンピュータ2820、2822、2824、2826、2828等が、クライアントであると考えられ、コンピュータ2810、2812等が、サーバであると考えられ、サーバ2810、2812等は、クライアントコンピュータ2820、2822、2824、2826、2828等からのデータの受信、データの記憶、データの処理、クライアントコンピュータ2820、2822、2824、2826、2828等へのデータの伝送、等のデータサービスを提供するが、任意のコンピュータを、状況に応じて、クライアント、サーバ、または両方と見なすことができる。これらのコンピュータデバイスの任意のものが、データの処理、データの符号化、データのクエリ、または、1つまたは複数の実施形態に対して本明細書に記載されるような列ベースの符号化およびクエリ処理に関わるサービスまたはタスクの要求、を行っている。
サーバは、典型的には、インターネットまたは無線ネットワークインフラストラクチャ等のリモートまたはローカルのネットワークを介してアクセス可能な、リモートコンピュータシステムである。クライアントの処理は、第1のコンピュータシステムにおいてアクティブとすることができ、かつ、サーバの処理は、第2のコンピュータシステムにおいてアクティブとすることができ、クライアントとサーバは通信媒体を介してお互いに通信し、従って、分散された機能性が提供され、複数のクライアントがサーバの情報収集能力を利用することが可能にされる。列ベースの符号化およびクエリ処理に従って利用される任意のソフトウェアオブジェクトを、スタンドアロンで提供すること、または、複数のコンピュータデバイスまたはコンピュータオブジェクトに渡って分散させることができる。
通信ネットワーク/バス2840がインターネットであるネットワーク環境において、例えば、サーバ2810、2812等は、クライアント2820、2822、2824、2826、2828等が、HTTP(hypertext transfer protocol)等の多くの既知のプロトコルのいずれかを介して通信する、ウェブサーバとすることができる。サーバ2810、2812等はまた、分散コンピュータ環境の特徴であるように、クライアント2820、2822、2824、2826、2828等として機能することもできる。
<例示のコンピュータデバイス>
以上のように、有利には、本明細書に記載される技術は、大量のデータを素早くクエリすることが望ましい任意のデバイスに適用することができる。従って、種々の実施形態に関連した使用に対して、すなわち、デバイスにより、速くかつ効率的な結果が得られるような膨大な量のデータのスキャンおよび処理が求められるどんな場合にでも、ハンドヘルド、携帯用、ならびに全ての種類の他のコンピュータデバイスおよびコンピュータオブジェクトが意図されることは理解すべきである。従って、以下で図29に記載される以下の汎用のリモートコンピュータは、まさにコンピュータデバイスの一例である。
要求されていないが、実施形態は、デバイスまたはオブジェクトのサービスの開発者による使用のために、オペレーティングシステムを介して部分的に実装可能であり、および/または、本明細書に記載される種々の実施形態の1つまたは複数の機能的態様を実行するよう作動するアプリケーションソフトウェア内に含ませることができる。ソフトウェアは、プログラムモジュール等のコンピュータ実行可能命令の一般的コンテキストで記述することができ、クライアントワークステーション、サーバ、または他のデバイス等の1つまたは複数のコンピュータにより実行される。当業者は理解するであろうが、コンピュータシステムは、データを通信するために使用することができる様々な構成およびプロトコルを有し、従って、特定の構成またはプロトコルは、制限するものとしてみなされない。
従って、図29は、本明細書に記載される実施形態の1つまたは態様を実装可能な、適切なコンピュータシステム環境2900の例を例示し、上記において明らかにされたように、コンピュータシステム環境2900は、適切なコンピュータ環境の単なる一例であり、使用または機能性の範囲について任意の制限を示唆することは意図されない。また、コンピュータ環境2900は、例示の動作環境2900に例示されるコンポーネントの任意の1つまたは組み合わせに関して、任意の依存性または要件を有するものとして解釈されるべきでもない。
図29を参照すると、1つまたは複数の実施形態を実装するための例示のリモートデバイスには、コンピュータ2910の形式で汎用コンピュータデバイスが含まれる。コンピュータ2910のコンポーネントには、プロセシングユニット2920、システムメモリ2930、および、システムメモリを含む種々のシステムコンポーネントをプロセシングユニット2920に連結させるシステムバス2922、を含むことができるがこれに限定されない。
コンピュータ2910は典型的には、様々なコンピュータ可読媒体が含まれ、コンピュータ2910によりアクセス可能な任意の利用可能な媒体とすることができる。システムメモリ2930には、ROM(read only memory)および/またはRAM(random access memory)等の揮発性および/または不揮発性のメモリの形式で、コンピュータ記憶媒体を含むことができる。制限ではなく例として、メモリ2930にはまた、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、およびプログラムデータを含むことができる。
ユーザは、コマンドおよび情報を、入力デバイス2940を介してコンピュータ2910に入力することができる。モニタまたは他のタイプの表示デバイスもまた、出力インターフェース2950等のインターフェースを介してシステムバス2922に連結させることができる。モニタに加えて、コンピュータにはまた、スピーカおよびプリンタ等の他の周辺出力デバイスを含むこともでき、これらは出力インターフェース2950を介して接続させることができる。
コンピュータ2910は、リモートコンピュータ2970等の1つまたは複数の他のリモートコンピュータへの論理接続を使用して、ネットワーク化されたまたは分散環境において作動することができる。リモートコンピュータ2970は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスもしくは他の共通ネットワークノード、または任意の他のリモート媒体の消費デバイスもしくは伝送デバイス、とすることができ、かつ、コンピュータ2910に関して上記で記載した任意または全ての要素を含むことができる。図29に示す論理接続には、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)等のネットワーク2972が含まれるが、他のネットワーク/バスを含むこともできる。そのようなネットワーキング環境は、家庭、事務所、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいては一般的なものである。
上記で触れたように、例示の実施形態が、種々のコンピュータデバイスおよびネットワークアーキテクチャと関連して記載されたが、根底にある概念は、大規模なデータを圧縮することまたは大規模なデータに渡ってクエリを処理することが望ましい、任意のネットワークシステム、および任意のコンピュータデバイスまたはシステムに適用することができる。
また、同一または同様の機能性を実装するための複数の方法があり、例えば、適切なAPI、ツールキット、ドライバコード、オペレーティングシステム、コントロール、スタンドアロンまたはダウンロード可能なソフトウェアオブジェクト等があり、これらは、アプリケーションおよびサービスが効率的な符号化およびクエリの技術を使用することを可能にする。従って、本明細書の実施形態は、API(または他のソフトウェアオブジェクト)の観点から考えられ、また、列ベース符号化および/またはクエリ処理を提供するソフトウェアオブジェクトまたはハードウェアオブジェクトの観点からも同様に考えられる。従って、本明細書に記載される種々の実施形態は、全体的にハードウェアにおける態様、部分的にハードウェアかつ部分的にソフトウェアにおける態様、また同様にソフトウェアにおける態様、を有することができる。
「例示の」という単語は、本明細書において使用されて、例、事例、または例示としての役割を意味する。誤解を避けるために、本明細書に開示される主題は、そのような例によって制限されない。加えて、本明細書において「例示の」と記載される任意の態様または設計は、必ずしも他の態様または設計より好ましいまたは有利であるとは解釈されず、また、当業者に既知の同等の例示の構造および技術を排除することも意味されない。さらに、用語「含む」「有する」「含有する」および他の同様の単語が「発明を実施するための形態」または「請求の範囲」において使用される範囲で、誤解を避けるために、そのような用語が、任意の追加のまたは他の要素を排除せずに、公の遷移語としての用語「備える」と同様の様式で、包括的であることが意図される。
以上のように、本明細書に記載される種々の技術は、ハードウェアまたはソフトウェアと関連して実装することができ、または、適切な場合には、その両方の組み合わせと関連して実装することができる。本明細書で使用される時、用語「コンポーネント」「システム」等は同様に、コンピュータ関連のエンティティ、あるいは、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェア、に言及していることが意図される。例えば、コンポーネントは、プロセッサ上で稼働中の処理、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および/またはコンピュータとすることができるがこれに限定されない。例示として、コンピュータ上で実行中のアプリケーションとそのコンピュータの両方を、コンポーネントであるとすることができる。1つまたは複数のコンポーネントが、処理および/または実行のスレッド内に存在することができ、かつ、コンポーネントは、1つのコンピュータ上に配置、および/または、2つまたはそれ以上のコンピュータ間で分散されることが可能である。
前述のシステムは、いくつかのコンポーネント間の相互作用に関して記載された。理解されるであろうが、そのようなシステムおよびコンポーネントには、それらのコンポーネントまたは特定のサブコンポーネント、特定のコンポーネントまたはサブコンポーネントの内のいくつか、および/または、追加のコンポーネントを含むことができ、かつ、前述したものの種々の置き換えおよび組み合わせによる。サブコンポーネントはまた、親のコンポーネント(階層的な)内に含まれるのではなく、他のコンポーネントに通信可能に連結されるコンポーネントとして実装することもできる。加えて、1つまたは複数のコンポーネントが、集計機能を提供する単一のコンポーネントに組み合わされる、または、いくつかの別個のサブコンポーネントに分割されることもできること、また、任意の1つまたは複数の管理層等の中間層を提供して、統合された機能性を提供するためにそのようなサブコンポーネントと通信可能に連結させることができること、に留意すべきである。本明細書に記載される任意のコンポーネントはまた、本明細書に特には記載されないが、当業者には一般に既知である、1つまたは複数の他のコンポーネントと相互作用することができる。
上記に記載した例示のシステムを考慮して、記載される主題に従って実装される方法論は、種々の図面のフローチャートを参照することにより、より良く理解されるであろう。説明を簡単にする目的で、方法論が一連のブロックで示され記載されるが、請求される主題はブロックの順番により制限されず、いくつかのブロックが本明細書に示されかつ記載されるものとは異なる順番で、および/または他のブロックと同時に生じることがあることは、理解されるべきである。順次的でないまたは分岐したフローが、フローチャートを介して例示される場合、種々の他の分岐、フロー経路、およびブロックの順番が実装されて、それにより同一のまたは同様の結果が達成されるということが理解されるであろう。さらに、以下に記載される方法論の実装には、必ずしも例示される全てのブロックが必要とされるわけではない。
本明細書に記載される種々の実施形態に加えて、他の同様の実施形態を使用することが可能であり、または修正および追加が記載される実施形態に対してなされ、対応する実施形態から逸脱することなくそれと同一または同等の機能を実行することが可能であることは理解されるべきである。またさらに、複数の処理チップまたは複数のデバイスは、本明細書に記載される1つまたは複数の機能の性能を共有することが可能であり、かつ、同様に、ストレージが複数のデバイスに渡って達成され得る。従って、本発明は、任意の単一の実施形態に限定されるべきではなく、むしろ、添付の請求項に従う広さ、精神および範囲で解釈されるべきである。

Claims (20)

  1. データを符号化する方法であって、
    データの異なるデータフィールドに対応する値の列ベースシーケンスの組に従って、前記データを組織化するステップ210と、
    少なくとも1つの符号化アルゴリズムに従って、前記値の列ベースシーケンスの組を、値の列ベースの整数シーケンスの組に変換するステップ220と、
    少なくとも1つの圧縮アルゴリズムに従って、前記列ベースの整数のシーケンスの組を圧縮するステップ230と
    を含むことを特徴とする方法。
  2. 前記変換するステップ220が、データフィールドを整数値にマッピングする辞書符号化を介して、前記列ベースシーケンスの組を符号化するステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記変換するステップ220が、可逆的数学関数を前記データフィールドに適用してより少ないビットを使用して前記データフィールドを表す値符号化を介して、前記列ベースシーケンスの組を符号化するステップを含むことを特徴とする請求項2に記載の方法。
  4. 前記圧縮するステップ230が、各符号化のステップにおいて最大のビットセービングが達成される場所に適用される、グリーディなランレングス符号化アルゴリズムで、圧縮するステップを含むことを特徴とする請求項1に記載の方法。
  5. 前記圧縮するステップ230が、ヒストグラムを生成して前記最大のビットセービングが達成される場所の判定を支援するステップを含むことを特徴とする請求項4に記載の方法。
  6. 前記圧縮するステップ230が、各圧縮のステップにおいてビットセービングを最大にしようと試みる少なくとも1つのグリーディな圧縮アルゴリズムに従って、前記列ベースの整数のシーケンスを圧縮するステップを含むことを特徴とする請求項1に記載の方法。
  7. データを符号化する方法であって、
    データを値の整数のシーケンスに変換するステップ1220であって、各整数のシーケンスが前記データの異なる列の値を順次表す、ステップと、
    前記整数のシーケンスを分析して、ランレングス符号化(RLE)圧縮またはビットパッキング圧縮を適用するかどうかを判定するステップ1710であって、ビットパッキング圧縮と比較したRLE圧縮のビットセービングを分析して最大のビットセービングが達成される場所を判定するステップが含まれる、ステップと
    を含むことを特徴とする方法。
  8. 前記分析するステップに従って、前記最大のビットセービングが達成される場所で、データを圧縮するステップ1720をさらに含むことを特徴とする請求項7に記載の方法。
  9. 前記分析するステップ1710および前記圧縮するステップ1720を繰り返し実行して、前記最大のビットセービングが達成される各ステップにおいて、圧縮を実行するステップをさらに含むことを特徴とする請求項8に記載の方法。
  10. 前記分析するステップ1710が、前記整数のシーケンスの任意の部分のランレングス符号化圧縮から閾値セービングが得られるかどうか、を判定するステップを含むことを特徴とする請求項7に記載の方法。
  11. 前記整数のシーケンスの任意の部分のランレングス符号化圧縮から前記閾値セービングが得られない場合、ビットパッキング圧縮1720を適用することを特徴とする請求項10に記載の方法。
  12. データを符号化する方法であって、
    データを値の整数のシーケンスに変換するステップ2510であって、各整数のシーケンスが前記データの異なるフィールドの値を順次表す、ステップと、
    前記整数のシーケンスを分析して、ランレングス符号化(RLE)圧縮またはビットパッキング圧縮を適用するかどうかを判定するステップ2520であって、列全体に渡って定義されるグループに対するビットパッキング圧縮と比較したRLE圧縮のビットセービングを分析するステップが含まれ、分析するステップには、前記整数のシーケンスの値に対してヒストグラムを生成して最大のビットセービングを優先させるステップが含まれる、ステップと
    を含むことを特徴とする方法。
  13. 受け取られた生データを、前記生データの異なるフィールドまたは列に対応するシリアル化された値の組として組織化して、データのカラム化されたシーケンスを形成するための、組織化コンポーネント1110と、
    辞書符号化または値符号化の少なくとも1つを実行して、前記データのカラム化されたシーケンスを整数のシーケンスとして均一に表す、データ符号化コンポーネント1120または1130と、
    どの整数シーケンスのどの部分に次に圧縮を実行するか、および、圧縮を、繰り返される値をランとして表すランレングス符号化(RLE)で、または、一部分を表すために使用されるビット数を最小化することを試みるビットパッキングアルゴリズムで、実行するかどうかを判定し、前記整数のシーケンスに対して定義される各部分に、ビットパッキングに対するRLEの性能測定基準を分析することを含む、圧縮コンポーネント1140と
    を含むことを特徴とするエンコーダ。
  14. 前記圧縮コンポーネント1140は、RLEを実行する時に列を並べ替えることを特徴とする請求項13に記載のエンコーダ。
  15. 値符号化を実行する前記データ符号化コンポーネント1130は、各データフィールド内の繰り返される数字を除去することにより前記整数のシーケンスを削減すること、または、数学関数を介して浮動小数値を整数値に変換することにより前記整数のシーケンスを削減すること、の少なくとも一方を行うことを特徴とする請求項13に記載のエンコーダ。
  16. データを符号化する方法であって、
    データの列を表す値の整数のシーケンスの少なくとも一部を受け取るステップ2600と、
    前記整数のシーケンスの前記少なくとも一部に使用する最小ビット数を判定することに基づき、各整数を表すのに使用するビット数を削減するステップ2610と、
    前記整数のシーケンスの前記少なくとも一部の値全体に渡って任意の共有される数値の累乗を削除するステップ2620と、
    ある範囲に及ぶ前記整数のシーケンスの前記少なくとも一部の値をオフセットするステップ2630であって、ビット数を削減するステップをさらに含む、ステップと
    を含むことを特徴とする方法。
  17. ランレングス符号化の適用によるトータルビットセービングが、ビットパッキングの適用によるトータルビットセービングを超える場所に、代替えとしてランレングス符号化を実行するステップ1710をさらに含むことを特徴とする請求項16に記載の方法。
  18. ランレングス符号化の適用によるトータルビットセービングが、ビットパッキングの適用による閾値トータルビットセービングを超える場所に、代替えとしてランレングス符号化を実行するステップ1710をさらに含むことを特徴とする請求項16に記載の方法。
  19. 請求項16の方法を実行するコンピュータ実行可能命令を含むコンピュータ可読媒体。
  20. 請求項16の方法を実行する手段を備える符号化装置。
JP2011521368A 2008-07-31 2009-07-31 大規模なデータストレージのための効率的な列ベースデータの符号化 Expired - Fee Related JP5466232B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8502308P 2008-07-31 2008-07-31
US61/085,023 2008-07-31
US12/270,873 2008-11-14
US12/270,873 US8108361B2 (en) 2008-07-31 2008-11-14 Efficient column based data encoding for large-scale data storage
PCT/US2009/052491 WO2010014956A2 (en) 2008-07-31 2009-07-31 Efficient column based data encoding for large-scale data storage

Publications (3)

Publication Number Publication Date
JP2011530234A true JP2011530234A (ja) 2011-12-15
JP2011530234A5 JP2011530234A5 (ja) 2012-09-13
JP5466232B2 JP5466232B2 (ja) 2014-04-09

Family

ID=41609388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011521368A Expired - Fee Related JP5466232B2 (ja) 2008-07-31 2009-07-31 大規模なデータストレージのための効率的な列ベースデータの符号化

Country Status (5)

Country Link
US (2) US8108361B2 (ja)
EP (1) EP2321719A4 (ja)
JP (1) JP5466232B2 (ja)
CN (1) CN102112962A (ja)
WO (1) WO2010014956A2 (ja)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013137070A1 (ja) * 2012-03-13 2013-09-19 日本電気株式会社 ログ圧縮システム、ログ圧縮方法、及びプログラム
WO2013175909A1 (ja) * 2012-05-25 2013-11-28 クラリオン株式会社 データ解凍/圧縮装置
JP2013246835A (ja) * 2012-05-29 2013-12-09 Sap Ag データウェアハウスモデルからインメモリモデルを生成するためのシステムおよび方法
JP2014016983A (ja) * 2012-04-30 2014-01-30 Sap Ag 部分的マージ
JP2014186457A (ja) * 2013-03-22 2014-10-02 Kddi Corp データ構造化方法、データ再構成方法、データ構造化プログラム、データ再構成プログラム及びデータ符号化装置
JP2015118455A (ja) * 2013-12-17 2015-06-25 日本電気株式会社 行列圧縮装置、制御方法、及びプログラム
JP2018060444A (ja) * 2016-10-07 2018-04-12 富士通株式会社 符号化プログラム、符号化方法および符号化装置
JP2018156233A (ja) * 2017-03-16 2018-10-04 ヤフー株式会社 データ管理装置、データ管理方法、およびプログラム
JP2018182466A (ja) * 2017-04-07 2018-11-15 富士通株式会社 符号化プログラム、符号化方法および符号化装置
JP2018180645A (ja) * 2017-04-04 2018-11-15 富士通株式会社 データ処理プログラム、データ処理方法およびデータ処理装置
JP2020021177A (ja) * 2018-07-30 2020-02-06 富士通株式会社 情報処理装置、分散処理システム、および分散処理プログラム
WO2021140867A1 (ja) * 2020-01-10 2021-07-15 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
JP2022523909A (ja) * 2019-03-15 2022-04-27 インテル・コーポレーション マルチタイルメモリ管理
US12056059B2 (en) 2019-03-15 2024-08-06 Intel Corporation Systems and methods for cache optimization
US12141578B2 (en) 2017-04-28 2024-11-12 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
US12175252B2 (en) 2017-04-24 2024-12-24 Intel Corporation Concurrent multi-datatype execution within a processing resource
US12198222B2 (en) 2019-03-15 2025-01-14 Intel Corporation Architecture for block sparse operations on a systolic array
US12361600B2 (en) 2019-11-15 2025-07-15 Intel Corporation Systolic arithmetic on sparse data
US12493922B2 (en) 2019-11-15 2025-12-09 Intel Corporation Graphics processing unit processing and caching improvements
US12554674B2 (en) 2024-10-15 2026-02-17 Intel Corporation Multi-tile memory management

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9460064B2 (en) * 2006-05-18 2016-10-04 Oracle International Corporation Efficient piece-wise updates of binary encoded XML data
US7801852B2 (en) * 2007-07-31 2010-09-21 Oracle International Corporation Checkpoint-free in log mining for distributed information sharing
US8108401B2 (en) * 2008-03-28 2012-01-31 International Business Machines Corporation Applying various hash methods used in conjunction with a query with a group by clause
US8108361B2 (en) 2008-07-31 2012-01-31 Microsoft Corporation Efficient column based data encoding for large-scale data storage
US8099440B2 (en) * 2008-08-15 2012-01-17 International Business Machines Corporation Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering
US9230002B2 (en) * 2009-01-30 2016-01-05 Oracle International Corporation High performant information sharing and replication for single-publisher and multiple-subscriber configuration
US8370326B2 (en) * 2009-03-24 2013-02-05 International Business Machines Corporation System and method for parallel computation of frequency histograms on joined tables
US8356060B2 (en) 2009-04-30 2013-01-15 Oracle International Corporation Compression analyzer
US8645337B2 (en) * 2009-04-30 2014-02-04 Oracle International Corporation Storing compression units in relational tables
US8935223B2 (en) * 2009-04-30 2015-01-13 Oracle International Corporation Structure of hierarchical compressed data structure for tabular data
US8452755B1 (en) 2009-05-12 2013-05-28 Microstrategy Incorporated Database query analysis technology
US8577902B1 (en) * 2009-05-12 2013-11-05 Microstrategy Incorporated Data organization and indexing related technology
US8296517B2 (en) 2009-08-19 2012-10-23 Oracle International Corporation Database operation-aware striping technique
US9262330B2 (en) * 2009-11-04 2016-02-16 Microsoft Technology Licensing, Llc Column oriented in-memory page caching
US8832142B2 (en) * 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US8255372B2 (en) 2010-01-18 2012-08-28 Oracle International Corporation Efficient validation of binary XML data
US20110264667A1 (en) * 2010-04-27 2011-10-27 Stavros Harizopoulos Column-oriented storage in a row-oriented database management system
US8751687B2 (en) * 2010-04-30 2014-06-10 Microsoft Corporation Efficient encoding of structured data
US8442988B2 (en) 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
US8868512B2 (en) * 2011-01-14 2014-10-21 Sap Se Logging scheme for column-oriented in-memory databases
US9720927B2 (en) * 2011-07-12 2017-08-01 The Board Of Trustees Of The Leland Stanford Junior University Method and system for database storage management
US10756759B2 (en) * 2011-09-02 2020-08-25 Oracle International Corporation Column domain dictionary compression
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US8572131B2 (en) 2011-12-08 2013-10-29 Oracle International Corporation Techniques for more efficient usage of memory-to-CPU bandwidth
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9862892B2 (en) * 2012-02-21 2018-01-09 Battelle Memorial Institute Heavy fossil hydrocarbon conversion and upgrading using radio-frequency or microwave energy
US9171020B2 (en) 2012-04-30 2015-10-27 Sap Se Deleting records in a multi-level storage architecture
US10162766B2 (en) 2012-04-30 2018-12-25 Sap Se Deleting records in a multi-level storage architecture without record locks
US11010415B2 (en) * 2012-04-30 2021-05-18 Sap Se Fixed string dictionary
US9165010B2 (en) 2012-04-30 2015-10-20 Sap Se Logless atomic data movement
US9465844B2 (en) 2012-04-30 2016-10-11 Sap Se Unified table query processing
CN102737132A (zh) * 2012-06-25 2012-10-17 天津神舟通用数据技术有限公司 基于数据库行列混合存储的多规则复合压缩方法
US8756208B2 (en) 2012-07-10 2014-06-17 International Business Machines Corporation Encoded data processing
EP2701077A1 (en) * 2012-08-24 2014-02-26 Software AG Method and system for storing tabular data in a memory-efficient manner
US8812523B2 (en) 2012-09-28 2014-08-19 Oracle International Corporation Predicate result cache
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9245353B2 (en) * 2012-10-22 2016-01-26 Gurulogic Microsystems Oy Encoder, decoder and method
GB2507603B (en) * 2013-03-01 2014-10-01 Gurulogic Microsystems Oy Data encoder, data decoder and method
US9286336B2 (en) 2013-03-12 2016-03-15 Sap Se Unified architecture for hybrid database storage using fragments
US9646053B2 (en) * 2013-03-12 2017-05-09 Oracle International Corporation OLTP compression of wide tables
US9679084B2 (en) 2013-03-14 2017-06-13 Oracle International Corporation Memory sharing across distributed nodes
US10929501B2 (en) * 2013-08-08 2021-02-23 Sap Se Managing and querying spatial point data in column stores
CN103473276B (zh) * 2013-08-26 2017-08-25 广东电网公司电力调度控制中心 超大型数据存储方法、分布式数据库系统及其检索方法
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US8933829B2 (en) 2013-09-23 2015-01-13 International Business Machines Corporation Data compression using dictionary encoding
US9535983B2 (en) * 2013-10-29 2017-01-03 Microsoft Technology Licensing, Llc Text sample entry group formulation
US9977801B2 (en) 2013-11-21 2018-05-22 Sap Se Paged column dictionary
US9977802B2 (en) 2013-11-21 2018-05-22 Sap Se Large string access and storage
US9495466B2 (en) 2013-11-27 2016-11-15 Oracle International Corporation LIDAR model with hybrid-columnar format and no indexes for spatial searches
US9336196B2 (en) * 2013-12-06 2016-05-10 Sap Se Methods, systems, and apparatus for optimization using statistical estimation
US10713585B2 (en) * 2013-12-16 2020-07-14 Google Llc Using template exploration for large-scale machine learning
US10235377B2 (en) * 2013-12-23 2019-03-19 Sap Se Adaptive dictionary compression/decompression for column-store databases
US9608664B2 (en) * 2013-12-30 2017-03-28 International Business Machines Corporation Compression of integer data using a common divisor
US20150207742A1 (en) * 2014-01-22 2015-07-23 Wipro Limited Methods for optimizing data for transmission and devices thereof
US9870382B2 (en) 2014-03-25 2018-01-16 Sap Se Data encoding and corresponding data structure
JP6287441B2 (ja) * 2014-03-26 2018-03-07 日本電気株式会社 データベース装置
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications
US9628107B2 (en) 2014-04-07 2017-04-18 International Business Machines Corporation Compression of floating-point data by identifying a previous loss of precision
US9798727B2 (en) * 2014-05-27 2017-10-24 International Business Machines Corporation Reordering of database records for improved compression
US9734176B2 (en) * 2014-06-12 2017-08-15 International Business Machines Corporation Index merge ordering
US9928267B2 (en) * 2014-06-13 2018-03-27 International Business Machines Corporation Hierarchical database compression and query processing
US9720946B2 (en) * 2014-06-19 2017-08-01 Microsoft Technology Licensing, Llc Efficient storage of related sparse data in a search index
US10726005B2 (en) * 2014-06-25 2020-07-28 Sap Se Virtual split dictionary for search optimization
US10089342B2 (en) * 2014-07-10 2018-10-02 Sap Se Main memory database management using page index vectors
US9350384B2 (en) 2014-09-30 2016-05-24 International Business Machines Corporation Hierarchical data compression and computation
US10747737B2 (en) * 2014-11-25 2020-08-18 Sap Se Altering data type of a column in a database
US9959299B2 (en) 2014-12-02 2018-05-01 International Business Machines Corporation Compression-aware partial sort of streaming columnar data
US10909078B2 (en) 2015-02-25 2021-02-02 International Business Machines Corporation Query predicate evaluation and computation for hierarchically compressed data
EP3271840B1 (en) 2015-05-07 2019-02-27 Cloudera, Inc. Mutations in a column store
US10073885B2 (en) 2015-05-29 2018-09-11 Oracle International Corporation Optimizer statistics and cost model for in-memory tables
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
CN106557416B (zh) * 2015-09-28 2019-03-08 百度在线网络技术(北京)有限公司 软件云测试的实现方法和装置
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10055358B2 (en) * 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US9720602B1 (en) 2016-06-01 2017-08-01 International Business Machines Corporation Data transfers in columnar data systems
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
JP6336524B2 (ja) * 2016-07-25 2018-06-06 株式会社高速屋 データ圧縮符号化方法、その装置、及び、そのプログラム
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
CN108513146A (zh) * 2017-02-27 2018-09-07 晨星半导体股份有限公司 收视记录处理电路与相关方法
US11281641B1 (en) * 2017-05-23 2022-03-22 Amazon Technologies, Inc. Evaluating encoding history for late encoding binding of data
US11169995B2 (en) * 2017-11-21 2021-11-09 Oracle International Corporation Relational dictionaries
US10452547B2 (en) 2017-12-29 2019-10-22 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10467139B2 (en) 2017-12-29 2019-11-05 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US11468024B2 (en) * 2018-03-27 2022-10-11 Sap Se Structural data matching using neural network encoders
US11030149B2 (en) * 2018-09-06 2021-06-08 Sap Se File format for accessing data quickly and efficiently
US10725911B2 (en) * 2018-12-10 2020-07-28 Sap Se Non-Uniform pagination of columnar data
US11403367B2 (en) 2019-09-12 2022-08-02 Oracle International Corporation Techniques for solving the spherical point-in-polygon problem
CN111008230B (zh) * 2019-11-22 2023-08-04 远景智能国际私人投资有限公司 数据存储方法、装置、计算机设备及存储介质
US11252027B2 (en) * 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US12248449B2 (en) * 2021-06-11 2025-03-11 Actian Corporation Method and apparatus for storing object tokens in a database
CN113656400B (zh) * 2021-07-08 2024-02-27 上海二三四五网络科技有限公司 一种特征数据的编码方法及装置
US11818191B1 (en) * 2021-11-11 2023-11-14 Two Six Labs, LLC Stateless lossless compression
CN114782148B (zh) * 2022-06-16 2022-09-02 青岛农村商业银行股份有限公司 农产品收购管理平台及其业务数据压缩方法
CN115955569B (zh) * 2023-03-14 2023-05-23 海伦市动物防疫检疫中心 一种用于动物防疫检疫中心的监控视频数据传输方法
US12229168B2 (en) * 2023-05-05 2025-02-18 Microsoft Technology Licensing, Llc Reading compressed data directly into an in-memory store
WO2024233149A1 (en) * 2023-05-05 2024-11-14 Microsoft Technology Licensing, Llc Reading compressed data directly into an in-memory store
CN116303374B (zh) * 2023-05-22 2023-08-29 深圳市维度数据科技股份有限公司 基于sql数据库的多维度报表数据优化压缩方法
CN116542697B (zh) * 2023-07-04 2023-10-20 酒仙网络科技股份有限公司 基于大数据的白酒线上销售供货管理系统
CN117200805B (zh) * 2023-11-07 2024-02-02 成都万创科技股份有限公司 一种mcu的低内存占用的压缩和解压方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314957A (ja) * 1995-05-18 1996-11-29 Mitsubishi Electric Corp データベースシステム
JPH11215496A (ja) * 1998-01-29 1999-08-06 Fujitsu Ltd 3次元データ圧縮装置、3次元データ復元装置および記録媒体
JPH11317671A (ja) * 1998-04-30 1999-11-16 Advantest Corp データ圧縮装置およびデータ圧縮方法
JP2000505968A (ja) * 1996-07-24 2000-05-16 ユニシス コーポレーション 即時辞書更新がストリング探索とインターリーブされたデータ圧縮解凍システム
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
JP2000516058A (ja) * 1996-08-06 2000-11-28 シー. レイナー,ジェフリー 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術
JP2002520715A (ja) * 1998-07-08 2002-07-09 リクワイヤード テクノロジーズ インコーポレイテッド 値・インスタンス・接続性をコンピュータで実現したデータベース
JP2006235643A (ja) * 2001-08-23 2006-09-07 Nippon Telegr & Teleph Corp <Ntt> ディジタル信号復号化方法、装置、プログラム及び記録媒体
JP2007013642A (ja) * 2005-06-30 2007-01-18 Nippon Telegr & Teleph Corp <Ntt> 信号の符号化装置、方法、プログラム、記録媒体、および信号のコーデック方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918225A (en) * 1993-04-16 1999-06-29 Sybase, Inc. SQL-based database system with improved indexing methodology
US5682152A (en) 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US5982937A (en) * 1996-12-24 1999-11-09 Electronics For Imaging, Inc. Apparatus and method for hybrid compression of raster data
US6339616B1 (en) * 1997-05-30 2002-01-15 Alaris, Inc. Method and apparatus for compression and decompression of still and motion video data based on adaptive pixel-by-pixel processing and adaptive variable length coding
US6680976B1 (en) 1997-07-28 2004-01-20 The Board Of Trustees Of The University Of Illinois Robust, reliable compression and packetization scheme for transmitting video
GB9727398D0 (en) * 1997-12-29 1998-02-25 Sgs Thomson Microelectronics Run-length encoding
AU4424899A (en) * 1998-06-08 1999-12-30 Microsoft Corporation Compression of time-dependent geometry
US7076507B1 (en) * 1998-07-08 2006-07-11 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
US6567559B1 (en) 1998-09-16 2003-05-20 Texas Instruments Incorporated Hybrid image compression with compression ratio control
US6597812B1 (en) * 1999-05-28 2003-07-22 Realtime Data, Llc System and method for lossless data compression and decompression
US6633674B1 (en) 1999-11-24 2003-10-14 General Electric Company Picture archiving and communication system employing improved data compression
US7178100B2 (en) * 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US6801573B2 (en) 2000-12-21 2004-10-05 The Ohio State University Method for dynamic 3D wavelet transform for video compression
US6886161B1 (en) * 2001-05-24 2005-04-26 Nortel Networks Limited Method and data structure for compressing file-reference information
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US7680349B2 (en) 2004-08-18 2010-03-16 Cisco Technology, Inc. Variable length coding for clustered transform coefficients in video compression
US7483585B2 (en) * 2004-12-01 2009-01-27 Ati Technologies Ulc Image compression using variable bit size run length encoding
US8879635B2 (en) * 2005-09-27 2014-11-04 Qualcomm Incorporated Methods and device for data alignment with time domain boundary
US8775495B2 (en) * 2006-02-13 2014-07-08 Indiana University Research And Technology Compression system and method for accelerating sparse matrix computations
US7580925B2 (en) * 2006-04-19 2009-08-25 Tegic Communications, Inc. Efficient storage and search of word lists and other text
US20080001790A1 (en) * 2006-06-30 2008-01-03 Kyle Kirby Method and system for enhancing data compression
US8364803B2 (en) 2006-10-20 2013-01-29 Oricane Ab Method, device, computer program product and system for representing a partition of N W-bit intervals associated to D-bit data in a data communications network
US8126062B2 (en) * 2007-01-16 2012-02-28 Cisco Technology, Inc. Per multi-block partition breakpoint determining for hybrid variable length coding
US20090006309A1 (en) * 2007-01-26 2009-01-01 Herbert Dennis Hunt Cluster processing of an aggregated dataset
WO2008092147A2 (en) * 2007-01-26 2008-07-31 Information Resources, Inc. Analytic platform
HUE042697T2 (hu) * 2007-09-24 2019-07-29 Hasso Plattner Inst Fuer Digital Engineering Ggmbh ETL kisebb nulla redundancia rendszer és eljárás OLTP adatok jelentésére
US8108361B2 (en) 2008-07-31 2012-01-31 Microsoft Corporation Efficient column based data encoding for large-scale data storage

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314957A (ja) * 1995-05-18 1996-11-29 Mitsubishi Electric Corp データベースシステム
JP2000505968A (ja) * 1996-07-24 2000-05-16 ユニシス コーポレーション 即時辞書更新がストリング探索とインターリーブされたデータ圧縮解凍システム
JP2000516058A (ja) * 1996-08-06 2000-11-28 シー. レイナー,ジェフリー 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術
JPH11215496A (ja) * 1998-01-29 1999-08-06 Fujitsu Ltd 3次元データ圧縮装置、3次元データ復元装置および記録媒体
JPH11317671A (ja) * 1998-04-30 1999-11-16 Advantest Corp データ圧縮装置およびデータ圧縮方法
JP2002520715A (ja) * 1998-07-08 2002-07-09 リクワイヤード テクノロジーズ インコーポレイテッド 値・インスタンス・接続性をコンピュータで実現したデータベース
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
JP2006235643A (ja) * 2001-08-23 2006-09-07 Nippon Telegr & Teleph Corp <Ntt> ディジタル信号復号化方法、装置、プログラム及び記録媒体
JP2007013642A (ja) * 2005-06-30 2007-01-18 Nippon Telegr & Teleph Corp <Ntt> 信号の符号化装置、方法、プログラム、記録媒体、および信号のコーデック方法

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013137070A1 (ja) * 2012-03-13 2013-09-19 日本電気株式会社 ログ圧縮システム、ログ圧縮方法、及びプログラム
JP2014016983A (ja) * 2012-04-30 2014-01-30 Sap Ag 部分的マージ
WO2013175909A1 (ja) * 2012-05-25 2013-11-28 クラリオン株式会社 データ解凍/圧縮装置
JP2013246598A (ja) * 2012-05-25 2013-12-09 Clarion Co Ltd データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム
US10116325B2 (en) 2012-05-25 2018-10-30 Clarion Co., Ltd. Data compression/decompression device
JP2013246835A (ja) * 2012-05-29 2013-12-09 Sap Ag データウェアハウスモデルからインメモリモデルを生成するためのシステムおよび方法
JP2014186457A (ja) * 2013-03-22 2014-10-02 Kddi Corp データ構造化方法、データ再構成方法、データ構造化プログラム、データ再構成プログラム及びデータ符号化装置
JP2015118455A (ja) * 2013-12-17 2015-06-25 日本電気株式会社 行列圧縮装置、制御方法、及びプログラム
JP2018060444A (ja) * 2016-10-07 2018-04-12 富士通株式会社 符号化プログラム、符号化方法および符号化装置
JP2018156233A (ja) * 2017-03-16 2018-10-04 ヤフー株式会社 データ管理装置、データ管理方法、およびプログラム
JP2018180645A (ja) * 2017-04-04 2018-11-15 富士通株式会社 データ処理プログラム、データ処理方法およびデータ処理装置
JP2018182466A (ja) * 2017-04-07 2018-11-15 富士通株式会社 符号化プログラム、符号化方法および符号化装置
US11323132B2 (en) 2017-04-07 2022-05-03 Fujitsu Limited Encoding method and encoding apparatus
JP7210130B2 (ja) 2017-04-07 2023-01-23 富士通株式会社 符号化プログラム、符号化方法および符号化装置
US12411695B2 (en) 2017-04-24 2025-09-09 Intel Corporation Multicore processor with each core having independent floating point datapath and integer datapath
US12175252B2 (en) 2017-04-24 2024-12-24 Intel Corporation Concurrent multi-datatype execution within a processing resource
US12217053B2 (en) 2017-04-28 2025-02-04 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
US12141578B2 (en) 2017-04-28 2024-11-12 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
JP2020021177A (ja) * 2018-07-30 2020-02-06 富士通株式会社 情報処理装置、分散処理システム、および分散処理プログラム
JP7047651B2 (ja) 2018-07-30 2022-04-05 富士通株式会社 情報処理装置、分散処理システム、および分散処理プログラム
US12056059B2 (en) 2019-03-15 2024-08-06 Intel Corporation Systems and methods for cache optimization
JP2022523909A (ja) * 2019-03-15 2022-04-27 インテル・コーポレーション マルチタイルメモリ管理
US12013808B2 (en) 2019-03-15 2024-06-18 Intel Corporation Multi-tile architecture for graphics operations
JP7513354B2 (ja) 2019-03-15 2024-07-09 インテル・コーポレーション マルチタイルメモリ管理
US12386779B2 (en) 2019-03-15 2025-08-12 Intel Corporation Dynamic memory reconfiguration
US12066975B2 (en) 2019-03-15 2024-08-20 Intel Corporation Cache structure and utilization
US12079155B2 (en) 2019-03-15 2024-09-03 Intel Corporation Graphics processor operation scheduling for deterministic latency
US12093210B2 (en) 2019-03-15 2024-09-17 Intel Corporation Compression techniques
US12099461B2 (en) 2019-03-15 2024-09-24 Intel Corporation Multi-tile memory management
US12124383B2 (en) 2019-03-15 2024-10-22 Intel Corporation Systems and methods for cache optimization
US12321310B2 (en) 2019-03-15 2025-06-03 Intel Corporation Implicit fence for write messages
US12141094B2 (en) 2019-03-15 2024-11-12 Intel Corporation Systolic disaggregation within a matrix accelerator architecture
US12153541B2 (en) 2019-03-15 2024-11-26 Intel Corporation Cache structure and utilization
US12007935B2 (en) 2019-03-15 2024-06-11 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
US12182035B2 (en) 2019-03-15 2024-12-31 Intel Corporation Systems and methods for cache optimization
US12182062B1 (en) 2019-03-15 2024-12-31 Intel Corporation Multi-tile memory management
US12198222B2 (en) 2019-03-15 2025-01-14 Intel Corporation Architecture for block sparse operations on a systolic array
US12204487B2 (en) 2019-03-15 2025-01-21 Intel Corporation Graphics processor data access and sharing
US12210477B2 (en) 2019-03-15 2025-01-28 Intel Corporation Systems and methods for improving cache efficiency and utilization
US12293431B2 (en) 2019-03-15 2025-05-06 Intel Corporation Sparse optimizations for a matrix accelerator architecture
US12242414B2 (en) 2019-03-15 2025-03-04 Intel Corporation Data initialization techniques
US12361600B2 (en) 2019-11-15 2025-07-15 Intel Corporation Systolic arithmetic on sparse data
US12493922B2 (en) 2019-11-15 2025-12-09 Intel Corporation Graphics processing unit processing and caching improvements
JP2021111882A (ja) * 2020-01-10 2021-08-02 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
JP7336995B2 (ja) 2020-01-10 2023-09-01 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
US11922018B2 (en) 2020-01-10 2024-03-05 Hitachi, Ltd. Storage system and storage control method including dimension setting information representing attribute for each of data dimensions of multidimensional dataset
WO2021140867A1 (ja) * 2020-01-10 2021-07-15 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
US12554674B2 (en) 2024-10-15 2026-02-17 Intel Corporation Multi-tile memory management

Also Published As

Publication number Publication date
EP2321719A2 (en) 2011-05-18
JP5466232B2 (ja) 2014-04-09
WO2010014956A3 (en) 2010-06-10
US20100030796A1 (en) 2010-02-04
US20120109910A1 (en) 2012-05-03
US8452737B2 (en) 2013-05-28
US8108361B2 (en) 2012-01-31
EP2321719A4 (en) 2011-09-14
CN102112962A (zh) 2011-06-29
WO2010014956A2 (en) 2010-02-04

Similar Documents

Publication Publication Date Title
JP5466232B2 (ja) 大規模なデータストレージのための効率的な列ベースデータの符号化
EP2321746B1 (en) Efficient large-scale processing of column based data encoded structures
CN102171680B (zh) 用于基于列的数据编码结构的查询的高效大规模过滤和/或排序
US20100088309A1 (en) Efficient large-scale joining for querying of column based data encoded structures
Jiang et al. Good to the last bit: Data-driven encoding with codecdb
CN103177062B (zh) 用于高速内存在线分析处理查询和操作的加速查询操作器
US8266147B2 (en) Methods and systems for database organization
JP4907600B2 (ja) 繰り返し値を有するテーブルのブロック圧縮
US9910855B2 (en) Reordering of database records for improved compression
KR102267441B1 (ko) 데이터의 하이브리드 저장을 이용한 데이터 아카이빙 방법 및 시스템
EP3913494B1 (en) Data compression techniques
US11030172B2 (en) Database archiving method and device for creating index information and method and device of retrieving archived database including index information
US12253970B2 (en) Compression and search process on a data set based on multiple strategies
CN112489731B (zh) 一种基因型数据压缩方法、系统、计算机设备及存储介质
Basani et al. Optimizing Cloud Data Storage: Evaluating File Formats for Efficient Data Warehousing
WO2010060179A1 (en) Methods for organizing a relational database by using clustering operations
CN117609588A (zh) 数据处理方法、数据处理装置及电子设备
Dhanekula Improved storage technique for metadata management at the application level
Wang et al. Group-scope query and its access method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120724

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120724

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131204

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: 20131225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140123

R150 Certificate of patent or registration of utility model

Ref document number: 5466232

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees