后端数据归档

后端团队往往采用关系性数据库如 MySQL 存储业务数据,当数据量过大时往往有如下解决方案:

  • 分库分表
  • 分布式数据库。如 oceanbase、polardb
  • 更换存储产品。如 ES,将数据实时写入到 ES
  • 定时删除,只保留近 3 个月的数据。被删除的数据依靠数仓团队,数仓团队实时/离线抽取数据至数仓,MySQL 中删除的数据,在数仓有备份。

当数据量较大,且数据随着时间推移,查询频率越来越低但仍有查询需求时,后端团队将全量数据存入 MySQL 或 ES 中就需要为海量的冷数据付出和热数据一样的存储成本。因此后端团队需要一种能存储冷数据的存储产品来存储业务数据。

方案介绍

SelectDB

  • 延迟
    • mysql -> dataworks -> selectdb。T + 1 延迟
    • mysql -> dts/flink -> selectdb。秒级延迟
  • 存储
    • selectdb。数据存储在 selectdb 中。秒级查询
    • paimon。数据存储在 paimon 中,selectdb 加载外部表方式查询。paimon 需有良好的分区、bucket 设置,必要时添加 bloom filter 索引。秒级查询
    • dataworks。数据存储在 dataworks 中,selectdb 加载外部表方式查询。分钟级查询
  • 查询。归档数据和新增的热点数据如何查询。
    • 如果要一次性查询出来,需要归档数据和热点数据放一块,查询全切到 selectdb
    • 如果要分2次查询,一次查热点,一次查归档,后端将2次查询结果merge
  • 费用
    • flink。1CU/月 = 180元
    • selectdb
      • 存储资源。按量付费
      • 计算资源。
    • oss。标准存储 1T/年 = 463 元

参考文档