我有一个学区数据库(其中约 15,000 个,并且还在不断增长)以及每个学区员工可获得的退休计划/福利。数据被很好地标准化:
- 一个地区记录与 0 或n 个退休计划选项相关联(其中n < 10 分布在 3 个连接表中)
- 一个地区记录与 0 或n 个福利相关联(其中n接近 40 来自 1 个连接表)
- 一个地区还与其他一些关联数量很少的事物相关联。
现在客户要报告。他们希望以一种非常动态的方式进行报告(想想一个 iTunes 智能播放列表,其中可以为任何地区、计划或福利的任何财产添加/删除规则)。我需要允许他们查询一个地区的任何财产、它的退休计划或它的福利并返回所有东西。
为了使事情简单(现在)并避免重复数据,我设置了几个视图(嘘,我知道)只允许我以任何 1 个区记录有效地具有 1- 的方式访问数据与视图的一对一关系以及与all_retirement_plans
视图的一对一记录all_benefits_plans
。这为我提供了一组干净的连接,从而产生了一个统一的结果集,但显然伴随着它自己的一组问题,我迟早会遇到这些问题......
也就是说,随着更多数据的添加,它会变得异常缓慢。
我正在寻找一些关于非规范化的建议。我考虑过一个报表,它可以完成视图的工作,但可以被索引。我还考虑过将整套地区数据转储到 MongoDB(或类似的)。我敢肯定还有其他选择,但我会玩试错游戏,所以我希望这里的人能以一种让我处于合理解决方案的范围内的方式为我提供建议。
最重要的是,我需要能够存储约 15,000 条(并且还在增长)地区记录以及大量额外的元数据,然后以非常精细的级别报告这些数据。除了我自己的想法之外,有人有任何想法或建议吗?我正在努力解决我知道即将发生的问题。