存储聚合值的最佳方法

时间:2012-09-29 09:54:12

标签: sql nosql aggregation nosql-aggregation

我们需要存储不同帐户的汇总值,这些帐户按月/年汇总各种数字。每次更新数据时,这些数字都会更新(通常每24小时一次或两次)。

我期待数据是PIVOT函数的结果,例如:

Year    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2011    0   0   0   0   0   0   95  33  34  24  36  52

每个帐户都需要不同的聚合,例如“客户数量”,“订单数量”和“销售价值”,我不确定是否最好为数据添加密钥或使用单独的表格,例如:

Year    Key        Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2011    CntOrders  0   0   0   0   0   0   95  33  34  24  36  52
2011    CntCust    0   0   0   0   0   0   95  33  34  24  36  52
2011    ValOrders  0   0   0   0   0   0   95  33  34  24  36  52

或者 dbo.CountOfOrders

Year    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2011    0   0   0   0   0   0   95  33  34  24  36  52

dbo.ValueOfOrders

Year    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2011    0   0   0   0   0   0   95  33  34  24  36  52

我已经阅读了一些建议NoSQL和SQL Server的帖子,所以我不确定应该采用哪种方式或如何决定。

我们目前无法证明专用立方体的合理性,但我想知道将值存储在NoSQL数据库中是否更好,或者我们是否应该坚持使用SQL Server?

2 个答案:

答案 0 :(得分:0)

设置作业以运行将数据插入表中的存储过程。

存储帐户,年,月,价值等数据

使用这些表的视图报告多个聚合。

绝对坚持使用SQL。没有理由为这么简单的任务增加技术开销。

答案 1 :(得分:0)

我会坚持使用SQL。但是,如果您担心重建此类PIVOT表的时间,请不要这样做,因为您不必构建具有唯一“密钥”的表。

使用键+进程日期时间构建它,然后将其附加到主数据透视表。因此,在创建增量期间,它将受到事务时间戳(开始和结束)的限制。应该有很多膨胀。如果有,您可以在周末工作中折叠处理日期。