opengauss 使用DB4AI-Snapshots。

使用DB4AI-Snapshots。

  • 创建DB4AI-Snapshots

    • 示例1:CREATE SNAPSHOT…AS

      示例如下,其中,默认版本分隔符为 “@”, 默认子版本分割符为 “.”,该分割符可以分别通过GUC参数db4ai_snapshot_version_delimiter以及db4ai_snapshot_version_separator进行设置。

      create snapshot s1@1.0 comment is 'first version' as select * from t1;
      schema |  name
      --------+--------
       public | s1@1.0
      (1 row)
      

      上述结果提示已经创建了数据表 s1的快照,版本号为 1.0。创建好后的数据表快照可以像使用一般视图一样进行查询,但不支持通过“INSERT INTO”语句进行更新。例如下面几种语句都可以查询到数据表快照s1的对应版本 1.0的内容:

      SELECT * FROM s1@1.0;
      SELECT * FROM public.s1@1.0;
      SELECT * FROM public . s1 @ 1.0;
      id |   name
      ----+----------
        1 | zhangsan
        2 | lisi
        3 | wangwu
        4 | lisa
        5 | jack
      (5 rows)
      

      可以通过下列SQL语句修改数据表t1的内容:

      UPDATE t1 SET name = 'tom' where id = 4;
      insert into t1 values (6, 'john');
      insert into t1 values (7, 'tim');
      

      再检索数据表t1的内容时,发现虽然数据表t1的内容已经发生变化,但是数据表快照 s1@1.0 版本的查询结果并未发生变化。由于数据表t1的数据已经发生了改变,如果将当前数据表的内容作为版本2.0,则可创建快照s1@2.0,创建的SQL语句如下:

      create snapshot s1@2.0 as select * from t1;
      

      通过上述例子,我们可以发现,数据表快照可以固化数据表的内容,避免中途对数据的改动造成机器学习模型训练时的不稳定,同时可以避免多用户同时访问、修改同一个表时造成的锁冲突。

    • 示例2:CREATE SNAPSHOT…FROM

      SQL语句可以对一个已经创建好的数据表快照进行继承,利用在此基础上进行的数据修改产生一个新的数据表快照。例如:

      create snapshot s1@3.0 from @1.0 comment is 'inherits from @1.0' using (INSERT VALUES(6, 'john'), (7, 'tim'); DELETE WHERE id = 1);
      schema |  name
      --------+--------
       public | s1@3.0
      (1 row)
      

      其中,“@”为数据表快照的版本分隔符,from子句后加上已存在的数据表快照,用法为“@”+版本号,USING关键字后加入可选的几个操作关键字(INSERT …/UPDATE …/DELETE …/ALTER …),其中 “INSERT INTO”以及“DELETE FROM”语句中的“INTO”、“FROM”等与数据表快照名字相关联的子句可以省略,具体可以参考AI特性函数

      示例中,基于前述s1@1.0快照,插入2条数据,删除1条新的数据,新生成的快照s1@3.0,检索该s1@3.0:

      SELECT * FROM s1@3.0;
      id |   name
      ----+----------
        2 | lisi
        3 | wangwu
        4 | lisa
        5 | jack
        6 | john
        7 | tim
      (7 rows)
      
  • 删除数据表快照SNAPSHOT

    purge snapshot s1@3.0;
    schema |  name
    --------+--------
     public | s1@3.0
    (1 row)
    

    此时,已经无法再从s1@3.0 中检索到数据了,同时该数据表快照在db4ai.snapshot视图中的记录也会被清除。删除该版本的数据表快照不会影响其他版本的数据表快照。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值