我需要一个一般性的建议,但为了记录,我使用 jpa。
我需要生成使用数据统计信息,例如每个产品的用户购买细分等...我看到三种可能的策略,1)每次查看统计信息时生成动态统计信息,2)为统计信息创建一个特定表每次有变化时我都会更新 3) 定期进行离线处理
所有人都有问题和优势,例如成本与不是最新的数据,我想知道是否有人在该领域有经验可以提供一些建议。我知道这个问题非常广泛,如果需要,我可以改进我的用例。
我需要一个一般性的建议,但为了记录,我使用 jpa。
我需要生成使用数据统计信息,例如每个产品的用户购买细分等...我看到三种可能的策略,1)每次查看统计信息时生成动态统计信息,2)为统计信息创建一个特定表每次有变化时我都会更新 3) 定期进行离线处理
所有人都有问题和优势,例如成本与不是最新的数据,我想知道是否有人在该领域有经验可以提供一些建议。我知道这个问题非常广泛,如果需要,我可以改进我的用例。
我做了很多报告,我一直想知道的第一个问题是利益相关者是否需要实时数据。这肯定会改变您的思维方式以及设计报告系统的方式。
根据您的数据大小,我认为可以进行实时报告。如果您有数百万的数据,那么您可能需要进行一些预处理或数据仓库(您的选择 2/3)。
一些一般性建议:
如果您想进行实时报告,请考虑制作数据库副本,这样您就不会针对生产数据运行报告。一些报告可以使用繁重的查询,因此值得研究将生产数据复制到可以运行报告的其他服务器。
大量使用中间结构进行报告。编写视图、存储过程等,因此每个报告都不仅仅是一些巨大的复杂查询。
如果报表开始变得过于复杂而无法在数据库级别执行,请确保将报表逻辑移动到应用程序层。我已经被这个咬过很多次了。我开始编写一个纯粹来自数据库的查询的报告,最终它变得太复杂了,我不得不跳过箍来让它工作。
实时拍摄,然后在必要时转到陈旧的数据。数据库能够做的比你想象的要多得多。很多时候,您可以对数据库结构进行更改,从而大大提高性能。