[英]What is best flexibility and why? Using db views, db tables, stored proc. and objects in tables
我想知道使用db视图,db表,存储过程的最佳实践。 表格中的对象......其中哪一个更灵活,为什么,你能解释一下吗?
每个工具都有其用途 。 您的选择取决于应用程序的性质,安全性,性能和敏捷性要求。
如今,许多程序员使用数据访问层( DAL ) 来做这类事情。 许多DAL允许您指定要调用的视图和存储过程。 但您也可以直接对表运行查询,而无需存储过程或视图。
除非您使用对象数据库,否则您将处理表而不是对象。 现在大多数应用程序都使用基于表的数据库系统, 因为它们非常常见 ,您可以使用DAL来管理对象 - 关系阻抗不匹配 。
当需要高性能时使用存储过程 ,并且需要在数据库本身上完成编程事务(可能添加时间戳值,或者添加/减少子记录)。 良好的DAL将提供高性能,而不需要使用存储过程。
视图用于管理数据库与数据使用者之间的接口。 特别是,出于安全目的,可以过滤数据。 在大型数据库方案中,DBA设计并创建表,并管理用户允许用于访问数据的视图和存储过程。
如果您正在寻求最大的灵活性,那么您需要做的大部分工作都可以在DAL中完成,而无需视图或存储过程。 但同样,这取决于您的应用程序的要求。 我会说,您的应用程序和用户群越大,您在应用程序中使用视图和存储过程的可能性就越大。
我会说,在大多数情况下,存储过程是90年代的遗留物:
这并不是说它们(如触发器,视图和规则)没有任何东西可以给出:大规模报告和数据聚合是它们处理得相当好的任务的一个例子。 对于其余部分,逻辑更好地放置在业务逻辑层(服务,域实体......等等)中,其中有各种工具和更高级的编程范例可用。
同样适用于观点和触发器。
在例如Java环境中,JPA在90%以上的时间内做得更好:
...而这样的例子不胜枚举。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.