DCM Projects 的企业用例¶
本主题介绍如何在企业环境中使用 DCM Projects,包括管理多个项目、使用多个环境以及项目协作等内容。
何时使用多个 DCM 项目¶
在决定是否以及如何将 DCM project 拆分为多个项目时,需要考虑所有权归属和模板化问题。
所有权¶
每个项目都有一个所有者角色,该角色能够部署所有已定义的对象。通过权限授予,可以对项目内的单个对象进行精细的访问管理。然而,如果不同用户组分别负责将变更部署到项目中,那么相应地拆分 DCM project 通常是合理的做法。
以下是示例场景:
平台管理员负责部署数据库和仓库,创建团队管理员角色,并为团队管理员授予 CREATE 权限,使其能够管理该数据库内指定的一组对象类型,同时授予其对指定的一组账户级集成的访问权限。
团队管理员现在可以决定如何组织该数据库中的架构和动态表、调整刷新频率,并为团队成员授予更精细的读取权限。
以下是解决方案:
平台管理员为团队部署高级别基础设施,并授予团队管理员在其数据库中创建 DCM project 项目的权限。
团队管理员现在也可以利用 DCM Projects,在团队数据库中创建一个或多个项目,以便管理表结构及团队成员的权限授予。
模板变量¶
如果 DCM project 定义了一系列相互之间相似且应保持这种相似性的对象,那么将它们定义为参数化模板,一次性定义通常会更加便捷。
以下是示例场景:
平台团队为组织中的每个区域团队部署一个数据库。
未来预计会陆续增加新的区域。
所有区域所需的架构、登录表、角色和仓库配置基本相同。
对该数据库模板的变更(例如添加只读角色)应同步应用到所有团队。
以下是解决方案:
您可以通过循环方式,为清单配置文件中列出的每个区域团队执行同一组定义。
当该模板中的更多元素开始出现差异,且模板化条件的数量逐渐增多时,阅读和维护具有各自对象定义的独立 DCM 项目就会变得更容易。
在多个环境中使用 DCM Projects¶
下图展示了将 DCM project 部署到多个环境的典型工作流程。
多账户方案与多数据库方案¶
Snowflake 通常建议将每个环境设置为独立的 Snowflake 账户。这样可以确保生产基础设施与任何试验性开发完全隔离,并保证开发者对生产数据的访问受到严格限制。
不过,通过精细的访问管理,您也可以在一个 Snowflake 账户中成功管理多个环境。当数据库之间界限清晰时,这种做法相对简单;但如果涉及账户级对象和集成,则会更具挑战性。
单账户设置的优势在于,可以轻松克隆生产基础设施和数据,从而在将变更部署到生产环境之前进行测试。但是,将部分生产数据和基础设施复制到其他账户(例如通过组织内部数据共享)的成本可能会更高。
对 DCM project 模板化的影响¶
在单账户方案中,需要为每个环境设置不同的对象名称,例如将 EMEA_DB 和 EMEA_ADMIN 与 EMEA_DB_DEV 和 EMEA_ADMIN_DEV 区分开来。Snowflake 也建议在多账户方案中采用这种做法。通过模板化名称,可以使 EMEA_DB_DEV_JOHN 和 EMEA_DB_DEV_MARY 等实体的多个实例共存,以支持独立开发,并可快速创建和销毁沙盒环境来测试不同的解决方案。
这一点适用于所有账户级对象,例如数据库、角色和仓库。然后,您需要将这些模板化名称应用到嵌套对象的所有完全限定名称中。