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