Snowflake 开发工程师的数据仓库设计
架构、表格和虚拟数据仓库规模的设置,确保不同团队和工作负载不会相互拖慢速度,也不会不公平地分摊账单。
已经把报表或分析工作迁移到 Snowflake 上的企业,通常出于两个原因之一在迪拜招聘 Snowflake 开发工程师:这个平台承担的工作已经超出了当初的规划范围,或者每月的计算账单开始以出乎所有人预料的速度增长。两者其实指向同一项技能,也就是真正理解 Snowflake 架构的实际运作方式,而不只是能写出恰好在其上运行的 SQL。
Snowflake 自己的文档描述了一种设计,把存储、计算以及协调它们的服务作为独立的层来保持,数据集中存放,而独立的虚拟数据仓库在读取时互不共享资源,也不争夺同一份容量。这种分离正是 Snowflake 灵活性的来源,同时也正是经验不足的开发工程师在成本和性能上出错的地方,例如让一个规模过大的数据仓库一直运行,或者写出扫描数据量远超问题实际所需的查询。
Snowflake 开发工程师的日常工作,涵盖通过 Snowpipe 或批处理任务加载数据、编写和调优 SQL、搭建把原始表格转化为报表工具可用内容的转换层,以及越来越多地为偏好 Python 或其他语言而非纯 SQL 的开发工程师提供的 Snowpark。在迪拜招聘 Snowflake 开发工程师之前,请明确这个角色实际最需要哪一方面的能力,因为最强的候选人往往在其中一侧有明显的偏向。
Snowflake 开发工程师会搭建什么
平台上具体的交付内容,而不是一份通用的数据类职位描述。
架构、表格和虚拟数据仓库规模的设置,确保不同团队和工作负载不会相互拖慢速度,也不会不公平地分摊账单。
可靠地把数据从源系统引入的 Snowpipe 或批处理加载任务,对延迟或畸形记录有明确的处理方式。
SQL,通常通过 dbt 之类的工具编排,把原始加载的表格转化为企业其他部门可以查询的干净、有文档说明的模型。
重写缓慢的查询、调整数据仓库规模,并设置自动挂起规则,让计算支出跟随实际使用量,而不是跟随习惯。
基于角色的访问控制,确保正确的团队看到正确的数据,并在合作伙伴需要读取权限时正确设置安全数据共享。
在 Snowflake 内部运行的 Python 或其他语言代码,供那些在转换或按计划任务中需要超越纯 SQL 能力的团队使用。
重要技能
针对平台的判断力,依据 Snowflake 的实际运作方式来核查。
| 技能或工具 | 良好水平的表现 | 为什么重要 |
|---|---|---|
| 数据仓库规模与挂起设置 | 依据实际工作负载说明数据仓库规模的选择,并设置自动挂起,而不是让数据仓库空闲运行 | 计算资源按运行秒数计费,空闲的数据仓库纯粹是浪费 |
| 查询性能 | 阅读查询画像来找出真正的瓶颈,而不是靠猜测 | Snowflake 上的慢查询通常是设计问题,而不是 Snowflake 本身的问题 |
| 数据加载方式 | 依据数据实际到达的方式,在 Snowpipe 和批处理加载之间做出选择,并在两种方式下都有错误处理机制 | 选错加载模式,要么浪费计算资源,要么带来企业并未要求的延迟 |
| 半结构化数据 | 能自如地直接查询 JSON 或类似格式,而不是每次都先展平 | 为现代平台提供数据的很大一部分本身就是半结构化的,而不是干净的行数据 |
| 访问与治理 | 有意识地设置角色和授权,并能说明谁能看到什么以及原因 | 宽泛且缺乏文档的访问权限,是日后风险和混乱的常见来源 |
Snowflake 的 核心概念文档 把虚拟数据仓库描述为彼此不共享资源的独立计算集群,这正是一位 Snowflake 开发工程师需要真正内化、而不只是背诵出来的那个核心概念。
合作方式
当您的账户已经是业务核心、工作从未真正停止,新管道、新模型、持续的成本调优不断出现时,适合安排专职的 Snowflake 开发工程师。当您能清楚描述工作的终点,例如迁移完一个工作负载、搭建完一个转换层、完成后移交访问权限时,适合预订限定项目。当这位开发工程师最终要长期留在您自己的编制内,而您更愿意由我们来寻访和把关,而不是自己承担这个风险时,适合寻求招聘支持。当一个 Snowflake 账户已经存在,需要有独立的人认真审视它的设计方式,或者弄清楚计算账单实际花在哪里,然后才能决定是否在此基础上继续投入时,适合引入咨询服务。
评估候选人
能把真正的 Snowflake 经验和一般的 SQL 能力区分开来的核查方式。
以下核查方式无论由谁提出都同样有效。您可以自己进行,也可以在决定通过招聘支持来聘请一位 Snowflake 开发工程师时,交由我们来完成。
有真实经验的候选人会谈论具体的工作负载,而不是背诵定义。留意他们是否提到自动挂起以及自己实际做过的调整规模决策。
询问他们会如何借助查询画像找出原因,以及会先改动哪个地方。
一个关于一个持续运行的数据仓库、一个规模过大的集群,或一个被发现并修复的低效查询的具体故事,比一句笼统的”我很注重成本”更能说明问题。
询问他们会如何查询一个嵌套的 JSON 字段,以及他们是使用原生函数,还是总是先展平数据。
询问他们会如何为一个新加入平台的团队设置角色,以及他们如何避免访问权限随时间失控扩散。
认证
Snowflake 自己直接运营认证项目。
Snowflake 自己的 认证页面 把 SnowPro Core 描述为涵盖平台架构、账户与数据仓库管理、数据加载与转换,以及性能和成本方面的概念,它也是每条进阶 SnowPro 路径的前提条件。把它作为 Snowflake 开发工程师职位的合理基本门槛来要求是合理的。
请候选人分享其认证记录,以便您独立核实,而不是仅凭简历上的一行文字。认证能说明某个时间点上平台知识的广度,但无法替代上述那些实际核查,尤其是在成本和查询调优判断力方面从真实工作负载中积累的经验。评估一位 Snowflake 开发工程师时,请把它作为上述练习的补充,而不是替代品。
阿联酋相关事项
两个在阿联酋真实的 Snowflake 项目中经常出现的方面。
阿联酋的联邦个人数据保护法《2021 年第 45 号联邦法令》,一旦涉及个人数据,就适用于任何与阿联酋相关的控制者或处理者。一个 Snowflake 账户很少只保存匿名数字,因此应当从设计之初就把客户或员工记录的访问和留存规则纳入其中,而不是等上线之后再补上。
Snowflake 本身无需特殊配置即可处理包括阿拉伯语在内的 Unicode 文本,因此阿拉伯语和英语双语报表通常是搭建在其上的仪表盘和应用需要考虑的设计问题,而不是 Snowflake 平台本身的问题。请在确定项目范围时向您具体使用的报表工具确认这一点,如果双语输出是您想聘请一位 Snowflake 开发工程师的原因之一,请尽早提出。
如果 Snowflake 开发工程师最终并不完全契合,欢迎浏览我们 数据 类别中的其他职位,或返回完整的 迪拜招聘开发人员 板块。运行开源大数据技术栈而不是托管平台的团队,更适合参考我们的 大数据工程师 页面,而与 Snowflake 最接近的托管平台替代方案,则由我们的 Databricks 工程师 页面覆盖。数据进入 Snowflake 之后,我们的 BI 开发工程师 和 Tableau 开发工程师 页面负责承接其上的报表工作;如果您还没有选定平台,我们通用的 数据工程师 页面是一个明智的起点,之后再考虑为特定平台在迪拜招聘 Snowflake 开发工程师。
直接解答
Snowflake 把存储和计算分离开来,数据集中存放在一处,而多个独立的虚拟数据仓库在读取时互不争夺资源。习惯了传统数据库的开发工程师需要改掉一些习惯,尤其是在计算资源的规模设定和计费方式上,而不能把它当成又一种 SQL 引擎来对待。
可以,不过这两方面所依赖的能力略有不同。加载和转换数据更依赖 SQL、Snowpipe 和编排方面的技能,而报表层往往由读取 Snowflake 数据的 BI 工具来承担。请告诉我们您的项目更看重哪一侧,我们会据此调整搜寻的重点。
一位称职的 Snowflake 开发工程师,从一开始设计数据仓库和查询时就会考虑成本,例如把数据仓库规模设置得恰到好处,避免不必要的全表扫描。我们不会承诺具体的节省数字,因为这取决于您当前的设置,但成本意识是您应当期待、也可以直接询问的能力。
如果您的数据平台已经运行在 Snowflake 上,或者您已经决定迁移过去,一位具备该平台专属经验的 Snowflake 开发工程师,会比通才型人选更快、更安全。如果平台的选择还没有定下来,我们的数据工程师角色可能是更合适的起点对话。
Snowflake 在平台层面无需特殊处理即可存储和查询包括阿拉伯语在内的 Unicode 文本,因此双语报表更多是搭建在 Snowflake 之上的工具需要考虑的问题,而不是 Snowflake 本身的问题。请在确定项目范围时提出您具体的双语需求,以便从一开始就把它设计进去。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。