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_existed
字段来表示索引/表是否已经存在。
pub struct CreateIndexReq {
pub if_not_exists: bool,
pub name_ident: IndexNameIdent,
pub meta: IndexMeta,
}
但是 if_not_exists
字段仅影响呈现给用户的结果,并不改变 Meta Services 的行为。
因此,对于 SchemaApi
,一个更好的设计方案可能是:提供像 Created 或 Exist 状态代码以允许调用者确定是否需要生成错误消息。
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
非常感谢贡献者们在本周的卓越工作。
Connect With Us
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。