Snowflake 简明教程

Snowflake - Table & View Types

Table Types

Snowflake categorizes tables into different types based on its uses and nature. There are four types of tables −

Permanent Table

  1. Permanent tables are created in the database.

  2. These tables persist until deleted or dropped from database.

  3. 这些表旨在存储需要最高级别的数据保护和恢复的数据。

  4. 这是默认表类型。

  5. 这些表中的时间旅行最长可达 90 天,也就是某人可以获取最多 90 天之前的数据。

  6. 它是故障安全的,如果由于故障丢失数据,则可以恢复数据。

Temporary Table

  1. 如名称所示,临时表存在的时间较短。

  2. 这些表在整个会话期间都存在。

  3. 如果用户希望为其后续查询和分析创建一个临时表,那么一旦会话完成,它将自动删除该临时表。

  4. 它主要用于临时数据,比如 ETL/ELT

  5. 临时表中可以进行时间旅行,但只能从 0 到 1 天。

  6. 它不是故障安全的,这意味着无法自动恢复数据。

Transient Table

  1. 这些表持续存在,直到用户删除它们。

  2. 多个用户可以访问临时表。

  3. 当需要“数据持久性”但不需要长时间“数据保留”时使用它。例如,网站的访客详细信息、访问网站并已注册该网站的用户的详细信息,所以在注册之后,可能不需要将详细信息存储在两个不同的表中。

  4. 临时表中可以进行时间旅行,但只能从 0 到 1 天。

  5. 它也不是故障安全的。

External Table

  1. 这些表持续存在,直到被删除。

  2. 这里,使用了单词 removed ,因为外部表类似于 Snowflake 之外,并且不能删除或丢弃它们。应该将其移除。

  3. 可以将其视作 Snowflake,外部数据湖,也就是数据湖的主要来源指向 Snowflake,以便根据用户需求使用数据。

  4. 不能直接访问数据。可以通过外部阶段在 Snowflake 中访问它。

  5. 外部表只适于读取。

  6. 外部表无法进行时间旅行。

  7. 它在 Snowflake 环境中并非万无一失。

View Types

Snowflake 中有三个主要分类的视图:

Standard View

  1. 它是默认视图类型。

  2. 用于查看数据表的查询。

  3. 用户可以根据角色和权限执行查询。

  4. 任何有权访问这些视图的角色都可以使用底层 DDL。

Secure View

  1. 安全视图意味着只有经过授权的用户才能访问它。

  2. 授权用户可以查看定义和详细信息。

  3. 具有适当角色的授权用户可以访问这些表并执行查询。

  4. 在安全视图中,Snowflake 查询优化器会绕过用于常规视图的优化。

Materialized View

  1. 物化视图更像一个表。

  2. 这些视图使用筛选条件存储主源中的结果。例如,一家公司从成立至今所有员工的记录(活跃、不活跃或已故)。现在,如果用户只需要活跃员工的详细信息,那么可以查询主表并将结果存储为物化视图以进行进一步分析。

  3. 物化视图会自动刷新,也就是说,每当主表获取其他/新的员工记录时,它也会刷新物化视图。

  4. Snowflake 也支持安全物化视图。

  5. 物化视图会自动维护,并且它会消耗大量的计算资源。

  6. 物化视图的总成本基于“数据存储 + 计算 + 无服务器服务”。

  7. 每个物化视图的计算费用会根据数据更改量进行计算。