1.2 难以实现的实时计算
在过去,企业的业务系统往往也承载了大量业务分析需求,服务器资源在一定程度上被大量数据查询占用了,这对系统性能造成严重的负面影响,例如影响用户的使用、响应变慢、后台程序占用大量服务器资源、数据库的吞吐瓶颈频发等。伴随着系统的多年运行,系统中也不可避免地堆积着大量的历史数据。对于企业核心业务而言,两三年以上的业务数据属于“冷数据”,对这些数据的访问频率并不是很高,但是这些历史数据往往是重要的企业资产,为企业商务智能的实现提供重要的数据支撑,因此企业无法仅仅简单地进行数据归档。大量历史数据的存在也是影响核心业务系统性能的重要因素之一。
为了降低在企业应用系统中的处理大数据的影响,我们将一部分业务需求在BI应用系统中实现,其他的业务应用则继续在当前应用系统中供终端用户继续使用。一个很重要的问题就是,鉴于基于传统RDBMS的应用系统的性能瓶颈(磁盘I/O是最主要的瓶颈),我们将一部分数据拿出来,转移到另外一个还是基于传统RDBMS的BI应用系统中,这其实是有一点自相矛盾的,因为BI应用系统底层的数据库随着计算数据量的增大,也会很快陷入性能处理瓶颈,不过很多的应用就是这么做的,现实情况也的确如此。
无论是OLTP还是OLAP,企业应用系统的数据量随着业务发展会增长得越来越快,但是从图1-2中我们可以看出,企业日常访问的信息量随着数据量的增大而增大,占总数据量的比例却没有大幅增长,但是同样的信息会割裂开来,有很多个副本和临时计算结果。
图1-2 应用系统被“合理”割裂
1.2.1 信息、延迟和价值
例如,在应用系统中,一般对当年和过去一年的销售数据分析较多,而对3年或5年前的数据分析较少。即使是这样比较少的数据访问,基于传统RDBMS构建的应用系统依然无法高效地处理查询请求,在海量数据中对极少的一些数据做处理依然会有很长的延时。解决这一问题,除了为了应对业务部门的需求而不断维护和创建数据库索引,进行数据库调优,并增加新的服务器节点之外,对于加大缓存,依然没有一个有效的手段。
图1-3 Richard D.Hackathorn--信息延迟导致信息的价值低下
对于有海量数据分析需求的企业用户来说,需要基于海量数据分析做出商业决策。例如,零售企业需要实时知道自己的可用库存水平,对POS流水数据进行分析,实时制定促销政策等;金融企业需要实时计算海量数据,了解不同的投资组合所带来的预期收益率,根据这些实时分析结果制定决策,进而在金融市场获得收益。如果无法在有效的时间内获得信息,信息延迟所带来的影响将导致数据无法转变成有用的信息。
对于信息的时效性及其价值,从图1-3和图1-4中就能看到明显的差异,从信息产生到最后采取行动的时间越长,这条信息带来的价值就越少。所有的业务决策都是要经过分析的,而非通过直觉来做出决定。和传统的信息系统相比,秒级的应用能够大大提升我们对于信息中包含的业务价值的掌控和专注力,而不是让有价值的信息到最后采取行动的时候已经变得毫无意义,这才是速度提升的意义所在。
图1-4 Richard D.Hackathorn--信息及时处理带来更多价值
图1-5是IDC在2011年对于全球数字信息增长做出的预测分析,在数据持续翻倍增长的前提下,对于数据进行有效挖掘和管理,继而从中获益将会变得越来越困难,而且系统对于数据请求的相应速度的性能问题会变得越来越突出,同时,数据的增长可达到每18个月翻一番的程度。在这样的现实情况下,对于希望从海量数据中获取价值,将数据变成信息的过程就会变得异常困难。在现有的信息系统架构下,的确很难做到“从数据矿山实时提炼出金子”。
图1-5 IDC 2011数据增长和管理需求
1.2.2 OLTP和OLAP合理分离
传统的RDBMS对OLTP的支持,主要是提供数据的增加、删除、修改、查询4种操作,并且保证事务运行的完整性和数据更新优先,这可以视为“写优化”,并非为查询数据而设计的。随着数据量的增大,由于传统RDBMS已经变得无法及时提供查询,因此才有了OLAP的存在。OLAP是面向分析和查询而创建的,专门为了数据读取而设计了“读优化”。
随着很多成熟的列式数据库的出现,如HP Vertica、SAP Sybase IQ等,OLAP类型的应用在数据读取和计算方面的性能也有一定程度的提高,但是列式数据库还是在一定客户范围群内使用,并未像传统的RDBMS那样大范围地进入到企业级数据库仓库领域。
从上面两种应用的分离我们看到了两种“不同”类型的系统,一个是OLTP,另一个是OLAP。其实,在一定程度上,很多OLAP的应用分析场景还是继续在OLTP中完成的,而且,因为数据库性能瓶颈和决策信息需求而将企业应用系统分离成OLTP和OLAP这种方式就注定了很难实现企业信息系统的实时计算。数据从OLTP取出、转换、计算,然后为不同的业务需求和聚合规则产生出不同的中间结果和物化层数据,这一过程一般称为ETL(Extract-Transform-Load)。数据提取、转换和加载,这一过程会消耗相当长的时间,因为构建一个完善的BI应用的确需要这样的过程,而BI应用的建立是为了弥补在OLTP中无法执行大量数据分析而设立的。信息在不同的系统中的流转时间太长,注定我们无法及时对于正在发生的信息做出判断。基于传统RDBMS的应用系统存在以下一些典型弱点:
❑磁盘I/O是最大的瓶颈,数据总是从磁盘读取到内存再到CPU后进行处理。
❑I/O瓶颈导致延迟及CPU的低效利用。
❑RDBMS是为处理交易数据而设计的,写优化方式的数据库系统无法支持大量数据的查询和分析。
❑数据存储的方式无法高效满足分析需求,传统行存储方式已经跟不上信息计算的速度和需要。
❑用户只对某一部分数据进行分析,但系统却要扫描所有经过的行数据。
数据量对于传统的基于磁盘架构的RDBMS来说是一个瓶颈,而且由于OLTP和OLAP分离也会使所获得的信息缺乏时效性,从而导致信息过时。在现在这样的一个信息“大爆炸”和大数据的背景下,传统RDBMS再也无法高效地满足企业应用的需求,因此需要一个创新架构的软件来支撑我们现在和将来的业务处理。