什么是最好的灵活性,为什么?使用数据库视图、数据库表、存储过程。和表中的对象

Posted

技术标签:

【中文标题】什么是最好的灵活性,为什么?使用数据库视图、数据库表、存储过程。和表中的对象【英文标题】:What is best flexibility and why? Using db views, db tables, stored proc. and objects in tables 【发布时间】:2010-04-12 14:10:29 【问题描述】:

我想知道使用数据库视图、数据库表、存储过程的最佳实践是什么。和表格中的对象......其中哪一个更灵活,为什么,你能解释一下吗?

【问题讨论】:

【参考方案1】:

每个工具has its uses。您的选择将取决于应用程序的性质及其安全性、性能和敏捷性要求。

如今,许多程序员使用数据访问层 (DALs) 来处理这类事情。许多 DAL 允许您指定要调用的视图和存储过程。但您也可以直接对表运行查询,而无需存储过程或视图。

除非您使用对象数据库,否则您将处理tables 而不是对象。现在大多数应用程序都使用基于表的数据库系统because they are so common,您可以使用 DAL 来管理object-relational impedance mismatch。

Stored procedures 用于需要高性能,并且需要在数据库本身上完成编程的事情(可能添加时间戳值,或者添加/减去子记录)。一个好的 DAL 将提供高性能,而不必使用存储过程。

Views用于管理数据库与数据消费者之间的接口。特别是,出于安全目的,可以过滤数据。在大型数据库场景中,DBA 设计和创建表,并管理允许用户访问数据的视图和存储过程。

如果您正在寻求最大的灵活性,您需要做的大部分事情都可以在 DAL 中完成,而无需视图或存储过程。但同样,这取决于您的应用程序的要求。我想说的是,您的应用程序和用户群越大,您​​就越有可能在应用程序中使用视图和存储过程。

【讨论】:

【参考方案2】:

我想说,在大多数情况下,存储过程是 90 年代的遗物:

完全依赖数据库 通用编程语言选择不当,无论是 plpgsql、t-sql 还是其他语言 难以调试 代码可扩展性低,这是任何过程编程语言都存在的问题 代码版本问题

这并不是说它们(如触发器、视图和规则)没有任何东西可提供:大规模报告和数据聚合是它们处理得相当好的任务的一个例子。其余的,逻辑最好放在业务逻辑层(服务、域实体……随便什么)中,那里有各种工具和更高级的编程范式可用。

视图和触发器同上。

在例如在 Java 环境中,JPA 在 90+% 的时间里做得更好:

学习一种查询语言并将其应用于任何数据库 业务逻辑更加集中,在应用程序的一个地方,BLL 代码更易于阅读和编写,也更容易找到理解它的人 可以在单个代码单元中表达跨越多个数据库的逻辑

...这样的例子还在继续。

【讨论】:

以上是关于什么是最好的灵活性,为什么?使用数据库视图、数据库表、存储过程。和表中的对象的主要内容,如果未能解决你的问题,请参考以下文章

mysql视图学习总结(转)

[转]mysql视图学习总结

什么是MVC设计模式,为什么使用MVC?

php是世界上最好的语言?

ASP.NET MVC 最好的视图引擎是什么?

举个栗子!Tableau 技巧(229):灵活下钻查看 Top N 数据