Database 哪些设计模式对于创建逻辑报表引擎可能有用?

Database 哪些设计模式对于创建逻辑报表引擎可能有用?,database,algorithm,design-patterns,database-design,Database,Algorithm,Design Patterns,Database Design,我正在设计(并编码)一个报表引擎,它为报表生成聚合的数据——这与表示层有关 例如: 我有一个数据库,里面有很多人的记录。数据库中的每个人都有大约15个属性 我的报告需要修改 根据大约15条业务规则,选择一组特定的人员。这些规则更像是一个逻辑流动算法,而不仅仅是WHERE子句,例如:以所有18-25岁的个体经营者为例。如果人数少于100人,还包括25-28岁年龄组。。。如果还不到100人,就拿学生来说吧。。。这样下去 在得到我正在处理的特定组之后,我需要创建多个数据集,这些数据集由不同的组组成,并

我正在设计(并编码)一个报表引擎,它为报表生成聚合的数据——这与表示层有关

例如: 我有一个数据库,里面有很多人的记录。数据库中的每个人都有大约15个属性

我的报告需要修改

  • 根据大约15条业务规则,选择一组特定的人员。这些规则更像是一个逻辑流动算法,而不仅仅是WHERE子句,例如:以所有18-25岁的个体经营者为例。如果人数少于100人,还包括25-28岁年龄组。。。如果还不到100人,就拿学生来说吧。。。这样下去
  • 在得到我正在处理的特定组之后,我需要创建多个数据集,这些数据集由不同的组组成,并包含不同的度量。例如,平均身高-按体重分组,平均收入-按年龄分组。。。这些也有复杂的商业规则,比如——如果一个年龄组的人数少于5人,则将其与人数较少的相邻组相加,但无论如何,始终单独显示20-30岁的年龄组 我主要关心的是,我有很多商业规则,它们在形式上非常相似,但有各种不同的小细节。我想确保我用一种可维护和可理解的方法编写它,因为根据我的经验,这通常是一个非常长的文件,有很多嵌套的if-else,很难维护

    我有大量的报告,我想预计算尽可能多的报告。我确实知道,实际上可能有无数的报告标准,因此我还需要动态生成报告。我希望将预计算和临时报告的逻辑保留在一个地方

    这里的报告数据就是产品,所以这些数据需要很快分发给最终用户

    当前的设计包括存储在CouchDB中的数据和在NodeJ上进行的处理。如果有更容易/更快使用的东西,这些可以更改。我有几十万条记录,我不会说这是“大数据”(当然,这可能会增长)


    谢谢

    由于您将拥有多个需要相互交互的业务规则,因此首先想到的设计模式是。此模式的目的是在给定对象通过时向其添加信息。因此,你可以有一个行为,它给出了一个人的名单,确定了那些在特定年龄组的人。然后,它将此子列表传递给另一个应用的行为,例如,按性别排序等

    然而,由于业务规则易于更改,您需要使代码具有灵活性。要做到这一点,我认为您应该使用,因为它将允许您指定各种算法,然后您可以将这些算法传递给您的报告算法(应用程序的主要核心,负责按照用户的意愿呈现所有内容,而不关心您正在处理的信息类型。这将使更改和/或扩展报告工具的行为更容易

    最后,如果您正在使用数据库(我假设您是这样),您可以使用来管理数据库连接和交互。也就是说,您很可能会发现您选择的语言已经提供了类似的功能