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 |
論理述語 |
○ |
− |
(3) DECIMAL型の暗号化列を検索した場合の符号部の扱い
DECIMAL型の列を暗号化した場合,システム共通定義のpd_dec_sign_normalizeオペランドの指定値に関係なく,正の符号はすべてX'C'に変換します。このため,符号にX'F'を指定してデータを格納した場合でも,検索結果の符号は必ずX'C'になります。