我和几位同事面临一个具有严重性能影响的架构决策:我们的产品包括一个基于UI的模式构建器,让非程序员为Web应用程序构建自己的数据类型。目前,它在后台构建适当规范化的模式,并包括一些复杂的逻辑,以自动地修改模式并迁移遗留数据,如果管理员对数据类型进行更改。
规范化的模式在过去存在性能瓶颈,因此已经计划进行重大重构。其中一个开发者组希望将数据类型的每个属性存储在单独的表中,以便数据类型的更改永远不需要更改模式。(例如,通过更改应用程序逻辑,单个属性可以转变为1:n的关系。)
由于早期基准测试表明这将导致巨大的性能损失,他们在应用程序代码中构建了一个缓存层,以维护每种数据类型的非规范化版本。虽然这确实加快了查询速度,但我对应用程序层将承担的复杂性持怀疑态度,但我希望得到反馈-我是否过于悲观?其他人是否成功地部署了这种解决方案?我应该坚持自己的想法,还是将复杂性从“模式修改工具”转移到“模式镜像工具”是一个好事?