惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
Engineering at Meta
Engineering at Meta
腾讯CDC
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
D
Darknet – Hacking Tools, Hacker News & Cyber Security
WordPress大学
WordPress大学
博客园_首页
I
InfoQ
NISL@THU
NISL@THU
Recorded Future
Recorded Future
Security Latest
Security Latest
K
Kaspersky official blog
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
U
Unit 42
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
W
WeLiveSecurity
Webroot Blog
Webroot Blog
Last Week in AI
Last Week in AI
AWS News Blog
AWS News Blog
IT之家
IT之家
S
Schneier on Security
雷峰网
雷峰网
Know Your Adversary
Know Your Adversary
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
LangChain Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
G
GRAHAM CLULEY
O
OpenAI News
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
V
Vulnerabilities – Threatpost

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
dbt Core v2.0:用 Rust 重写的数据转换利器
Cheman · 2026-06-28 · via BlogFinder

今天在 GitHub Trending 上看到一个重磅更新:dbt Core v2.0 正式发布,这是数据工程领域最受欢迎的转换工具的一次根本性重构,用 Rust 从零重写带来性能飞跃。

一、项目概述

dbt(data build tool)是数据分析师和工程师进行数据转换的首选工具,它让数据从业者能够像软件工程师编写应用程序一样来构建数据管道。v2.0 版本是一次彻底的架构升级:

核心变化:

  • Rust 重写:从 Python 迁移到 Rust,解析和编译速度大幅提升
  • 单二进制分发:无需 Python 运行时和依赖管理,安装更简单
  • Parquet 产物:生成易于查询和分析的 Parquet 格式产物
  • 更严格的语言规范:在解析时强制正确性检查

解决的痛点:

  • 大型 dbt 项目的编译性能瓶颈
  • Python 依赖管理的复杂性
  • 产物格式不够标准化,难以被其他工具集成

二、技术原理

2.1 架构设计

dbt Core v2.0 采用模块化的 Rust 工作区设计,从 Cargo.toml 可以看到其架构:

[workspace]
members = [
  "crates/dbt-parser",        # 解析器
  "crates/dbt-compilation",   # 编译器
  "crates/dbt-adapter",       # 数据库适配器
  "crates/dbt-dag",           # DAG 调度
  "crates/dbt-jinja",         # Jinja 模板引擎
  # ... 更多模块
]

核心组件分工:

  • dbt-parser:解析 SQL 和 YAML 配置文件
  • dbt-compilation:将模型编译为可执行的 SQL
  • dbt-adapter:统一的数据仓库适配层
  • dbt-dag:管理模型依赖关系和执行顺序

2.2 性能优化关键

从源码可以看到,v2.0 利用了多项 Rust 生态优化:

# 使用 DataFusion 作为 SQL 引擎
datafusion = { version = "50.3.0" }
# Arrow/Parquet 作为数据交换格式
arrow = { version = "=56.0.0" }
parquet = { version = "=56.0.0" }
# 异步运行时
tokio = { version = "1.41.1", features = ["rt-multi-thread"] }

性能提升来源:

  1. 零拷贝解析:Rust 的所有权模型避免不必要的数据复制
  2. 并行编译:利用 tokio 异步运行时并行处理模型
  3. 原生二进制:编译为机器码,无需 Python 解释器

2.3 多数据库支持

v2.0 为每个数据仓库提供专门的词法分析器:

"crates/dbt-sql/dbt-lexer-bigquery",
"crates/dbt-sql/dbt-lexer-databricks", 
"crates/dbt-sql/dbt-lexer-duckdb",
"crates/dbt-sql/dbt-lexer-redshift",
"crates/dbt-sql/dbt-lexer-snowflake",
"crates/dbt-sql/dbt-lexer-trino",

这种设计让 dbt 能深度理解各数据库的 SQL 方言,提供更精准的语法高亮和错误提示。

三、安装与快速开始

3.1 环境要求

支持的主流平台:

操作系统x86-64ARM
macOS
Linux
Windows🟡(开发中)

3.2 安装方式

方式一:直接下载二进制

# macOS/Linux
curl -fsSL https://github.com/dbt-labs/dbt-core/releases/latest/download/dbt-$(uname -s)-$(uname -m) -o dbt
chmod +x dbt
sudo mv dbt /usr/local/bin/

方式二:使用 Homebrew

brew install dbt-labs/dbt/dbt

3.3 初始化项目

# 创建新项目
dbt init my_project

# 项目结构
my_project/
├── dbt_project.yml
├── models/
│   └── example.sql
├── seeds/
├── snapshots/
└── tests/

四、使用方法与实战

4.1 基础用法

定义模型

-- models/staging/stg_orders.sql
with source as (
    select * from raw.orders
),

cleaned as (
    select
        order_id,
        customer_id,
        order_date,
        total_amount
    from source
    where status = 'completed'
)

select * from cleaned

运行模型

# 运行所有模型
dbt run

# 运行指定模型
dbt run --select stg_orders

# 带全量刷新
dbt run --full-refresh

4.2 测试与文档

定义测试

# models/staging/schema.yml
version: 2

models:
  - name: stg_orders
    columns:
      - name: order_id
        tests:
          - unique
          - not_null
      - name: customer_id
        tests:
          - relationships:
              to: ref('stg_customers')
              field: id

运行测试

dbt test
dbt docs generate
dbt docs serve

4.3 增量模型

-- models/orders_incremental.sql
{{
    config(
        materialized='incremental',
        unique_key='order_id'
    )
}}

select * from raw_orders

{% if is_incremental() %}
where order_date > (select max(order_date) from {{ this }})
{% endif %}

五、常见问题与解决方案

5.1 版本兼容性

问题:v1.x 项目迁移到 v2.0 报错

解决

  • v2.0 目前处于 alpha 阶段,部分行为可能变化
  • 建议先用 1.latest 分支稳定版本
  • 关注官方迁移指南:https://docs.getdbt.com/docs/fusion/about-fusion

5.2 编译性能

问题:大型项目编译慢

解决

  • 升级到 v2.0,性能有数量级提升
  • 检查循环依赖
  • 使用 dbt compile --target prod 生成缓存产物

5.3 数据库连接

问题:连接数据库超时

解决

  • 检查 profiles.yml 配置
  • 增加连接超时参数
  • 确认网络策略允许访问数据仓库

5.4 Windows ARM 支持

问题:Windows ARM 设备无法运行

解决

  • 当前版本 Windows ARM 尚未支持
  • 临时方案:使用 WSL2 运行 Linux 版本
  • 关注官方发布动态

六、总结

dbt Core v2.0 是数据工程工具的一次重要进化。从 Python 到 Rust 的重写不仅带来性能飞跃,也标志着项目的成熟。对于正在使用 dbt 的团队,建议:

  1. 观望为主:等待 stable 版本发布
  2. 小规模测试:在非生产环境尝鲜
  3. 关注迁移成本:评估现有项目的兼容性
  4. 拥抱新特性:Parquet 产物、单二进制分发等优势明显

作为数据转换的事实标准,dbt 的这次技术栈升级值得每一位数据从业者关注。