报表查询
为特定的、反复出现的业务问题编写的 SQL,在任何人依赖这些数字之前,先针对空结果或重复行这类边界情况进行测试。
当问题出在查询本身,而不是更宽泛的应用或数据库服务器时,企业就会在迪拜招聘 SQL 开发工程师:一份要花几分钟才能加载的报表、一个没人愿意碰因为它太脆弱的存储过程,或者财务或运营部门不断提出的一系列临时问题,最后总落到当周恰好懂 SQL 的人头上。SQL 开发工程师的工作是查询和报表逻辑这一层,读取并重塑已经存放在某处的数据,而不是设计其下层的架构,也不负责日常运行服务器。
SQL 本身并不绑定某一款产品。PostgreSQL、MySQL、SQL Server 和 Oracle 各自实现同一套核心语言,PostgreSQL 自己的 SQL 语言文档将其描述为涵盖 SELECT、INSERT、UPDATE 和 DELETE 等语句以及塑造它们的各种子句,各家厂商再在此基础上添加自己的扩展。这正是为什么一位实力强的 SQL 开发工程师,通常只需短暂适应就能在不同数据库产品之间切换,而只熟悉某一家方言的人,一旦工作平台改变就可能感到吃力。
在迪拜招聘 SQL 开发工程师之前,请具体说明真正的痛点:是一份变慢的报表、一批积压的临时请求,还是从离职员工那里接手的一堆存储过程。每一种情况都指向略有不同的简报。
SQL 开发工程师能搭建什么
委托这个岗位承接工作时,可以预期交付物集中在查询和报表这一层,而不是更广泛的应用。
为特定的、反复出现的业务问题编写的 SQL,在任何人依赖这些数字之前,先针对空结果或重复行这类边界情况进行测试。
重写一条慢查询、添加合适的索引,或重构联接方式,让一份原本会超时的报表改为几秒内完成。
保存在数据库内部、可复用的 SQL 逻辑,让多个应用或报表能调用同一套经过验证的计算,而不是各自重复实现。
一次性或按计划运行的 SQL,能在重复、缺失或不一致的记录到达报表或其他系统之前,找出并修复它们。
把数据从旧表结构迁移并重塑到新结构的 SQL,在最终切换前逐行与原始数据核对。
在别人的 SQL 上线前进行审阅,找出缺失的 WHERE 子句、未加索引的联接,或悄悄导致行数重复计算的逻辑。
重要的技能
能把一位流利的查询编写者与只用过图形化查询构建器的人区分开的习惯。
| 技能或工具 | 合格标准 | 重要原因 |
|---|---|---|
| 联接与集合逻辑 | 能毫不迟疑地解释内联接、左联接和全联接的区别,并清楚何时一条查询在悄悄丢失行 | 错误的联接类型,是导致报表悄悄出错的最常见原因 |
| 窗口函数 | 能自如地使用排名、累计合计和跨行比较,而不是退回到缓慢的手动循环 | 现代 SQL 能用一条查询解决过去需要应用代码才能解决的问题 |
| 读取执行计划 | 能打开一条查询的执行计划并指出开销大的那一步,而不只是凭猜测提出修复方案 | 不读执行计划就调优,属于反复试错,往往还会让性能变得更差 |
| 索引方面的判断力 | 理解索引实际做了什么,以及在什么情况下添加索引并不会有帮助,例如在一张小表上 | 不必要的索引会拖慢写入速度,却不会加快真正重要的读取 |
| 跨平台意识 | 清楚一条查询哪些部分属于标准 SQL,哪些部分是某个产品特有的 | 只懂一家厂商方言的开发工程师,写出的查询一旦平台变化就可能悄悄出错 |
与我们合作的方式
限定项目适合范围明确的查询工作,例如修复一份变慢的报表、编写一批存储过程,或一份数据迁移脚本,有清晰的交接节点。专属聘用适合持续有临时报表请求、目前只能落到谁有空谁来做的企业。招聘支持适合希望把 SQL 开发工程师直接纳入自身编制的团队,我们负责寻访并主持技术评估。咨询适合在投入更大规模重建之前,对一个变慢的数据库或一堆混乱的查询进行一次性评审。
评估候选人
能揭示真正熟练程度、而不只是熟悉拖拽式查询构建器的考察方式。
无论您选择哪种方式引入这个岗位的人选,无论是自己主持面试,还是委托我们把它纳入招聘支持,以下方法都适用。
请他们针对一份贴近您自身、带有一些别扭关联关系的架构编写查询,而不是一个干净的教科书示例。
提供一条能跑通但速度很慢的查询,询问他们会先检查什么、为什么,而不只是要一个重写后的版本。
询问在某条具体查询中,为什么选择内联接而不是左联接。含糊其辞的回答是一个可靠的警示信号。
询问它的作用、为什么放在数据库而不是应用中,以及上线前他们是如何测试的。
真正有经验的候选人,能描述一次查询看起来正确、却得出错误数字的经历,以及他们是如何发现的。
认证
在因为某张证书而在迪拜招聘 SQL 开发工程师之前,请记住 SQL 是一门语言,不是单一产品,因此没有哪一张证书能端到端涵盖它。
由于 SQL 在众多不同产品中实现,没有哪一个机构能像平台厂商认证自家产品那样,认证通用的 SQL 技能。各个数据库厂商都为自家平台设有自己的认证考试,一旦确定您的 SQL 开发工程师需要在哪个数据库中工作,值得对照该厂商自己的认证页面进行核实。
一次针对贴近您自身架构的简短现场练习,加上他们过去调优过的一条查询的讲解,在物色这个岗位的人选时,比一张证书能告诉您的多得多。请具体询问该证书涵盖了哪些数据库产品,因为一张多年前在旧版本上取得的证书,对当前的实践能说明的很有限。
阿联酋相关事项
只要查询触及客户或员工数据,这些要点就与您相关。
根据阿联酋政府门户网站,《2021 年第 45 号联邦法律》作为阿联酋关于个人数据保护的联邦法律,只要涉及阿联酋居民的数据,无论处理行为发生在境内还是境外都适用。一份提取客户姓名、电话号码或交易记录的报表,在界定范围时应考虑到这一点,包括谁有权查看输出结果。
如果数据库同时存放阿拉伯语和英语文本,请在界定范围阶段确认查询中的排序、筛选和文本匹配已针对两者都测试过,而不是假设一个只针对英语的数据集就已经覆盖了这一点。
直接解答
数据库开发工程师设计应用赖以运行的架构、表、关系和约束,然后在其上编写 SQL。SQL 开发工程师则专门负责查询和报表这一层,往往是在别人已经搭建好的架构之上工作,通常不负责底层数据库设计。
SQL 开发工程师编写并调优查询、视图和存储过程。数据库工程师负责让数据库服务器本身保持运转,涵盖基础设施层面的性能、复制、备份和恢复。一份变慢的报表通常是 SQL 开发工程师的工作,一台变慢、存在风险的服务器通常是数据库工程师的工作。
核心的 SQL,也就是 SELECT、JOIN、GROUP BY 和窗口函数这套逻辑,在 PostgreSQL、MySQL、SQL Server 和 Oracle 之间通用,差异只在语法层面。告诉我们您的数据实际存放在哪个产品上,我们会为您匹配一位在该具体系统上拥有实操经验的开发工程师,而不仅仅懂得这门通用语言。
多数情况下可以。许多报表变慢的原因出在查询本身:缺失的索引、不必要的联接,或者对每一行都重复执行的计算,而不是服务器容量不够。SQL 开发工程师会先读取执行计划并修复查询,而不是第一时间就想到加硬件。
SQL 开发工程师负责的是报表工具下层的查询和数据层。如果工作主要在 Power BI、Tableau 或 Looker 内部进行,我们针对这些工具的平台专属开发工程师页面会更贴合需求。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。