---
title: Databend 开源周报第 90 期
description: Databend 的元数据文件版本更新至 v3，新元数据文件的体积可减少为原来的 1/20，并且性能提高 2 倍！
slug: category-weekly/databend-weekly-90
date: 2023-04-25
tags: [weekly]
category: Weekly

image: databend-weekly.png
contributors:
  - name: andylokandy
  - name: b41sh
  - name: BohuTANG
  - name: Chasen-Zhang
  - name: drmingdrmer
  - name: everpcpc
  - name: flaneur2020
  - name: jun0315
  - name: kemingy
  - name: lichuang
  - name: neil4dong
  - name: PsiACE
  - name: RinChanNOWWW
  - name: soyeric128
  - name: sundy-li
  - name: wubx
  - name: Xuanwo
  - name: xudong963
  - name: youngsofun
  - name: zhyass
authors:
  - DatabendLabs
---

# Databend 开源周报 第 90 期

> 英文版移步：https://www.databend.com/blog/2023-04-22-databend-weekly
>
> [Databend](https://github.com/databendlabs/databend) 是一款现代云数仓。专为弹性和高效设计，为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务：[https://app.databend.cn](https://app.databend.cn) 。

## What's On In Databend

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

### 元数据优化

最近，Databend 的元数据文件版本更新至 v3，序列化/反序列化效率进一步提高，同时降低了存储空间消耗。新元数据文件的体积可减少为原来的 1/20，并且性能提高 2 倍！

通过使用 Bincode，新的元数据格式能够以紧凑高效的方式序列化数据。这可以大大改善读取速度，并减少存储文件的大小。此外，通过使用 Zstd 压缩，能够进一步减少文件大小，同时保持较快的解压速度。

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

- [feat(query): table meta optimize](https://github.com/databendlabs/databend/pull/11015)

{/* truncate */}

## Code Corner

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

### 自定义链接器脚本进行静态链接

静态链接在需要部署到具有依赖限制的系统中时会显得非常有用。

参照 [@dl00](https://github.com/dl00) 和 [@bossmc](https://github.com/bossmc) 的建议，创建自定义链接器脚本可以解决一些非预期行为。

```bash
#!/bin/bash

args=()

for arg in "$@"; do
    if [[ $arg = *"Bdynamic"* ]]; then
        args+=() # we do not want this arg
    elif [[ $arg = *"crti.o"* ]]; then
        args+=("$arg" "-Bstatic")
    elif [[ $arg = *"crtn.o"* ]]; then
        args+=("-lgcc" "-lgcc_eh" "-lc" "/usr/local/lib/gcc/${MUSL_TARGET}/9.4.0/crtendS.o" "$arg")
    else
        args+=("$arg")
    fi
done

echo "RUNNING WITH ARGS: ${args[@]}"
/usr/local/bin/${MUSL_TARGET}-g++ "${args[@]}"
```

这个 bash 脚本根据静态链接的需要对参数进行了调整。虽然这个解决方案可能不是完美的，但可能对解决跨平台应用分发问题有一些帮助。

- [ci: fix static link with libstdc++ for musl build](https://github.com/databendlabs/databend/pull/11145)
- [link: failed to static link to c++ library when global variable is used](https://github.com/rust-lang/rust/issues/36710)

## 亮点

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

- 阅读文档 [Deploying Databend on Docker](https://docs.databend.cn/guides/deploy/deploy/non-production/deploying-local) 了解如何用 Docker 部署具备 MinIO 存储后端的 Databend。
- `REPLACE INTO` 语句现在支持带集群键的表。
- 新增窗口函数 `percent_rank` 。
- 新增 JSON path 函数： `jsonb_path_query_first`,`jsonb_path_query`,`jsonb_path_query_array`.
- 为字符串比较新增 `SOUNDS LIKE` 语法。
- Meta Service 拆分日志存储和状态机存储。
- 根据虚拟列 `_row_id` 进行惰性物化（Lazy Materialize）。

## What's Up Next

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

### 聚合索引

数据仓库中的近似查询可以重用缓存的数据以减少 IO 开销，但缓存在容量和实时性方面存在限制，并且无法解决增量计算问题。

为了解决这些挑战，OLAP 中的预聚合技术是减少数据冗余的有效方法。通常会使用物化视图来实现预聚合。Databend 计划引入聚合索引，以二级索引的方式实现物化视图。

[Issue #11183 | Tracking: aggregating index feature](https://github.com/databendlabs/databend/pull/11183)

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

## New Contributors

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

- [@neil4dong](https://github.com/neil4dong) 为字符串比较新增 `SOUNDS LIKE` 语法，[#11043](https://github.com/databendlabs/databend/pull/11043) 。

## Changelog

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

地址：https://github.com/databendlabs/databend/releases
