DB4AI-Snapshotsの概要
DB4AI-SnapshotsはopenGaussのDB4AIモジュールが提供するデータセットバージョン管理機能です。このコンポーネントにより、開発者は特徴量選択や型変換などのデータ前処理を簡易かつ迅速に行えるほか、Gitのようなデータセットのバージョン管理が可能となります。スナップショット作成後はビューとして利用できますが、一度公開されると不変の静的なデータとなり、内容を変更するには新たなバージョンのスナップショットを作成する必要があります。
スナップショットのライフサイクル
DB4AI-Snapshotsには3つの状態があります:published(公開)、archived(アーカイブ)、purged(削除)。published状態は利用可能な状態を示し、archived状態は新しいモデルの検証用に保存されている状態、purged状態は完全に削除された状態を表します。
スナップショット機能はチーム協業を目的として設計されているため、プライベートユーザーや三権分立が有効な環境では利用できない点に注意が必要です。
実践的な使用例
基本テーブルの作成
CREATE TABLE user_data (
user_id INTEGER,
user_name VARCHAR(50)
);
INSERT INTO user_data VALUES
(1, 'tanaka'),
(2, 'sato'),
(3, 'suzuki'),
(4, 'yamada'),
(5, 'watanabe');
スナップショットの作成
CREATE SNAPSHOT user_snapshot@1.0
COMMENT '初期バージョン'
AS SELECT * FROM user_data;
スナップショットからのデータ取得
SELECT * FROM user_snapshot@1.0;
user_id | user_name
---------+-----------
1 | tanaka
2 | sato
3 | suzuki
4 | yamada
5 | watanabe
継承による新規スナップショット作成
CREATE SNAPSHOT user_snapshot@2.0
FROM @1.0
USING (
INSERT VALUES(6, 'kobayashi'), (7, 'nakamura');
DELETE WHERE user_id = 1
);
サンプリング機能の利用
SAMPLE SNAPSHOT user_snapshot@2.0
STRATIFY BY user_name
AS test_set AT RATIO .3,
AS train_set AT RATIO .7
COMMENT '訓練用データ分割';
状態管理操作
PUBLISH SNAPSHOT user_snapshot@2.0;
ARCHIVE SNAPSHOT user_snapshot@1.0;
PURGE SNAPSHOT user_snapshot@1.0;
システムパラメータ設定
db4ai_snapshot_mode: MSS(実体保存)またはCSS(差分保存)モードを指定db4ai_snapshot_version_delimiter: バージョン区切り文字(デフォルト:@)db4ai_snapshot_version_separator: サブバージョン区切り文字(デフォルト:.)
エラー処理と制約事項
存在しないスナップショットに対する操作や、依存関係のあるスナップショットの削除時にはエラーが発生します。適切なエラーハンドリングと依存関係の管理が必要です。