华为云云数据库GaussDBSNAPSHOT_云淘科技

功能描述

针对多用户情况下,对数据进行统一的版本控制。

注意事项

本特性GUC参数db4ai_snapshot_mode,快照存储模型分为MSS和CSS两种;GUC参数db4ai_snapshot_version_delimiter,用于设定版本分隔符,仅接受设定单字节参数值,默认为“@”;GUC参数db4ai_snapshot_version_separator,用于设定子版本分隔符,仅接受设定单字节参数值,默认为“.”。
当快照选用增量存储方式时,各个快照中具有依赖关系。删除快照需要按照依赖顺序进行删除。
snapshot特性用于团队不同成员间维护数据,涉及管理员和普通用户之间的数据转写。所以在私有用户、三权分立(enableSeparationOfDuty=ON)等状态下,数据库不支持snapshot功能特性。
当需要稳定可用的快照用于AI训练等任务时,用户需要将快照发布。

语法格式

创建快照

可以采用“CREATE SNAPSHOT … AS”以及“CREATE SNAPSHOT … FROM”语句创建数据表快照。

CREATE SNAPSHOT AS

CREATE SNAPSHOT qualified_name [@ [version]]
    [COMMENT IS comment_item]
    AS query;

CREATE SNAPSHOT FROM

CREATE SNAPSHOT qualified_name [@ [version]]
    FROM @ version
    [COMMENT IS comment_item]
        USING (
        { INSERT [INTO SNAPSHOT] insert_item
          | UPDATE [SNAPSHOT] [AS alias] SET set_item [FROM from_item] [WHERE where_item]
          | DELETE [FROM SNAPSHOT] [AS alias] [USING using_item] [WHERE where_item]
          | ALTER [SNAPSHOT] { ADD and_item | DROP drop_item } [, ...]
      } [; ...]
    );

删除快照。

PURGE SNAPSHOT

PURGE SNAPSHOT qualified_name @ version;

快照采样。

SAMPLE SNAPSHOT

SAMPLE SNAPSHOT qualified_name @ version
    [STRATIFY BY attr_list]
    { AS alias AT RATIO num [COMMENT IS comment_item] } [, ...]

快照发布。

PUBLISH SNAPSHOT

PUBLISH SNAPSHOT qualified_name @ version;

快照存档。

ARCHIVE SNAPSHOT

ARCHIVE SNAPSHOT qualified_name @ version;

查询快照。

SELECT * FROM DB4AISHOT (qualified_name @ version );

参数说明

qualified_name

创建snapshot的名称。

取值范围:字符串,需要符合标识符命名规范。

version

(可省略)snapshot的版本号,当省略设置。系统会自动顺延编号。

取值范围:字符串,数字编号配合分隔符。

comment_item

指定添加的评论内容。

取值范围:字符串,需要符合标识符命名规范。

insert_item

需要插入的对象名字。

取值范围:字符串,需要符合标识符命名规范。

alias

对当前对象取的别名。

取值范围:字符串,需要符合标识符命名规范。

set_item

当前操作的对象名。

取值范围:字符串,需要符合标识符命名规范。

from_item

用于连接的查询源对象的名称。

取值范围:字符串,需要符合标识符命名规范。

where_item

返回值为布尔型的任意表达式。

取值范围:字符串,需要符合标识符命名规范。

using_item

用于连接的对象名称。

取值范围:字符串,需要符合标识符命名规范。

and_item

需要并列处理的对象名称。

取值范围:字符串,需要符合标识符命名规范。

drop_item

需要drop的对象名称。

取值范围:字符串,需要符合标识符命名规范。

attr_list

目标对象的list集合。

取值范围:字符串,需要符合标识符命名规范。

num

指定的比例值。

取值范围:数字。

示例

——创建数据表
gaussdb=# CREATE TABLE t1 (id int, name varchar);

——插入数据
gaussdb=# INSERT INTO t1 VALUES (1, 'zhangsan');
gaussdb=# INSERT INTO t1 VALUES (2, 'lisi');
gaussdb=# INSERT INTO t1 VALUES (3, 'wangwu');
gaussdb=# INSERT INTO t1 VALUES (4, 'lisa');
gaussdb=# INSERT INTO t1 VALUES (5, 'jack');

——创建快照
gaussdb=# CREATE SNAPSHOT s1@1.0 comment is 'first version' AS SELECT * FROM t1;

——迭代创建快照
gaussdb=# CREATE SNAPSHOT s1@2.0 FROM @1.0 comment is 'inherits from @1.0' USING (INSERT VALUES(6, 'john'), (7, 'tim'); DELETE WHERE id = 1);

——查看快照内容
gaussdb=#SELECT * FROM DB4AISHOT(s1@1.0);

——快照采样
gaussdb=# SAMPLE SNAPSHOT s1@2.0 stratify by name as nick at ratio .5;

——删除快照
gaussdb=# PURGE SNAPSHOT s1@2.0;
gaussdb=# PURGE SNAPSHOT s1nick@2.0;
gaussdb=# PURGE SNAPSHOT s1@1.0;

——删除表格
gaussdb=# DROP TABLE t1;

父主题: SQL语法

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家