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

非常感谢贡献者们在本周的卓越工作。

image.png

Meet Us

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

posted @ 2022-11-23 14:54  Databend  阅读(39)  评论(0编辑  收藏  举报