Snowflake数据平台与传统的本地关系型数据库管理系统相比,拥有许多独特的特性。本教程将介绍开发者在Snowflake数据平台上实施解决方案前必须了解的五大特性,并提供快速示例。如果是Snowflake的新手,建议先阅读文章。
Snowflake中的阶段
阶段是用于存储数据的位置。数据从阶段加载到Snowflake表中,也可以从Snowflake卸载数据。阶段分为以下几类:
a. 内部阶段:需要加载到Snowflake的数据存储在Snowflake内部。
b. 外部阶段:需要加载到Snowflake的数据存储在Snowflake外部,例如AWS S3。使用外部阶段可以查询AWS S3中可用的文件。
内部阶段进一步细分为:
a. 用户阶段:默认创建,特定于该用户。如果用户想要从本地加载数据到多个表中,可以使用此阶段。
b. 表阶段:创建表时默认创建,特定于该表。
c. 命名阶段:可以由显式创建。
-- 深入了解阶段的实践操作,请查看文章
Snowflake中的时间旅行
还记得老电影中的时光机吗?可以回到过去,看看世界。Snowflake提供的时间旅行功能与之类似。
时间旅行可以定义在数据库、模式、表等对象上。可以看到表的历史数据的时间长度由数据保留期参数定义。默认情况下,所有版本的所有对象都设置为1天。
对于企业版和业务关键版,可以将此参数扩展到90天。
使用“DATA RETENTION PERIOD”参数设置对象上的时间旅行选项。一旦超过时间旅行持续时间,对象将进入故障安全区域。当对象处于故障安全模式时,如果需要检索此对象,则需要联系Snowflake本身。
-- 时间旅行示例
create or replace table T_EMP_DETLS (empid number,empname varchar) data_retention_time_in_days=4;
insert into T_EMP_DETLS values(1,'Micheal');
-- 其他插入操作
Snowflake中的零拷贝克隆
在典型的关系型数据库管理系统中,当从一个数据库复制表到另一个数据库时,表和数据也会被复制,这意味着数据被复制了两次,存储也更高。
-- 克隆表示例
create or replace table T_EMP_DETLS_CLN clone T_EMP_DETLS;
-- 创建数据流示例
create stream st_emp_dtls on table T_EMP_DETLS;
insert into T_EMP_DETLS values(8,'Arnold');
-- 创建任务示例
CREATE TASK T_TASK1
WAREHOUSE = COMPUTE_WH
SCHEDULE = '5 minute'
WHEN
SYSTEM$STREAM_HAS_DATA('st_emp_dtls')
AS
INSERT INTO test_emp_tabel(EMPID,EMPNAME) SELECT empid,empname FROM st_emp_changes WHERE METADATA$ACTION = 'INSERT';