软件工程师和 DBA

Abi*_*san 7 terminology

数据库管理员和软件工程师之间的主要区别是什么?软件工程师应该在多大程度上了解底层数据库的详细信息?这两个职业的边界在哪里?

Joe*_*Joe 10

这完全取决于组织的工作分解,以及每个人的责任。但它们只是标签;一家公司的“软件工程师”可能是另一家公司的“程序员/分析师”,甚至是“系统程序员”等。两者之间没有硬边界。

在我工作的地方,“软件工程师”往往是负责设计和实际实施的人,我们没有任何人称其为“DBA”;根据“软件工程师”提供给他们的指导,通常由 DBA 执行的维护类型任务会退回给一般的“系统管理员”。

在我个人认为最好的情况下,您可以将设计分成多个部分:

  • 数据建模
  • 数据存储要求(记录结构、表的大小、每秒插入/删除/更新的数量、进程需要多快完成等)
  • 灾难恢复/操作连续性的要求(需要在 (x) 小时内备份,每个(月)的维护时间不能超过 (y) 小时)
  • 存储的实现(数据库软件的选择,物理存储的选择,表在存储上的分布方式等)
  • 后备计划的执行

然后是维护类型的任务:

  • 调优数据库
  • 调整查询
  • 出现问题时调试
  • 监督和验证备份
  • 应用软件更新

对于其中的大多数,它们不必由 DBA 来完成;它可以由软件工程师完成,或者在某些维护任务的情况下,由系统管理员完成。

如果你有两个角色的人,你可以让他们在设计和调整上进行协商和协作(他们在构建中称之为“设计-构建”),或者如果这是一项仓促的工作,你可以在他们之间分配各种任务二。您也可能有其他人参与:“软件架构师”、“数据架构师”、档案管理员、各种程序员、系统管理员、网络管理员、安全性等。


ran*_*omx 9

数学。我很想就此搁笔,但我无需解释就知道,我会被喷,所以就这样吧。

根据我的经验,DBA 数学与工程师数学不同。

DBA 数学涉及对部署将产生的容量的影响。例如,作为 DBA,我们会根据每百万行将在磁盘上消耗多少空间、对其运行的最佳查询、索引策略等来检查部署表。

工程师数学将基于 Big-O 符号。工程师将研究算法以及如何优化它们。下游影响(容量规划)是应用程序效率的次要问题。但是,如果预先要求容量,那么它将得到适当的审查。

我们中的一些人同时扮演着两个角色,因此我们已经开辟了一个利基市场,成为企业应用程序 dba 开发人员。

顺便说一句:请持保留态度,因为这只是我的意见。