Databend v1.0 Release 正式发布

尊敬的 databenders,在 databend labs 成立两周年之际,我们非常高兴地宣布 databend v1.0 正式发布。databend 社区一直在致力于解决大数据分析的成本和复杂度问题,并正在被顶级场景和顶级需求所推动。根据可统计信息,每天约 700tb 数据在使用 databend 写入到云对象存储并进行分析,用户来自欧洲、北美、东南亚、非洲、中国等地,每月为他们节省数百万美元成本。databend v1.0 是一个具有里程碑意义的版本,我们相信它将进一步加速云端海量数据分析的发展。   今天,我将首先介绍 databend v1.0 相比 v0.9 版本所做的改进,然后探讨我们团队的愿景和未来展望。现在就让我们开始吧!
   v1.0 改进
 databend 在版本 v1.0 中实现了惊人的性能提升,在 clickbench[1] 测试中获得:数据加载第一名,在查询环节, c6a.4xlarge 第一名, c5a.4xlarge 第二名,c6a.metal 第三名。
此外,databend 社区还在版本 v1.0 中推出了多项新功能:
1
update
现在,用户可以使用 update 语句来更新 databend 中的数据。
更新语句的格式如下:
-- update a book (id: 103)update bookstore set book_name = 'the long answer (2nd)' where book_id = 103; 通过支持 update 功能,databend 实现了对 crud 操作的完整支持。
  2
alter table
在 v1.0 中,用户可以使用 alter table 来修改 databend 中的表结构:
-- add a columnalter table t add column c int default 10;  
3
decimal
在完成了 databend 类型系统的大型重构之后,社区在一个坚实的基础上实现了 decimal 数据类型的支持!
-- create a table with decimal data type.create table tb_decimal(c1 decimal(36, 18));-- insert two values.insert into tb_decimal values(0.152587668674722117), (0.017820781941443176);select * from tb_decimal;+----------------------+| c1                   |+----------------------+| 0.152587668674722117 || 0.017820781941443176 |+----------------------+   4
native format 在 v0.9 版本中引入的 native format strawboat[2] 得到了进一步的完善!社区为 strawboat 增加了半结构化数据的支持,并引入了多项性能优化,帮助 databend 在 hits 数据集的性能取得了巨大提升。
  5
cbo 引入了直方图框架,可以利用统计信息更为精确地进行代价估算。进一步完善和强化 join reorder 算法,从而大大的提高多表 join 的性能,帮助 databend 在 tpch 数据集上的性能取得显著提升。
  6
select from stage stage 是 databend 数据流转的核心。我们之前已经支持从 stage 中加载数据和向 stage 中导出数据,现在我们更进一步,支持了直接在 stage 中进行数据查询!
用户只需要为 databend 创建一个包含数据文件的 stage,就可以轻松进行数据查询,无需编写复杂的建表语句或繁琐的数据导入流程。
select min(number), max(number)     from @lake (pattern => '.*parquet');+-------------+-------------+| min(number) | max(number) |+-------------+-------------+|           0 |           9 |+-------------+-------------+ 如果用户只需要进行一次性的查询,还可以直接使用更简短的 uri 形式:
select count(*), author     from 'https://datafuse-1253727613.cos.ap-hongkong.myqcloud.com/data/books.parquet'        (file_format => 'parquet')    group by author;+----------+---------------------+| count(*) | author              |+----------+---------------------+|        1 | jim gray            ||        1 | michael stonebraker |+----------+---------------------+   7
query result cache 在 v1.0 版本中,databend 社区借鉴了 clickhouse 社区的设计,并增加了 query result cache 功能。当底层数据没有发生变化时,执行相同的查询会命中缓存,避免了重复执行查询的过程。
mysql [(none)]> select watchid, clientip, count(*) as c, sum(isrefresh), avg(resolutionwidth) from hits group by watchid, clientip order by c desc limit 10;+---------------------+-------------+------+----------------+----------------------+| watchid             | clientip    | c    | sum(isrefresh) | avg(resolutionwidth) |+---------------------+-------------+------+----------------+----------------------+| 6655575552203051303 |  1611957945 |    2 |              0 |               1638.0 || 8566928176839891583 | -1402644643 |    2 |              0 |               1368.0 || 7904046282518428963 |  1509330109 |    2 |              0 |               1368.0 || 7224410078130478461 |  -776509581 |    2 |              0 |               1368.0 || 5957995970499767542 |  1311505962 |    1 |              0 |               1368.0 || 5295730445754781367 |  1398621605 |    1 |              0 |               1917.0 || 8635802783983293129 |   900266514 |    1 |              1 |               1638.0 || 5650467702003458413 |  1358200733 |    1 |              0 |               1368.0 || 6470882100682188891 | -1911689457 |    1 |              0 |               1996.0 || 6475474889432602205 |  1501294204 |    1 |              0 |               1368.0 |+---------------------+-------------+------+----------------+----------------------+10 rows in set (3.255 sec)mysql [(none)]> select watchid, clientip, count(*) as c, sum(isrefresh), avg(resolutionwidth) from hits group by watchid, clientip order by c desc limit 10;+---------------------+-------------+------+----------------+----------------------+| watchid             | clientip    | c    | sum(isrefresh) | avg(resolutionwidth) |+---------------------+-------------+------+----------------+----------------------+| 6655575552203051303 |  1611957945 |    2 |              0 |               1638.0 || 8566928176839891583 | -1402644643 |    2 |              0 |               1368.0 || 7904046282518428963 |  1509330109 |    2 |              0 |               1368.0 || 7224410078130478461 |  -776509581 |    2 |              0 |               1368.0 || 5957995970499767542 |  1311505962 |    1 |              0 |               1368.0 || 5295730445754781367 |  1398621605 |    1 |              0 |               1917.0 || 8635802783983293129 |   900266514 |    1 |              1 |               1638.0 || 5650467702003458413 |  1358200733 |    1 |              0 |               1368.0 || 6470882100682188891 | -1911689457 |    1 |              0 |               1996.0 || 6475474889432602205 |  1501294204 |    1 |              0 |               1368.0 |+---------------------+-------------+------+----------------+----------------------+10 rows in set (0.066 sec)   8
table data cache 缓存是存算分离架构中的重要组成部分。在 v1.0 版本中,databend 社区为我们带来了 table data cache!当 databend 执行查询时,会根据访问数据的热度情况决定是否将该数据块保存到缓存中,以加速下一次访问。
aggregate spill
  在 v1.0 版本中, databend 引入了 aggregate spill, 当在 databend 中执行聚合查询时, 会根据 databend 当前的内存使用情况动态,决定将内存中的聚合数据临时保存并持久化到对象存储中, 防止查询过程中使用过高的内存。
未来展望
  经过这些版本的打磨,databend 终于有了一个雏形。现在,让我们重新认识一下 databend:
part.
1
一个使用 rust 开发的云原生数据仓库:存算分离,面向对象存储设计,极致弹性
part.
2
支持完整的 crud 特性,提供了 mysql/clickhouse/http restful 等协议支持
part.
3
提供原生的 array、map、json 等复杂类型和 decimal 高精度类型支持
part.
4
构建了类似于 git 的 mvcc 列式存储引擎,支持 data time travel 和 data share 能力
part.
5
不受存储供应商的限制,可以在任何存储服务上运行,并直接查询任何存储服务上的数据
part.
6
目前已全面支持 hdfs/cloud-based object storage 协议,包括:阿里云 oss,腾讯云 cos,华为云 obs,以及 s3,azure blob, google cloud storage
databend 的征程远远不止于此,在未来我们希望 databend 能拥有:
  1
更强大的功能 在紧随其后的 v1.1 版本中,我们希望实现如下功能:
json 索引:提高半结构化数据检索能力
分布式 ingest 能力:提高数据写入速度
merge into 功能:实现数据源增、删、改的实时 cdc 能力
windows function
我们希望这些功能能进一步满足用户的需求,并且实现 databend 在 cdc 场景下的突破。 2
更开放的社区 databend labs 由一群开源爱好者组成,databend 项目从创建之初就是采用 apache 2.0 协议授权的开源项目。在借鉴和吸收 clickhouse,cockroachdb 等开源项目优秀思想的同时,我们也在以自己的方式回馈社区: 开源了databend 元数据服务集群的共识引擎 openraft[3]
向 apache 软件基金会捐赠了底层的数据访问引擎 opendal[4] 并成功进入孵化器开始孵化
成为向量计算基础库 arrow2 等多个依赖项目的贡献者
跟进并采用 rust nightly,帮助 rust 社区复现并验证问题
没有开源社区就没有今天的 databend,感谢 144 个参与 databend 的贡献者!接下来,我们将更开放地与其他开源社区合作,支持读写 iceberg[5]、delta lake[6] 等格式,打破数据间的壁垒,使数据能够更自由灵活地流转。


微波组件中的薄膜陶瓷电路板
英特尔cpu爆惊天漏洞_英特尔cpu漏洞检测_英特尔cpu检测工具有哪些
怎样使用FHE实现加密大语言模型?
手持万用表使用口诀
浅谈激光焊接设备
Databend v1.0 Release 正式发布
宽带GaN功率放大器AM07512042MD-3H介绍
使用UM66T旋律发​​生器构建一个简单的音乐门铃
编程将纳入中小学课程?教育部回答来了
什么是频域分析?频域和时域有什么关系?
CAN中继器常犯的错误设计
我国移动支付经历数年的发展现状、问题及未来趋势等已步入下半场
4G通信模块在ARM平台下的应用
工信部:我国3G用户突破一亿
腾讯发布公告,回应美商务部限制微信国际版事件
光谱共焦位移传感器适用于哪些领域
小米MIX2什么时候上市最新消息:小米MIX2曝光,屏占比达到95%,再次惊艳你的眼球!
高频变压器是什么 设计考虑因素
人工智能正通过自动化和机器人技术窃取工作
开发指引 | R24DVD1人体存在探测雷达