2. Snowflake平台架构与验收对象

Snowflake 的验收之所以容易“看起来都通了、实际却交付不清”,根本原因在于它的架构不是一台服务器、一个数据库实例,而是一组跨云区域、跨账户、跨角色的逻辑对象与云资源的组合。要判断一个 Snowflake 平台是否达到交付标准,必须先明确:哪些对象属于平台方建设范围,哪些属于使用方自建范围;哪些是账户级配置,哪些是组织级治理;哪些是存储与计算分离后的独立验收点。本节围绕这些对象建立一张“验收对象地图”,后续章节的检查项、测试用例和交付物都挂在这张地图上。

一、从组织到账户:治理边界与资源边界

Snowflake 的最高层是 Organization(组织),它把多个 Account 关联在一起,用于跨账户的统一治理,例如组织级用户、组织级策略、跨账户复制与账户间数据共享。组织本身不承载业务数据,它承载的是“账户之间的关系”。因此验收组织层时,重点不是查表,而是查:组织下挂了哪些账户、账户属于哪个云区域、是否启用了组织级策略、跨账户复制是否按预期配置。

Account(账户)是真正承载资源、计费、安全和隔离的边界。一个账户内包含数据库、模式、虚拟仓库、用户、角色、网络策略、资源监视器等。验收账户层时,最典型的问题是:账户部署在哪个云与区域(例如 AWS ap-southeast-1 或 Azure East US 2)、账户标识符(Account Locator / Organization Name)是否登记正确、账户级参数(如时区、会话超时、语句超时)是否按交付基线设置。账户是“交付边界”的第一道分界线:账户之外的对象,通常不属于本账户的验收范围,除非通过共享或复制显式引入。

二、数据库与模式:数据对象的命名与归属

账户之下是 Database(数据库),数据库之下是 Schema(模式),模式之下才是表、视图、函数、存储过程、序列等对象。Snowflake 采用三层命名空间 DATABASE.SCHEMA.OBJECT,这一点在验收中非常关键:任何对象都必须能回答“它在哪个库、哪个模式、由谁创建、被谁引用”。

验收数据库与模式时,建议按“用途分层”检查,而不是按数量检查。常见分层包括:

  • 原始层(RAW / LANDING):存放从源系统接入的原始数据,通常保留最细粒度,允许重复与脏数据。
  • 整合层(CURATED / INTEGRATION):完成清洗、去重、标准化、维度建模。
  • 应用层(MART / PRESENTATION):面向报表、BI、数据产品,通常按主题域划分模式。
  • 治理与运维层(GOVERNANCE / UTIL):存放审计、监控、元数据、资源使用记录。

验收时要确认:每个模式是否有明确 Owner 角色、是否设置了默认的 Time Travel 保留期、是否启用了数据保留与克隆策略、是否对 PUBLIC 角色开放了不该开放的权限。数据库与模式是权限授予的主要落点,也是“交付边界”在数据侧的具体体现。

三、虚拟仓库与存储计算分离:验收的核心机制

Snowflake 最本质的架构特征是存储与计算分离。数据持久化在云对象存储(如 S3、Azure Blob、GCS)中,由 Snowflake 管理为微分区(Micro-partition);计算由 Virtual Warehouse(虚拟仓库)提供,虚拟仓库是一组可弹性伸缩的计算节点,按秒计费,可独立于存储启停、扩缩。

这意味着验收必须把“存储”和“计算”分开看:

  • 存储侧:数据是否已正确加载、微分区是否合理、表是否启用聚簇、Time Travel 与 Fail-safe 是否符合保留要求、存储用量是否可被监控。
  • 计算侧:虚拟仓库的规模(T-shirt Size,如 XS、S、M、L)、自动挂起与自动恢复参数、多集群(Multi-cluster)配置、查询加速策略、资源监视器与预算告警是否生效。

虚拟仓库不是数据库,它不存数据,只提供计算。因此验收虚拟仓库时,不能只看“能不能跑 SQL”,而要看:仓库在空闲时是否按预期挂起、并发查询时是否按策略扩展、仓库与工作负载是否匹配(例如 ETL 用大仓库、BI 用小仓库)、是否设置了合理的 STATEMENT_TIMEOUT_IN_SECONDS 与 STATEMENT_QUEUED_TIMEOUT_IN_SECONDS。这些参数直接决定交付后的成本与稳定性。

四、云服务层:看不见但必须验收的一层

在存储与计算之外,Snowflake 还有一层云服务层(Cloud Services Layer),负责身份认证、访问控制、元数据管理、查询解析与优化、事务管理、安全策略执行等。云服务层不直接产生数据存储费用,但它是所有操作的控制平面。验收云服务层时,重点检查:

  • 身份认证方式:是否启用 SSO / SAML / OAuth,是否强制 MFA。
  • 访问控制:RBAC 角色层级是否清晰,是否存在越权路径。
  • 网络与安全:网络策略、PrivateLink、IP 白名单是否按交付要求配置。
  • 审计与监控:ACCOUNT_USAGE 与 INFORMATION_SCHEMA 是否可查,登录历史、查询历史是否保留。

云服务层是“交付边界”中最容易被忽略的一层,因为它没有实体资源,但一旦认证或权限配置错误,整个平台的可信度都会受影响。

五、交付边界:哪些属于平台交付,哪些属于使用方自建

把上述对象串起来,就形成了一条清晰的交付边界:组织与账户由平台方建设并登记;数据库、模式、虚拟仓库、角色、网络策略、资源监视器由平台方按基线创建;使用方在既定边界内创建自己的表、视图、任务与查询。验收时要能明确回答:账户是谁的、区域在哪里、哪些库和仓库已交付、哪些权限已授予、哪些监控已开启、哪些对象不在本次交付范围内。

Snowflake 平台架构与验收对象地图 组织 → 账户 → 数据库/模式 → 虚拟仓库 → 存储与计算分离 → 云服务层 Organization 组织 跨账户治理 · 组织级策略 · 复制 Account 账户(交付边界) 云区域 · 账户标识 · 账户级参数 · 计费隔离 Database 数据库 RAW / CURATED / MART / GOVERNANCE Schema 模式 表 · 视图 · 函数 · 存储过程 · 序列 Virtual Warehouse 虚拟仓库 XS / S / M / L · 自动挂起 · 多集群 计算资源(不存数据) 按秒计费 · 独立启停 · 资源监视器 存储与计算分离(Storage / Compute Separation) 云对象存储 · 微分区 · Time Travel 虚拟仓库 · 弹性伸缩 · 按秒计费 Cloud Services Layer 云服务层 认证 · SSO · MFA RBAC · 权限控制 元数据 · 查询优化 审计 · 监控 数据侧 对象 计算侧 对象

六、验收对象清单与判断依据

把上述对象整理成可执行的验收清单,可以避免“凭感觉验收”。下表给出的是对象、检查点与判断依据的对应关系,实际交付时可按项目规模裁剪。

层级 验收对象 关键检查点 判断依据
组织 Organization 账户归属、组织级策略、跨账户复制 组织账户列表与交付清单一致
账户 Account 云区域、账户标识、账户参数 区域与合同一致,参数符合基线
数据 Database / Schema 分层命名、Owner 角色、保留策略 每层有明确用途与责任人
计算 Virtual Warehouse 规模、自动挂起、多集群、超时参数 工作负载与仓库规格匹配
存储 Micro-partition / Time Travel 聚簇、保留期、Fail-safe 保留期满足合规要求
云服务 Cloud Services Layer SSO、MFA、RBAC、网络策略、审计 认证与权限路径可验证
验收时建议先画一张“账户—数据库—仓库—角色”的对应表,再逐项核对。凡是无法回答“它属于哪个账户、由哪个角色拥有、在哪个区域”的对象,都应视为交付边界不清,需要补充说明或重新登记。

总结来看,Snowflake 的验收对象不是单一数据库,而是组织、账户、数据库、模式、虚拟仓库、存储、计算分离与云服务层共同构成的层次结构。只有把每一层的边界、归属和判断依据说清楚,后续的权限测试、性能测试、成本核对和安全审计才有稳定的落点。