我的mondrian最佳实践

  • 使用saiku框架(内置mondrian的一个Cube UI框架), 其提供的手动清除缓存功能,及非常方便的拖拽功能,能极大提升重载schema调试cube的节奏
  • 使用infobright(一种mysql的列式数据库存储引擎)作数据仓库,它的查询效率比普通mysql提升好几倍,使得大表join大表变为可行,特别是在使用了VirtualCube时,只有这样,设计的cube才拿得出手给人用。
  • 使用VirtualCube进行多个Fact Table的关联,这种做法需要适当增加冗余维度,一般除了要设置"常规维度",还得增加"事实维度"。两种维度的层级设置,字段名设置要保持一致,特别是大小写,稍有差异,某子cube的相关指标就可能为空。
  • 配置“事实维度”时,最好给< Join >标签内的表设置alias属性,因为在使用“事实维度”时,mondrian可能会搞错表名,某表自己join自己,结果就是报“aggregation too large”异常。
  • 多去看看mysql的slow query log,里面有mondrian实际执行的sql语句,只有深圳理解了mondrian是如何把mdx查询转成等价sql语句来执行的,才能更好地编写cube schema,实现更复杂的统计。

to be continue......

Comments