作者: 黄志武
大参林医药集团股份有限公司,信息中心数据库组组长,13年数据库职业从业阅历,Oracle OCM,重视Oracle、MySQL、Redis、MongoDB、Oceanbase、Tidb、Polardb-X、TDSQL、CDH、Clickhouse、Doris、Databend等多方面的关键领域技能,服务过传统通讯、电力,互联网、移动互联网等职业。
大参林医药集团股份有限公司成立于 1999 年,是我国具有影响力的药品零售连锁集团化企业。在数字化转型晋级的趋势背景下,支撑持续安稳的零售事务生态,离不开高效的信息化、数据化、智能化的技能支撑。
需求概述
大参林医药集团零售供应链数据庞大,触及大表较多,最大单表数据量达到 93 亿,历史数据存储在大数据服务 CDH 。因为技能架构晋级改造原因,该 CDH 需求下线,可是事务部门提出需求保存数据用于审计追溯。若考虑经过关系型分布式数据库进行搬迁,如 OceanBase、TiDB,关于历史数据的相关并行查询也是一种挑战;若考虑只经过 COS、OSS, S3 目标存储备份导出的文档数据文件,受限于渠道技能,无法执行数据相关查询。因为时刻急迫,急需一种投入本钱低、见效快的代替计划。
运用 CDH 的痛点
现在大数据渠道数据增长敏捷, 数据量超过 30T,机器集群硬件配置不足以承当目前的事务压力,本钱投入也越来越大。
初见 Databend
Databend 是一个开源的 Elastic 和 Workload-Aware 现代云数据仓库。运用最新的矢量化查询处理技能,能够在目标存储( S3、Azure Blob、谷歌云存储、华为云 OBS 或 MinIO )上进行超快的数据分析。
Databend 产品特色:
- 即时弹性
Databend 将存储与计算彻底别离,用户能够依据应用程序的需求轻松扩展或缩小。
- 优异的功能
Databend 利用数据级并行( Vectorized Query Execution )和指令级并行( SIMD )技能,提供功能卓越的数据分析。
- 相似 Git 的 MVCC 存储
Databend 运用快照存储数据。查询、克隆和康复表中的历史数据十分容易。
- 支撑半结构化数据
Databend 支撑吸取各种格式的半结构化数据,例如 CSV、JSON 和 Parquet,这些数据位于云端或您的本地文件系统中;Databend 还支撑半结构化数据类型:ARRAY、MAP、JSON,便于半结构化导入和操作。
- MySQL/ClickHouse 兼容
Databend 符合 ANSI SQL 并兼容 MySQL/ClickHouse 协议,能够轻松衔接现有东西( MySQL Client、ClickHouse Client、Vector、DBeaver、Jupyter、JDBC 等)。
- 运用方便
Databend 没有要构建的索引,不需求手动调整,不需求手动计算分区或分片数据,所有这些都在数据加载到表中时完成。
技能选型
Databend 是一个数据仓库渠道,相同具备相似通用的大数据渠道 CDH 的的支撑才能。在挑选数据归档计划时,分 3 个方面做了对比:
-
存储本钱:目标存储和 HDD, SSD 的本钱,其间目标存储是 HDD 的 1/10, 是 SSD 的 1/30;
-
数据搬迁本钱:数据备份文件导出后直接迁到目标存储中,能够完成无脑在 Databend 直接加载存储,经过读取备份文件的表目标信息完成创立表和加载数据;
-
相关查询才能:查询方法简略,兼容 MySQL 协议,可不用改变 Mysql 的运用习气,直接无需过多改动即可经过本来的事务 SQL 进行相关查询;
Databend计划
目前 Databend 主要用于数据归档。完成方法是将大数据渠道 CDH 导出的 Parquet 文件,经过腾讯云的文件搬迁同步东西 cos_migrate_tool 完成传输备份至腾讯云 COS,运用 Databend 的单节点布置计划把该 COS 直接加载,即可完成 COS 下文件自动识别。
- 创立 Stage
create stage if not exists mystage
url = 's3://cos存储桶/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;
-
Load stage 中的文件到 Databend
从文件中获取表结构来创立表
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);
- 查询
查询
use bi;
select * from t1 limit 10;
现在 Databend 支撑杂乱的查询语法,能够满足平常事务需求。
Databend 运用现状
目前运用Databend,对大表数据的查询加载速度提高2倍;腾讯云 COS 存储本钱相关于 CDH 本地盘及副本形式本钱下下降 15 倍左右;且功能满足日常的数据审计查询需求。
总结
采用Databend有十分不错的体验,简略易用、查询敏捷,对事务常用的历史数据查询无缝切换,极大地缩短了项目周期,提高了功率,减少了事务方的焦虑。