国内公司把数据湖做成了数据库
在做多年的数据仓库项目,数据湖也在做,但是做完发现,这个不是传统数据库里面的ODS吗?
好多公司做数据湖,就是把数据湖做成了ODS层(贴源数据层),难道真的数据湖就是这样等于ODS吗?最近在接触国外一些数据湖项目,才发现,我们还是传统的思路。
数据湖在我们的理解里面,最多的词,"流批一体",“iceberg,hudi”,“存算分离”,是不是很多公司都是这样做的。但是这个真的数据湖吗。你问他数据湖有那些特点,他会说,CDC,spark,flink,流批一体,三剑客(iecberg,hudi和dealta,)。ppt 画的内容重点都在讲cdc ,flink 里面各种算子。等等。数据湖是这样吗,销售在讲数据湖,ppt 画一个湖,湖里有个猫在钓鱼,钓到鱼,装到数据仓里面。大数人理解都是这样,可是,我问湖里面有没有螃蟹(非结构化),钓到螃蟹放到哪里,这些人都傻眼了,还有一些人,硬套iceberg ,社区各种问iceberg 怎么存非结构化。
我们数据湖做出来的内容,还是ODS,数仓,数据集市,报表这一套流程。无非从技术上,多了cdc,实时计算,flink,存算分离,doris ,hadoop+MPP 这一大堆技术。并且ODS大部分就是做数仓的团队在维护,业务人员想用数据,都是给做成报表,或者做成数据接口API,更有把数据卸载另外一个数据库,给到业务系统。
最近在接触一个国外的一家公司数据湖项目,先说一些了解的情况,用的技术都差不都,用的微软的Azure,对象存储,微软一套开发工厂+pgsql(数仓)+BI。技术没有啥新奇的。具体说一下他们数据湖怎么做的。
他们对数据湖的概念,是业务系统不是IT部门做数仓一个团队搞得。数据湖,是所有团队参与的。比如:他们有数据湖管理平台。主要数据接入,数据权限管理,数据大部分是业务系统上传的csv文件,个别有json.也有从数据库cdc数据。他们会结合对象存储。划分权限。每个部门或者个人,都有你文件夹的权限。你可以上传你部门的数据,但是别人是看不到的,如果数仓需要拿你的数据,需要你给一个路径,或者文件地址。类似百度网盘。里面会有数据文件。需要处理,会有专门人处理数据。第二:功能就是可以上传任何数据,csv,图片,视频,Parquet,Avro ,啥格式都有。如果数仓要数据,或者ML算法那边需要数据,就会给一个目录路径。第三个:就是对每个文件有生命周期或者权限记录跟踪,这个文件分享后,谁有权限操作,给谁用。文件是离线的,还是实时更新的。都有日志记录。
他们的平台,其实没有啥新奇,但是对数据湖的理解。这里面的权限,支持各种文件的录入。数据文件的分享交互,而不是数据库,表。他们给你的是一个元数据。里面描述的文件路径,加工方式,数据文件格式。当然里面也有iceberg表,但是它只是数据文件的一种,而给你的只是文件目录,里面记录Parquet 格式的文件,但是你可以从元数据看到,表的信息。至于说,你怎么加工,你只管去这里面获取数据就行。如果是离线的,里面每天会生成文件夹。按照日期定时生成目录。元数据里面会告诉你数据的频度。你可以根据情况使用。
其实他们数据湖的数据还是各个业务系统的(所属权)。而不是我们在hive 里面建设好几个库,或者一个库,在表的前面加上业务编号。这些数据采集后,属于谁的,其实都没有明确。我们因为是数仓团队接入的,理论上还是数仓的。其他团队要用,或者修改,你肯定不愿意。你怕把你的ods给整坏了。
他们的基于数据目录+元数据 平台管理。只是给你分享数据目录,这个概念,我觉得应该才是数据湖的形状属性。数据湖一定是,鱼虾,海豚,鲨鱼,啥都应该有。不是两个数据库相互导数据。数据湖一定是多部门参与,多团队共建。而不是某一个团队的专属。
最后总结:1.数据湖的数据接入,应该多样性,csv,cdc,数据文件,http等等,都应该可以对接。2.数据湖还是要以文件存储,什么文件都可以,要有权限管理。3.基于数据元的管理,要对文件的描述,不管是结构化,非机构,都应该有元数据描述。4.可以分享数据文件,数据文件应该还是有归属权,是谁的数据文件,就是谁的资产,你想给谁,可以分享。共同参与。