我们多年来实施了一系列基于网络的报告,总结了历史业务数据(产品销售,流量等)。这件事很大程度上依赖于复杂的SQL查询,老板希望结果是实时的,但它们需要一分钟才能执行。报告可在多个维度上进行自定义。
我做了一些基础研究,看起来我们需要的是某种OLAP(?),ETL(?),等等。
这是真的吗?我们是否应该转换为整个软件包并废弃我们心爱的开发项目,或者是否有可能将其保持为关系,基于SQL,并通过简单地预先计算一些优化视图并使用批处理运行来接近专用解决方案晚?您是否有关于该主题的良好文档的指示?
谢谢。
答案 0 :(得分:1)
您可以在晚上执行ETL(提取,转换和加载),将(可能已汇总的)数据加载到通常可以快速查询的表中。适当的指数仍然很重要。
将这些摘要表放在不同的模式,不同的数据库或不同的服务器上通常是有意义的,但是你并非绝对 来执行此操作。
表的结构很重要,它不像为OLTP系统设计表。 IBM红皮书有几个标题可以帮助您设计表格。
今天大多数dbms都支持SQL分析功能。例如,请参阅Oracle的Analytic Functions by Example或PostgreSQL的Window Functions。
答案 1 :(得分:0)
从长远来看,听起来好像转移到数据仓库肯定会让你受益(正如Catcall的答案所示)。您可以使用现有报告作为数据仓库要求的起点。
在短期内,您可以构建针对您现有报告要求而优化的汇总表。这应该被视为权宜之计,除非你再也不会改变这些报告。
您可能还会受益于按日期/时间查看数据库中的分区表,因为您可能仍希望报告当天的数据以进行实时报告。