数据库程序员做什么?


14

每当我读到有关Oracle程序员的文章时,我都会感到困惑。我不知道他们到底在做什么。

据我了解,应用程序程序员需要开发核心功能。他们使用的库可能有助于GUI开发或数据库连接,但是使该应用程序必须对该应用程序进行编程的功能,以及使每个应用程序都不同的功能(有些可能是其他版本的调整版本)。

在这种关系中,数据库编程不是从根本上创建表吗?这些表是否不响应通常由前端应用程序发出的SQL语句进行处理?那么创建表有什么大不了的?

Answers:


18

要真正欣赏什么数据库程序员,您真的必须自己动手-让我尝试用另一种方式解释它。

该消息不灵通它可能看起来像在理想世界中的应用程序员并不真正做到这一点了-他们采取的要求和流程所写的业务分析,并将它们转换成代码,做程序员的出价。

当然,任何有编程经验的人都会知道这不是它的工作原理-暂时忽略了需求从来没有详细说明应用程序行为的事实,这会带来很多复杂性

  • 程序员需要决定如何构建应用程序
  • 将需求转换成计算机可以理解的东西通常并非易事。
  • 程序员需要意识到
  • 随着程序员使用他们选择的平台获得经验,他们变得更加熟练,可以更快地交付更高质量的代码。

(当然,这是一个大大减少的列表,我只是想了解数据库开发中具有相似之处的要点)

好的数据库开发几乎是一样的-令人生厌的是,它看起来非常简单,但是一旦您参与其中,您就会意识到数据库开发的特定复杂性:

  • 他们决定如何构建数据库
  • 通常,更复杂的查询可能远非平凡于需求的翻译
  • 数据库开发人员需要关注数据库的性能
  • 他们还需要关注维护数据完整性和可用性
  • 就像开发人员一样,数据库程序员随着变得越来越有经验,也变得更加精通他们所做的一切。

就像应用程序开发充满了隐患(线程问题等)一样,数据库开发也是如此,犯这些问题的后果往往非常严重(例如,使用数据库的所有应用程序的数据丢失或潜在的停机) 。

我认为,使程序员认为没有任何事情的事情(“程序员不能这样做吗?”)是角色之间有很多重叠之处,而且他们确实需要类似的技能-我已经毫无疑问,只要有时间和经验,任何有能力成为一名优秀开发人员的人也有能力成为一名优秀的数据库程序员,但是,任何人都不应低估经验丰富的数据库专家的价值。


感谢您的答复(我已经放弃了得到的希望)!我问这的原因是,作为一名“应用程序程序员”,我在msaccess中设计了一个小型数据库来为我的项目完成某项工作,这似乎并没有什么工作,但作为一名程序员,我当然会以为基础是什么? t“简单”。但是我仍然缺乏理解这一点所需的视角。我的意思是,一个数据库与另一个数据库有何不同?就像没有应用程序开发人员“编写”文件管理代码而是使用库一样,难道还没有准备好使用可用于dbase设计的模板/库吗?还是现实中的dbase管理员使用dbase编程?

一个典型的程序员也不会这样做吗?我猜我在很小的组织中工作过,但还没有观察到数据库程序员的任何用途,因为可以说,应用程序开发人员通常是火车上的人。他知道自己想要什么,通常会亲自设计。
布莱恩

1
以我的经验,某些业务操作需要专家级DBA的团队。我最近听说的是可口可乐和Minute Maid的合并。他们的数据库(还有很多)必须合并,而Minute Maid的数据库设计却不是可口可乐拥有它们,那个,那个以及其他东西的方式。他们计划并测试了此合并达六个月之久,然后才花了整夜的时间来执行它。小型公司不一定需要拥有独立的DBA,但是在大型公司中,必须要拥有一个独立的DBA团队才能提高客户满意度。
Mike S

也就是说,在拥有至少一个(最好是两个或三个)独立DBA的小型公司(少于50个人)中,就应用程序开发人员而言,这是超级好。那和专门的IT人员来修复计算机,但这完全是另一回事了。
Mike S

2
@ 0A0D,直到大约6年后,当表中有十亿条或更多记录,并且整个混乱速度都非常缓慢时,他们聘请了数据库专家来修复应用程序程序员不应该设计的混乱情况。数据库极难重构,从一开始就需要针对性能进行设计,而几乎所有应用程序程序员似乎都无法掌握。他们也往往根据设计何种用户界面,不需要什么数据库需求,因此省略内部控制,审计和数据完整性约束等
HLGEM

12

数据库程序员可以做很多事情。首先,他们设计数据库结构,以便它将在预期记录数下正常运行。对于几千条记录有效的设计结构可能会使数百万条记录的数据库无法使用。他们还需要确保数据将随着时间的推移保持其完整性,并且确保数据不受未经授权的更改或盗窃的影响。他们必须透彻了解规范化,何时规范化以及为什么。他们必须了解性能以及如何确保数据完整性。他们必须了解安全性以及如何防止数据被盗或恶意更改。

他们执行调整查询。我更改了查询,该查询需要几分钟才能运行到毫秒。我已将耗时24小时以上的流程更改为不到30分钟。他们设计并维护索引结构,该结构将在插入速度与选择速度之间取得平衡。

他们编写复杂的查询,尤其是报告查询。由于需求的复杂性,我个人已经写了超过1000行的查询。他们仍然必须并且确实运行很快。

他们创建数据仓库和附带的ETL流程来支持它们。通常,他们需要编写流程以从其他来源获取数据,并且必须弄清楚如何将某些客户端数据库中的字段映射到他们的客户端,而这些数据类型,数据大小,必填字段,查找值,等等

他们必须确定如何随着数据库需求的变化而重构,而又不损害已经拥有的1亿条记录,也没有完全停止使用数据库。大型数据库可能涉及数千个表以及存储的proc和用户定义的函数。理解这种结构需要时间和技能,而理解将受更改以及如何影响的内容也需要时间和技巧。

他们设计了出于法规和恢复原因审核数据的方法。然后,他们设计从这些审计表中恢复数据的方法。他们研究数据问题,以发现问题是由于导入过程中的错误,其他人提供的错误文件,来自应用程序的错误插入/更新,还是来自未经授权的访问。当应用程序程序员留下漏洞供黑客攻击时,他们找到了修复不良数据的方法。

通常,它们涉及从一个系统到新系统的数据转换。有时,这涉及将数据从一种COTS产品移动到公司刚购买的新产品。就像前面介绍的进口一样,这些都是复杂的过程,可能需要数月的时间来计划和执行,并且需要大量测试。与导入不同,数据库程序员可能无法控制不同的数据结构。


6

我曾在90年代后期担任数据库程序员,负责24小时晶圆厂的制造数据。我不知道我的职责有多么典型,但是对我来说最大的一部分是当需要更改字段编码或架构时,我必须确保所做的更改对生产而言是无缝的。从本质上讲,这意味着我将告诉他们升级其客户端应用程序,他们会在方便的时候进行此操作,并且希望新的更改会立即恢复。

这比我预期的要复杂得多。转换脚本和客户端软件必须进行彻底的测试。通常必须同步维护两个语义相同但不兼容的数据集,直到每个人都被切换为止。有时,有必要在多个精心计划的阶段中进行切换,以使其无缝。准备好几周以实现瞬间发生的转换并不少见。

如果数据库程序员正确地完成工作,那么在观察者看来,他的工作非常容易。许多人并不真正知道自己在做什么,这并不奇怪。


2

这很简单。如果您听说过类似MVC模式,则应该了解控制器和模型之间的区别。例如,如果您正在编写ERP,则可以想象您在控制器中只是对模型说“ retrieveCashFlow”,然后模型调用数据库中的存储程序。这个存储的程序负责所有的连接,过滤,排序等操作,您将获得处理后的数据。在您的控制器中,您只需要将事情混在一起即可。

如果您对存储过程有疑问,请查看以下内容: 为什么使用存储过程?

简而言之:数据库开发人员为您的应用程序编写存储的程序(过程和函数),以照顾MVC中的M(如果您不使用mvc,则使用业务逻辑)。


2

Oracle不仅是一个数据库,而且是一个完整的编程环境,包括表单和报表设计器。作为Oracle程序员,您可以编写完整的用户应用程序。您引用的数据库编码通常由专业的数据库管理员(DBA)完成。

我认为Sybase是另一个具有类似编程环境的公司。

其他数据库可能将自己限制为“仅”允许定义和执行报告,而其他数据库可能根本不提供任何形式或报告设计/执行工具。


1
“ Oracle不仅是一个数据库,而且是一个完整的编程环境...其他数据库可能将自己限制为“仅”允许定义和执行...。”我不知道。现在有道理了。
Thomas

SQL Server是相同的。除了存储过程之外,SSIS包还允许可视化编程,调用其他现有代码,编写vb.net或c#.net程序以及更多功能,所有这些都封装在IDE中。我没有使用过SSRS,但我怀疑它是相似的。有大量的程序设计,数据库程序员必须知道许多不同的工具,语言和过程。
星期四

2

我会说数据库开发人员负责以下一个或多个

  • 设计,包括创建(或定义关系)表
  • 优化,设置适当的索引,选择键,选择正确的数据类型
  • 函数,编写在查询中使用的有用函数
  • 过程,编写与数据库层紧密耦合的应用程序逻辑。
  • 创建触发功能以响应事件
  • 生产上述规格。

根据所讨论的RDBMS,它可能包含以下任务:

  • 创建报告和表格
  • 创建数据导入/导出流

看看这份责任清单

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.