我想知道使用db视图,db表,存储过程的最佳实践。表格中的对象......其中哪一个更灵活,为什么,你能解释一下吗?
答案 0 :(得分:1)
每个工具has its uses。您的选择取决于应用程序的性质,安全性,性能和敏捷性要求。
现在很多程序员都使用数据访问层(DALs)来做这类事情。许多DAL允许您指定要调用的视图和存储过程。但您也可以直接对表运行查询,而无需存储过程或视图。
除非您使用的是对象数据库,否则您将处理tables而不是对象。现在大多数应用程序使用基于表的数据库系统because they are so common,您可以使用DAL来管理object-relational impedance mismatch。
当需要高性能时使用Stored procedures,并且需要在数据库本身上完成编程事务(可能添加时间戳值,或者添加/减少子记录)。良好的DAL将提供高性能,而无需使用存储过程。
Views用于管理数据库与数据使用者之间的接口。特别是,出于安全目的,可以过滤数据。在大型数据库方案中,DBA设计并创建表,并管理用户可用于访问数据的视图和存储过程。
如果您正在寻求最大的灵活性,那么您需要做的大部分工作都可以在DAL中完成,而无需视图或存储过程。但同样,这取决于您的应用程序的要求。我会说,您的应用程序和用户群越大,您在应用程序中使用视图和存储过程的可能性就越大。
答案 1 :(得分:-1)
我想说,在大多数情况下,存储过程是'90年代的遗留物:
这并不是说它们(如触发器,视图和规则)没有任何东西可以提供:大规模报告和数据聚合是它们处理得相当好的任务的一个示例。对于其他部分,逻辑更好地放置在业务逻辑层(服务,域实体......等等)中,其中有各种工具和更高级的编程范例可供使用。
同样适用于观点和触发器。
例如在Java环境中,JPA在90%以上的时间里做得更好:
......然后列表继续。