Databend 社区积极拥抱 Rust 生态(202111回顾)
Databend 旨在成为一个 开源、弹性、可靠 的无服务器数仓,查询快如闪电,与 弹性、简单、低成本 的云服务有机结合。数据云的构建,从未如此简单!
Databend 对 Rust 社区的意义
Databend 的团队成员大多有丰富的数据库/数据平台开发及开源协作经验。我们选用 Rust 来开发高性能、高可靠的下一代数据云服务。
- 打造 Rust 数仓领域的头号种子选手,展示 Rust 的魅力,推动 Rust 在数据库领域的进一步应用。
- 持续推动 Rust 在数据治理/数据库/云原生等领域的发力,改善生态和工具。
- 为广大 Rustacean 提供更多学习/练手/就业机会,也为社区培养一批数据库开发能手。
Databend 和 Rust 生态的紧密联系
从 Databend 社区建立的第一天起,我们就抱有“从社区中来,到社区中去”的信念,积极拥抱开源和 Rust 生态。
课程
自 8 月起,Databend 和 Rust 中文社区、知数堂一道,启动了面向 Rustacean 和数据库开发人员的公开课计划。
Rust 培养提高计划
- 认识面向基础架构语言 Rust :https://www.bilibili.com/video/BV1mg411778g
- 理解 Rust 的所有权 :https://www.bilibili.com/video/BV1264y1i7U9
- 通过实战理解 Rust 宏 | 90 分钟让你深入理解 Rust 宏:https://www.bilibili.com/video/BV1Yb4y1U7r1
- 通过 Datafuse 理解全链路跟踪:https://www.bilibili.com/video/BV1YA411c7ia
- Rust 异步编程入门 - Futures:https://www.bilibili.com/video/BV1mf4y1N7MJ
- Tokio 入门之运行时介绍:https://www.bilibili.com/video/BV1oy4y1G7jC
- 深入了解 Rust 闭包:https://www.bilibili.com/video/BV1Zf4y1J7jq
- 利用 Tokio 实现一个高性能 Mini Http Server:https://www.bilibili.com/video/BV143411q79B
- 基于 Axum-web 和 MySQL 开发短链服务:https://www.bilibili.com/video/BV143411q79B
- 使用 Redis 给短链服务加速:https://www.bilibili.com/video/BV1iQ4y1B7qX
- 使用 Rust 开发动态链接库并在 Golang 中使用:https://www.bilibili.com/video/BV1WT4y1o72d
- 初探 Rust 微服务架构:https://www.bilibili.com/video/BV1jL4y1B7rK
- 探讨 Rust 异步编程框架 Mio:https://www.bilibili.com/video/BV1P3411k7tL
Databend 专栏
- 新一代云原生数仓 Databend 架构及现状:https://www.bilibili.com/video/BV1dh411b7Vv
- Databend 产品如何做测试品控:https://www.bilibili.com/video/BV1CL411G7TW
Databend 对 Rust 上游贡献
Databend 的成功离不开 Rust 生态的繁荣和高质量的上游项目,Databend 社区也会不定期向上游提供补丁,为共筑更好的 Rust 生态而努力。
- advisory-db - 为发布在 crates.io 的 Rust crate 制作的安全咨询数据库
- 为 RUSTSEC-2020-0009 添加 flatbuffers 补丁版本
- arrow-rs & arrow-flight & parquet - Apache Arrow / Parquet 的官方 Rust 实现,Databend 早期的重要依赖
- 为 sort 添加 limit 选项
- 受 RUSTSEC-2020-0009 影响,更新 flatbuffers 到最新版本
- prettytable-rs 处于未维护状态,替换为 comfy-table
- 更新 prost 到 0.8 ,以及相应的 tonic 更新
- 更新 prost 到 0.9 ,以及相应的 tonic 更新,修复 error
- arrow2 & arrow-format & parquet2 - 使用 transmute-free 操作重写的 Arrow 和最快也最安全(unsafe free)的 Parquet 实现
- 为 merge sort 添加 limit 选项
- 改进 sort
- 添加 wrapping_cast 提高 cast 性能
- 添加对 BinaryArray 的计算支持
- prettytable-rs 处于未维护状态,替换为 comfy-table
- 更新 prost 到 0.8 ,以及相应的 tonic 更新
- 更新 prost 到 0.9 ,以及相应的 tonic 更新,修复 error 及 clippy lints
- async-raft - 基于 tokio 的异步 raft 共识算法实现
- 修复:重启时 NonVoter 应该保持其身份而不是转为 Follower
- 一系列额外的修复,列在 https://github.com/async-raft/async-raft/issues/132#issuecomment-915853535
- 由于 async-raft 原库的维护状态并不好,特别维护 datafuse-extras/async-raft
- cargo-license - 用于查看依赖所采用许可协议的实用工具
- 更新依赖以避免冲突,修复 clippy lints
- clickhouse-srv - 用于编写可以充当 ClickHouse 服务器的绑定
- 该项目由 Databend 团队成员开发并维护。
- 目前已经合并到 Databend 项目,位于 common/clickhouse-srv
- float-cmp - 浮点数近似比较
- 指定 num-traits 的最小版本,并修复 clippy lints,以帮助上游依赖通过 minver test
- hashbrown - 高性能 HashMap ,目前也是标准库的一部分
- 更新 rand 到 0.8.3
- lru-rs - Lru Cache 实现
- 更新 hashbrown 到 0.11.2 ,修复 clippy lints
- mockall - 用于方便编写测试的实用库
- 更新受 RUSTSEC-2020-0095 影响的依赖
- msql-srv - 用于编写可以充当 MySQL / MariaDB 服务器的绑定
- 修复 COM_FIELD_LIST 的相应
- 同步依赖到最新版本,修复测试中的依赖
- 增加基本的 AuthPlugin 支持
- 查询进度信息统计
- 部分补丁正在试图合并到上游,目前可以先在 datafuse-extras/msql-srv 试用
- pprof - CPU / 应用程式性能测试工具
- 更新 prost 到 0.8 ,以及相应的 tonic 更新
- 更新 prost 到 0.9 ,以及相应的 tonic 更新,修复 clippy lints
- ritelinked - 快速 & 好用的 LinkedHashMap & LinkedHashSet 实现
- 该项目由 Databend 团队成员开发并维护。
- 目前位于 ritelabs/ritelinked
- sqlparser-rs - 可拓展的 SQL 词法分析器和语法解析器
- 使用返回 error 替代 panic
- 添加基于 honggfuzz 的模糊测试工具
- 支持 tinyint
- datafuse-extras/sqlparser-rs 目前包含一些 Databend 定制的特性
- 支持 INSERT FORMAT
- 支持 cast(a, b)
- 使函数支持参数
- 支持 substring(string, start, length) 语法
- structopt-toml - structopt 的 TOML 默认值加载工具
- failure 处于未维护状态,替换为 anyhow
Databend 的社区建设计划
Databend 社区是由每一个关注者、开发者、使用者共同建设的平台,在未来我们也会持续完善回馈机制,帮助每个社区成员能够在社区建设过程中获得成长与进步。
- 建立和健全开发者成长体系,为 Rustacean 提供学习、实践、创新的平台
- 持续输出高质量 Rust + 数据库 课程,邀请行业专家分享开发实践经验,宣传 Databend 生态中的优质项目
- 为重要的上下游项目和优质开发者提供赞助、培训等机会,以鼓励其在开源和生态中的贡献
Databend 名字渊源于相对论。由于物质的存在,时间和空间会发生弯曲,这就是相对论的 Time Bend 。我们期望 Databend 的出现可以让用户重新审视数据,从而挖掘数据中存在的更大价值, 同时让用户大数据这个领域中:Make life easier 。
欢迎加入 Databend 社区,与我们一道,用 Rust 构建下一代的数据云服务。
如果想了解更多,可以关注公众号: Databend
Databend 社区积极拥抱 Rust 生态(202111回顾)的更多相关文章
- 合肥.NET技术社区首次线下聚会全程回顾【多图】
2019年3月16日对于合肥.NET来说是一个特别的日子,因为这是合肥.NET技术社区首次非正式线下聚会!这次聚会受场地限制(毕竟是聚餐的形式),即使换成了小椅子后,最多也只能容纳24个人,所以还有一 ...
- .NET西安社区「拥抱开源,又见 .NET:壹周年Party」活动简报
「拥抱开源,又见 .NET」:壹周年Party .NET西安社区一岁啦!!!!7月21日,伴随着「拥抱开源,又见 .NET」系列最后一次线下分享活动暨一周年Party圆满结束, .NET西安社区一岁 ...
- Rust这种新型的语言注定火不起来,功能太强大(特性太多),还不如用成熟稳定强大的C/C++,而且生态不行、所以恶性循环
这种新型的语言注定火不起来,功能太强大(特性太多),还不如用成熟稳定强大的C/C++,,而Golang足够简单,入门快,编译快,性能也强悍,解决了服务端开发人员的痛点,,注定被大多数人接受... go ...
- 从拥抱开源到回馈开源,灵雀云助力CNCF中国区培训业务
6月27日,全球首屈一指的开源盛会 2018 LinuxCon + ContainerCon + CloudOpen China (LC3)在中国北京国家会议中心落下帷幕.二度落地中国的LC3大会热度 ...
- [5.19 线下活动]Docker Meetup杭州站—拥抱Kubernetes,容器深度实践
对本次线下活动感兴趣的朋友,欢迎点击此处报名,领取免费票. 今年3月,Docker刚刚过完5岁生日,五年期间,Docker也逐渐在技术和实践方面趋于成熟,更是在去年年底主动拥抱Kubernetes. ...
- 5分钟APIG实战: 使用Rust语言快速构建API能力开放
序言:Rust语言简介 参与过C/C++大型项目的同学可能都经历过因为Null Pointer.Memory Leak等问题“被” 加班了不知道多少个晚上.别沮丧,你不是一个人,Mozilla Fir ...
- 从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路
2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台.该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部 ...
- 探讨 Rust 智能指针 | Vol.17
分享主题:<探讨 Rust 智能指针>| Vol. 17 分享讲师:苏林 分享时间: 周日晚上 2021-11-14 20:30-21:30 腾讯会议地址: https://meeting ...
- SphereEx 登陆 ApacheCon Asia|依托 ShardingSphere 可插拔架构体系打造数据应用完整生态
2021 年 8 月 8 日,ApacheCon 首次亚洲大会于线上正式闭幕.作为久负盛名的开源盛宴,本届 ApacheCon Asia 受到了海内外众多开源领域人士的关注. 作为 Apache 软件 ...
随机推荐
- 如何用redis统计海量UV?
前言 我们先思考一个常见的业务问题:如果你负责开发维护一个大型的网站,有一天老板找产品经理要网站每个网页每天的 UV 数据,然后让你来开发这个统计模块,你会如何实现? 统计uv的常用方法以及优缺点 其 ...
- CF739E Gosha is hunting(费用流/凸优化dp)
纪念合格考爆炸. 其实这个题之前就写过博客了,qwq但是不小心弄丢了,所以今天来补一下. 首先,一看到球的个数的限制,不难相当用网络流的流量来限制每个球使用的数量. 由于涉及到最大化期望,所以要使用最 ...
- 用 @Value("${xxxx}")注解从配置文件读取值的用法
1. 用法: 从配置properties文件中读取init.password 的值. @Value("${init.password}") private String init ...
- [源码解析] Pytorch 如何实现后向传播 (1)---- 调用引擎
[源码解析] Pytorch 如何实现后向传播 (1)---- 调用引擎 目录 [源码解析] Pytorch 如何实现后向传播 (1)---- 调用引擎 0x00 摘要 0x01 前文回顾 1.1 训 ...
- 万里阳光号Srcum Metting博客汇总
Srcum Meeting 一.Alpha阶段 第一次Scrum Meeting 第二次Scrum Meeting 第三次Scrum Meeting 第四次Scrum Meeting 第五次Scrum ...
- 问题:两个对象值相同(x.equals(y) == true),但是可能存在hashCode不同吗?
面试官的考察点 这道题仍然是考察JVM层面的基本知识,面试官认为,基本功扎实,才能写出健壮性和稳定性很高的代码. 涉及到的技术知识 (x.equals(y)==true),这段代码,看起来非常简单,但 ...
- 热身训练1 Game
http://acm.hdu.edu.cn/showproblem.php?pid=5242 简要题意: 一棵树有n个节点,每个节点x有一个权值wi,我们要从根节点出发(不可回头),去收集每个节点的权 ...
- 嵌入式单片机之STM32F103C8T6最小系统板电路设计参考
STM32F103C8T6最小系统板电路设计 一.电源部分 设计了一个XH插座,以便使用3.7V锂电池供电,接入电压不允许超过6V. 二.指示灯部分 电源指示灯可以通过一个短路帽控制亮灭,以达到节电的 ...
- Java并发:ReadWriteLock 读写锁
读写锁在同一时刻可以允许多个线程访问,但是在写线程访问,所有的读线程和其他写线程均被阻塞. 读写锁不像 ReentrantLock 那些排它锁只允许在同一时刻只允许一个线程进行访问,读写锁可以允许多个 ...
- 如何优雅的处理 accept 出现 EMFILE 的问题
通常情况下,服务端调用 accept 函数会返回一个新的文件描述符,用于和客户端之间的数据传输 在服务器的开发中,有时会遇到这种情况:当调用 accept 函数接受客户端连接,函数返回失败,对应的错误 ...