存储数据库程序

时间:2013-03-22 13:03:47

标签: php sql stored-procedures pdo

我正在使用php和pdo,有些人告诉我,如果我在数据库中使用程序,我的程序会大大改善。

我想知道有哪些改进可以提供以下几点的程序:

  • 请求速度。
  • 安全方面。 (程序和数据库)。
  • 可扩展性。
  • 盈利能力。
  • 使用方便时,何时不使用。
  • 其他好坏点。

还想知道调用过程的PDO参数化查询是否可能。

我很欣赏关于这个主题的任何材料(书籍,教程,代码,评论)。

1 个答案:

答案 0 :(得分:4)

在决定要执行哪个程序的哪个部分时,这是个好问题。当我使用Classic ASP和MS SQL Server编写应用程序时,我遇到了类似的问题。

在回答您的问题之前,我想指出一个Web应用程序至少有三层:

  • 表示层,例如客户端的Web浏览器
  • 应用程序层 - 运行PHP或JSP或ASP服务器
  • 以及数据所在的数据库层。

常识是,无论在表示层进行哪些数据验证,我们都会将其放在那里。例如,检查某个表格字段是否为空。

当必须在其他两个层 - 应用程序和数据库层 - 开发应用程序时,这很有趣。许多糟糕的程序员以这样的方式编写代码,即Web服务器和数据库服务器之间有很多往返行程。我们应该考虑在这些时候在数据库中编写存储过程。

关于你提到的要点,我想回答:

  • 请求速度。

    由于Web服务器和数据库服务器之间的往返次数较少,因此对Web服务器的请求处理速度更快。当您的应用程序变得非常复杂并且数据增长过大(就数百TB而言)时,差异尤为显着。处理负载从您的Web服务器传输到您的数据库服务器,因此您的Web服务器更适合您的客户端请求。

  • 安全方面。 (程序和数据库)。

    为您的程序提供的安全性现在分为两个级别 - 在Web服务器级别和数据库级别。您可以限制这两者之间的通信,以确保您的程序不会崩溃,数据完好无损。

  • <强>可扩展性。

    Web服务器代码和数据库服务器代码现在位于两个不同的层。两个层都可以根据需要独立扩展。请仔细阅读here以确定可伸缩性的含义。

  • 盈利能力。

    我不知道如何回答这个问题,但我想到了一个想法:如果您在支付数据库服务器并让它在Web服务器过载时闲置,那有什么意义呢?如果我要为数据库服务器付费,我会通过给它一些我的网络服务器的处理负载来充分利用它。

  • 使用方便时,不使用时。

    当Web和数据库服务器之间的往返次数过多时,最方便使用。我可能会一次又一次地提到这一点,但这个问题结果令人头疼。

    什么时候不方便?好吧,在单个SQL语句执行所有必要操作的简单情况下。

  • 其他好坏点。

    • 您必须确定这两层之间的沟通 - 传递的内容和收到的内容。保持所有文件记录良好,因为任何错误都会妨碍这两层。