首先给出几点核心判断:数据仓库专为数据分析而设计,而数据库更擅长处理事务性操作。虽然两者都负责数据管理,但它们在设计初衷与应用场景上存在本质差异。
在数据库一侧,核心任务聚焦于日常业务操作——比如一次下单、一次登录或一次扣款。这类操作频率高、单次耗时短,追求的是快速响应与稳定可靠。而数据仓库则服务于决策层面:分析历史趋势、运行挖掘模型、生成预测报表。这些任务通常涉及TB级数据量,一个查询运行几小时也属正常。

因此,数据仓库中的数据基本处于“静态”——从数据库中抽取后,经过清洗、转换与整合存入,保持稳定以供反复查询。而数据库中的数据则随业务实时变动,今天录入、明天修改,处于动态变化之中。
既然分工不同,就不能混为一谈。数据库系统从诞生起,就致力于承载事务处理。经过数十年发展,里面存储的全是日常经营细节。早期的业务系统也直接构建在这一环境之上。原本人们希望数据库能一专多能——既能处理事务,又能运行批处理,还能支撑分析。但后来发现,以当时的计算机性能根本无法实现,而且事务处理与分析处理在特性上存在巨大差异,强行将决策支持系统(DSS)运行在事务环境下根本行不通。
具体来说,事务处理环境不适合DSS,主要有五个原因:
第一,性能特征截然不同。事务处理的特点是:读写频繁,但每次操作时间极短,系统响应迅捷。分析处理的风格则完全相反:一个DSS程序可能连续占用CPU和内存数小时,资源消耗巨大。将这两种负载放在同一环境,就像在高速公路上并排行驰跑车和拖拉机,双方都难以发挥应有性能。
第二,数据集成面临巨大挑战。决策分析需要完整、准确的数据,相关数据收集得越全面,分析结果越可靠。然而现实中,绝大多数企业内部数据是分散的——原因多种多样:事务处理应用各自为政、“蜘蛛网”式的数据关联、数据不一致,此外还有外部数据及各类非结构化数据。要将这些碎片拼成一张完整大图,事务系统无能为力。
第三,动态集成问题难以解决。静态集成存在一个硬伤:一旦集成完成,源数据又更新了,决策者拿到的就是过时信息。因此集成数据必须按一定周期(如24小时)刷新,这就是动态集成。显然,事务处理系统不具备这种能力。
第四,历史数据在此成为短板。事务处理只关注当前,数据库中通常只存储短期数据,并且不同数据的保存期限也不一致。即使部分历史数据侥幸留存,也往往被遗忘在角落。但对决策分析而言,历史数据恰恰是最宝贵的资产。许多分析方法必须依赖大量历史数据才能判断趋势,没有历史数据,就无法洞察未来。
第五,数据综合能力严重不足。事务系统中存储的是海量细节数据,但DSS通常不直接分析这些细节——在分析之前,需要先将细节数据进行不同程度的汇总与综合。事务处理环境不具备这种综合能力,而且按照数据库的规范化理论,这种综合本身属于数据冗余,反而受到限制。
因此,要让分析与决策真正高效,就必须将分析型数据与操作型数据分离开来。将分析型数据从日常事务处理环境中抽出,按照DSS的需求重新组织,构建一个独立的分析环境。从实践来看,数据仓库正是为了满足这一需求而诞生,它代表了一种全新的数据存储与组织技术。
