圧縮という用語は、Teradataシステムに関しては異なるものを示す言葉として使用されます。アルゴリズム圧縮は、ノンロスの方式またはロスのある方式のどちらかで実行できます。
- 列値のアルゴリズム圧縮について説明する文脈で、アルゴリズム圧縮という用語は、バイト、文字、およびグラフィック データを圧縮するために実装するように選択した方式を意味します。アルゴリズム圧縮を実装するには、圧縮UDFと圧縮解除UDFをテーブルの列に対して割り当てます。列あたり1つの圧縮UDFと1つの圧縮解除UDFしか指定できませんが、これらの関数は複数の列値を圧縮および圧縮解除することができます。アルゴリズム圧縮UDFを列に割り当てるために使用する構文については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。アルゴリズム圧縮を実装するためのUDFのコード化の詳細については、<Teradata Vantage™- SQL外部ルーチン プログラミング、B035-1147>を参照してください。
- 列にアルゴリズム圧縮を指定する場合、音声、ビデオ、グラフィック、または写真のファイルに対してロスレスの圧縮形式を使用することも、ロスのある圧縮形式を使用することもできます。
- アルゴリズム圧縮のUDF名を指定する際は、それを含むデータベースまたはユーザーを指定することも必要です。
- アルゴリズム圧縮は、次のデータ型の任意のを含む列にのみ指定できます。
- BYTE
- CHARACTER
- VARBYTE
- VARCHAR
- BLOBまたはCLOB以外に基づくUDT型
アルゴリズム圧縮は、PERIOD型に対して指定できます。
- 結合インデックスの列については、アルゴリズム圧縮はサポートされません。
- アルゴリズム圧縮では、nullが自動的に圧縮されます。
- アルゴリズム圧縮は、可能な場合は常にスプールに対して実行されます。
- アルゴリズム圧縮を指定できるテーブルの列の数は無制限です。
- DBC.TVFields.CompressValueList列には、列に指定された圧縮アルゴリズムと圧縮解除アルゴリズムの名前、および列に指定された複数値圧縮の圧縮複数値が格納されます。
DBC.TVFields.CompressValueListの最大サイズは8,192文字です。値およびアルゴリズム圧縮情報の複合サイズがこの制限を超過した場合、Teradata Databaseはエラーを報告します。
次のルールは、UDFとして作成する圧縮および圧縮解除アルゴリズムに適用されます。
- UDFは、SYSUDTLIBまたはTD_SYSFNLIBのいずれかのデータベース内に作成する必要があります。
- UDFは、スカラーUDFである必要があります。
集約UDFとテーブルUDFは、どちらもアルゴリズム圧縮では無効です。
- UDFは、確定的である必要があります。
- UDFの入力パラメータは1つのみであり、渡される値のデータ型はアルゴリズム圧縮で有効な型でなければなりません。
- DECOMPRESS USING UDFへの入力は、変数のデータ型を使用する必要があります。
DECOMPRESS USING UDFからの出力は、圧縮解除される列のデータ型と互換性がある必要があります。
- アルゴリズム圧縮では、データ値を切り捨てることはできません。
列の長さは、COMPRESS USING UDFに渡される入力パラメータの長さ以下である必要があります。
同様に、列の長さは、DECOMPRESS USING UDFによって返される出力パラメータの長さ以下である必要があります。
- アルゴリズム圧縮を使用して定義される列を参照するユーザーは、その列に指定されているCOMPRESS USING UDFおよびDECOMPRESS USING UDFに対する権限を持っている必要があります。
- Teradata Databaseは、記述したCOMPRESS USING UDFおよびDECOMPRESS USING UDFに対する関数オーバーロードをサポートします。
例えば、異なるデータ型を処理するアルゴリズムをオーバーロードでき、システムはそれに渡される入力パラメータ値のデータ型に応じて適切な関数を実行します。
- Teradata Databaseは、PERIOD列のアルゴリズム圧縮をサポートします。
列データの圧縮および圧縮解除のコストは、使用されるアルゴリズムにより、アルゴリズム的に左右され、これらのコストはユーザー自身が評価する必要があります。
Teradataは、アルゴリズム圧縮と圧縮解除に使用できる次のシステム定義の外部UDFを提供しています。<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>の「圧縮関数/圧縮解除関数」を参照してください。これらの関数は、TD_SYSFNLIBデータベースに格納されています。