什么是数据湖?
邮箱里看到了技术文章推送的邮件,提到了数据湖、湖仓一体等等概念,我有点好奇到底是什么东西。
初步看了两篇文章,我感觉,这个“数据湖”又是一个热门潮流概念吧。没想到 Martin Fowler 大叔也撰文专门描写了数据湖。
什么是数据湖呢?
简单说,就是把不同来源和不同格式的数据,一股脑存到一起,就是数据湖了。有些人,会暗讽,叫做“数据沼泽”,也没什么错。😂
和数据仓库有什么关系?
其实,如果你不需要去亲手实现一个“数据仓库”,你恐怕根本不知道数据仓库的概念,就跟我一样。
我家住的老公房,一楼有一个储藏间,我会把各种短时间不用的,但是又不能直接扔掉的东西,都放入到储藏间里去。当然,这种东西只能叫做储藏间,不能叫仓库。我们去逛宜家的时候,最后结账前,会看到分门别类的巨大货架,各种家具都在箱子里整理的整整齐齐堆放在编号的货架上,你看好了哪种,就请工作人员帮你取下来,然后直接推去结账就行了。这个意象,可能更像是仓库的概念。
一般人关于数据仓库的概念,大概就逃不出这两种印象吧。
数据仓库,如果不是一个储藏间的话,应该是分门别类的,堆放整齐的,能够找到的,能够快速取出的。空间是巨大的。
现在我们来假想一种情况,就是突然来了一些形状不那么规整的东西,没法码放在货架上,一般做法会在外面套上保护的包装箱,形状规整后,我们就可以堆放在货架上了。不过没办法,只能找一块平地堆放了。
这样情况越来越多,东一堆,西一堆,就成了一个“数据湖”。
数据湖就是,不考虑数据的原始形态,不对数据进行初步清理和规整,就直接堆放在一起。
数据湖的优劣
其实,我个人理解,数据湖和数据仓库,只是帮助外行更多理解这里面的一些事情。算是想让这个东西“出圈”的一些宣传努力。
如果我们不对原始数据进行整理和处理,就是单纯的存储的话,那么势必要在使用数据的时候进行处理。降低了使用的效率。
优点当然很明显,这么做的话,把任何数据收集起来,就会很快,效率高,你不用去分析原始数据,也不用整理。就是单纯地拿来。
另一个优点,就是数据保持了最大的信息量,原汁原味,不会在清理的过程中,出现遗失或者失真的问题。
缺点呢?当然,使用数据的一方,就会比较痛苦。首先,你不知道“湖”里有哪些数据,因为数据没有整理归一过,你很难检索。只能低效了解有哪些数据。其次,数据探索的效率也会降低,因为数据没整理过,你第一个问题就要搞清楚数据的结构,设计一种读取或者索引数据的方式。
大概这个数据湖的概念给大数据专业的工程师创建了更多的就业机会吧?这是嘲讽。
结论
数据湖,这个概念的宣传价值,大概大于其技术价值吧。事情的本质并没有什么改变。数据无非就是收集,整理,分析。数据仓库是收集 + 整理,然后分析就方便了。而数据湖就是只管收集,不进行整理。分析师,需要找到特定数据,先进行整理,才能分析。
至于湖仓一体之类的概念,大概就可以去猜测了。
最后,对于技术人来说,重要的仍然还是具体的需求场景和具体的问题。每个场景和问题,都有具体的实现。