文章目录
- 数据库的发展
- 数据湖概述
- 数据湖的本质
- 如何实现数据湖
- 数据湖,真的值得我们构建吗?
在谈到数据湖之前,我们先来看看数据库的发展
数据库的发展
普通数据库的特点:
数据量小,保存时间短,支持ACID,及时性高,以业务线为单位进行建设。
=>数量量变大,对数据的重视程度增加,所以发展出来数据仓库这种多节点存储(主要是通过分库分表),主要用于数据存储和分析,后面随着业务变得复杂,也提出来将数据分层(分层的好处:….),最大的好处是数据复用.
=>大数据平台(数据规模越来越大),目的是通过大数据技术来统一管理企业所有的数据。
=>业务扩张,以及企业对数据的灵活性,安全性,处理性能都有更多的追求,所以有了数据中台的概念。
=>数据湖(狭义上:更大规模的数据存储支持多种类型数据,广义上:大规模数据存储,数据处理,数据分析,数据管理的集成)
数据湖概述
数据湖形象的理解就是一个湖,将来自各个地方的水汇聚到湖里面,对外提供湖水的资源。从这个形象的理解,我们可以分析出他具有三个特征:
- 储存企业的原始数据
- 能够存储各式各样的数据,包括结构化数据,非结构化数据,半结构化数据。并非像数仓只能存放结构化数据。
- 数据湖需要对外提供一个可以对数据进行统一访问的接口
数据湖是针对所有的数据类型,像结构化(表格,关系型数据库中的数据),半结构化(日志,xml文档,json文档等),非结构化(图片,视频,音频),二进制数据。简而言之,数据湖实现了一个大的数据集成功能。
数据湖支持较快的update,insert,delete。严格的Table Schema,小文件管理,ACID语义保证,多版本保证,优秀的可扩展性,最好存储原始数据,支持增量拉取,支持多种分析引擎,数据统一。
现在比较成熟的数据湖工具有hudi,他具有以下功能:
传统数仓通过工具(cacal,maxf,flume,sqoop)将结构化数据或者半结构化数据导入到hadoop中进行分布式储存。但是hudi不需要工具,更简单

hudi可以时刻实现增量更新。
hudi即可作为数据源,也可作为数据库,能够存储海量数据。
数据湖的本质
狭义的数据湖本身是一种底层的数据存储模式,更多解决的是数据怎么存进去和读出来。(核心是:提供一个统一的数据存储模式)
在此之外,一些公有云厂商也会给数据湖附加一些特性,比如数据安全,数据清理,数据质量管理。当然未来也会考虑在数据湖中建立各种数据分析应用,但这不是数据湖关心的问题。比如数据仓库是可以在数据湖上进行数据处理,数据建模,数据分析的相关内容。这也从本质上划分了数仓和数据湖,数仓可以做数据存储,但是存储的只是结构化数据,并且他本身不是为了数据存储服务的,而是为了数据分析。而数据湖主要提供一个统一的数据存储模式,分析类应用可以在其基础上搭建(往往是数据中台和数据仓库要做的)但是他自己本身不行。
总结:狭义的数据湖只是一种底层的数据存储模型,而广义的数据湖包括了数据集成,数据治理,数据处理与分析,数据挖掘,安全管控,质量检验等。
如何实现数据湖
数据湖本身只是一种数据存储模式,不会特别考虑你使用什么技术继续数据存储。
但是数据湖底层也会有以下要求:
- 能够支持各式各样的数据存储
- 具备弹性扩展能力
基于以上两点,我们一般使用分布式文件存储或对象存储来构建数据湖eg:基于hadoop中的hdfs来构建数据湖或者使用其他分布式对象储存(eg:亚马逊s3分布式对象存储)来构建数据湖。
数据湖,真的值得我们构建吗?
对于中小型企业来说,我认为是不需要的,数据湖实际是一些公有云厂商提出的一个概念,目的是为了让企业将自己的数据搬到自己的云平台上,同时将存储的入口和出口统一,方便进行数据流入和流出。
从目前来看,不太推荐企业去做这方面的研究,而是实际根据特定的场景的数据存储需求,数据处理和分析需求,去找最合适自己的数据存储方式,数据分析方式。
eg:存储结构数据1.关系数据库2.MPP数据分析型数据库
处理大量文件的数据:hdfs库(像基于hdfs的分布式列式数据库Hbase)
对于大企业来说,我认为可以做,能想到之后数据湖发展起来,不在局限于数据存储,还包括数据处理与分析,数据挖掘等功能。可以想到未来如果所有数据都存储在数据湖中,我们可以直接通过数据湖进行数据处理,数据分析,当需要进行特定的处理我们还可以使用统一的接口调出来进行单独处理,这将简化我们针对不同数据需要单独定制化处理的繁琐流程。