- 数据库和数据仓库都是存储数据的系统, 但是它们的目的截然不同。
- 数据库使用联机事务处理(OLTP)来快速删除,插入,替换和更新大量的“交易性”数据(Transaction)
- 数据仓库使用联机分析处理(OLAP)来快速分析大量数据(Analytics)
其实Transaction和Analytics的概念,跟ERD、BI、MIS一样都来自于商业领域。现在数据库的应用已经大大超出了传统商业领域的范畴,那么我们是否还有必要拘泥于数据库的Transaction和Analytics属性呢?
早期昂贵的数据库设备(包括软件和硬件)主要用于最能挖掘价值的商业领域。数据库的首要功能是能够准确记录商业活动中的各种交易包括订单,支付,物流等等,这些记录当然得万无一失,必须满足事务的各种要求,这就是我们眼中的数据库(联机事务处理系统)的基本要求。当各种维度的历史数据累积起来后,我们开始离线分析这些历史数据库,为商业决策提供依据,这大概是数据仓库的来源。但是随着互联网业务的兴起,尤其是电子商务的爆发,数据库和数据仓库的在商业领域的界限正在变得模糊。
- 数据库要处理的数据量越来越大,需要分库分片,或者直接用分布式数据库来处理。
- 数据仓库(数据分析)的实时化要求越来越高,对在线广告效果的实时评估,对商品库存的实时盘点,使得以前那种从联机数据库提取数据、清洗、导入数据仓库、离线分析模式越来越不可行。
在这种背景下,SAP HANA, Google Spanner/F1, PingCAP Tidb这一类混合型的数据库试图解决日益增长的联机事务处理和联机分析需求。
与此同时,我们看到数据库需求在非商业领域的快速增长。这一个领域的数据产生速率更快,数据维度更高,数据量更大,实时处理(包括写入和分析)和吞吐量要求更高,离线分析的数据体量也更大。但这类数据不一定有primary key,也不需要更新,如果删除,也是批量删除。譬如金融市场产生的数据,各种机器设备传感器产生的数据。满足这种需求的数据库,你觉得是数据库还是数据仓库呢?近几年,时序数据库产品的爆发正是为了满足这一类需求。例如,DolphinDB是一款高性能分布式时序数据库产品,为了满足上述需求,它已经把数据库,分布式计算和编程语言的功能无缝的融合在一起。
无论在传统的商业领域,还是在金融市场、物联网、车联网等非商领域,我们看到了数据分析的第一性需求,加之对数据处理的时效性要求越来越高,数据体量越来越大,传统的数据库和数据仓库的界限正在消失。NewSQL和分布式时序数据库的崛起,让我们看到数据库产品正在慢慢夺回对大数据的控制权。
PS:NewSQL是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。
NewSQL系统包括:Clustrix、GenieDB、ScalArc、Schooner、VoltDB、RethinkDB、ScaleDB、Akiban、CodeFutures、ScaleBase、Translattice和NimbusDB,以及Drizzle、带有NDB的MySQL集群和带有Handler Socket的MySQL。相关的“NewSQL作为一种服务”类别则包括亚马逊关系数据库服务,微软的SQL Azure等。
总结
- 大数据时代,数据库的功能不断的改进,与数据仓库之间的关系变得越来越模糊。
- 数据库产品正在慢慢夺回对大数据的控制权。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/290566.html