数据开发技术的3个方向
未来数据开发技术方向,我认为有三个,首先是流批一体成为主流开发模式,其次是代码自动化技术走向成熟,第三是OLAPCubes终将衰落。
一、流批一体成为主流开发模式先说说我看到的数据开发的历史。
“远古”时代,通过写SQL脚本抽取OLTP数据库中数据进行分析和统计,大量查询有可能把数据库拖挂;OLAP分析成为数据库的一项重要能力,这个时候,可以写SQL,也可以写Python代码等来进行数据分析和统计,但面对不断增长的数据量,数据库性能遇到挑战;Hadoop技术的引入和不断成熟,海量数据的离线存储、计算和调度问题得到解决;Storm让海量数据的实时计算成为可能,促进了一大批实时数据产品的出现,也促进了Lambda数据架构的出现和流行;Kafka、Spark、Flink等技术的流行,整个数据链路的全流式计算成为可能,Kappa架构出现和流行。从单机OLAP到Lambda到Kappa的演进,数据链路上的问题、数据计算层面的问题得到了很好解决。那未来一切皆流式,一切皆实时是否可行?是否经济?我们的数据架构还存在什么问题?列举几个数据领域常见的问题:
数据产品实时和离线模块同一指标数值不同,因为指标计算离线、实时是单独开发,单独存储的,口径有差异;同一口径的数据指标,需要离线和实时各开发一份代码,因为彼此的计算引擎不同,编程范式不同,即使都用SQL编写,也很难完全复用;离线数仓和实时数仓彼此独立存在,带来双重的存储和维护成本,因为离线和实时任务有不同的数仓分层及存储体系。要解决这些问题,需要实时和离线计算的融合,称作流批一体架构。这里说的融合不是用实时计算替代所有离线计算,离线和实时计算有各自适用的场景,而是对于数据的下游应用来说,不用去