Databend v0.8 发布,基于 Rust 开发的现代化云数据仓库


Databend v0.8 发布了,Databend 是一个基于 Rust 开发的现代化云数据仓库,致力于实现高性能可弹性扩展的实时数据分析,激活用户的数据潜能。

发布公告称,Databend v0.8 的开发于 3 月 28 号开始,总计 5000+ commits,4600+ 文件变更。在过去的 5 个月中,社区的 120 余位贡献者新增了 42W 行代码,删除了 16W 行,相当于把 Databend 重写了一遍。在该版本中,社区对 SQL Planner 框架做出了重大改进,并将所有的 SQL 语句都迁移到了新的 Planner 上,提供了完整的 JOIN 和子查询支持。

下载地址:https://github.com/datafuselabs/databend/releases/tag/v0.8.0-nightly

重大改进

  • New Planner: JOIN! JOIN! JOIN!

为了更好的支持复杂的 SQL 查询和提升用户体验,Databend v0.8 设计了全新的 Planner 框架。

在 New Planner 的驱动下,Databend 增加了 JOIN 和高效的子查询支持,所有的子查询在进入 runtime 之前已经完全被 decorrelation:

select vip_info.Client_ID, vip_info.Region 
from vip_info right 
join purchase_records 
on vip_info.Client_ID = purchase_records.Client_ID;
  • New Parser: 最好用的 Parser!

在重构 Planner 的同时,Databend 社区基于 nom(https://github.com/Geal/nom)和 partt 实现了兼顾开发效率与用户体验的全新 Parser。

新的 Parser 让开发者以直观的方式轻松的设计/开发/测试复杂的 SQL 语法

COPY
~ INTO ~ #copy_unit
~ FROM ~ #copy_unit
~ ( FILES ~ "=" ~ "(" ~ #comma_separated_list0(literal_string) ~ ")")?
~ ( PATTERN ~ "=" ~ #literal_string)?
~ ( FILE_FORMAT ~ "=" ~ #options)?
~ ( VALIDATION_MODE ~ "=" ~ #literal_string)?
~ ( SIZE_LIMIT ~ "=" ~ #literal_u64)?

同时能给予用户具体而精准的报错信息:

MySQL [(none)]> select number from numbers(10) as t inner join numbers(30) as t1 using(number);
ERROR 1105 (HY000): Code: 1065, displayText = error:
--> SQL:1:8
|
1 | select number from numbers(10) as t inner join numbers(30) as t1 using(number)
|^^^^^^ column reference is ambiguous

再也不用担心不知道 SQL 哪里出错了。

访问 The New Databend SQL Planner:https://databend.rs/blog/new-planner 以了解更多细节

全新特性

除了全新设计的 Planner 之外,Databend 社区还实现了众多新功能:

COPY 增强:

COPY 能力得到了极大强化,现在的 Databend 可以

  • 从任意支持的存储服务复制数据 (甚至是 https!)

COPY 
INTO ontime200 
FROM 'https://repo.databend.rs/dataset/stateful/ontime_2006_[200-300].csv' 
FILE_FORMAT = (TYPE = 'CSV')
  • 支持复制压缩文件

COPY 
INTO ontime200 
FROM 's3://bucket/dataset/stateful/ontime.csv.gz' 
FILE_FORMAT = (TYPE = 'CSV' COMPRESSION=AUTO)
  • UNLOAD 数据到任意支持的存储服务

COPY 
INTO 'azblob://bucket/'
FROM ontime200
FILE_FORMAT = (TYPE = 'PARQUET‘)

Hive 支持:

Databend v0.8 设计并开发了 Multi Catalog 并在此基础上实现了 Hive Metastore 的支持!

现在 Databend 能够直接对接 Hive 并从 HDFS 上读取数据。

select * from hive.default.customer_p2 order by c_nation;

时间旅行:

很久之前,Databend 社区分享过底层 FUSE Engine 的实现 From Git to Fuse Engine(https://databend.rs/blog/databend-engine)。其中一个非常重要的特性就是支持时间旅行,我们能够查询任何一个时间点的数据表。

从 v0.8 版本开始,这个功能被正式实装啦,现在我们可以

  • 查询指定时间的数据表

-- Travel to the time when the last row was inserted
select * from demo at (TIMESTAMP => '2022-06-22 08:58:54.509008'::TIMESTAMP); 
+----------+
| c|
+----------+
| batch1.1 |
| batch1.2 |
| batch2.1 |
+----------+
  • 恢复误删除的数据表

DROP TABLE test;

SELECT * FROM test;
ERROR 1105 (HY000): Code: 1025, displayText = Unknown table 'test'.

-- un-drop table
UNDROP TABLE test;

-- check
SELECT * FROM test;
+------+------+
| a| b|
+------+------+
|1 | a|
+------+------+

让业务数据拥有更多保障!

CTE 支持:

CTE (Common Table Expression) 是 OLAP 业务中经常使用的功能,用来单个语句的执行范围内定义的临时结果集,只在查询期间有效,实现代码段的重复使用,提升可读性,更好的实现复杂的查询。

Databend v0.8 在 New Planner 的基础上重新实现了 CTE,现在用户可以快乐的使用 WITH 来声明 CTE:

WITH customers_in_quebec 
 AS (SELECT customername, 
city 
 FROM customers 
 WHEREprovince = 'Québec') 
SELECT customername 
FROM customers_in_quebec
WHEREcity = 'Montréal' 
ORDERBY customername; 

除了上述提到的这些功能,Databend v0.8 还支持了 UDFs,增加了 DELETE 语句,进一步强化了半结构化数据类型的支持,更不必说大量的 SQL 语句改进和新方法的加入。

质量提升

功能实现只不过是产品交付的第一环。在 Databend v0.8,社区引入了工程质量的概念,从用户,贡献者,社区三个维度来评估 Databend 的开发质量。

让用户放心:

为了让用户能够放心地使用 Databend,社区在过去的三个月中增加了大量测试,撷取了来自 YDB 等充实 stateless 测试集,增加了 ontime,hits 等数据集的 stateful 测试,上线了 SQL Logic Test 对所有的接口进行覆盖测试,启用了 SQL Fuzz 测试来覆盖边界情况。

不仅如此,社区还上线了 Databend Perf(https://perf.databend.rs/)做 Databend 在生产环境的持续性能测试,用来及时发现意外的性能回退问题。

让贡献者舒心:

Databend 是一个大型的 Rust 项目,其构建时间饱受社区诟病。

为了改进这一问题,让贡献者舒心,社区上线了高配置,专门调优的 Self-hosted Runner 来执行 PR 的集成测试,启用了 Mergify,mold,dev-tools 等多项服务或工具来优化 CI 流程。

同时还发起了 Databend 项目结构调整的新规划,将原本巨大的 query crate 拆分为多个子 crate,尽可能避免改一行代码,check 执行五分钟的情形。

让社区开心:

Databend 是开源社区的贡献者和参与者。在 v0.8 的开发过程中,Databend 社区确立了 Upstream First 的原则,积极跟进并采用最新的上游版本,反馈已知 BUG,贡献自己的 Patch,开启了 Tracking issues of upstream first violation(https://github.com/datafuselabs/databend/issues/6926)来跟进最新的动态。

Databend 社区积极探索与其他开源项目的集成,目前已经实现了 Vector,sqlalchemy,clickhouse-driver 等第三方驱动的集成和支持。

下一步计划

Databend v0.8 是一个夯实基础的版本,我们有了全新的 Planner,能够更加轻松的去实现功能和进行优化。在 0.9 版本中,我们期望改进如下方面:

  • Query Result Cache
  • JSON Optimization
  • Table Share
  • Processor Profiling
  • Resource Quota
  • Data Caching

欢迎查阅 Release proposal: Nightly v0.9(https://github.com/datafuselabs/databend/issues/7052)以了解最新动态~

现在就出发

访问发布日志和下载最新版本以了解更多,遇到问题欢迎使用 Github Issues(https://github.com/datafuselabs/databend/issues)提交反馈!

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

  • Databend 文档:https://databend.rs/
  • Twitter:https://twitter.com/Datafuse_Labs
  • Slack:https://datafusecloud.slack.com/
  • Wechat:Databend
  • GitHub :https://github.com/datafuselabs/databend

相關推薦

2023-06-09

估、优秀案例评选结果。其中 「新一代云原生数据仓库 Databend 」荣获 2023 年度云原生技术创新领航者-云原生技术创新案例。 Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓,具有即时扩缩容

2022-10-04

Neovim v0.8.0 已发布。 主要特性变化 runtime: Enable filetype.lua by default (#19216) Add undo! Add "prerelease" to version dict Click support for 'statusline', 'winbar' #18650 Add preview functionality to user commands allow Cmdheight=0 (EXPERIMENTAL) #16251

2022-09-23

Eclipse 基金会已发布 Jakarta EE 10 平台、Web Profile 和新的 Core Profile 规范。Jakarta EE 10 引入了用于构建现代化、简化和轻量级云原生 Java 应用程序的功能。据 Eclipse 基金会执行董事 Mike Milinkovich 称 这个版本是在现代微服务

2023-07-12

简介 自去年 12 月份发布 Linux Lab v1.1 后,终于迎来了 v1.2 正式版,同时也迎来了 Cloud Lab v0.9-rc2,两者需同步升级配合使用。 发布仓库 Gitee: https://gitee.com/tinylab/linux-lab Github: https://github.com/tinyclub/linux-lab 用户手册

2023-11-18

,2023 拓数派年度技术论坛在上海圆满落幕。拓数派正式发布大模型数据计算系统「πDataCS」,基于云原生技术重构数据存储和计算,重塑数仓、向量和机器学习等数据计算引擎,实现“一份数据存储,多引擎数据计算”。作为

2023-05-21

效的大型 3D 效果。 WebGPU 是由 W3C GPU for the Web 社区组所发布的规范,目标是允许网页代码以高性能且安全可靠的方式访问 GPU 功能。WebGPU 是一套为浏览器设计的图形 API 标准,为了弥合各个平台图形 API 的差异性,它对 DirectX12

2022-11-11

简介 自 6 月份发布 Linux Lab v1.0 后,终于迎来了 v1.1 正式版,同时也迎来了 Cloud Lab v0.8 正式版,两者需同步升级配合使用。 发布仓库 Gitee: https://gitee.com/tinylab/linux-lab Github: https://github.com/tinyclub/linux-lab 用户手

2022-11-14

一、关于 smart-mqtt smart-mqtt 是用 java 语言开发的 MQTT Broker 服务,也是 smartboot 组织下首款真正意义上面向物联网的解决方案。旨在帮助企业以较低的成本快速搭建稳定、可靠的物联网服务,助力万物互联互通。 二、快速启动

2022-10-15

了另一种处理多线程应用的策略。Node 的事件驱动模型与基于 Promise 的代码相结合,也可以产生简单而优雅的结果。 所有这一切都意味着 Rust 的多线程编程模型提供了比许多程序员所需的更复杂的功能。一些人可以不计较这些

2023-12-02

队很高兴地宣布 KCL v0.7.0 新版本现在已经可用!本次发布为大家带来了三方面的重点更新:语言、工具链、社区集成 & 扩展支持。 使用功能更完善错误更少的 KCL 语言、工具链和 IDE 提升代码编写体验和效率 全新的 KC

2023-02-17

JFrog 最新发布了首份年度 Software Artifact State of the Union 报告,基于来自全球 7000+ 不同规模企业的数据;揭露了当今企业开发人员在将软件从设计到生产过程中最常用的软件包和二进制文件。报告评估的 Top 10 顶级软件技术(2021

2022-09-20

宣布将用 Rust 编写的插件作为其官方二进制版本的一部分发布。“经过整整一个月非常恼人的构建系统工作,我们终于可以将用 rustlang 编写的 gstreamer 插件与我们的官方二进制版本一起发布了。” 科技网站 Phoronix 指出

2022-11-30

一样, Snal Linux 只支持 x86_64 架构。 目前 Snal Linux 发布了 1.24 版本,Snal Linux 1.24 带来了一些新特性,包括一些用 Rust 编写的命令: bat 被添加为 cat 的现代替代品 bottom 被添加为 top 的现代替代品。 exa 作为 ls 的现代

2022-07-31

MrDoc v0.8.1 已经发布,基于 Python 的在线文档系统。 此版本更新内容包括: [修复]某些情况下上传图片重复覆盖的问题; [优化]更新搜索主页底部版权信息; [优化]默认uwsgi配置; [优化]移除editormd编辑器已废弃emoji语法的