Skip to main content

Databend 开源周报第 94 期

Alt text

英文版移步:https://www.databend.com/blog/2023-05-21-databend-weekly

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn

What's On In Databend

探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。

计算列

计算列(Computed Columns)使用其他列的标量表达式计算得来。有两种类型的计算列:存储计算列和虚拟计算列。

存储计算列在按行插入数据时计算并存储结果值。可以使用以下 SQL 语法创建存储计算列:

column_name <type> AS (<expr>) STORED

虚拟计算列在查询时进行计算,不会存储结果值。可以使用以下 SQL 语法创建虚拟计算列:

column_name <type> AS (<expr>) VIRTUAL

如果你想要了解更多信息,请查看下面列出的资源。

VACUUM TABLE

VACUUM TABLE 命令通过从表中永久删除历史数据文件来释放存储空间,有助于优化系统性能。删除的文件包括:

  • 与表相关的快照及其关联的 segments 和 blocks 。
  • 孤立文件。在 Databend 中,孤立文件指不再与该表关联的快照、segments 和 blocks 。孤立文件可能由各种操作和错误生成,例如在数据备份和还原期间,并且随着时间的推移会占用宝贵的磁盘空间并降低系统性能。

VACUUM TABLE 需要升级至 企业版 。如需了解升级信息,请联系 Databend 团队

如果你想要了解更多信息,请查看下面列出的资源。

Code Corner

一起来探索 Databend 和周边生态中的代码片段或项目。

为 Python 绑定启用缓存

Databend 支持数据缓存和查询结果缓存,可以有效加速查询。Databend 的 Python 绑定也支持这些特性,尽管有一些细微的差别。

对于查询结果缓存,可以使用 SQL 语句进行设置,非常方便。

>>> from databend import SessionContext 
>>> ctx = SessionContext()
>>> ctx.sql("set enable_query_result_cache = 1")

对于数据缓存,则可以通过环境变量来启用。

>>> import os 
>>> os.environ["CACHE_DATA_CACHE_STORAGE"] = "disk"
>>> from databend import SessionContext
>>> ctx = SessionContext()
>>> ctx.sql("select * from system.configs where name like '%data_cache%'")
┌────────────────────────────────────────────────────────────────────────────┐
│ group │ name │ value │ description │
│ String │ String │ String │ String │
├─────────┼──────────────────────────────────────────┼─────────┼─────────────┤
'cache''data_cache_storage''disk'''
'cache''table_data_cache_population_queue_size''65536'''
└────────────────────────────────────────────────────────────────────────────┘

现在行动起来,将 Databend 集成到你的数据科学工作流中。

亮点

以下是一些值得注意的事件,也许您可以找到感兴趣的内容。

  • 阅读 Docs | Date & Time - Formatting Date and Time 以了解如何精确控制时间和日期的格式。
  • 从 URI 加载数据时支持数据转换。
  • 为通过 HTTP API 执行 REPLACE INTO 语句支持 stage_attachment 字段。
  • 新增位图相关函数:bitmap_containsbitmap_has_allbitmap_has_anybitmap_or, bitmap_and, bitmap_xor等。
  • 支持整数除法运算符 //

What's Up Next

我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。

从 Meta 请求中删除 if_not_exists 字段

CreateIndexReq / CreateTableReq 这类 Meta 请求中,我们使用 if_not_exists 字段来表示索引/表是否已经存在。

pub struct CreateIndexReq {
pub if_not_exists: bool,
pub name_ident: IndexNameIdent,
pub meta: IndexMeta,
}

但是 if_not_exists 字段仅影响呈现给用户的结果,并不改变 Meta Services 的行为。

因此,对于 SchemaApi ,一个更好的设计方案可能是:提供 CreatedExist 状态代码以允许调用者确定是否需要生成错误消息。

Issue #11456 | Moving if_not_exists out of meta request body

如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题,祝好运!

New Contributors

一起认识社区中的新伙伴,Databend 因你们而变得更加美好。

  • @silver-ymz 为 Databend 新增了 5 个 bitmap 相关的标量函数,#11487
  • @Jake-00 帮忙修改 SOUNDS LIKE 语法的重复测试用例,#11503
  • @gitccl 为 Databend 新增了 5 个 bitmap 逻辑运算函数,并且修复了对空位图调用部分函数时的崩溃问题,#11507

Changelog

前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。

地址:https://github.com/datafuselabs/databend/releases


Contributors

共有 24 位贡献者参与

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