我现在在几家科技公司工作过,从 10 人到 150 人不等,我从未遇到过真正的 DBA。在获得 DBA 之前,公司需要发展到多大?需要满足哪些标准?
(我也在Stack Overflow上发布了这个。它只是在两个地方,因为那里的主持人建议,“这可能是在 SO 和 SF 上都值得询问的罕见情况之一”)
我现在在几家科技公司工作过,从 10 人到 150 人不等,我从未遇到过真正的 DBA。在获得 DBA 之前,公司需要发展到多大?需要满足哪些标准?
(我也在Stack Overflow上发布了这个。它只是在两个地方,因为那里的主持人建议,“这可能是在 SO 和 SF 上都值得询问的罕见情况之一”)
如果您只使用第三方软件,我会说这取决于您将使用的 RDBMS(Oracle、mySQL、DB2、MS SQL 等),数据大小相对于硬件的能力它将存储在第三方软件的质量上。对于易于使用的数据库上的小事情,让(愿意)技术人员做基础知识可能就足够了。OTOH,起草一个想要编写 Web 代码的开发人员并强迫她备份 Oracle 数据库是一个坏主意。
如果您正在进行内部开发,我会询问数据库的扩展要求是什么(您是在构建下一个 google 或 twitter,还是在保留食谱?)。您希望 DBA 做什么(备份数据库?保护数据库?参与开发?编写代码?架构数据库架构?进行纵向扩展或横向扩展?创建复制方案?与硬件供应商互动?指定硬件?创建“编码标准”?只是放牧猫?)。
尽早引入 DBA 有助于防止项目在以后遇到麻烦,而且现在避免常见错误通常比以后修复它们更便宜。
对于很多公司来说,他们根本不需要全职 DBA,即使他们有一个自制的内部数据库。其他人需要几个 DBA。
正如一个人提到的,当丢失数据库的成本超过 DBA 的薪水时,那就买一个。这是一个非常好的开始。但是,如果数据库没有太大变化,并且它在良好的硬件上,那么一家公司可能会在没有全职 DBA 的情况下度过多年。这里的诀窍是有一个好的本地(或远程)顾问来处理确保备份是自动化的,并且定期进行其他数据库维护。让他们每年检查几次系统以进行健康检查,并聘请他们处理大型项目和服务器升级,您在大多数情况下应该没问题。
随着公司的发展,您最终会得到一个更初级的人来处理更多的日常事务,但如果需要,请让顾问留在身边,直到值得为高级 DBA 付出代价。
没有需要 DBA 的大公司。我现在所在的公司是一家只有 20 人的小型公司,但我们的生死存亡依赖于我们的数据库,因此聘请高级 DBA 是有意义的。我的副项目客户是百人公司,内部只有一个订单处理系统,数据库很少更改。我在 2007 年升级了服务器,从那以后就再也没有回来过。我每隔几个月检查一次,我被告知系统运行良好,并且它正在自动支持它,所以我继续我的快乐方式。
我会说这取决于。
既然这是一项业务,请问自己:“丢失此数据库的成本是多少?”
只要成本大于或等于 DBA 的薪水,就聘请 DBA。
“成本”将是一个很难得出的数字。但它应该包括恢复时间、生产力损失(每个用户)和销售损失。像亚马逊这样的地方(几年前达到了每秒 60 次销售的峰值)可以确定停机成本。
一旦你有了一个数据库服务器并开始遇到性能问题,那就是找一个 DBA、IMO 的时候了。在某些情况下,有时开发人员可能有足够的经验来处理初始数据库配置。
根据管理数据库所花费的资源和时间,关注的是什么以及数据库所在的位置。许多公司认为,与提供数据库服务的托管主机提供商合作,然后与可能在一天中大部分时间处于空闲状态并用作“假设”保险的高级 DBA 合作,会更具成本效益和可靠性。
这实际上取决于您必须管理多少个数据库。我们有一个现场 DBA,他非常好。我们有 PROD/TEST/TRAIN/DEV Oracle 实例,它们需要在功能方面的回归测试周期后经常进行安全补丁、定期补丁和升级。除此之外,他还管理公司中使用 Oracle 或 SQL 数据库的其他任何东西。他的任务是保持更新的克隆以进行测试,并且他还从 Enterprise Manager 中管理 RMAN 数据库备份。
考虑到我们的数据库是公司的命脉,我认为在某些情况下,您必须拥有熟练的 DBA 员工。
什么时候
无论您是否需要聘请 DBA,您都需要有人负责生产和开发服务器。
你需要有特定的人负责生产变更。
在超过 2 名开发人员的大型项目中,您需要有人负责将更改迁移到开发中(从工作站或用户模式)。
如果您计划使用 Reporting Services 或 Analysis Services,您可能会考虑专门研究这些技术的 DBA。
如果你有敏感数据,你最好确保有人在看管它并且有适当的安全措施——否则你可能会违反政府法规,这需要花钱。
我建议,一旦数据库开始占用您足够多的时间以至于您无法完成工作,您就可以考虑它。
尽量找一个多学科背景的DBA,让他们除了坐等DB破门外,还有事可做。
我完全不相信需要 DBA。
作为应用程序开发人员,我认为 DBA 是不必要的 - 任何应用程序端的修改都应该由应用程序开发人员完成 - DBA 既不能也不应该进行此类更改(实际上,这些更改应该需要经过相同的更改控制和QA 与开发团队的任何其他变更一样,因此 DBA 将成为团队中的一员)。
同样,任何不是应用程序更改的事情都是系统管理员问题,应该由运营团队使用他们的更改控制策略来处理 - 同样不是 DBA 领域。
当我发现一个人有什么好处时,我会告诉你的。
在我看来,DBA 不能真正做很多性能工作,因为其中 99% 将来自修改应用程序,而这些操作不应该做。