スキーマ進化のサポート
スキーマの進化とは、新しい要件やデータモデルの出現に伴い、データベースの構造を時とともに修正していくプロセスである。 これは、新しいデータ要素や既存のデータ要素の変更に対応するために、テーブルのスキーマを変更することを含む。
Db2は、データの整合性と一貫性を維持しながら、テーブルの変更に対応するために、ローカルDb2テーブルのスキーマ進化の変更を広範にサポートしています。 Datalakeテーブルのスキーマ進化のサポートは、データが外部に保存され、Db2が所有していないことを考えると、より複雑で問題が多い。
スキーマの進化は、特に大規模なデータベースや複雑なデータベースでは困難な場合があるので、そのような変更は慎重に扱うことをお勧めする。 スキーマ進化の課題には、次のようなものがある:
- データの損失:スキーマの変更は、注意深く管理されなければ、データの損失やデータへのアクセスエラーを引き起こす可能性がある。
- 互換性の問題:スキーマの変更は、既存のアプリケーションとの互換性の問題を引き起こす可能性があります。
- パフォーマンスの問題:スキーマを変更すると、テーブルへの読み書きのパフォーマンスに影響を与える可能性がある。
- データの不整合:スキーマの変更は、注意深く管理されなければデータの不整合を引き起こし、不正確なデータや不完全なデータにつながる可能性がある。
外部で管理されているDatalakeテーブルの場合、スキーマ進化の変更はかなり制限されている。 以下の変更のみが許される:
- 情報制約の追加/削除/変更
- ユニーク制約
- ユニークなカラム
- 主 キー
- 参照(外部キー)制約
- Check constraint (チェック制約)
- ユニーク制約
- ほとんどの列のオプションを設定する
- 列の制約
- コラムコメント
- カラムにNOT NULL/NULLを設定する
- RCACの有効化/無効化
外部管理テーブルの詳細については、用語解説を参照のこと。
アイスバーグ・テーブルの場合、数値データ型で許可されるサポートされているデータ型の変更は、データ型のサイズ拡張をサポートするもののみです。 例えば、INTEGERとして定義された列をBIGINTに変更するなどです。 CHARとVARCHARについては、alterを使用してカラムのサイズを変更することができます。 これらは、 Hive Datalakeテーブルに対する唯一の推奨されるデータタイプの変更ですが、 Hive がサポートする変更はすべて許可されます。 テーブルのカラムを変更してカラムに新しいデータタイプを指定した場合、新しいタイプの長さが元のデータタイプの長さよりも短い場合、テーブルのデータ値が切り捨てられた形式で返される可能性があります。 Datalakeテーブルに対するスキーマの変更に関する詳細は、ALTER DATALAKE TABLEステートメントを参照してください。