架构设计
围绕应用实际读写数据的方式建模的表、关系和约束,而不是照搬教科书式的通用布局。
迪拜企业通常会在应用的数据层需要专门的设计关注时,在迪拜招聘数据库开发工程师:可能是正从零搭建的新产品,也可能是随着功能不断叠加而变得混乱的现有架构,或是因为查询在设计之初就没有考虑性能而开始超时的报表。这项工作紧贴应用本身,而不是维持服务器运转,这一点正是该岗位在被委托时最常出现的混淆。
数据库开发工程师设计承载应用数据的表、关系和约束,编写读取和修改数据的查询,并且经常构建存储过程或函数,让共享逻辑集中存放在一处,而不是在每一个接触数据库的应用中重复出现。良好的架构设计如果在早期就做对,所需的投入远小于等到真实数据和真实流量依赖它之后再去修复。
在迪拜招聘数据库开发工程师之前,先确定工作是从一张白纸开始搭建新架构,还是在已经承载着实时数据的架构上进行修复和扩展,因为后者要比前者精细得多。
数据库开发工程师能搭建什么
一旦您在迪拜招聘数据库开发工程师承接这项工作,得到的是应用所依赖的结构和逻辑,而不是服务器管理。
围绕应用实际读写数据的方式建模的表、关系和约束,而不是照搬教科书式的通用布局。
针对应用真实工作负载的高效查询,以及为调用它的代码简化复杂联接的视图。
把共享的业务逻辑保存在数据库内部,让多个应用或报表都能依赖同一套经过验证的行为。
根据实际运行的查询来选择索引,而不是基于“越多越好”的假设到处添加。
版本化、可重复执行的脚本,能在各个环境中安全地变更架构,而不是依赖没有留下记录的手工修改。
从源头阻止不良数据进入的约束和校验,而不是完全依赖应用层来兜底。
重要的技能
设计判断力和查询功底,而不仅仅是熟悉某个数据库产品的名字。
| 技能或工具 | 合格标准 | 重要原因 |
|---|---|---|
| 架构设计 | 能从应用如何使用某张表的角度,解释为何它被设计成某种结构 | 建模不当的架构,会随着应用的增长变得越来越慢、越来越难改动 |
| SQL 熟练度 | 能写出可读且高效的查询,并能读懂执行计划,而不只是最终得到正确结果 | 在测试数据上能跑通的低效查询,在真实流量下可能彻底失效 |
| 存储过程 | 清楚逻辑应该放在数据库还是应用中,而不是默认套用某一种做法 | 逻辑在各层之间散乱分布,会让维护和调试变得困难 |
| 索引 | 能针对真实查询模式为每个索引给出理由,并明白索引不是没有代价的 | 不必要的索引会拖慢写入速度,却不会给真正重要的部分带来提速 |
| 架构变更的版本控制 | 把架构变更当作版本化、可评审的迁移来对待,而不是直接在生产环境手工修改 | 没有记录的架构变更,日后是最难排查的问题之一 |
无论您的应用使用哪个平台,官方参考资料都很关键:对于运行在 Microsoft SQL Server 或 Azure SQL 上的应用,Transact-SQL 参考是查找确切语法的主要来源,一位值得聘用的数据库开发工程师,应该能直接熟练查阅它,而不是仅凭记忆行事。如果您为 Microsoft 技术栈物色人选,可以在面试中要求对方实际演示这一点。
与我们合作的方式
限定项目适合范围明确的工作,例如设计一套新架构或修复现有架构上一批变慢的查询,完成后有清晰的交接节点。专属开发工程师适合持续有新功能开发、不断触及数据层的产品。招聘支持适合希望长期把数据库开发工程师纳入自身编制的企业,我们负责撰写职位描述、筛选候选人并主持技术评估,最终由您直接雇用该人选。咨询适合已经有架构在运行、希望在重大功能上线或迁移之前先获得一份经验丰富的外部评审的团队。
评估候选人
能揭示设计判断力的考察方式,而不仅仅是正确的语法。
无论是您自己使用,还是委托我们把它纳入招聘支持中的技术评估,以下方法在挑选这个岗位的候选人时都同样适用。
请他们讲解一套自己设计的架构,为什么表被设计成那样,以及如果现在重来会做出哪些改动。
一条贴近您自身架构、复杂度适中的真实查询,能展示他们对执行计划和索引的思考方式,而不只是语法掌握程度。
提出一个场景,询问该逻辑应放在存储过程还是应用中。优秀候选人无论倾向哪一种,都会给出有理有据的答案,而不是死守某个固定规则。
询问他们过去是如何安全地变更一套线上架构的,以及当某次迁移需要回滚时发生了什么。
询问是什么阻止了不良数据进入他们过去的某套架构。数据库层面的约束和校验,是比“应用会检查它”更有力的回答。
认证
数据库平台确实设有具名的考试,因此这是认证能真正说明一些具体问题的岗位之一。
Microsoft 设有与 SQL Server 和 Azure SQL 绑定的认证,其他厂商也各自为其平台设有认证。没有一张统一涵盖整个数据库开发领域的证书,因此在因为某张证书而在迪拜招聘数据库开发工程师之前,先问清楚这张证书实际涵盖的是哪个平台。
一份您能亲自审阅的真实架构,配合能清晰展示性能思考的查询,比单纯一个证书名称更能说明一位数据库开发工程师的真实水平,尤其是在 PostgreSQL 这类没有自身认证机构的开源平台上。
阿联酋相关事项
只要架构将承载客户或员工数据,这一点就与您相关。
阿联酋政府门户网站确认的《2021 年第 45 号联邦法律》规定了个人数据必须如何被处理,因此应在架构设计阶段就确定哪些字段属于个人数据以及将如何加以保护,而不是等应用上线后才作为补充考虑。
如果应用会采集阿拉伯语内容,请确认架构使用的字符编码和排序规则能正确存储和排序它,因为这是一个在设计阶段设定要比事后修复省力得多的细节。为面向客户的应用在迪拜招聘数据库开发工程师时,请提出这一点。
直接解答
数据库开发工程师为特定应用设计架构、编写查询和存储过程,工作内容与调用数据库的代码紧密相关。数据库工程师则负责让数据库在生产环境中持续良好运转:性能、备份、复制和正常运行时间。许多小团队需要一人兼顾两者,规模较大的团队则往往会把这两者分开。
负责搭建一个结构简单应用的后端开发工程师,往往完全能够设计好它的架构。一旦查询变慢、架构需要支撑多个应用,或存储过程和复杂的报表逻辑成为工作的真正组成部分,专属的数据库开发工程师才真正值得投入。
这取决于数据本身和访问模式,而不是一般性的偏好。诸如 PostgreSQL 或 Microsoft SQL Server 产品这类关系型数据库,适合大多数事务型应用,而某些以报表或文档为主的工作负载,可能更适合另一种模型。告诉我们应用的具体形态,我们可以帮您妥善界定范围。
可以,这是常见的工作内容。一位合格的数据库开发工程师会读取执行计划,找出缺失的索引或低效的查询,并对其进行重写或重构,通常无需触碰调用它的应用代码。
可以,其他常见的关系型平台也一样。告诉我们您的应用目前使用的或计划使用的平台,我们会为您匹配一位在该具体平台上拥有真实实操经验的开发工程师,而不仅仅具备泛泛的数据库知识。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。