sql – 关于连接性能与系统非规范化的任何好文献?

作为 this question的推论,我想知道是否有良好的比较研究,我可以参考并传递使用RDMBS的优点做连接优化与系统地非规范化,以便始终一次访问单个表.

具体来说,我想要的信息:

>性能或归一化与非规范化.
>规范化与非规范化系统的可扩展性.
>非规范化的可维护性问题.
>模型一致性问题与非规范化.

有一段历史可以看到我要去的地方:我们的系统使用内部数据库抽象层,但它很老,无法处理多个表.因此,必须在每个相关表上使用多个查询来实例化所有复杂对象.现在为了确保系统始终使用单个表格,在整个表格中使用重度系统非规范化,有时会将两个或三个级别压平.至于n-n关系,他们似乎已经通过精心设计他们的数据模型来解决这个问题,以避免这种关系,并始终回到1-n或n-1.

最终结果是一个复杂的过于复杂的系统,客户经常抱怨性能.在分析这样的瓶颈时,他们永远不会质疑系统所基于的这些基本前提,并始终寻找其他解决方案.

我错过了什么 ?我认为整个想法是错误的,但不知何故缺乏无可辩驳的证据来证明(或反驳)它,这就是我转向你的集体智慧,指向我的良好,被广泛接受的文学,可以说服我团队中的其他人方法错误的(让我相信我对于一致的数据模型我太过偏执和教条).

我的下一步是建立自己的测试平台并收集结果,因为我讨厌重新发明轮子,我想知道这个主题已经有了什么.

—-编辑
注意:系统最初是使用没有数据库系统的平面文件构建的……后来才将其移植到数据库,因为客户端坚持使用Oracle进行系统管理.他们没有重构,只是简单地添加了对现有系统的关系数据库支持.平面文件支持后来被删除,但我们仍在等待重构利用数据库.

解决方法

一个想法:你有一个明确的阻碍不匹配,一个数据访问层,只允许访问一个表?停在那里,这与关系数据库的最佳使用不一致.关系数据库旨在很好地执行复杂查询.除了返回单个表之外别无选择,并且可能在bausiness层中进行任何加入,这是没有意义的.

为了证明规范化,以及潜在的一致性成本,您可以参考Codd之后的所有材料,请参阅Wikipedia article.

我预测,对这种东西进行基准测试将是一项永无止境的活动,特殊情况将会比比皆是.我声称规范化是“正常的”,人们可以从干净的数据库设计中获得足够好的性能.也许一种方法可能是一种调查:“你的数据规范化程度如何?从0到4.”

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...