openGaussにおけるDB4AI-Snapshotsデータバージョン管理機能の実践

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: サブバージョン区切り文字(デフォルト:.)

エラー処理と制約事項

存在しないスナップショットに対する操作や、依存関係のあるスナップショットの削除時にはエラーが発生します。適切なエラーハンドリングと依存関係の管理が必要です。

タグ: OpenGauss DB4AI データバージョン管理 スナップショット AIデータベース

6月24日 20:49 投稿