概念

数据仓库是一个比较老的概念,好像有四五十年左右的历史了。它的出现,是为了弥补数据库的一些局限性。其中一个局限性是数据库在运行复杂的涉及大量数据的查询语句的时候,速度会很慢。数据仓库用Denormalization的方式把彼此相关的数据提前复制到同一个存储节点上,如果下次再有同时需要这些相关数据的请求,就不需要再去原始数据的存储节点上获取了。这节省了到处找数据的时间,但同时因为复制了数据所以1)增加了存储空间,2)增加了修改、删除部分数据的难度。对于经常需要大数据查询的业务,增加储存成本是可以接受的,且这些业务只关心历史数据,所以大家都是用ETL/ELT把数据从数据库里转出来,不太需要经常修改的删除数据。

数据湖是相对比较新的概念了,应该就一二十年的历史。从广义上理解,能把存储和计算分开在不同机器上进行的数据存储系统,都可以叫数据湖。从大家的普遍认知来说,数据湖的特点还包括:1)用户可以知道和掌握数据的存储位置和存储格式。2)数据可以没有定义好的结构(Schema),或者可以是半结构化(Semi-Schema)的,3)数据可以被多个查询引擎读取。

比较

数据仓库数据湖
存算一体
结构化存储
成本
查询速度
数据质量可监督不可监督
适合导入的数据从数据库中用ETL/ELT导出数据原始的非结构化的数据,或者第三方数据

Q&A

Q:Hadoop是数据湖还是数据仓库?

A:因为Hadoop不是存算一体的,所以它不是数据仓库。而狭义的数据湖是要依托于云的,所以Hadoop也不符合。但是Hadoop是符合广义的数据湖的,因为它存算分开了。

Q:Databrisks做的是数据湖吗?

A:Databrisks声称自己做的叫lakehouse,也就是数据湖和数据仓库的合体,具备两者的特点。我的感觉是,首先它是基于Spark这个存算分开的系统的,所以它一定是数据湖,其次它似乎在此基础上做了优化,比如可能把常用数据放到计算节点上,用数据仓库的方式运行查询语句,那从这个角度,它也可以叫数据仓库。

Q:怎么总结数据仓库和数据湖的使用场景?

A:数据仓库是用来分析过去的,而数据湖是用来预测未来的。展开来讲,就是进行大数据分析的时候,数据仓库更有优势,而进行AI模型运行的时候,从数据湖直接导入原始数据更有效率。

Q:日志适合用什么方式存储

A:我没有实践过,因为日志是半结构化的数据,存成数据湖更合适。但可能还是需要进行预结算使得能得到更快的查询速度。

引用

https://www.1point3acres.com/bbs/thread-851795-1-1.html
https://developer.51cto.com/article/680650.html
https://www.modb.pro/db/15808
https://aws.amazon.com/cn/big-data/datalakes-and-analytics/what-is-a-data-lake/ https://www.smartcity.team/consultingskills/experience/shujukuyushujuhu/ https://www.techtarget.com/searchdatamanagement/definition/denormalization#:~:text=Denormalization%20is%20the%20process%20of,of%20each%20piece%20of%20information. https://databricks.com/discover/data-lakes/introduction

Leave a Reply

Your email address will not be published. Required fields are marked *