设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 公司 数据
当前位置: 首页 > 大数据 > 正文

10亿+ 秒 看阿里如何达成实时数仓高吞吐实时写入与更新

发布时间:2022-09-01 10:55 所属栏目:125 来源:互联网
导读:数据实时入仓所面临的挑战:高性能、可更新、大规模 大数据场景下,实时数据如何写入实时数仓永远是一个比较大的话题,根据业务场景需求,常见的写入类型有: Append only:传统日志类数据(日志、埋点等)中,记录(Record)和记录之间没有关联性,因此新来
  数据实时入仓所面临的挑战:高性能、可更新、大规模
  大数据场景下,实时数据如何写入实时数仓永远是一个比较大的话题,根据业务场景需求,常见的写入类型有:
 
  Append only:传统日志类数据(日志、埋点等)中,记录(Record)和记录之间没有关联性,因此新来的记录只需要append到系统中就好了。这是传统大数据系统最擅长的一种类型。
  Insert or Replace:根据设置的主键(Primary Key, PK)进行检查,如果系统中不存在此PK,就把这行记录append进系统; 如果存在,就把系统中旧的记录用新的记录整行覆盖。典型的使用场景有:
  上游数据库通过Binlog实时同步,这种写入就是Insert or Replace。
 
  Flink的结果实时写出。Flink持续刷新结果,需要Insert or Replace的写目标表。
 
  Lambda架构下的离线回刷。Lambda架构下离线链路T+1回刷实时结果表中昨天的记录。

  而要保持非常高效的写入性能,实时数仓技术都面临着非常大的挑战,典型的挑战有以下几个方面:
 
  挑战一:Merge on Read还是Merge on Write?
  Upsert模式下,新旧数据的合并发生在什么时候,如果希望查询性能好,那么肯定希望合并发生在写入时(Merge on Write)。这样,在系统中任何时刻任一主键都只有一条记录;而如果希望写入性能好,那么就是写入不做合并,查询时再做合并(Merge on Read)。这对于查询是非常不友好的,极大限制查询性能。

  挑战二:是否支持主键(Primary Key)模型?
  实时数仓在数据模型上是不是支持主键对于Upsert的实时写入是至关重要的。如果没有主键,在写入侧数据的更新就很容易退化成全表更新,性能非常差,在查询侧,Merge On Read也无从做起。
 
  挑战三:如何支持超大的数据量和超高的RPS实时写入(每秒记录数,Record Per Second)?
  如果数据量小,写入RPS要求低,一个传统的数据库就能很好的解决这个问题。但是在大数据场景下,当RPS达到几十万几百万时,如何更好支持数据的实时写入?同时,如果目标表中已经有海量数量(十亿、百亿甚至更多)时,Upsert要求访问和订正已有数据,这时是否还能支持高性能的Upsert?

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读