【发布时间】:2010-10-02 09:30:00
【问题描述】:
我和几位同事面临一个对性能有严重影响的架构决策:我们的产品包含一个 UI 驱动的模式构建器,它允许非程序员为 Web 应用构建自己的数据类型。目前,它在幕后构建了适当的规范化架构,并包含一些复杂的逻辑来更改架构并在管理员更改数据类型时自动迁移遗留数据。
规范化模式过去曾遇到过性能瓶颈,并且已安排进行重大重构。其中一组开发人员希望将数据类型的每个属性存储在单独的表中,以便对数据类型的更改永远不需要模式更改。 (单个属性可以转换为 1:n 关系,例如,只需更改应用程序逻辑。)
由于早期的基准测试表明这将导致巨大的性能损失,因此他们在应用程序代码中构建了一个缓存层,用于维护每种数据类型的非规范化版本。虽然它确实加快了查询速度,但我对应用程序层将承担的复杂性持怀疑态度,但我希望得到反馈——我是悲观的吗?其他人是否成功部署了此类解决方案?我应该坚持自己的立场,还是将复杂性从“架构修改工具”转移到“架构镜像工具”是一件好事?
【问题讨论】:
标签: sql database-design architecture