Hitachi

ノンストップデータベース HiRDB Version 10 解説


3.3.16 圧縮表

HiRDBが表にデータを格納するとき,データを圧縮して格納できます。これをデータ圧縮機能といいます。データの圧縮は列単位に指定でき,圧縮を指定した列を圧縮列といい,圧縮列がある表を圧縮表といいます。圧縮表については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

HiRDBがデータを圧縮することで,次のメリットがあります。

データ圧縮の概要を次の図に示します。

図3‒21 データ圧縮の概要

[図データ]

〔説明〕

HiRDBがデータの圧縮及び伸張処理を実行するため,ユーザはデータの圧縮及び伸張を指示する必要はありません。

〈この項の構成〉

(1) 適用基準

画像,音声など,容量が大きい可変長バイナリデータを含む表を圧縮表にすることをお勧めします。ただし,圧縮表の場合,圧縮処理や伸張処理によるオーバヘッドが掛かります。このため,性能よりも格納効率を重視するシステムで使用してください。

(2) データ圧縮の仕組み

データ圧縮時に使用する圧縮ライブラリはzlibです。HiRDBは,zlibを使用して表定義時に指定した圧縮分割サイズ(省略値:MIN(32,000バイト,圧縮列の定義長))ごとに圧縮します。このとき,圧縮前後のデータの情報を管理するヘッダ領域(8バイト)を圧縮分割サイズごとに追加します(zlibが圧縮データに付与するヘッダ領域とは別に追加します)。

ただし,圧縮前後のデータ長が同じ,又は圧縮後のデータ長の方が長くなる場合,HiRDBはデータを圧縮しないで格納します。このため,ヘッダ領域の付与によって,圧縮後のデータサイズが圧縮前よりも大きくなることがあります。圧縮前後のデータを次の図に示します。

図3‒22 圧縮前後のデータ

[図データ]

(3) 圧縮表の定義方法

定義系SQLのCREATE TABLEの列定義で圧縮指定(COMPRESSED)をします。必要に応じて,圧縮分割サイズも指定します。ただし,圧縮指定には次の条件があります。

注※ 

抽象データ型(XML型)の列のデータを圧縮するためには,バージョン09-03以降のHiRDB XML Extensionが必要です。

(4) 圧縮表使用時の留意事項