从业务需求来思考,一般分为两类用户需求, 一 类为报表查询, 另一类为数据分析,针对不同的用户需求采用不同的优化方法;对于报表查询类的用户需求,最好从优化后台数据库SQL入手来提高查询性能,这个就涉及数据库的许多优化措施了;对于数据分析类的用户需求,可以采用MOLAP或者ROLAP这2种方法,采用MOLAP方法的话可以考虑使用dynamic cube,而采用ROLAP方法的话可以考虑使用物化视图。所以,如果你的用户需求只是一个报表查询,哪怕这个报表查询涉及几十个G的大表,但其不涉及多维分析的话,不应该使用dynamic cube。由此可见,不同的技术有不同的适用场景的。dynamic cube不是解决性能问题的万能钥匙,而且dynamic cube可能导致应用系统大量的硬件投入和运维开销。
收起FM元数据模型可以做如下几件事情:
1.表连接
2.调用存储过程
3.计算/过滤
4.模型可以定义成物理层(可以手写SQL)、逻辑层、应用层.
5。。。
FM元数据模型可以让不懂业务的用户基于这个模型可以方便地查询模型中的数据.
FM模型的缺点是缺少中间层处理,所以如果数据量很大,并且需要做类似group by .. sum..类汇总的时候,会比较慢. 解决这个问题的方法是Dynamic cube/Powercube.
Powercube是一个MOLAP应用,所有数据都需要加载到文件中,所以不适合数据量过大如1亿以上,维度过细,如2百万以上,数据更新频繁如分钟级.
Dynamic Cube则是能很好的解决这个问题. Dynamic cube如果不使用内存聚合,它就是一个ROLAP,如果将所有数据都加载到内存里,它则象一个MOLAP。 而实际应用中,则是部分数据预先加载到内存,明显数据还在数据库中.