这两年,大量资本涌入数据库市场,导致数据库市场竞争更加白热化。几乎所有投资者都看好数据库上云趋势,就在云数据库、云原生数据库呼声高涨的同时,云数仓成为一个新的赛道,开始走入大众眼帘。只是,在分析什么是云数仓、云数仓为什么火爆之前,我们必要先来了解下数据仓库的定义。
什么是数据仓库?数据仓库和商业智能是一回事吗?
数据库通常被分为关系型数据库(SQL)或者非关系型数据库 (NoSQL),以及联机事务处理(OLTP)和交易型、联机分析处理(OLAP),还有混合型业务处理 (HTAP)。另外,除了这些常见的数据库类型,专有数据库也对业务提升带了极大改进,只是随着数据库技术的发展,专有数据库成了“数据孤岛”的代名词。
之后,一些聪明的企业开始尝试,将不同数据源的数据汇聚在一起,这些将保持着原格式的数据存储起来的方式叫做数据湖;而按照通用格式或者经过加工与集成的数据,则被归为数据仓库。不同的数据仓库获取数据的方式不同,比如有的直接从操作型环境中获取数据,有的则从企业级数据仓库中获取数据,这些满足不同场景需要的数据仓库,又叫数据集市。换言之,数据集市是数据仓库的子集。
从本质上讲,数据仓库是一个分析型数据库,通常是关系型数据库,它由两个或多个数据源创建,通常可以存储具有 PB 级以上规模的历史数据,然后凭借大量的计算和内存资源来运行复杂的查询操作,最后生成数据报告。另外,数据仓库也是商业智能 (BI) 系统和机器学习获得直接数据源的唯一路径。
为什么说数据仓库特别重要?
企业之所以使用数据仓库,是因为在OLTP中,索引的创建和使用受到个数和数据类型的限制,并且当数值接近峰值或者数据类型不符合规范时,会减慢用户的数据分析和查询速度。但是,如果把数据放在数据仓库中,用户就可以自定义主题,根据需要进行数据分析和查询;同时,在数据仓库中使用数据,不会影响到OLTP 数据库的写入性能。
最重要的是,企业构建数据仓库除了能提升数据处理速度,还能对多源数据进行分析。比如:一名销售,在使用OLTP支撑的相关应用时,只能用来处理具体事务,但是不会看到销售所在地的天气,但是销售又想拥有天气预测功能,怎么办呢?如果将所有和天气相关的数据添加到数据仓库,销售就可以利用数据模型来判断当地的天气情况。
数据仓库与数据湖是什么关系?
数据仓库之所以与数据湖不同,除了数据存储的格式有区别,数据的“读取模式”也不一样。数据湖是读模式,很多数据都以易于读取的格式存储;而数据仓库是“写入模式”,能支持各种数据类型的存储,并且在索引查询和各种数据关系的处理上更方便、快捷。
这种“读取模式”适用于来自多个聚合根(不同上下文)的数据读取,避免出现数据丢失的现象,但有一个弊端是,很多数据会变成死数据,应用不会被使用,大量占据存储资源。“写入模式”适用于具有特定目的的数据,并且所使用数据必须与其他来源的数据正确关联。但有时会因为错误的数据格式而被丢弃,导致有价值的数据没有被使用。
主流的数据仓库架构有哪些?
通常,数据仓库架构分为三层,包括:源数据、数据仓库和数据应用。
- 源数据层包括来自销售、营销和其他业务部门的运营数据,还可能包括社交媒体和外部数据,例如:人口调查和统计数据。
临时数据库,是指从数据源检索到的数据,属于临时存储区域,为下一步的数据处理做准备。比如:如果来源是非结构化的,例如:社交媒体文本,需要通过质量检验,删除质量差的数据。
- 数据仓库层,也称为细节层,所有数据是一致、准确、干净的数据,对源数据进行了清洗,去除了杂质。
- 数据应用层,是从前端应用直接读取的数据源,是指根据报表直接生成或者按主题需求计算出来的数据。
数据仓库获取数据以及在仓库中实现的转换和流动都可以认为是 ETL (提取、转换和加载)过程,即指经过清洗的数据,通过 ETL 工具提取数据,执行任何所需的映射和转换,并将数据加载到数据存储层。而ELT (提取、加载和转换)工具,则是指先存储数据,然后再进行转换,使用 ELT 工具的好处是,数据跳过传统的暂存层,直接进入数据湖。
什么是云数据仓库?与本地数据仓库相比有哪些区别?
随着云计算的深化发展,企业应用上云已成为主流趋势,而数据库上云则成为企业应用上云的最后一步。众所周知,云数据库的概念,是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势。而云数据仓库和云数据库的定义非常相似,也是指数据仓库可以在本地、云中或混合环境中部署。
从过去实践来看,数据仓库都在本地部署,但本地数据中心以及服务器的可扩展性差,所以数据仓库上云成为主流趋势。只是,云数据仓库也有一个挑战,那就是将PB 级数据全部迁移上云,涉及到计算、存储和内存等成本。另外,如何快速上云也是一个挑战。当然,随着市场的不断发展,这些问题都不再是问题,现在已经有超大规模的云服务提供商在提供大容量、基于磁盘的数据传输服务。
最后,到底选择本地数据仓库、云数据仓库,还是选择数据湖、数据集市,需要结合企业具体的数据量、增长速度等来确定,建议用户先拿少量数据去测试,或者将部分数据托管在云上,等所有应用和流程跑通,再把成熟的架构向核心关键业务扩展。