(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022016325
(43)【公開日】2022-01-21
(54)【発明の名称】データ圧縮方法および装置、ならびにコンピュータデバイス
(51)【国際特許分類】
G06F 16/907 20190101AFI20220114BHJP
【FI】
G06F16/907
【審査請求】未請求
【請求項の数】16
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021107589
(22)【出願日】2021-06-29
(31)【優先権主張番号】202010656511.4
(32)【優先日】2020-07-09
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】521286374
【氏名又は名称】ベイジン・オーシャンベース・テクノロジー・カンパニー・リミテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】フイ・カオ
(72)【発明者】
【氏名】ユジョン・ジャオ
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA08
5B175FB03
5B175HA02
(57)【要約】 (修正有)
【課題】データ圧縮方法および装置並びにコンピュータデバイスを提供する。
【解決手段】データ圧縮方法は、圧縮コーディングルールが存在するかどうかについて推奨レコードを検索するステップ104と、圧縮率条件を満たす推奨される圧縮コーディングルールが存在する場合、推奨される圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するステップと、圧縮率条件を満たす推奨される圧縮コーディングルールが存在しない場合、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するために、通常の圧縮コーディングプロセスを開始し、少なくとも推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択し、ターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するステップと、を含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
圧縮対象オブジェクトを取得するステップと、
圧縮率条件を満たす推奨される圧縮コーディングルールが存在するかどうかについて推奨レコードを検索するステップであって、前記推奨レコードが、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報を記録するために使用され、前記過去の圧縮されたオブジェクトが、前記圧縮対象オブジェクトと同じタイプである、ステップと、
前記圧縮率条件を満たす前記推奨される圧縮コーディングルールが存在する場合、前記推奨される圧縮コーディングルールを使用することによって前記圧縮対象オブジェクトを圧縮するステップと、
前記圧縮率条件を満たす前記推奨される圧縮コーディングルールが存在しない場合、前記圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するために、通常の圧縮コーディングプロセスを開始し、少なくとも前記推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択し、前記ターゲット圧縮コーディングルールを使用することによって前記圧縮対象オブジェクトを圧縮するステップと
を含む、データ圧縮方法。
【請求項2】
前記圧縮対象オブジェクトが、圧縮対象データを分割することによって取得される圧縮対象データユニットを含み、前記過去の圧縮されたオブジェクトが、前記圧縮対象データを分割することによって取得される他の過去の圧縮されたデータユニットを含む、請求項1に記載の方法。
【請求項3】
前記圧縮対象オブジェクトが、データテーブル内の圧縮対象データを分割することによって取得される圧縮対象データユニットを含み、前記過去の圧縮されたオブジェクトが、前記データテーブルに対応する過去の圧縮されたデータユニットを含む、請求項1に記載の方法。
【請求項4】
前記圧縮対象オブジェクトが、データテーブル内の圧縮対象データの列を含み、前記過去の圧縮されたオブジェクトが、前記データテーブル内の圧縮対象データの前記列と同じ列に過去の圧縮されたデータを含む、請求項1に記載の方法。
【請求項5】
前記圧縮対象オブジェクトが、データテーブルの複製を含み、前記過去の圧縮されたオブジェクトが、前記データテーブルの前記複製に対応するメインデータテーブルを含む、請求項1に記載の方法。
【請求項6】
前記圧縮率条件は、前記推奨される圧縮コーディングルールの圧縮率情報が、指定されたしきい値より高いことを少なくとも含む、請求項1に記載の方法。
【請求項7】
前記圧縮対象オブジェクトを前記圧縮した後、前記圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて前記推奨レコードを更新するステップをさらに含む、請求項1に記載の方法。
【請求項8】
前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールに基づいて前記推奨レコードを更新する前記ステップが、
前記圧縮対象オブジェクトの実際の圧縮率を取得するステップと、少なくとも前記実際の圧縮率および前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールに基づいて、前記推奨レコードを更新するステップとを含む、請求項7に記載の方法。
【請求項9】
前記方法が、
前記圧縮対象オブジェクトのアクセス要件情報を取得するステップであって、前記アクセス要件情報が、前記圧縮対象オブジェクトの解凍効率に関連する、ステップをさらに含み、
前記圧縮率条件は、前記推奨される圧縮コーディングルールの前記圧縮率情報が前記アクセス要件情報と一致することを含む、請求項1、6、または8に記載の方法。
【請求項10】
少なくとも前記推定される圧縮率に基づいて前記ターゲット圧縮コーディングルールを選択する前記ステップが、
前記推定される圧縮率および前記アクセス要件情報に基づいて前記ターゲット圧縮コーディングルールを選択するステップ
を含む、請求項9に記載の方法。
【請求項11】
前記圧縮対象オブジェクトの前記アクセス要件情報が、前記圧縮対象オブジェクトまたは前記過去の圧縮されたオブジェクトのうちの1つまたは複数の過去のアクセスデータを取得することによって決定される、請求項9に記載の方法。
【請求項12】
前記過去のアクセスデータが、過去のアクセス頻度を含む、請求項11に記載の方法。
【請求項13】
少なくとも前記実際の圧縮率および前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールに基づいて前記推奨レコードを更新する前記ステップが、
前記実際の圧縮率、前記アクセス要件情報、および前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールに基づいて、前記推奨レコードを更新するステップ
を含む、請求項9に記載の方法。
【請求項14】
前記圧縮コーディングルールの圧縮率情報が、前記圧縮コーディングルールの前記実際の圧縮率を示す信頼度を含み、
前記実際の圧縮率、前記アクセス要件情報、および前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールに基づいて、前記推奨レコードを更新する前記ステップが、
前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールが、前記推奨レコードに記録された推奨される圧縮コーディングルールであり、前記圧縮対象オブジェクトの前記実際の圧縮率が、前記アクセス要件情報と一致する場合、前記推奨される圧縮コーディングルールの信頼度を上げ、一致しない場合、前記推奨される圧縮コーディングルールの信頼度を下げるステップと、
前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールが、前記推奨レコードに記録された推奨される圧縮コーディングルールとは異なり、前記圧縮対象オブジェクトの前記実際の圧縮率が、前記アクセス要件情報と一致する場合、前記推奨レコード内の前記推奨される圧縮コーディングルールを、前記圧縮対象オブジェクトに使用される前記圧縮コーディングルールに置き換えるステップと
を含む、請求項13に記載の方法。
【請求項15】
圧縮対象オブジェクトを取得するように構成された獲得モジュールと、
圧縮率条件を満たす推奨される圧縮コーディングルールが存在するかどうかについて推奨レコードを検索するように構成された検索モジュールであって、前記推奨レコードが、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報を記録するために使用され、前記過去の圧縮されたオブジェクトが、前記圧縮対象オブジェクトと同じタイプである、検索モジュールと、
前記圧縮率条件を満たす前記推奨される圧縮コーディングルールが存在する場合、前記推奨される圧縮コーディングルールを使用することによって前記圧縮対象オブジェクトを圧縮するように構成された第1の圧縮モジュールと、
前記圧縮率条件を満たす前記推奨される圧縮コーディングルールが存在しない場合、前記圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するために、通常の圧縮コーディングプロセスを開始し、少なくとも前記推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択し、前記ターゲット圧縮コーディングルールを使用することによって前記圧縮対象オブジェクトを圧縮するように構成された第2の圧縮モジュールと
を備える、データ圧縮装置。
【請求項16】
コンピュータデバイスであって、メモリと、プロセッサと、前記メモリに記憶され、前記プロセッサ上で実行可能なコンピュータプログラムとを備え、前記プロセッサが、前記プログラムの実行時に、請求項1から14のいずれか一項に記載の前記方法を実装する、コンピュータデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、データ処理技術の分野に関し、特に、データ圧縮方法および装置、ならびにコンピュータデバイスに関する。
【背景技術】
【0002】
データ圧縮は、より少ないコーディングでより多くの情報を表すものとして理解することができる。データ圧縮時には、より優れた圧縮効率を取得するために適切な圧縮コーディングルールを選択する必要がある。現在、ますます多くの圧縮コーディングルールがあり、適切な圧縮コーディングルールを選択するために比較的大きい計算コストを支払う必要がある。
【発明の概要】
【課題を解決するための手段】
【0003】
関連技術における問題を軽減するために、本明細書は、データ圧縮方法および装置、ならびにコンピュータデバイスを提供する。
【0004】
本明細書の実装形態の第1の態様によれば、圧縮対象オブジェクトを取得するステップと、圧縮率条件を満たす推奨される圧縮コーディングルールが存在するかどうかについて推奨レコードを検索するステップであって、推奨レコードが、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報を記録するために使用され、過去の圧縮されたオブジェクトが、圧縮対象オブジェクトと同じタイプである、ステップと、圧縮率条件を満たす推奨される圧縮コーディングルールが存在する場合、その推奨される圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するステップと、圧縮率条件を満たす推奨される圧縮コーディングルールが存在しない場合、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するために、通常の圧縮コーディングプロセスを開始し、少なくとも推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択し、ターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するステップとを含む、データ圧縮方法が提供される。
【0005】
任意で、圧縮対象オブジェクトは、圧縮対象データを分割することによって取得される圧縮対象データユニットを含み、過去の圧縮されたオブジェクトは、圧縮対象データを分割することによって取得される他の過去の圧縮されたデータユニットを含む。
【0006】
任意で、圧縮対象オブジェクトは、データテーブル内の圧縮対象データを分割することによって取得される圧縮対象データユニットを含み、過去の圧縮されたオブジェクトは、データテーブルに対応する過去の圧縮されたデータユニットを含む。
【0007】
任意で、圧縮対象オブジェクトは、データテーブル内の圧縮対象データの列を含み、過去の圧縮されたオブジェクトは、データテーブル内の圧縮対象データの列と同じ列に過去の圧縮されたデータを含む。
【0008】
任意で、圧縮対象オブジェクトはデータテーブルの複製を含み、過去の圧縮されたオブジェクトはデータテーブルの複製に対応するメインデータテーブルを含む。
【0009】
任意で、圧縮率条件は、推奨される圧縮コーディングルールの圧縮率情報が、指定されたしきい値より高いことを少なくとも含む。
【0010】
任意で、本方法は、圧縮対象オブジェクトを圧縮した後、圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて推奨レコードを更新するステップをさらに含む。
【0011】
任意で、圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて推奨レコードを更新するステップは、圧縮対象オブジェクトの実際の圧縮率を取得するステップと、少なくとも実際の圧縮率および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて推奨レコードを更新するステップとを含む。
【0012】
任意で、本方法は、圧縮対象オブジェクトのアクセス要件情報を取得するステップであって、アクセス要件情報が、圧縮対象オブジェクトの解凍効率に関連する、ステップをさらに含み、圧縮率条件は、推奨される圧縮コーディングルールの圧縮率情報がアクセス要件情報と一致することを含む。
【0013】
任意で、少なくとも推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択するステップは、推定される圧縮率およびアクセス要件情報に基づいてターゲット圧縮コーディングルールを選択するステップを含む。
【0014】
任意で、圧縮対象オブジェクトのアクセス要件情報は、圧縮対象オブジェクトまたは過去の圧縮されたオブジェクトのうちの1つまたは複数の過去のアクセスデータを取得することによって決定される。
【0015】
任意で、過去のアクセスデータは、過去のアクセス頻度を含む。
【0016】
任意で、少なくとも実際の圧縮率および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて推奨レコードを更新するステップは、実際の圧縮率、アクセス要件情報、および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて、推奨レコードを更新するステップを含む。
【0017】
任意で、圧縮コーディングルールの圧縮率情報は、圧縮コーディングルールの実際の圧縮率を示す信頼度を含み、実際の圧縮率、アクセス要件情報、および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて、推奨レコードを更新するステップは、圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールであり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨される圧縮コーディングルールの信頼度を上げ、一致しない場合、推奨される圧縮コーディングルールの信頼度を下げるステップと、圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールとは異なり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨レコード内の推奨される圧縮コーディングルールを、圧縮対象オブジェクトに使用される圧縮コーディングルールに置き換えるステップとを含む。
【0018】
本明細書の実装形態の第2の態様によれば、データ圧縮装置が提供され、本装置は、圧縮対象オブジェクトを取得するように構成された獲得モジュールと、圧縮率条件を満たす推奨される圧縮コーディングルールが存在するかどうかについて推奨レコードを検索するように構成された検索モジュールであって、推奨レコードが、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報を記録するために使用され、過去の圧縮されたオブジェクトが、圧縮対象オブジェクトと同じタイプである、検索モジュールと、圧縮率条件を満たす推奨される圧縮コーディングルールが存在する場合、その推奨される圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するように構成された第1の圧縮モジュールと、圧縮率条件を満たす推奨される圧縮コーディングルールが存在しない場合、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するために、通常の圧縮コーディングプロセスを開始し、少なくとも推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択し、ターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するように構成された第2の圧縮モジュールとを含む。
【0019】
本明細書の実装形態の第3の態様によれば、メモリと、プロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含み、プロセッサは、プログラムの実行時に、上記のデータ圧縮方法の実装形態を実装する、コンピュータデバイスが提供される。
【0020】
本明細書の実装形態において提供される技術的解決策は、次の有益な効果をもたらすことができる。
【0021】
本明細書の実装形態において、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報が推奨レコードに記録されるため、推奨レコードは、圧縮率条件に基づいて、適切な圧縮コーディングルールが存在するかどうかを検索することができる。適切な圧縮コーディングルールが存在しない場合、圧縮対象オブジェクトを圧縮するために、通常の圧縮符号化プロセスが開始される。適切な圧縮コーディングルールが存在する場合、圧縮のために圧縮コーディングルールを直接使用することができる。したがって、現在の圧縮対象オブジェクトに対して適切な圧縮コーディングルールを計算するために時間とリソースを消費する必要がなく、それによって圧縮効率が大幅に改善される。
【0022】
上記の一般的な説明および以下の詳細な説明は、説明のための例に過ぎず、本明細書を限定するものではないことを理解されたい。
【0023】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本明細書と一致する実装形態を示し、本明細書とともに、本明細書の原理を説明する役割を果たす。
【図面の簡単な説明】
【0024】
【
図1】本明細書の例示的な実装形態によるデータ圧縮方法を示すフローチャートである。
【
図2】本明細書の例示的な実装形態によるデータ圧縮方法を示す概略図である。
【
図3】本明細書の例示的な実装形態によるデータ圧縮装置が位置するコンピュータデバイスを示すハードウェア構造図である。
【
図4】本明細書の例示的な実装形態によるデータ圧縮装置を示すブロック図である。
【発明を実施するための形態】
【0025】
実施形態が本明細書に詳細に記載されており、その例が添付の図面に提示されている。以下の説明が添付の図面を参照する場合、特に明記しない限り、異なる添付の図面における同じ番号は同じまたは類似の要素を表す。以下の例示的な実施形態において説明される実装形態は、本明細書と一致するすべての実装形態を表すものではない。それどころか、実装形態は、添付の特許請求の範囲において詳細に説明され、本明細書のいくつかの態様と一致する装置および方法の単なる例である。
【0026】
本明細書で使用される用語は、単に特定の実装形態を説明するためのものであり、本明細書を限定することを意図するものではない。本明細書および添付の特許請求の範囲において使用される単数形の用語「a」および「the」は、文脈で明確に指定されていない限り、複数形も含むことを意図している。本明細書において使用される用語「および/または」は、1つまたは複数の関連付けられるリストされた項目の任意またはすべての可能な組合せを示し、それらを含むことをさらに理解すべきである。
【0027】
本明細書において、様々な種類の情報を説明するために「第1」、「第2」、「第3」等の用語が使用され得るが、情報は条件に限定されないことを理解されたい。これらの用語は、同じタイプの情報を区別するためにのみ使用される。たとえば、本明細書の範囲を逸脱せずに、第1の情報を第2の情報と呼ぶこともでき、同様に第2の情報を第1の情報と呼ぶこともできる。文脈に応じて、たとえば、本明細書で使用される「もし」という言葉は、「その間に」、「するとき」、または「決定に応じて」と説明することができる。
【0028】
リレーショナルデータベースの場合、データクエリ処理とデータストレージは常に2つのコア要素である。一般に、データクエリ処理にはより多くの中央処理装置(CPU)とメモリリソースを消費する必要があり、データストレージは主にディスクなどのストレージハードウェアのリソースを消費する。しかしながら、現在、ストレージハードウェアの開発は、他のシステムハードウェアの開発に追いついていない。ストレージハードウェアのスペース増加速度は、ユーザがより広範囲のデータを長期間保存したいというストレージ要件に常に対応できない。さらに、現在、ストレージハードウェアのアクセス遅延は、CPUおよびメモリよりも常に少なくとも1桁遅れている。結論として、スペースとアクセスの遅延は、データベースストレージの急速な発展を妨げる2つの大きい問題となっている。
【0029】
上記の問題を軽減するために、業界のすべてのデータベースメーカは、一般的なデータ圧縮技術を積極的に導入し、各データベースのストレージに基づいてページ/ブロックレベルでデータを圧縮する。このように、ストレージスペースの占有が大幅に削減されるだけでなく、広範囲のデータのスキャンおよびクエリ中のデータ入出力(IO)の量が減少するため、ストレージアクセスの遅延も改善される。しかしながら、コストは圧縮プロセスと解凍プロセスにおいてより多くのCPUおよびメモリリソースを消費することである。データベース全体の観点から見ると、圧縮技術の導入により、全体的なリソース使用のバランスが改善され、同じハードウェア条件でユーザのより厳しいサービス要件を満たすことができる。
【0030】
圧縮は、より少ないコーディングを通じてより多くの情報を表すと理解することができる。データベースの行と列のハイブリッド圧縮における一般的な圧縮方法は、データ分散に基づいて異なるコーディングルールを使用して異なるデータを圧縮することである。
【0031】
データ圧縮の理論上の限界は、対応する情報エントロピであり、すなわち、より多くのデータ情報が取得されるほど、最終的なデータ圧縮率は高くなる。一般的なデータ圧縮技術では、より多くの使用シナリオをサポートするために、通常、コーディング圧縮用のバイトストリームに対してのみスライディングディクショナリが確立され、特定の範囲のコンテキスト情報が使用される。しかしながら、当然リレーショナルデータベースには、データベース内のデータに関する背景知識がより豊富に備わっている。たとえば、データの値の範囲の分布を予測するためにデータ列のタイプを使用することができ、同じ列のデータはより強力なクラスタリングを有する。したがって、ますます多くのデータベースメーカが圧縮ユニットに基づいてデータを分割し、各圧縮ユニット内のストレージに列ストレージ形式が使用され、たとえば辞書式コーディング、ランレングスコーディング、およびインクリメンタルコーディングなど、圧縮に最も一致するコーディングルールを見つけるために、列内のコンテキスト関係と列間のデータ関係が使用される。一般的な圧縮と比較して、これらのコーディングルールは、埋め込まれたデータ情報を使用することによってより高い圧縮率を提供することができ、埋め込まれたストレージ形式を使用することにより、データベースがコード化されたデータに基づいて直接クエリを実行することも可能にする。特に、ログ構造マージツリー(LSMツリー)アーキテクチャのデータベースでは、記憶されたデータを継続的に圧縮する必要があり、圧縮動作はデータ全体の書換えを伴うため、当然、行と列のハイブリッドコーディング圧縮をデータ再シャッフルプロセスに追加することができる。
【0032】
データベースが行と列のハイブリッドコーディング圧縮を内部的にサポートしている場合、より高い圧縮率を実現できるが、圧縮コーディングルールを選択して検出するという複雑な問題が伴う。データベースは、要約データを抽出することと、異なる圧縮ルールに基づいて最終的な圧縮サイズを評価することと、最終的に選択されたコーディングルールを決定することとを行うために、すべての圧縮ユニットにおける列データをトラバースする必要がある。コーディングルール検出プロセス全体で、大量の事前計算とマッチング比較を行う必要がある。さらに、現在、圧縮コーディングルールは、同一の圧縮ユニット内のすべてのデータコンテキストに対してのみ検出されるのが一般的である。範囲が拡張されると、検出の複雑性は指数関数的に増加する。
【0033】
各データベースのコーディング圧縮は、基本的に行と列のハイブリッドストレージモードに基づいて実装される。特定の数のデータレコードタプルが全体の圧縮ユニットとして選択され、圧縮ユニット内のすべてのデータが列ごとに記憶される。データベースは、データの列の基本的な分布とデータの特徴を取得するためにデータの各列に対してトラバーサルスキャンを実行し、次いで、特定のデータの特徴に基づいて圧縮をコーディングするための適切なルールを選択する。異なるデータベースは、それぞれ異なるコーディング圧縮ルールを実装する。一般的に、辞書式コーディング、ランレングスコーディング、インクリメンタルコーディング、数値コーディング、および部分的なオープンソース一般圧縮コーディングが基本的に含まれる。本実装形態では、圧縮コーディングルールを選択する速度は比較的遅い。データの列に対して最終的に選択される圧縮コーディングルールを決定する前に、データベースは、データスキャン分析、異なるコーディングルールの圧縮率の事前計算、コーディングルールの選択、およびデータ圧縮などのいくつかの段階を経る必要がある。各段階において、比較的大きい計算コストを支払う必要がある。
【0034】
これを考慮して、本明細書の実装形態はデータ圧縮解決策を提供する。実装形態における解決策は、推奨レコードに関連する。推奨レコードは、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報を記録するために使用される。過去の圧縮されたオブジェクトは、圧縮対象オブジェクトと同じタイプである。したがって、本明細書の実装形態において、圧縮対象オブジェクトが圧縮される場合、推奨レコードは、圧縮率条件に基づいて、適切な圧縮コーディングルールが存在するかどうかをまず検索することができる。適切な圧縮コーディングルールが存在しない場合、圧縮対象オブジェクトを圧縮するために、通常の圧縮符号化プロセスが開始される。適切な圧縮コーディングルールが存在する場合、圧縮のために圧縮コーディングルールを直接使用することができる。したがって、現在の圧縮対象オブジェクトに対して適切な圧縮コーディングルールを計算するために時間とリソースを消費する必要がなく、それによって圧縮効率が大幅に改善される。
【0035】
本明細書の実装形態は、以下で詳細に説明される。
図1は、本明細書の例示的な実装形態による方法を示すフローチャートである。本方法は、以下のステップを含む。
【0036】
ステップ102:圧縮対象オブジェクトを取得する。
【0037】
ステップ104:圧縮率条件を満たす推奨される圧縮コーディングルールが存在するかどうかについて推奨レコードを検索し、推奨レコードが、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報を記録するために使用され、過去の圧縮されたオブジェクトが、圧縮対象オブジェクトと同じタイプである。
【0038】
ステップ106:圧縮率条件を満たす推奨される圧縮コーディングルールが存在する場合、その推奨される圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮する。
【0039】
ステップ108:圧縮率条件を満たす推奨される圧縮コーディングルールが存在しない場合、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するために、通常の圧縮コーディングプロセスを開始し、少なくとも推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択し、ターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮する。
【0040】
本実装形態は、様々なデータ圧縮シナリオに適用可能であり、圧縮対象オブジェクトは、データテーブル、ビデオファイル、オーディオファイル、または画像などの様々なタイプのオブジェクトであり得る。本実装形態において制限は課されない。過去の圧縮されたオブジェクトとは、圧縮対象オブジェクトと同じタイプで、圧縮対象オブジェクトが圧縮される前に圧縮されたオブジェクトである。異なる圧縮対象オブジェクトの場合、過去の圧縮されたオブジェクトが圧縮対象オブジェクトと同じタイプであるということは、複数の実装形態を有することができる。たとえば、圧縮対象オブジェクトおよび過去の圧縮されたオブジェクトは、異なる時間に生成され、異なるバージョンのデータ、たとえばプログラムソースファイルであることができる。あるいは、圧縮対象オブジェクトおよび過去の圧縮されたオブジェクトは、同じ形式のデータ、たとえばビデオ形式のデータであってもよい。あるいは、圧縮対象オブジェクトおよび過去の圧縮されたオブジェクトは、同一の親データに属する子データ、たとえば、元のデータを分割することによって取得された複数の子データ、または同一のデータテーブルに属する複数のデータユニットであってもよい。
【0041】
たとえば、圧縮対象オブジェクトデータ-A1を現在圧縮する必要があると仮定する。初回の圧縮時、圧縮対象オブジェクトと同じタイプの過去の圧縮されたオブジェクトが参照できず、推奨レコードが空であり、圧縮率条件を満たす推奨される圧縮コーディングルールが存在しない。このように、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定圧縮率を取得するために、通常の圧縮コーディングプロセスが開始され、少なくとも推定された圧縮率に基づいてターゲット圧縮コーディングルールが選択され、選択したターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトが圧縮される。
【0042】
初回の圧縮が完了した後、圧縮対象オブジェクトデータ-A1に使用された圧縮コーディングルールに基づいて推奨レコードが更新される。たとえば、現在の圧縮を推奨レコードに記録することができる。具体的には、ターゲット圧縮コーディングルールおよびターゲット圧縮コーディングルールの圧縮率情報を推奨レコードに書き込むことができる。いくつかの例では、圧縮対象オブジェクトの圧縮コーディングルールの推定圧縮率は実際の圧縮率と大差なく、圧縮率情報は推定圧縮率に関する情報であり得る。他のいくつかの例では、圧縮対象オブジェクトの圧縮コーディングルールの推定圧縮率は、実際の圧縮率とある程度異なる場合がある。実際の圧縮率は、推定圧縮率より低い場合もあれば、推定圧縮率より高い場合もある。したがって、本実装形態では、圧縮対象オブジェクトの実際の圧縮率をさらに取得することができ、推奨レコードは、少なくとも実際の圧縮率および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて更新される。この場合、圧縮率情報は、実際の圧縮率に関する情報とすることができる。実際の圧縮率は、データ-A1が圧縮された後、計算を通じて取得することができ、たとえば、実際の圧縮率は、圧縮対象オブジェクトの元のサイズに対する圧縮後の圧縮対象オブジェクトの実際のサイズの比率に基づいて決定される。圧縮率情報は、直接圧縮率の値とすることもでき、必要に応じて指定された方法を使用することによって圧縮率を変換することによって取得された関連情報とすることもできる。
【0043】
その後、データ-A1に新たなデータが挿入される等の理由により、データ-A1に基づいて新たなデータ-A2が生成される。現在の圧縮プロセスでは、新たな圧縮対象オブジェクトとしてデータ-A2が使用され、データ-A2はデータ-A1と同じタイプである。データ-A1を過去の圧縮されたオブジェクトとして使用するプロセスについては、データ-A1の圧縮プロセスを参照できる。
【0044】
データ-A2の圧縮プロセスにおいて、データ-A1の圧縮を参照して圧縮コーディングルールを選択することができる。たとえば、データ-A1を圧縮するための圧縮コーディングルールとそれに対応する圧縮率情報が推奨レコードに記録されており、圧縮率の条件に基づいて、コーディングのためにデータ-A1の圧縮コーディングルールを選択するかどうかを決定することができる。データ-A1の圧縮コーディングルールが選択されると、圧縮コーディングルールを使用することによってデータ-A2を直接圧縮することができる。本実装形態における圧縮率条件は、必要に応じて柔軟に設定することができる。たとえば、一部の圧縮対象オブジェクトには圧縮率に特定の要件があり、圧縮コーディングルールが異なると、圧縮されたオブジェクトに対して異なる圧縮効果が達成される。本実装形態では、適切な推奨される圧縮コーディングルールを選択するために、圧縮率条件を設定することができる。たとえば、圧縮率条件は、推奨される圧縮コーディングルールの圧縮率情報が、指定されたしきい値より高いことを含むことができる。特定のしきい値は、実際のニーズに基づいて柔軟に構成することができる。本実装形態において制限は課されない。
【0045】
データ-A2の圧縮プロセスにおいて、過去の圧縮されたオブジェクトの圧縮コーディングルールを圧縮のために選択することができるため、現在の圧縮対象オブジェクトの適切な圧縮コーディングルールを計算するために時間とリソースを消費する必要がなく、それによって圧縮効率が大幅に向上する。
【0046】
確かに、データ-A1の圧縮コーディングルールがデータ-A2の圧縮率条件を満たさない場合、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するためにデータ-A2についても通常の圧縮コーディングプロセスを指定することができ、少なくとも推定される圧縮率に基づいてターゲット圧縮コーディングルールが選択され、ターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトが圧縮される。
【0047】
データ-A2が圧縮された後、データ-A2の圧縮に基づいて推奨レコードをさらに更新することができる。たとえば、実際のサービスでは、データ-A1に新しいデータが挿入されるため、元のデータ-A1の圧縮コーディングルールがデータ-A2に適用できない場合がある。したがって、本実装形態では、データ-A2の実際の圧縮率を取得することができ、少なくともデータ-A2に使用された実際の圧縮率および圧縮コーディングルールに基づいて推奨レコードが更新される。たとえば、データ-A2に使用される圧縮コーディングルールに推奨レコードが更新され、データ-A2の実際の圧縮率に基づいて圧縮率情報が更新される。
【0048】
実際の圧縮サービスのシナリオでは、大量の圧縮対象データの問題が存在する可能性がある。したがって、必要に応じて、圧縮対象データを複数の圧縮対象データユニットに分割することができる。サービスシナリオでは、圧縮効率を向上させるために、本実装形態におけるデータ圧縮方法を使用することができる。たとえば、圧縮対象オブジェクトは、圧縮対象データを分割することによって取得される圧縮対象データユニットを含むことができ、過去の圧縮されたオブジェクトは、圧縮対象データを分割することによって取得される他の過去の圧縮されたデータユニットを含む。
【0049】
たとえば、
図2に示されるように、データ-Bは、データ-b1からデータ-b4までの合計4つの圧縮対象データユニットに分割できる。
【0050】
たとえば、データ-b1の場合、初回の圧縮時、過去の圧縮されたオブジェクトが参照できず、推奨レコードが空であり、圧縮率条件を満たす推奨される圧縮コーディングルールが存在しない。このように、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定圧縮率を取得するために、通常の圧縮コーディングプロセスが開始され、少なくとも推定された圧縮率に基づいてターゲット圧縮コーディングルールが選択され、選択したターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトが圧縮される。
【0051】
初回の圧縮が完了すると、現在の圧縮を推奨レコードに記録することができる。たとえば、ターゲット圧縮コーディングルールおよびターゲット圧縮コーディングルールの圧縮率情報が推奨レコードに記録される。続いて、データ-b2の圧縮プロセスにおいて、データ-b1の圧縮を参照して圧縮コーディングルールを選択することができる。たとえば、データ-b1を圧縮するための圧縮コーディングルールとそれに対応する圧縮率情報が推奨レコードに記録されており、圧縮率の条件に基づいて、コーディングのためにデータ-b1の圧縮コーディングルールを選択するかどうかを決定することができる。データ-b1の圧縮コーディングルールが選択されると、圧縮コーディングルールを使用することによってデータ-b2を直接圧縮することができる。データ-b2が圧縮された後、圧縮に基づいて、推奨レコードを更新するかどうかが決定される。その後、データ-b3とデータ-b4についても、高速圧縮を実装し、推奨レコードを更新するために同じプロセスを使用することができる。
【0052】
他のいくつかの例では、データテーブルの圧縮シナリオが例として使用されている。LSMツリー構造の分散型リレーショナルデータベースなどでは、データテーブルが複数回圧縮される場合があり、圧縮のたびに取得される新しいデータは圧縮される必要がある。本明細書の本実装形態における解決策では、複数の圧縮コーディングルールの圧縮率を繰り返し推定する必要がなく、過去の圧縮されたオブジェクトの圧縮知識を使用することによって推奨レコードを構築することができる。その後の他の圧縮プロセスにおいて、推奨レコードに基づいて圧縮コーディングルールを迅速に取得することができる。
【0053】
たとえば、テーブルCにおける圧縮対象データは現在圧縮される必要がある。テーブルCには圧縮対象データが大量にあるため、テーブルC内の圧縮対象データは、指定されたデータユニットサイズに基づいてテーブル-c1からテーブル-c5までの合計5つの圧縮対象データユニットに分割される。
【0054】
テーブル-c1の場合、初回の圧縮時、過去の圧縮されたオブジェクトが参照できず、推奨レコードが空である。このように、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定圧縮率を取得するために、通常の圧縮コーディングプロセスが開始され、少なくとも推定された圧縮率に基づいてターゲット圧縮コーディングルールが選択され、選択したターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトが圧縮される。
【0055】
初回の圧縮が完了すると、現在の圧縮を推奨レコードに記録することができる。たとえば、ターゲット圧縮コーディングルールおよびターゲット圧縮コーディングルールの圧縮率情報が推奨レコードに記録される。続いて、テーブル-c2の圧縮プロセスにおいて、テーブル-c1の圧縮を参照して圧縮コーディングルールを選択することができる。たとえば、テーブル-c1を圧縮するための圧縮コーディングルールとそれに対応する圧縮率情報が推奨レコードに記録されており、圧縮率の条件に基づいて、コーディングのためにテーブル-c1の圧縮コーディングルールを選択するかどうかを決定することができる。テーブル-c1の圧縮コーディングルールが選択されると、圧縮コーディングルールを使用することによってテーブル-c2を直接圧縮することができる。テーブル-c2が圧縮された後、圧縮に基づいて、推奨レコードを更新するかどうかが決定される。その後、テーブル-c3とテーブル-c4についても、高速圧縮を実装し、推奨レコードを更新するために同じプロセスを使用することができる。
【0056】
いくつかの他の例では、データテーブルは通常、異なる属性を有する複数のデータ列を含み、データの列は大きく異なり得、データテーブル内の異なるデータ列に対して異なる圧縮コーディングルールを使用することができる。たとえば、ユーザデータテーブルにおいて、ユーザの年齢に関するデータの列は整数データであり、ユーザ名に関するデータの列は文字列データである。データの2つの列のそれぞれに対して、適切な圧縮コーディングルールを選択することができる。これに基づいて、本実装形態における圧縮対象オブジェクトは、データテーブル内の圧縮対象データの列を含むことができ、過去の圧縮されたオブジェクトは、データテーブル内の圧縮対象データの列と同じ列に過去の圧縮されたデータを含むことができる。これに基づいて、本実装形態では、列データを区別することができる。推奨レコードに記録されている圧縮コーディングルールは、列のデータに対応する。データテーブル内のデータの特定の列が圧縮された後、データの列が更新された後に、続いてデータテーブル内のデータの列を圧縮する必要がある場合、データテーブルの同じ列における過去の圧縮されたデータの圧縮コーディングルールに基づいてデータの列を圧縮することができ、それによって圧縮効率が向上する。
【0057】
他のいくつかの例では、圧縮対象オブジェクトはデータテーブルの複製を含み、過去の圧縮されたオブジェクトはデータテーブルの複製に対応するメインデータテーブルを含む。
【0058】
上記の例と同様に、データテーブルの複製はメインデータテーブルとまったく同じ内容であり、データテーブルの複製はメインデータテーブルと一致している。通常、メインデータテーブルが更新された後、メインデータテーブルの更新動作に基づいてデータテーブルの複製が更新される。メインデータテーブルが更新後に圧縮記憶される場合は、更新後のデータテーブルの複製のために圧縮記憶が実行される必要がある。これに基づいて、複製データテーブルの圧縮プロセスにおいて、メインデータテーブルの圧縮コーディングルールを使用することによって、データテーブルの複製を直接圧縮することができる。任意で、データテーブルの複製が圧縮される場合、推奨レコードからメインデータテーブルの圧縮コーディングルールと対応する圧縮率情報を検索し、メインデータテーブルの圧縮コーディングルールが圧縮に直接使用される。確かに、実際のサービスでは、メインデータテーブルに選択された圧縮コーディングルールの実際の圧縮率は高くない場合がある。推奨レコードが検索された場合、必要に応じて、推奨レコードに圧縮率条件を満たす推奨される圧縮コーディングルールが存在しないと決定し、データテーブルの複製を圧縮するために通常の圧縮コーディングプロセスを開始することができる。
【0059】
実際のサービスでは、圧縮コーディングルールの評価基準は単一である。圧縮コーディングルールは、実際のデータベースサービス負荷の場合に、異なるデータアクセスモードの異なる圧縮コーディングルールによってもたらされる追加のオーバーヘッドを総合的に考慮せずに、主に最終的な実際の圧縮率に基づいて選択される。たとえば、データ圧縮率が比較的高いと仮定する。この場合、圧縮率と解凍効率は負の相関関係にあるため、対応するデータ解凍処理により時間がかかる。データに頻繁にアクセスする必要があり、データ圧縮率が比較的高く、アクセスのたびにデータを解凍する必要がある場合、比較的大きい追加の解凍オーバーヘッドは避けられない。これに基づいて、本実装形態では、圧縮対象オブジェクトのアクセス要件情報が取得される。アクセス要件情報は、解凍効率に関連付けることができる。たとえば、アクセス要件が高いほど、対応する圧縮解除効率が高くなる。アクセス要件情報は、サービス関係者が構成するか、データアクセス者が構成するか、または圧縮対象オブジェクトまたは過去の圧縮されたオブジェクトのうちの1つまたは複数の過去のアクセスデータを収集することによって決定することができる。たとえば、過去の圧縮されたオブジェクトが頻繁にアクセスされると仮定する。この場合、データアクセス要件は比較的高く、対応する圧縮解除効率要件は比較的高くなる。これに基づいて、比較的高いアクセス要件を設定することができる。過去の圧縮されたオブジェクトがめったにアクセスされない場合、データアクセス要件は比較的低く、対応する圧縮解除効率要件は比較的低くなる。これに基づいて、比較的低いアクセス要件を設定することができる。任意で、圧縮対象オブジェクトと同じタイプの過去の圧縮されたデータに基づいて、圧縮対象オブジェクトの過去のアクセス情報を取得することができる。任意で、過去のアクセス情報は、データの動作タイプ、たとえば、追加、削除、修正、またはクエリを含むことができ、または、特定の期間内にデータに対して実行された動作の数とすることができ、あるいは過去のアクセス頻度とすることができる。
【0060】
これに対応して、圧縮率条件は、推奨される圧縮コーディングルールの圧縮率情報がアクセス要件情報と一致することを含み、これにより、圧縮率などの単一の要素だけでなく、圧縮率要件とアクセス要件情報に基づいて適切な圧縮コーディングルールを選択することができ、最終的な圧縮データは、サービスのアクセス要件をさらに満たすことができる。
【0061】
これに基づいて、アクセス要件情報が取得されると、実際の圧縮率、アクセス要件情報、および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて、推奨レコードをさらに更新することができる。たとえば、圧縮の初期段階では、圧縮対象オブジェクトに使用されている圧縮コーディングルールが推奨レコードに書き込まれ始める。その後、圧縮対象データの内容が変化したり、圧縮対象データへのアクセスが変化したりすると、圧縮対象オブジェクトに使用される圧縮コーディングルールがその後変化する可能性がある。これに基づいて、推奨レコードは動的に更新される必要がある。任意で、本実装形態では、圧縮コーディングルールの圧縮率情報は信頼度を使用することによって実装され、信頼度は圧縮コーディングルールの実際の圧縮率を表し、継続的な圧縮プロセスにおいて圧縮コーディングルールの信頼性を動的に調整できるようになる。任意で、本実装形態における実際の圧縮率およびアクセス要件情報に基づいて、推奨レコード内の圧縮コーディングルールおよび対応する圧縮率情報を更新することは、圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールであり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨される圧縮コーディングルールの信頼度を上げること、一致しない場合、推奨される圧縮コーディングルールの信頼度を下げること、または、圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールとは異なり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨レコード内の推奨される圧縮コーディングルールを、圧縮対象オブジェクトに使用される圧縮コーディングルールに置き換えることを含むことができる。
【0062】
以上の実装形態から、推奨レコードに記録された推奨された圧縮コーディングルールを使用することによって圧縮対象オブジェクトが圧縮された場合、圧縮終了後、推奨された圧縮コーディングルールが適切かどうかは、実際の圧縮率およびアクセス要件情報を使用することによってチェックされることが分かる。圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨される圧縮コーディングルールの信頼度が上がり、後続の圧縮において圧縮コーディングルールを継続して使用できる。一致しない場合、推奨される圧縮コーディングルールの信頼度が低下し、推奨される圧縮コーディングルールの信頼度がしきい値より低い場合、新しい圧縮コーディングルールを取得するために通常の圧縮コーディングプロセスを開始することができる。推奨レコードに適切な圧縮符号化ルールがない場合、新しい圧縮コーディングルールを取得するために、通常の圧縮コーディングプロセスが開始される。新しい圧縮コーディングルールは、推奨レコードに記録されている推奨される圧縮コーディングルールとは異なる。同様に、圧縮終了後、推奨された圧縮コーディングルールが適切かどうかは、実際の圧縮率およびアクセス要件情報を使用することによってチェックされる。圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨レコード内の推奨される圧縮コーディングルールは、圧縮対象オブジェクトに使用される圧縮コーディングルールに置き換えることができ、後続の圧縮で使用するために最新の適切な圧縮コーディングルールを推奨レコードに記録することができる。圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致しない場合、圧縮コーディングルールが適用されず、推奨レコードが更新されない可能性がある。
【0063】
以下、本明細書におけるデータ圧縮方法について、実装形態を使用することによって再度説明する。LSMツリーアーキテクチャなどの分散データベースでは、比較的多くのデータ圧縮要件が存在する。例として、LSMツリーアーキテクチャのリレーショナルデータベースが使用される。LSMツリーは、ツリー構造と同様に、上位層のデータサイズが下位層のデータサイズより小さい多層構造を有する。まず、メモリに常駐するC0層は、最近書き込まれたすべてのデータタプルレコードを記憶する。メモリ構造は整然としており、いつでもインプレース更新を実装することができ、いつでも照会することができる。残りのC1からCn層はすべてディスクに常駐する。
【0064】
データの書込みプロセスは次のとおりである。データの書込み動作が来ると、データの書込み動作は、最初に先行書込みログ(すなわち、実際に書き込む前に記録されたログ)に追加され、次いでC0層に追加される。C0層のデータが特定のサイズに達すると、C0層とC1層が圧縮される。これはマージソートと同様である。プロセスは圧縮である。圧縮を通じて取得された新しいC1層におけるデータは、元の旧C1層と入れ替わってディスクに順次書き込まれる。C1層が特定のサイズに達すると、下位層との圧縮が続行される。圧縮後、古いファイルはすべて削除することができ、新しいファイルが残る。
【0065】
圧縮が実行される場合、データをシャッフルし直して新しいストレージファイルに書き直す必要があり、新しいストレージファイルが圧縮される必要があることが分かる。
【0066】
圧縮と書込みの間、ユーザがテーブルを作成するときに指定された固定サイズに基づいて、データが独立した圧縮ユニットに分割され、各圧縮ユニットのデータに対して行と列のハイブリッドコーディング圧縮が実行される。
【0067】
さらに、分散データベースのシナリオでは、各データテーブルは複数のデータ複製を有する。サービスアクセスの可用性とユーザの安定性を確保するために、交互にサービスを提供するためにメインデータテーブルとデータテーブルの複製の圧縮時間をずらす必要がある。
【0068】
たとえば、データベースにおいて構成された統計情報モジュールは、ホームテーブルのアクセスデータを取得することができる。アクセスデータに基づいて、データテーブルのアクセス要件を迅速に決定することができる。たとえば、より多くのデータポイントクエリ動作とより多くのデータテーブルアクセス回数は、過去のアクセスの動作タイプと過去のアクセス頻度に基づくデータテーブルのアクセス遅延要件が高いことを示す。データの圧縮によって節約されたストレージリソースは、追加のコンピューティングリソースのオーバーヘッドを補うことができず、ユーザのアクセス速度を確保するために、比較的低い圧縮率の圧縮コーディングルールが使用される必要がある。データポイントクエリ動作の数が少なく、データテーブルへのアクセス回数が少ないということは、ユーザがクエリをあまり実行せず、アクセス遅延要件が少ないことを示している。この場合、比較的圧縮率の高い圧縮ルールを使用することができる。
【0069】
データテーブルの圧縮プロセスにおいて、多数のデータユニットを圧縮する必要があり、現在の最良の圧縮コーディングルールを含む推奨レコードが維持される。毎回、圧縮のために圧縮対象オブジェクトの圧縮コーディングルールが選択された後、圧縮コーディングルールが圧縮を推奨レコードに更新され、推奨レコードに現状の最新の圧縮コーディングルールが維持される。
【0070】
各圧縮対象データユニットが圧縮される前に、データテーブルは、データテーブルのアクセス要件情報と最新の推奨レコードの2つの入力情報を受け入れる。
【0071】
推奨レコードが空か、推奨レコードの圧縮コーディングルールの信頼度が指定されたしきい値に達していない場合、圧縮対象データユニットを検出するために、通常の圧縮コーディングプロセスが開始される。データの特徴分析は、通常の圧縮コーディングプロセスを使用することによって、データの各列に対して実行される。圧縮率は、異なる圧縮コーディングルールの推定された圧縮率に基づいて並べ替えられる。データテーブルのアクセス要件情報に基づいて、推定レートが異なる複数の圧縮コーディングルールの中から、データテーブルのアクセス要件を満たす圧縮コーディングルールが、現在の圧縮に使用される圧縮コーディングルールとして最終的に選択される。圧縮対象データユニットは、異なるタイプのデータの複数の列を含み得る。データの列ごとに対応する圧縮コーディングルールを選択することができ、すなわち、圧縮対象データユニットは、2つ以上の圧縮コーディングルールに対応することができる。
【0072】
推奨レコードにおける圧縮コーディングルールの信頼度が指定されたしきい値を超える場合、現在の圧縮対象データユニットに使用される圧縮コーディングルールとして、推奨レコード内の圧縮コーディングルールを直接使用することができる。圧縮対象データユニットは、異なるタイプのデータの複数の列を含み得、データの列ごとに対応する圧縮コーディングルールを選択することができる。いくつかの例では、推奨レコードから一部のデータ列に対して圧縮コーディングルールを選択できるが、一部のデータ列は選択できない。この場合、検出および選択のために、通常の圧縮コーディングプロセスを開始することができる。
【0073】
現在の圧縮対象データユニットに必要な1つまたは複数の圧縮コーディングルールが選択された後、圧縮対象データユニット内のデータは列ごとにスキャンされ、選択された圧縮コーディングルールを使用することによって圧縮を開始する。各データ列の圧縮が完了した後、各データ列の実際の圧縮率情報が取得される。
【0074】
データユニットの全体的な圧縮が完了すると、各データ列の実際の圧縮率情報に基づいて推奨レコードが更新される。
圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールであり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨される圧縮コーディングルールの信頼度を上げ、一致しない場合、推奨される圧縮コーディングルールの信頼度を下げ、または、
圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールとは異なり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨レコード内の推奨される圧縮コーディングルールを、圧縮対象オブジェクトに使用される圧縮コーディングルールに置き換える。
【0075】
データテーブルの複製の圧縮プロセスの場合、同一のデータを有するメインデータテーブルの圧縮コーディングルールを使用することによって、データテーブルの複製に対してデータ圧縮を直接実行することができる。
【0076】
上記の実装形態から、本明細書の本実装形態におけるデータ圧縮方法では、半教師あり学習方法が使用され、そのため、推奨レコード内の圧縮コーディングルールをタイムリーに調整するために、より多くの過去のコンテキスト情報が完全に使用されることが分かる。
【0077】
メインデータテーブルの場合、圧縮プロセスにおいて、トレーニングを通じて最新の推奨レコードを取得するために、各圧縮コーディングルールを検出するために圧縮前の段階で圧縮対象データユニットに対して通常の圧縮コーディングプロセスを開始する必要がある。信頼度が指定されたしきい値を超えた後、後続の圧縮対象データユニットは、推奨レコードにおける圧縮コーディングルールを使用することによって直接圧縮を開始することができ、複雑なルール検出は必要ない。データテーブルの複製内のデータはメインデータテーブル内のデータとまったく同じであるため、データテーブルの複製は、メインデータテーブルの最終的な推奨されたコーディングルールを使用することによって直接圧縮することができ、それによってすべての圧縮コーディングルールの検出オーバーヘッドを排除することができる。
【0078】
本実装形態では、各圧縮対象データユニットに対応する圧縮コーディングルールの選択中に、圧縮対象データユニットが属するデータテーブルのアクセス要件が最適化され、最終的な圧縮コーディングルールの選択は、アクセス遅延要件に基づいて調整される。さらに、各圧縮対象データユニットに対応する圧縮コーディングルールの選択は、単に現在のユニットのデータに基づくものではない。その代わり、より多くの圧縮ユニットの実際の圧縮率結果を使用することによって、最適な圧縮コーディングルールが総合的に検討される。
【0079】
上記の実装は、LSMツリー構造の分散型リレーショナルデータベースのデータ圧縮方法を提案している。半教師ありマルチレベルフィードバックメカニズムは、データベースの行と列のハイブリッド圧縮コーディングルールと組み合わせて実装される。データテーブルのアクセス要件情報を使用することによって各データユニットの圧縮コーディングルールの具体的な選択が修正され、推奨レコードを更新するために圧縮プロセスにおいて適切な圧縮ルールを継続的に学習することができ、それによって圧縮プロセス全体におけるコーディングルールの選択が高速化される。データテーブルの場合、分散データベースクラスタ内の別のデータ複製とローカルの過去の圧縮データの知識に基づいて、圧縮コーディングルールの検出速度を大幅に向上させることができ、データのアクセス要件特性に基づいて適切な圧縮コーディングルールが適応的に選択されることにより、データアクセス速度を可能な限り向上させつつ、圧縮率を向上させる。
【0080】
特に、データテーブルの複製の場合、メインデータテーブルの推奨レコードを直接使用することができるため、コンピューティングリソースを消費するルール推奨およびトレーニングプロセスをスキップすることができる。一般に、圧縮コーディングルールの検出を加速および最適化するために、より多くのコンテキスト情報を完全に使用することができる。
【0081】
データ圧縮方法の実装形態に対応して、本明細書は、データ圧縮装置およびその装置が適用されるコンピュータデバイスの実装形態をさらに提供する。
【0082】
本明細書におけるデータ圧縮装置の実装形態は、たとえばサーバや端末デバイスなどのコンピュータデバイスに適用することができる。本装置の実装形態は、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組合せによって実装することができる。ソフトウェアの実装形態は例として使用される。論理装置として、本装置は、装置が配置されているファイル処理のプロセッサによって、不揮発性メモリ内の対応するコンピュータプログラム命令をメモリに読み取ることによって形成される。ハードウェアに関して、
図3は、本明細書におけるデータ圧縮装置が位置するコンピュータデバイスを示すハードウェア構造図である。
図3に示されるプロセッサ310、メモリ330、ネットワークインターフェース320、および不揮発性メモリ340に加えて、装置331が実装形態において配置されるサーバまたは電子デバイスは、通常、コンピュータデバイスの実際の機能に基づいて他のハードウェアを含むことができる。簡単にするために、ここでは詳細を省略する。
【0083】
図4は、本明細書の例示的な実装形態による、データ圧縮装置を示すブロック図である。本装置は、
圧縮対象オブジェクトを取得するように構成された獲得モジュール41と、
圧縮率条件を満たす推奨される圧縮コーディングルールが存在するかどうかについて推奨レコードを検索するように構成された検索モジュール42であって、推奨レコードが、過去の圧縮されたオブジェクトの圧縮コーディングルールおよび対応する圧縮率情報を記録するために使用され、過去の圧縮されたオブジェクトが、圧縮対象オブジェクトと同じタイプである、検索モジュール42と、
圧縮率条件を満たす推奨される圧縮コーディングルールが存在する場合、その推奨される圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するように構成された第1の圧縮モジュール43と、
圧縮率条件を満たす推奨される圧縮コーディングルールが存在しない場合、圧縮対象オブジェクトの複数の圧縮コーディングルールの推定される圧縮率を取得するために、通常の圧縮コーディングプロセスを開始し、少なくとも推定される圧縮率に基づいてターゲット圧縮コーディングルールを選択し、ターゲット圧縮コーディングルールを使用することによって圧縮対象オブジェクトを圧縮するように構成された第2の圧縮モジュール44とを含む。
【0084】
任意で、圧縮対象オブジェクトは、圧縮対象データを分割することによって取得される圧縮対象データユニットを含み、過去の圧縮されたオブジェクトは、圧縮対象データを分割することによって取得される他の過去の圧縮されたデータユニットを含む。
【0085】
任意で、圧縮対象オブジェクトは、データテーブル内の圧縮対象データを分割することによって取得される圧縮対象データユニットを含み、過去の圧縮されたオブジェクトは、データテーブルに対応する過去の圧縮されたデータユニットを含む。
【0086】
任意で、圧縮対象オブジェクトは、データテーブル内の圧縮対象データの列を含み、過去の圧縮されたオブジェクトは、データテーブル内の圧縮対象データの列と同じ列に過去の圧縮されたデータを含む。
【0087】
任意で、圧縮対象オブジェクトはデータテーブルの複製を含み、過去の圧縮されたオブジェクトはデータテーブルの複製に対応するメインデータテーブルを含む。
【0088】
任意で、圧縮率条件は、少なくとも、推奨される圧縮コーディングルールの圧縮率情報が指定されたしきい値より高いことを含む。
【0089】
任意で、本装置は、圧縮対象オブジェクトが圧縮された後、圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて推奨レコードを更新するように構成された更新モジュールをさらに含む。
【0090】
任意で、更新モジュールは、
圧縮対象オブジェクトの実際の圧縮率を取得することと、少なくとも実際の圧縮率および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて推奨レコードを更新することとを行うようにさらに構成される。
【0091】
任意で、獲得モジュールは、圧縮対象オブジェクトのアクセス要件情報を取得するようにさらに構成され、アクセス要件情報は、圧縮対象オブジェクトの解凍効率に関連し、
圧縮率条件は、推奨される圧縮コーディングルールの圧縮率情報がアクセス要件情報と一致することを含む。
【0092】
任意で、第2の圧縮モジュールは、
推定される圧縮率およびアクセス要件情報に基づいてターゲット圧縮コーディングルールを選択するようにさらに構成される。
【0093】
任意で、圧縮対象オブジェクトのアクセス要件情報は、圧縮対象オブジェクトまたは過去の圧縮されたオブジェクトのうちの1つまたは複数の過去のアクセスデータを取得することによって決定される。
【0094】
任意で、過去のアクセスデータは過去のアクセス頻度を含む。
【0095】
任意で、更新モジュールは、
実際の圧縮率、アクセス要件情報、および圧縮対象オブジェクトに使用される圧縮コーディングルールに基づいて、推奨レコードを更新するようにさらに構成される。
【0096】
任意で、圧縮コーディングルールの圧縮率情報は、圧縮コーディングルールの実際の圧縮率を示す信頼度を含み、
更新モジュールは、
圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールであり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨される圧縮コーディングルールの信頼度を上げ、一致しない場合、推奨される圧縮コーディングルールの信頼度を下げること、または、
圧縮対象オブジェクトに使用される圧縮コーディングルールが推奨レコードに記録された推奨される圧縮コーディングルールとは異なり、圧縮対象オブジェクトの実際の圧縮率がアクセス要件情報と一致する場合、推奨レコード内の推奨される圧縮コーディングルールを、圧縮対象オブジェクトに使用される圧縮コーディングルールに置き換えることを行うようにさらに構成される。
【0097】
それに応じて、本明細書は、メモリ、プロセッサ、およびメモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムを含み、プロセッサは、プログラムの実行時にデータ圧縮方法の実装形態を実装する、コンピュータデバイスをさらに提供する。
【0098】
データ圧縮装置における各モジュールの機能および役割の実装形態プロセスについては、データ圧縮方法における対応するステップの実装形態プロセスを参照することができる。簡単にするために、ここでは詳細を省略する。
【0099】
データ圧縮装置の実装形態はデータ圧縮方法の実装形態に対応するため、関連する部分については、方法の実装形態における関連する説明を参照することができる。上記の装置実装形態は、単なる例である。別個の部品として記載されているモジュールは、物理的に別個であってもなくてもよく、モジュールとして表示されている部品は、物理モジュールであってもなくてもよく、一箇所に配置されてもよく、複数のネットワークモジュールに分散されてもよい。モジュールの一部またはすべては、本明細書の解決策の目的を達成するための実際のニーズに基づいて選択することができる。当業者は、創造的な努力なしに、本明細書の実装形態を理解し、実装することができる。
【0100】
本明細書の特定の実装形態は、上で説明されている。他の実装形態は、添付の特許請求の範囲内にある。場合によっては、特許請求の範囲に記載されているアクションまたはステップを、実装形態における順序とは異なる順序で実行することができ、それでも望ましい結果を達成することができる。さらに、添付の図面に示されているプロセスは、望ましい結果を達成するために特定の実行順序を必ずしも必要としない。いくつかの実装形態では、マルチタスクと並列処理が有利な場合がある。
【0101】
当業者は、本明細書を熟考し、本明細書を実施した後、本明細書の別の実装形態の解決策を容易に理解することができる。本明細書は、本明細書の任意の変更、使用、または適応をカバーすることを意図しており、これらの変更、使用、または適応は、本明細書の一般原則に従い、本明細書の技術分野において開示されていない常識または従来の技法を含む。本明細書および実装形態は単なる例として考慮されており、本明細書の実際の範囲および趣旨は、以下の特許請求の範囲によって指摘されている。
【0102】
本明細書は、上記および図面に示される正確な構造に限定されるものではなく、本明細書の範囲から逸脱することなしに、様々な修正および変更を行うことができることを理解されたい。本明細書の範囲は、添付の特許請求の範囲によってのみ限定される。
【0103】
上記の説明は、本明細書の好ましい実装形態に過ぎず、本明細書を限定することを意図するものではない。本明細書の趣旨および原理から逸脱することなしに行われるいかなる修正、同等の置換え、または改良は、本明細書の保護範囲内にあるものとする。
【符号の説明】
【0104】
41 獲得モジュール
42 検索モジュール
43 第1の圧縮モジュール
44 第2の圧縮モジュール
310 プロセッサ
320 ネットワークインターフェース
330 メモリ
331 装置
340 不揮発性メモリ
【外国語明細書】