后端数据归档
后端团队往往采用关系性数据库如 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 元
参考文档