Databend 开源周报 #67
Databend 是一款强大的云数仓。专为弹性和高效设计,自由且开源。
即刻体验云服务:https://app.databend.com。
New Features
toolchain
- Rust 工具链升级至 1.67 nightly (#8631)
multiple catalog
- 支持多目录创建 (#8620)
compact
- 为数据载入优化压缩 (#8644)
planner
- 优化 left/single join (#8583)
query
-
支持从 xml 格式文件加载数据 (#8404)
-
增加关于字符集的设置 "collation" (#8610)
-
按最后修改时间复制文件 (#8628)
-
改进 sort ,10%~50% 的性能提升 (#8452)
new expression
-
实现一系列 to_xxx() 强制转换函数 (#8599)
-
新增 inlist 表达式 (#8676)
Code Refactor
format
- 使用 FieldEncoders 重构输出格式 (#8700)
planner
- 将 plan 从 query/planner 移动到 sql/planner (#8660)
query
-
移除 sqlparser-rs (#8670)
-
将 list file 移动到 read_partitions (#8673)
storage
-
移动和重新归类 storages 下面的模块 (#8613, #8621, #8627, etc.)
-
改进 "compact segment",严格保持摄入顺序 (#8590)
new expression
-
迁移反序列化相关内容 (#8637)
-
使用 "to_xxx()" 来评估 "CAST(xxx AS xxx)" (#8641)
Infra Changes
- rust-toolchain nightly 1.67.0 (nightly-2022-11-07) (#8641)
Bug Fix
compatibility
- 修复使用 Trino Mysql connector 遇到的一些问题 (#8668)
meta
- 提交事务后发出 kv 变更事件 (#8674)
query
-
修复未正确处理 union 的问题 (#8638)
-
修复无法自动确定 max_threads 的问题 (#8707)
News
Datafuse Labs / Databend 本周新动态!
支持从 XML 文件载入数据
在 #8404 合并后,Databend 现在支持从 XML 格式文件载入数据。
与使用其他格式文件类似,在 SQL 语句中唯一需要特别关注的是指定 "format" 选项为 "XML" 。下面给出一个使用 streaming load API 的例子。
curl -sH "insert_sql:insert into test_xml format XML" \
-F "upload=@/tmp/simple_v1.xml" \
-u root: -XPUT "http://localhost:${QUERY_HTTP_HANDLER_PORT}/v1/streaming_load"
载入的 XML 文件需要遵循以下一种或多种格式规范:
- 列名作为属性,列值作为属性值:
<row column1="value1" column2="value2" .../>
- 列名作为标签,列值作为标签的内容:
<row>
<column1>value1</column1>
<column2>value2</column2>
</row>
- 列名是标签的 name 属性,值是这些标签的内容:
<row>
<field name='column1'>value1</field>
<field name='column2'>value2</field>
</row>
阅读下面列出的材料以了解更多讯息
- PR | support copy from xml
新增字符集校验相关支持
在 #8610 合并后,Databend 现在支持设定 "collation" 来选择字符串的编码。
默认情况下,"collation" 被设为 "'binary'",因为 Databend 默认会使用 binary 格式存储字符串列,你可以使用下述语句将 "collation" 变为 "'utf-8'" :
set collation = 'utf8';
这可能有助于在处理非英文字符串时得到预期结果:
statement query TI
select substr('城区主城区其他', 1, 6), length('我爱中国');
----
城区 12
statement ok
set collation = 'utf8';
statement query TI
select substr('城区主城区其他', 1, 6), length('我爱中国');
----
城区主城区其 4
阅读下面列出的材料以了解更多讯息
- PR | add collation
Issues
遇到你可能会感兴趣的问题,欢迎试着解决它。
为 IN 算符启用 Xor Filter Index
Databend 引入 Xor Fliter 来替代 Bloom Filter (#7870) ,在某些特定场景下带来两倍性能提升并大幅减少扫描数据量。
最开始,我们只是为字符串列添加这一索引。然后在 #7958 ,又为整数列启用这一功能。
现在,Databend 计划为 "IN" 启用 Xor Filter Index 。
SELECT * FROM t1 where xx IN ('', '')
Issue 8625: performance: enable xor filter index for IN
如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题,祝好运!
Changlogs
前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。
地址:https://github.com/datafuselabs/databend/releases
Contributors
非常感谢贡献者们在本周的卓越工作。
Meet Us
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