6.3.1 暗号化したデータベースを運用するときの注意事項
- 〈この項の構成〉
(1) 暗号化した場合の処理時間
表を暗号化すると,暗号化および復号化の処理があるため,その分処理速度が遅くなります。性能が劣化する可能性があるため,暗号化する列は必要最低限にしてください。また,SQLを作成する場合,暗号化列はなるべく比較述語(=),またはIN述語(IN)で判定するようにしてください。
暗号化しない場合は,インデクスは昇順または降順になることが保証されますが,暗号化する場合は保証されなくなるため,述語によっては,インデクスのサーチ条件によるインデクスのサーチ範囲の絞り込みができなくなり,性能が劣化します。同様の理由によって,ORDER BY処理方式,およびグループ分け処理方式で,インデクスを使用した高速な処理方式が選択できなくなります。
(a) インデクスのサーチ範囲の絞り込み適用可否
暗号化列に対するインデクスのサーチ範囲の絞込み適用可否を次の表に示します。サーチ条件については,マニュアル「HiRDB コマンドリファレンス」を参照してください。
述語 |
非暗号化列での適用可否 |
暗号化列での適用可否 |
---|---|---|
比較述語(=) |
○ |
○ |
比較述語(=以外) |
○※1 |
× |
NULL述語(IS NULL) |
○ |
○ |
NULL述語(IS NOT NULL) |
○※2 |
○※2 |
IN述語(IN) |
○ |
○ |
IN述語(NOT IN) |
× |
× |
LIKE述語 |
○※3 |
× |
XLIKE述語 |
× |
× |
BETWEEN述語 |
○※4 |
× |
EXISTS述語 |
− |
− |
構造化繰返し述語 |
○ |
− |
限定述語 |
○※5 |
○※5 |
論理述語 |
○ |
− |
- (凡例)
-
○:絞込みを適用します。
×:絞込みを適用しません。
−:暗号化列は,データ比較に使用しないか,または指定できません。
- 注※1
-
<>,^=,および!=は,絞込みを適用しません。
- 注※2
-
列に定義した単一列インデクスを利用しない場合,絞込みを適用しません。
- 注※3
-
NOT LIKEの場合は絞込みを適用しません。
- 注※4
-
NOT BETWEENの場合は絞込みを適用しません。
- 注※5
-
=ANY,および=SOMEの場合だけ,絞込みを適用します。
(3) DECIMAL型の暗号化列を検索した場合の符号部の扱い
DECIMAL型の列を暗号化した場合,システム共通定義のpd_dec_sign_normalizeオペランドの指定値に関係なく,正の符号はすべてX'C'に変換します。このため,符号にX'F'を指定してデータを格納した場合でも,検索結果の符号は必ずX'C'になります。