四海内皆兄弟

从一个段子说起

    前几天遇到一位做数据库投资的朋友,他和我聊完之后说了一句,概况说我是HTAP的坚定支持者。我说其实这是经历过太多以后发现,这个代价最小,稳定程度最高。我这里并不否认依然会有些问题,也存在不稳定的场景。但是各方面综合来说是目前最优,性价比最高。为什么这么说?来看这个段子。

Image

    可以这样算吗?可以,但是没有必要。

    有人可以考清华,但是不去,随便找一个普通大学上学可以吗?可以,但是没有必要。

    一天如果订单1万条左右量级,计算一下可以用etl再到hadoop,再经过所谓清洗加工,再加载impala,最后sum吗?可以,但是没有必要。

    目前哪个关系数据库如果sum几万都算不出来来,那还是别用了。

    以上图就是简单问题复杂化。结果还是好的,算对了,有没有可能中间哪步算错了?非常有可能。回到我们说的ETL拿数据可能多拿,少拿吗?非常有可能。因为除非每次全量,否则基于时间戳必然会发生。而每次全量必然就是离线,想实时不可能。即使再规范操作,每次必有时间戳。(理论上行,实际上如果规范能到位,我根本不用做优化。参考我的数据库设计开发规范,都没有问题了。但是估计是臣妾做不到。)

    我当时给这位朋友说了一句,以上我退一万步说都行。我再问你一个问题,如果上游删除一条数据你怎么办?这位朋友也是技术出身,他说那etl不行了,要用CDC技术。没错。比如ogg flinkcdc。但是这些通常是一个人去搞定的吗?基本不现实。以OGG举例。

Image

    虽然他就是一个管道,承接上下游。问题是对接上下游,是不是对上下游都要精通才能对接呀?如果上下游的数据源种类很多,那比如要求技能多种多样。所以这是一个团队的事情。说到这里他说是的。他见过有一些公司在搞cdc,投入了不少人。

那么我说到所有CDC都怕大事务,你觉得开发靠谱吗?一个巨大的事务就卡主了。

    我再退一万步说以上有理想化解决了。那么DDL呢?总之吧,我觉得越说问题越多。但是不管怎么说CDC和ETL相比较来说我还是觉得CDC代价小,毕竟数据不准等于没法用。何况大部分公司来说,我就不相信对于报表场景很难,哪个数据库处理不了当天,当月的报表。

   简单问题复杂化,可以吗?可以,但是没有必要。

Image