首页 > 数据库 > 国内数据库 > 基于 Databend 的实时数据汇聚平台建设

本方案中基于 Databend 实现一个数据快速汇聚及实时去重,实现一份数据多种工作负载,把原来数据共享的推模式变成:增量订阅模式 + 抽取推送两种模式。从而让有后台开发经验或会 SQL 的人,也可以在 Databend 上实现海量数据平台的建设。
实时数据汇聚平台通常用于实时收集、整合和处理多个数据源的数据。 主要应用于:主数据平台建设,省级数据交易所基础数据汇聚等。在该平台建设中我们借助于 Databend 实现数据的高速摄入,治理,查询及对外服务等。
Databend 基于对象存储和 k8s 架构下开发的云原生数据平台,该产品使用 Rust 开发,注重平台的性能和安全性,以 SQL 为交互语言,支持海量存储和计算的数据平台。

在数据汇聚平台中需要考虑每个系统的边界,如何切分功能:如何保证数据异常的情况下实现数据的一致性; 如何做到各个组件的高可用实现等等问题。
在基于 Databend 的数据汇聚平台,数据汇聚通常以 S3 作为中转,接收到的数据以 json 格式写入到 S3 中,Databend 支持面向 S3 的数据加载,在 Databend 中将 ETL 变成了 ELT。 另外一种边界是前端的数据摄入工具把数据写入 Kafka 中,Databend 从 Kafka 中获取订阅的数据。
下面部分把数据汇聚平台的一些工作细化一下,供各位参考。
在数据汇聚平台,数据接入可以分为两类:从数据接入网关到 Databend 和 从 Kafka 中到 Databend 两种形式。 数据接入网关是一种海量的模式,可以应付每秒近千万的数据写入,从 kafka 到 Databend 可以用于每秒在百万以内的数据数据量接入。 其实两者有相通之处,可以共同切换,需要在实际落地中评估一下成本。
数据平台通常需要面对海量的数据汇聚,可能同时需要上百张表或是上千张表的数据接入任务。整体架构如下:

create stage mystage 's3://databend_upload' connection=( endpoint_url='https://url', region='us-east-01', access_key_id='', secret_access_key='' );
copy into T from @mystage/20250310/ pattern='.*[.]parquet' file_format=(type=parquet) purge=true;
虽然 Databend 的 copy into 语句支持数据转换处理,但一般建议保留原始格式,不建议在此处进行转换。
该方式数据加载可以做到每秒 500 万-2000 万之间,随着集群的 CPU core 增加可以做到性能的提升。
更多内容参考下面文档 https://docs.databend.com/sql/sql-commands/dml/dml-copy-into-table

可以基于 bend-kafka-ingest 直接摄取 Kafka 中的数据, 该方式只支持 Kafka 中为 json 格式的消息体。
Databend 的 Stream 功能能够捕获表的插入、更新和删除增量,常用于实时数据流处理及分析场景。基于 Stream,用户可以轻松获取每个表的增量数据,实现流式计算分析。结合 Task 和 Stream,用户不仅能够优化数据分析性能,同时提高资源利用率。

在 Databend 中,Stream 是对表更改的动态和实时表示。Stream 被创建以捕获和跟踪对关联表的修改,允许在数据更改发生时持续消费和分析数据变化。 Databend Cloud 上这个实际案例:更多用于推荐系统,利用 Stream 获取增量的数据,然后调用 Remote-UDF-Server Pool 中的相应函数,产生推荐使用的一些数据。
Databend Stream 是基于 Databend Fuse engine 的 Time Travel 特性构建,不需要额外的空间开销。
在 Databend 可以把数据先加载到 ODS 表,然后对 ODS 的增量做去重后合并到目标表。
MERGE INTO target_dwd a using ( select * from source_ods_stream qualify row_number() over(partition by pk order by add_time desc)=1) b on a.pk = b.pk and ... when matched and b.action='update' then update ... when matched and b.action='delete' then delete when not matched then insert ...
通过整合 merge into 结合窗口去重针对指定的冲突键的情况下实现数据的近实时合并。
该过程是 merge into + stream 相当于传统大数据架构中的 kafka + flink 的区间去重。 但在这个过程中可以在 Databend 中直接使用 SQL 完成,大大减化了开发。
在 Databend 中一个表可以支持 N 个( N 没有限制)Stream 可以用于订阅数据的变化,也可以把 Databend 当成一个 Kafka 使用, 而且更方便做数据核对。
在 Databend 中,Stream 可以以两种模式运行:
Databend 中支持基于 Stream 的增量数据抽取。
select * from source_ods_stream01 with consume;
该 SQL 执行后,对应的 Stream 会指向后续的数据增量。
另一种数据抽取建议基于时间或是指定的条件去通过 SQL 直接获取,这块需要用户控制 SQL 的 GAP 防止抽取中出现空洞出现丢数据的问题。
在 Databend 因为是存储分离架构,数据和计算分离,Databend 在对象存上也持久化了每个表对应的源数据,这样可以让该表非常容易被平台中其它租户或是用户使用,从而减少了数据搬家的开销。

对应的 SQL 语句:
attach table attch_t01 's3://bucketname/db_id/table_id/ ' connection=( endpoint_url='https://url', region='us-east-01', access_key_id='', secret_access_key='' );
Databend 通过存算分离的架构,支持一份数据全局使用,可以动态注册到不同的租户|用户中,节省数据迁移同步开销。一份数据多处使用。 基于 Databend 的 system.tables 可以非常方便的构建一个简易的数据集市。
在 Databend 可以实现一份数据被多个不同工作负载的集群使用,对于计算层也可以有针性地去调优及配置资源。


在实际业务中,许多项目需要面对高并发的需求。以上面的架构为例,当服务集群需要支持 2000 个并发请求,单集群又无法满足该并发能力时,可以采用“单业务多集群”模式进行扩展。例如,用户可以通过扩展多个同等规格的 Warehouse 来提升并发能力。在这种模式下,系统能够根据实际业务需求动态扩展资源。当业务量增加时自动扩展,当业务量下降时动态收缩。这种动态调整的过程对业务几乎没有感知,保证了系统的高效性与稳定性。
Databend 基于 Role 的 RBAC 权限控制和基于 User 的权限制控制两种模式,对于大型项目平台,建议使用 RBAC 方式的权限控制。

Databend 是一个存储分离架构,计算节点可以按业务拆分在独立的计算资上可以非常方便的实现物理的隔离及扩容。 也可以根据实际情况非常方便的对集群进行扩容。
Databend 是一个通过 SQL 进行交互的数据平台,开发人员只需掌握 SQL 即可轻松使用 Databend,在 Databend 上开发数据平台就像平常开发管理后台一样简单。
Databend 设计的一个核心旨在简化大数据基础平台,Databend 运行态只有两个进程:
基本是进程替换,重启即可
基本是进程替换,重启即可
进程名 + 指定一个配置文件直接启动
数据本身:可以借助对象存储实现数据跨 IDC 复制;
databend-query: 无状态 databend-meta: 内置高可用部署,建议3-5个节点即可。
Databend 是一个类似于 Snowflake 架构的存算分离的云原生数据平台,在国内落地中帮着用户节省大量的数据基础架构投入,大大简化了。 目前在国内已经替换过 CDP, Greenplum, 多种大数据平台。
大数据交易所原来使用传统大数据 Hadoop( HDFS, Hive, HBase ), Spark, S3, OLAP 产品等,构建了一个多产品解决方案。基础架构部分设计到的维护到的组件: HDFS, Hadoop Common, Hadoop Yarn, Hadoop MR, Hive. HBase, Yarn, Spark, Zookeeper, Kafka, Apache Ranger, OLAP 产品,每个产品可能又包含 3-5 个组件,平台复杂非常高。 平台挑战:
从传统大数据到 Databend 后的收益

基于 Databend 构建的湖建的湖仓方案,实现了 Databend 统一SQL入口,实现了:
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
👨💻 Databend Cloud: databend.cn
📖 Databend 文档: docs.databend.cn
💻 Wechat:Databend
✨ GitHub: github.com/databendlab…
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70042558/viewspace-3095628/ ,如需转载,请注明出处,否则将追究法律责任。