【发布时间】:2013-08-17 08:47:49
【问题描述】:
这是一个设计问题,我一直在思考这个问题。
我想在独立文件或内存位置中分离 SQL 查询(以便更快地访问)。
查询将像这样存储:
SELECT .... WHERE col = ?
当需要查询时,从它的位置获取它。
一个(不太可维护的)示例替代方案是:
$sql = "select ..... where col=". prevent_injection($val) ." and ....";
好处:
- 查询完全分离:Web 开发人员和 DBA 可以根据自己的角色专门工作
- 更简洁的查询
缺点:
- 需要在每个方面进行一些协调?意味着,这在一个大团队中无论如何都是必要的
- 在运行时获取 SQL 可能会减慢速度,但可以使用缓存
对此方法有何反馈?
【问题讨论】:
-
拥有大型 SQL 系统的大型组织将所有内容都编码到存储过程中,从而为数据库提供完整的接口。不允许出于任何目的在该系统之外进行访问。
-
对这个过程的查询不一样
-
这不是像 EF 和 ActiveRecord 这样的 ORM 吗?即他们抽象出 SQL。此外,一旦您超越单个选择语句,即 CTE、连接和子选择,这将如何扩展。我怀疑你依赖于 RDBMS 查询分析器。 DBA 和 SQL 开发人员确实有其不同的角色,DBA 可以针对您的应用程序优化数据库基础架构,无论是添加更快的磁盘、fs 还是更多的 CPU。 SQL 开发人员应了解索引、架构设计和安全性的最佳实践。
标签: php sql architecture