博客

Databend 开源周报第 94 期

Databend Labs5月 22, 2023

英文版移步: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_contains
    bitmap_has_all
    bitmap_has_any
    bitmap_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.com/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/databendlabs/databend/releases

分享本篇文章

订阅我们的新闻简报

及时了解功能发布、产品规划、支持服务和云服务的最新信息!