【问题标题】:Database views or tables for queries - design best practices用于查询的数据库视图或表 - 设计最佳实践
【发布时间】:2016-10-07 03:49:16
【问题描述】:

对于数据库暴露于应用程序访问(主要是查询),您设计了哪些最佳实践?

恕我直言,对于查询,我们应该几乎总是更喜欢视图而不是表Wiki 仅描述了它们的优点,省略了缺点。此外,它完全符合CQRS 原则。我们可以使用视图进行查询,使用存储过程进行修改。在这样的过程中,我们可以更好地控制保存的内容和方式。

一些可能的缺点:

  • 查看维护成本,因为它扩大了项目的代码库
  • 更复杂的 ORM 映射配置会阻碍开发人员的工作效率

最后一个问题:如果视图真的更好,为什么我觉得它们在大多数使用 RDBMS 进行存储的项目中没有得到充分利用?

【问题讨论】:

  • 为什么要写存储过程?大部分时间不干燥。大多数时候可以摆脱约束(检查、外键、null、唯一、pk)和自动更新视图
  • 自动更新视图是可以的,但有时会有一些限制,例如修改只能影响由多个表组成的视图中的一个表中的数据。

标签: sql database-design view relational-database


【解决方案1】:

另一种可能性,取决于您有多少硬件可供您使用,是设置允许用户对其运行查询的第二台服务器。您可以设置从后端服务器到这个“操场”服务器的复制,并在一天中的某些时间点将数据复制到操场,如果用户搞砸了,可以有效地定期刷新数据。

我认为某些 RDBMS 视图的旧版本不能被索引,这会损害性能。我认为今天这不是一个问题。

【讨论】:

  • 好的,但是还是没有解决db物理层schema漂移的问题。如果没有视图,在需要更改数据库架构之后更改应用程序代码的成本可能会更高。
  • 这只是在应该是两个相同的服务器上复制模式更改的问题,对吧?请注意,我并不是说观点没有价值,它们当然是。但是,如果架构发生更改,是否就不需要更改视图定义?
  • 如果架构发生变化,视图定义可能会发生变化,但您可以不更改公开的视图(对于消费者应用程序) - 只需更改视图的构建方式。它就像消费者应用程序的表查询接口。
猜你喜欢
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多