【问题标题】:To what extent should a developer learn specifics about database systems? [closed]开发人员应该在多大程度上了解数据库系统的细节? [关闭]
【发布时间】:2010-09-06 15:27:08
【问题描述】:

当今的现代数据库系统具有大量功能。你会同意我的观点,要学习一个数据库,你必须忘记你在另一个数据库中学到的概念。例如,每个数据库将实现与其他数据库不同的锁定。因此,将一个数据库的概念带到另一个数据库将是失败的秘诀。可能还有其他示例,其中两个数据库的性能会非常不同。

那么在开发数据库驱动系统时,程序员是否需要详细了解数据库,以便他们为性能而编写代码?我认为让 DBA 稍后要求性能是不合适的,因为他的工作只是维护数据库并在紧急情况下帮助开发人员,而不是定期。

您认为开发人员需要深入了解数据库的程度应该是多少?

【问题讨论】:

    标签: database


    【解决方案1】:

    我认为这些是最重要的事情(从最重要到最不重要,IMO):

    • SQL(显然) - 它有助于了解如何至少进行基本查询、聚合(sum() 等)和内部连接
    • 规范化 - 数据库设计技能是主要要求
    • 锁定模型/MVCC - 至少对您的数据库如何管理行锁定有一个基本的了解(或使用 MVCC 通过乐观锁定来实现类似的目标),这很好。
    • ACID 合规性,Txns - 请了解它们的工作原理和交互方式
    • 索引 - 虽然我认为您不需要成为表空间方面的专家,将数据放在单独的驱动器上以获得最佳性能,以及其他细节,但它确实有助于对如何索引有较高的了解扫描工作与表扫描。它还有助于能够阅读查询计划并理解为什么它可能会选择一个而不是另一个。
    • 基本工具 - 您可能会发现自己有时想将生产数据复制到测试环境,因此了解如何恢复/备份数据库的基础知识非常重要。

    幸运的是,今天有一些很棒的 FOSS 和免费商业数据库,可以用来学习很多关于 db 基础知识的知识。

    【讨论】:

      【解决方案2】:

      我认为开发人员应该对他们的数据库系统的工作原理有相当好的了解,无论它是哪一个。在制定设计和架构决策时,他们需要了解数据库可能产生的影响。

      【讨论】:

        【解决方案3】:

        就个人而言,我认为您应该了解数据库的工作原理以及关系模型及其背后的修辞,包括所有形式的规范化(尽管我很少看到需要超越第三范式)。关系模型的核心概念不会从关系数据库变为关系数据库——实现可能,但那又如何?

        如果开发人员不了解数据库规范化、索引等背后的基本原理,他们将在从事不平凡的项目时受到影响。

        【讨论】:

          【解决方案4】:

          我认为这真的取决于你的工作。如果您是一家拥有专门 DBA 的大公司的开发人员,那么您可能不需要了解太多,但如果您在一家小公司,那么了解更多关于数据库的知识可能真的很有帮助。在小型公司中,您可能会戴不止一顶帽子。

          在任何情况下了解更多信息都不会有害。

          【讨论】:

            【解决方案5】:

            熟悉关系数据库理论,对标准 SQL 语法有很好的工作知识,以及知道什么是存储过程、触发器、视图和索引当然不会有什么坏处。显然,在您开始使用该数据库之前,学习特定于数据库的 SQL 扩展(T-SQL、PL/SQL 等)并不是非常重要。

            我认为在开发数据库应用程序时对数据库有基本的了解很重要,就像了解您的软件所运行的硬件很重要一样。您不必是专家,但您不应该完全不了解您的软件与之交互的任何事物。

            也就是说,作为应用程序开发人员,您可能不需要执行太多 SQL。大多数与数据库的交互应该通过 DBA 开发的存储过程来完成,我不喜欢在应用程序代码中包含 SQL 代码。如果您的查询在存储过程中,那么 DBA 可以更改存储过程的实现,甚至是数据库架构,只要结果相同,就不需要对您的应用程序代码进行任何更改。

            【讨论】:

              【解决方案6】:

              如果您不确定如何最好地访问数据库,您应该使用久经考验的解决方案,例如 Microsoft 的应用程序块 - http://msdn.microsoft.com/en-us/library/cc309504.aspx。通过检查代码是如何实现的,它们还可以证明对您有帮助。

              【讨论】:

                【解决方案7】:

                关于 Sql 查询的基本知识是必须的。然后你可以开发简单的系统。但是当您要实现复杂系统时,您应该了解规范化、过程、函数等。

                【讨论】:

                  猜你喜欢
                  • 2011-02-16
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-10-11
                  • 2011-05-28
                  • 1970-01-01
                  • 2010-09-08
                  相关资源
                  最近更新 更多