网上的OLTP和OLAP资料很多,我也了解他们的内容和用途,但是对于实际的应用,还是无法结合,有几点疑问,恳请大家解惑
1、我们平常设计数据库时,基本都是OLTP类型,而如果需要大数据量的查询,才考虑加入OLAP,是吗?
2、如果目前有OLTP,现在需要加入OLAP,那么OLAP是和OLAP使用相同的数据库,但是重新建立适合OLAP的数据库架构?
3、同2,如果重新建立OLAP的数据库,那么OLAP所需的动辄几十T,上百T的数据如何从OLTP的数据库中获取?
4、如果对OLTP和OLAP有什么看法或者建议,请指点一二。
------解决思路----------------------
首先,定义给出,OLTP(on-line transaction process)联机事务处理,OLAP(on-line analytic process)联机分析处理。前者用于业务处理,强调系统的快速、稳定、以及一致性。后者用于企业分析处理,强调业务的表达以及分析交互性,后者的数据通常来源与前者。
他们的产生要追溯到蛮久之前了,最开始阶段,约莫60年代时,是只有OLTP的,发展到了90年代,93年的时候,跟现在很多企业以及能认识到的一样,关系数据库之父E.F.CODE认为OLTP已满足不了企业的数据查询分析统计等需求,提出了多维数据库多维分析的概念,他发表了OLAP的12项准则,由此OLAP的概念便慢慢被行业接受开来。
对应到我们现在的BI项目里,OLTP系统通常会指的是我们的各个业务系统,用户在其中每天进行着重复的操作,单据录入,档案维护,使得企业业务运营正常展开,OLAP系统可指我们的多维数据库,亦可以意指我们的BI系统,具体情况下会有不同意思。强调的是用于分析的系统,用于监控企业运用,发现问题,分析问题。
OLAP又可分为MOLAP、ROLAP、HOLAP,MOLAP存定义存聚合数,ROLAP通常存定义不存聚合(有时也有聚合表),HOLAP介于上述两者之间。
大概10年前的时候,MOLAP是很流行的,大部分项目中都要配置OLAP数据库,即多维数据库,那些年将BI的技术定义为三大块:数据仓库、OLAP、数据挖掘,也是这个情况了。十年河东十年河西,果然,现在很多企业都放弃了MOLAP,转向ROLAP产品了,这一状况,也与现在硬件的升级,内存等资源的性价比更合理有关。现在的主流产品,BIEE、BO、COGNOS的FM,都是类ROLAP的,微软SSAS、ORACEL收购的HYPERION的ESSBASE(不知还有无,以前真的很火),COGNOS TR,SAP BW等,都以MOLAP为基础的。至于现在新出现的Qlikview,设计为在内存中进行关联组合查询,就有点不太好归类了。
------解决思路----------------------
大部分数据库都是oltp的,也就是用于事务处理的,举个例子,比如 淘宝,我们经常去买东西,那么会产生一大堆的交易数据,这个就是oltp产生的,对于我们这些买家,我们可以经常查询之前买了多少东西,所以这个是最基础的系统。
而对于卖家,淘宝开发了 olap系统,也就是把很多数据集中起来,进行计算,这样就能给卖家提供分析报告,卖家每个月订阅这个服务,他就能看到 这段时间,那些品类卖的好,哪些单品卖的好,价格区间是多少,客户在买A产品时,也会买B产品,或者是否是因为 有促销,才使得销量上升等等,这些信息对你卖家的经营决策很有帮助,能产生价值。
1、我们平常设计数据库时,基本都是OLTP类型,而如果需要大数据量的查询,才考虑加入OLAP,是吗?
oltp一般都是交易性操作,查询少量数据,查询速度快,而查询大量数据的,一般都是报表,对于报表要加快查询速度,有很多方法,不一定要加入olap,我们公司 就只有一个数据库。
2、如果目前有OLTP,现在需要加入OLAP,那么OLAP是和OLAP使用相同的数据库,但是重新建立适合OLAP的数据库架构?
从长远的角度,还是建议设计一个单独的olap系统,可以使用相同的数据库,也可以使用不同的,这个问题不大的,看你熟悉那个数据库,性价比高的。
既然是要用单独的数据库,那就重新设计olap的数据库,其实就是你要设计有哪些表,每个表里有哪些字段,哪些是维度表(分析问题的角度,就是从哪些角度来看问题),哪些是事实表(交易数据)等等。
3、同2,如果重新建立OLAP的数据库,那么OLAP所需的动辄几十T,上百T的数据如何从OLTP的数据库中获取?
如果真是有上百T的数据,那也要加载到olap中,这个没有什么办法。
就算你用现在开源的hadoop ,也要一步一步的加载数据到 系统中,然后每天还要运行加载任务,把新增量的数据加载到系统中,加载的间隔,要看你分析的需求。
只是数据量一旦大了,单机处理不了几百T的数据,或者速度慢了,或者成本投入太大了,可以考虑用hadoop,本质上没有什么区别,只是这个大数据处理工具,一开始就考虑到了数据量大的问题,所以开始用 分布式存储,分布式处理,并行处理等手段很方法,加快处理速度。
4、如果对OLTP和OLAP有什么看法或者建议,请指点一二。
根据你的业务需求来设计系统,公司的领导要看什么样的数据,就怎么设计系统,当然要考虑以后的扩展性,一开始就尽力设计好,同时考虑到性能的问题,就是你的数据量有多大。