Database 用于统计/报告数据的数据库是什么?

Database 用于统计/报告数据的数据库是什么?,database,nosql,Database,Nosql,我的应用程序是一种POS系统。 问题在于报告。每个产品、每个表、每个员工、每个类别的销售额。拥有1年的日期范围报告非常慢,因为它们必须对许多行进行求和等。因此我想知道无sql数据库是否有帮助,比如每天有摘要之类的。。但这可能并不容易,因为可能会有针对每个项目*产品*类别*员工等的查询。那么我该怎么办呢?如果您对关系数据库感到满意,我建议您坚持使用它们,并对您常用的报告使用每日聚合表 例如,如果您喜欢按产品编号进行分组的销售报告,请找出您要查找的统计数据(即销售数量),并按产品编号将原始数据聚合到

我的应用程序是一种POS系统。
问题在于报告。每个产品、每个表、每个员工、每个类别的销售额。拥有1年的日期范围报告非常慢,因为它们必须对许多行进行求和等。因此我想知道无sql数据库是否有帮助,比如每天有摘要之类的。。但这可能并不容易,因为可能会有针对每个项目*产品*类别*员工等的查询。那么我该怎么办呢?

如果您对关系数据库感到满意,我建议您坚持使用它们,并对您常用的报告使用每日聚合表

例如,如果您喜欢按产品编号进行分组的销售报告,请找出您要查找的统计数据(即销售数量),并按产品编号将原始数据聚合到每日大小的“桶”中

+-----------+------------+------------+-------+-------+
| salesdate | productNum | totalSales | stat2 | stat3 |
+-----------+------------+------------+-------+-------+
如果您在每天结束时使用日大小的存储桶,则您的报告每月只有30个存储桶,或每年365个存储桶。总结起来要快得多。我在构建仪表盘(小时大小的存储桶)时使用了网络性能指标,这大大减少了查询时间。如果需要,您可以随时深入原始数据,但对于希望一目了然的普通用户来说,聚合的存储桶就足够了

您也可以考虑将汇总表放在单独的数据库中。


请记住,如果你的一项统计数据是平均值,那么一系列平均值的平均值并不是整个范围的平均值。

看看,具体来说,这正是我们为用户所做的事情——一个日常物化视图,他们可以避免每个用户计算输出的开销。我想到了这个解决方案,但查询更复杂。例如,对于productNum,我如何知道id为X的卖家卖出了多少?每天?我需要为每个卖家/员工写一个专栏。每个productnum都可能会被取消,我需要一个取消原因,比如说每天,可能是一个按卖家、productnum和salesDate分组的表。可能是另一个只聚合取消的表。如果此系统中有多个卖家,“卖家”和“销售日期”可能是每个聚合表的一部分。为聚合表选择正确的列是一种平衡行为。列出您常用的报告、用于生成它们的过滤器以及它们显示的统计信息。这些过滤器和统计数据将成为如何构建聚合表的线索。