作者: 黄志武
某医药集团信息中心数据库组组长,13 年数据库行业从业经历,Oracle OCM,关注 Oracle、MySQL、Redis、MongoDB、Oceanbase、Tidb、Polardb-X、TDSQL、CDH、Clickhouse、Doris、Databend 等多方面的关键领域技术,服务过传统通信、电力,互联网、移动互联网等行业。
某医药集团是中国具有影响力的药品零售连锁集团化企业。在数字化转型升级的趋势背景下,支撑持续稳定的零售业务生态,离不开高效的信息化、数据化、智能化的技术支持。
需求概述
某医药集团零售供应链数据庞大,涉及大表较多,最大单表数据量达到 93 亿,历史数据存储在大数据服务 CDH 。现在大数据平台数据增长迅速, 数据量超过 30T,机器集群硬件配置不足以承担目前的业务压力,成本投入也越来越大。
由于技术架构升级改造原因,该 CDH 需要下线,但是业务部门提出需要保留数据用于审计追溯。若考虑通过关系型分布式数据库进行迁移,如 OceanBase、TiDB,对于历史数据的关联并行查询也是一种挑战;由于时间紧迫,急需一种投入成本低、见效快的替代方案。
Databend 是一款开源、易用的云数仓,面向对象存储设计,支持使用 COS 对象存储作为存储后端,并且能够提供对复杂查询的支持,完美匹配大参林的业务需求。
认识 COS 对象存储
COS 对象存储(Cloud Object Storage)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。具备稳定持久、安全可靠、简单易用、接入便捷的特点。
产品优势
-
稳定持久
提供数据跨多架构、多设备冗余存储,为用户数据提供异地容灾和资源隔离功能,实现12个9的数据可靠性和和99.995% 的可用性。
-
安全可靠
提供防盗链、数据加密、监控告警等功能综合保护数据安全。
-
成本最优
按需按量使用提供生命周期管理,支持数据定期沉降、删除等功能,进一步降低成本。
-
简单易用
提供图形化程序、命令行工具、协议工具等对存储对象进行批量操作,让使用更为简单。
-
接入便捷
提供丰富的 SDK 接入工具,简单且可靠,同时提供了线上、线下多种迁移服务,让用户的业务快速上云。
-
服务集成
提供全球加速、CDN加速、三级加速能力及提供「存储 + 处理」一体化解决方案,满足各种业务需求。
认识 Datebend 云数仓
Databend是一款使用 Rust 研发、开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓,具有即时扩缩容能力,能在数分钟内增加数百倍的算力,为企业提供了一个用于存储、管理和分析大量数据的集中式平台,从而助力企业更准确地洞察业务、制定战略。
Datebend 产品特点
-
基于共享存储的设计
Databend 支持腾讯云对象存储COS 。这种设计模式允许存储按使用量付费,具有高度的弹性。当计算节点需要扩展时,数据无需进行任何移动。
-
存储和计算分离的架构
在此架构下,计算节点可以根据需求进行动态启动。当业务处于空闲状态时,计算节点会自动进入休眠,从而有效节省资源。
-
面向对象存储的调度器设计
由于对象存储存在多种限制并且易于抖动,其并非专为数据仓库设计。因此,Databend 的调度器和优化器针对对象存储进行了大量优化。例如,调度器上的存储和计算在运行时具有双向感压特性。
-
高度的弹性伸缩性
Databend 采用 Serverless 设计,能够快速进行弹性伸缩,以适应各种业务需求和负载变化。
技术选型
Databend 是一个数据仓库平台,同样具备类似通用的大数据平台 CDH 的的支持能力。在选择数据归档方案时,分 3 个方面做了对比:
-
存储成本
主要对比了引入对象存储和使用 HDD、SSD 的成本,其中对象存储的容量成本是 HDD 的 1/10, 是 SSD 的 1/30 。而且,使用 COS 作为存储后端,无需进行硬件采购、部署和运维,可以节省运维工作和托管成本。
-
数据迁移成本
数据备份文件导出后直接迁到对象存储中,可以无脑在 Databend 进行挂载,通过读取备份文件的表对象信息完成创建表和加载数据。
-
关联查询能力
查询方式简单,兼容 MySQL 协议,可不用改变 Mysql 的使用习惯,直接无需过多改动即可通过原来的业务 SQL 进行关联查询。
Datebend 方案
Databend 目前主要服务于大参林的数据归档场景,具体的方案如下图所示:
大数据平台 CDH 的历史数据导出为 Parquet 格式文件。
通过腾讯云的文件迁移同步工具cos_migrate_tool将备份文件传输至腾讯云COS。
Databend 采用单节点部署方案,直接加载对应 COS ,自动识别 COS 下文件。
数据加载流程
要使用 Databend 进行历史数据关联查询,数据加载链路是关键。
使用 Stage 挂载备份的历史数据
Databend 支持创建外部 Stage 来关联和管理位于不同存储服务中的数据。COS 提供兼容 S3 的 API 接口,可以方便通过 S3 协议访问数据。
Databend 也支持 COS 的原生 API ,可以提供高性能和稳定的数据访问支持。
-
创建 Stage
create stage if not exists mystage
url ='s3://cos-bucket/backup/'
connection=(endpoint_url='https://cos.ap-guangzhou.myqcloud.com'
access_key_id='ACCESS_KEY_ID' secret_access_key='SECRET_ACCESS_KEY');
-
查看 Stage 中的文件
list @mystage;
加载 Stage 中数据到 Databend
Databend 支持模式推断,可以根据数据文件获取相应的表结构,从而简化建表过程。同时,Databend 也支持直接查询 Stage 中的数据文件,方便进行临时分析和数据诊断。
-
从文件中获取表结构来创建表
create table t1 as select * from @mystage/bi/t1/ (pattern=>'.*parq') limit 0;
-
加载文件往表中写入数据
copy /*+ set_var(max_threads=5) */ into t1 from @mystage/bi/t1/ pattern='.*[.]parq' file_format=(type=parquet);
查询
Databend 支持复杂的查询语法,可以满足平时业务需求。
-
简单查询 10 条数据
select * from t1 limit 10;
现状与总结
目前使用 Databend 和腾讯云 COS 技术组合后,大表数据的查询加载速度提升了2倍,满足日常的数据审计查询需求。采用 COS 作为 Databend 的存储后端相比于 CDH 本地盘和副本模式,成本降低了约15倍。
采用 Databend + COS 有非常不错的体验,简单易用、查询迅速,登录腾讯云即可使用【https://console.cloud.tencent.com/cos/dataEcology】,对业务常用的历史数据查询无缝切换,极大地缩短了项目周期,提升了效率,减少了业务方的焦虑。