查看原文
其他

精彩回顾 | Databend x Rust China Hackathon 2022

Databend Databend 2023-01-21


Rust China Hackathon 2022 现在已经步入尾声!本届Hackathon的主题为「Rust For Fun」,分为「社区组」「企业组」
Databend 作为本届 Hackathon 的协办方,赞助参与本次企业组赛道。参赛选手围绕 Databend 组件或 Databend 生态周边进行创作,共同探索云原生数仓的魅力。
最终有 2 支队伍在提交截止之前提交了项目代码,对应的改进也都已经合并到 Databend 的 Repo 中,进一步拓展和提高了 Databend 的能力。Databend 赛道黑客松评审委员会从新颖度、完成度、和实用度三个维度进行评估,最终做出如下评审结果。


评选结果

一等奖:都可以 - Native Format二等奖:我也要吃螃蟹 - databend-local


 一 等 奖 


都可以 - Native Format


队伍成员

韩杰(doki23[1])李念儒( Kikkon[2] ])李本旺(sundy-li[3] 


项目介绍

Databend[4] 是一款现代化、高性能的云原生分析型实时数据仓库。使用 Apache Arrow 进行向量化计算,利用 Apache Parquet 作为底层存储格式。
尽管 Databend 已经具备了卓越的性能,但数据从  Parquet 转换成 Arrow 仍然会消耗大量的 CPU 在 memcopy 上。是否能够找到一种与 Arrow 无缝对接的存储格式,干掉中间 decode 的开销,直接将原始的字节流拷贝到 Arrow 的缓冲区中,一步到位?

最终,Native Format 为 Databend 集成 strawboat[5] (一个无缝对接 Apache/Arrow 的高性能存储格式)作为 Fuse Engine 中的原生存储格式,大幅提高了 Databend 的 I/O 性能。

create table tmp (a int) ENGINE=FUSE STORAGE_FORMAT='native';


各项得分

评委点评

对 databend 单机查询性能提升非常可观,项目完成度高,可作为产品级特性开启。是非常不错且新颖的尝试。期待后续能够覆盖 Databend 支持的全部数据类型,进行更多场景下的 benchmark,以获得更全面的对比。


项目链接

PR: https://github.com/datafuselabs/databend/pull/9279https://github.com/doki23/RustHackathon2022



 二 等 奖 


我也要吃螃蟹 - databend-local


队伍成员

曹东瑜(eastfisher[6]


项目介绍

使用 SQL 语言分析本地数据文件是一个非常常见的场景。传统的一些基于 Python 的 SQL 查询工具性能较差,对大型数据文件、复杂 SQL 显得力不从心。
Databend  作为新一代云原生数据仓库,在查询性能、运维复杂度方面有着较大优势。然而,要使用 Databend 必须先搭建一套 Databend  集群(或者使用 Databend Cloud),然后用 Client 连接到集群进行查询,“杀鸡焉用牛刀”。

databend-local 参考  clickhouse-local[7] 的实现逻辑,设计了一个精简的 local 处理流程,最终提供一个无需启动集群即可畅享查询的命令行工具。

export CONFIG_FILE=tests/local/config/databend-local.toml
databend-local --sql="SELECT * FROM tbl1" --table=tbl1=/path/to/databend/docs/public/data/books.parquet


各项得分

评委点评

databend-local 可以帮助我们快速的基于命令行处理简单的格式化数据,是非常实用的一个功能,可以看作是 serverless 的一种体现。拓展了 databend 的应用场景,但是接口的易用性还有待提高。


项目链接

PR: https://github.com/datafuselabs/databend/pull/9282

https://github.com/datafuselabs/hackathon2022/tree/main/databend-local


快问快答


在快问快答环节,我们邀请到「我也要吃螃蟹」队的 eastfisher 分享他在参与黑客松过程中的一些体会。

Q1 为什么选择 Databend 赛道,你对 Databend 的理解和评价?

eastfisher: 新一代云原生数仓,技术架构、开发语言、社区都比较喜欢。

Q2 为什么会选择这样一个题目参赛?最开始在设计上是怎么考虑的?

eastfisher: 工作中有用到 arrow-datafusion 查询本地 CSV 文件进行数据分析,非常方便。正好之前也有参与过 Databend 的功能点开发,就选择了这个题目。设计上大部分参考了 databend-query 的主流程,初始化过程做了一些精简。

Q3 在具体设计和实现的过程中,你碰到最大的难点或挑战是什么?

eastfisher: 对 Rust 和 Databend 不够熟悉,只实现了最基本的 local cmd 功能。

Q4 在最终提交的设计上,你做过怎样的权衡?你的设计最大的亮点是什么?

eastfisher: 将 databend-query 的 GlobalInstance 初始化和 SQL 查询流程剥离出来放到 local cmd 中,减少代码耦合。

Q5 参与此次 Rust 中文社区黑客松 - Databend 赛道的活动,你有哪些收获或者感受?

eastfisher: 对 Databend 的架构有了更深入的理解,并且做出了可用的,能解决实际问题的 cli app ,对入门选手来说有比较高的成就感。Databend 社区的技术大佬们也非常友好,对 PR 给出了很多反馈意见。今后也会持续参与 Databend 项目,和 Databend 一起进步。


本次完赛的两支队伍,其成员均参与过 Databend 功能点的开发和优化,非常感谢他们的长期陪伴与支持!
后续我们也会择期组织黑客松线上分享活动,为大家带来参赛项目设计与实现的更多细节,敬请期待!


引用链接

[1] doki23: https://github.com/doki23
[2] Kikkon: https://github.com/kikkon
[3] sundy-li: https://github.com/sundy-li
[4] Databend: https://github.com/datafuselabs/databend
[5] strawboat: https://github.com/sundy-li/strawboat
[6] eastfisher: https://github.com/eastfisher
[7] clickhouse-local: https://clickhouse.com/docs/en/operations/utilities/clickhouse-local/


关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
  • Databend Website :https://databend.rs/
  • Weekly :https://weekly.databend.rs/
  • GitHub Discussions :https://github.com/datafuselabs/databend/discussions
  • Twitter :https://twitter.com/Datafuse_Labs
  • Slack Channel :https://link.databend.rs/join-slack


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存