从传统理论来看,OLAP分为MOLAP、ROLAP和HOLAP,NOSQL OLAP还没有被提及,却也隐约可见。本文先从传统OLAP说起。
OLAP曾经作为数据仓库经典用例用来演示数据仓库的神奇之处,近来却几乎被遗忘了。从OLAP的发展来看,先是独树一帜的MOLAP,但很很不幸,用户体验并不好。OLAP模型设计有很多限制,性能低下,投资高昂,做不到无缝集成,最终被用户放弃,海波龙也被Oracle收购。
ROLAP是在传统的关系数据库的基础上,随着报表工具的发展而发展起来,特别是随着BO而发展起来的。BO后来推出XI妄图狂干最后一票,但用户并不买账。BO的下场大家也都知道了。BO最早提出了商业智能的概念,首先开发出了语义层,并申请为专利,但这并没有挽救BO的颓势。ROLAP意图在关系数据库的基础上,不需要额外的大幅投资来解决OLAP的性能和投资回报率问题。但这种方式有其无法解决的技术难题,首先做不到多维分析,其次大数据量(客户级的事实表数据量达到百万级)带来的性能挑战无法解决。为此,就有了HOLAP。
HOLAP是混合OLAP的意思,用MOLAP做汇总层,ROLAP做客户级汇总,谓之穿透操作。这种架构很复杂,也没见成熟的产品,紧紧停留在理论阶段。还有就是,随着电子商务的发展,数据量的急剧增长,关系数据库都遇到了架构上的扩展瓶颈,HOLAP也就事实上宣告失败。随着电子商务和社交网络的发展,一种新的NOSQL数据库应运而起,近来Greenplum、hadoop/hbase/hive的发展是我们看到一种新的OLAP-NOSQL OLAP也将出现。
HOLAP的探索经验可供我们借鉴,用元数据来描述和操作OLAP模型,用NOSQL来存储数据,并提供强大的OLAP运算能力。现在OLAP4cloud已经出现,尽管还很原始,但我们毕竟看到了解决问题的曙光。OLAP4cloud可以访问Hadoop/Hbase,但还不成熟,借助于开源的OLAP-Mondrian来实现NOSQL就成为一种可选的方案。
本文的提出,意图解决OLAP的性能问题,OLAP元数据应用问题,打造一个集明细数据、汇总数据和元数据为一体的数据仓库,支持OLAP操作,空间操作和语义操作于一体的数据仓库解决方案。希望研究这个问题的朋友一起探讨一下。