前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >流计算和数据库表的关联

流计算和数据库表的关联

作者头像
哒呵呵
发布2021-08-12 11:45:54
7920
发布2021-08-12 11:45:54
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

前面的那篇文章《再谈流计算的基本概念》提到了 Dataflow 模型,这个模型从更高的维度去看待看似隔离的批处理和流处理过程,把批处理过程认为是流处理过程的特例。基于这个模型,诞生了Spark Structure Streaming、Flink 和 Apache Beam 等一系列工具。

Dataflow 依然是存在缺憾的,它并没有把数据工程师常用的 SQL 整合进去。对于一个数据工程师而言,dataflow 虽然解决了批处理和流处理的统一问题,但是还是要学习那么多额外的编程语言及其函数或者是转换过程,很不爽,为什么流处理就不能就像处理表一样写SQL呢?

在回答这个问题之前,首先我们得把表和流统一了。

什么是表呢?常规意义上的表指的是一堆拥有行列性质的数据,每一行都有着唯一的主键(无论是隐性还是显性的),在某种程度上,一张表的存储结构是一个只增不减的log(LSM树或者是B树),事务就是对这个log上的某条记录快照的更改及最终应用在log上。

那什么是流呢?流是一系列变化数据的无穷集合,流犹如一条河流,生生不息。也就是只增不减的log

而流和表的联系就在于这个log了。

  • 从一张表中生成流:将这张表的变更过程一条条记录下来,就变成了流
  • 从流中形成一张表:不断执行流中的一系列事务更改日志的生成的结果就是一张表了。

对这个概念的通俗理解就是Oracle里的物化视图。一张物化视图就是将一系列原始表的变更日志应用在原始表上的结果表。

所以我们可以这么理解:

  • Stream -> Table 一系列Stream中的变化累积成了一张Table
  • Table -> Stream Table随着时间的的变化被记录到Stream中

上述的思想在 Kafka 得到了验证,并以此衍生出了 Kafka SQL。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档