陈天 · Rust 编程第一课
陈天
Tubi TV 研发副总裁
23196 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
基础篇 (21讲)
陈天 · Rust 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

44|数据处理:应用程序和数据如何打交道?

数据转换
SQL查询编译时检查
异步访问支持
sea-orm
diesel
SQLite
文件
SQLite缓存
内存缓存
数据查询
处理 Nginx 日志
DataFusion
Apache Arrow
sqlx
ORM
非实时批处理
实时消息队列
文本数据索引
缓存
数据库
本地存储
数据缓存
用 Rust 对半结构化数据进行分析
访问关系数据库
服务器数据处理
客户端数据处理
Rust 数据处理
应用程序和数据打交道
数据处理
数据处理:应用程序和数据如何打交道?

该思维导图由 AI 生成,仅供参考

你好,我是陈天。
我们开发者无论是从事服务端的开发,还是客户端的开发,和数据打交道是必不可少的。
对于客户端来说,从服务端读取到的数据,往往需要做缓存(内存缓存或者 SQLite 缓存),甚至需要本地存储(文件或者 SQLite)。
对于服务器来说,跟数据打交道的场景就更加丰富了。除了数据库和缓存外,还有大量文本数据的索引(比如搜索引擎)、实时的消息队列对数据做流式处理,或者非实时的批处理对数据仓库(data warehouse)中的海量数据进行 ETL(Extract、Transform and Load)。
今天我们就来讲讲如何用 Rust 做数据处理,主要讲两部分,如何用 Rust 访问关系数据库,以及如何用 Rust 对半结构化数据进行分析和处理。希望通过学习这一讲的内容,尤其是后半部分的内容,能帮你打开眼界,对数据处理有更加深刻的认识。

访问关系数据库

作为互联网应用的最主要的数据存储和访问工具,关系数据库,是几乎每门编程语言都有良好支持的数据库类型。
在 Rust 下,有几乎所有主流关系数据库的驱动,比如 rust-postgres、rust-mysql-simple 等,不过一般我们不太会直接使用数据库的驱动来访问数据库,因为那样会让应用过于耦合于某个数据库,所以我们会使用 ORM。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了如何利用 Rust 进行数据处理,包括访问关系数据库和对半结构化数据进行分析和处理。针对数据库访问,文章详细介绍了使用 ORM 框架和直接使用数据库驱动的方法,并展示了 Rust 处理数据库的强大和简约特点,以及 sqlx crate 的使用方法。此外,文章还展示了如何使用 datafusion 构建一个 Nginx 日志的命令行分析工具,突出了 Rust 在半结构化数据分析方面的优势。通过示例代码和实际操作指南,读者能够快速了解 Rust 在数据处理方面的优势和特点。整体而言,本文为读者提供了丰富的实践经验,展示了 Rust 在处理数据方面的强大功能和灵活性。 文章还提出了两个思考题,分别是使用 diesel 或 sea-orm 实现用户注册/登录功能,以及使用 datafusion 读取和查询不同类型的半结构化数据。这为读者提供了进一步探索 Rust 数据处理能力的机会。总的来说,本文内容丰富,涵盖了数据库访问和半结构化数据处理的方方面面,对于想要深入了解 Rust 数据处理能力的读者来说,是一篇具有实际指导意义的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《陈天 · Rust 编程第一课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • pedro
    最近工作很忙,经常加班,有时间抽空来看看,仍然收获颇丰。 看完今天这一章,有一种强烈的感受:这不仅是Rust编程第一课,很有可能也是唯一的一课,内容太丰富了。

    作者回复: 我也是特别忙,好几次都差一点断更。留言更是拖到现在才开始一点点回复,惭愧啊。

    2021-12-10
    7
  • 乌龙猹
    课程进入到了尾声,感觉啥也没学到,感觉又学到了很多。整个课程内容夯实,体系结构清晰。值得反复品味。这是 Rust 编程的第一课,而真正的 Rust 之旅才刚刚开始。

    作者回复: 加油!除了学,还要大量地练习,尝试用 Rust 解决身边的小问题。

    2021-12-10
    4
  • 罗杰
    哈,我也觉得 ORM 太过笨重,还是 sqlx 直观。我的项目全部都是 sqlx,C++ 和 Go 都是。

    作者回复: 嗯,同感

    2021-12-10
    3
  • Colt
    补充下: 运行example/user 的例子需要注意下面2点: 1. 需要在example 同级目录下创建 data/example.db 文件否则报 `unable to open database file` 2. `recreate_table` 方法下第一条sql 需要改为 `drop table if exists users` 否则首次运行会报 `no such table: users`

    作者回复: 多谢!1) 我让编辑加一句,2) 已更新 github repo,也让编辑在文章中帮忙修改了。

    2021-12-23
  • Geek_b251b3
    陈老师能点一下为什么使用pool的时候需要的是pool.clone()么
    2022-05-28
  • Jagger
    sqlx 连接MySQL8 存在8小时时差的问题,陈老师有没有什么好的办法解决?
    2022-03-13
    1
  • Geek_994f3b
    用户注册登录有什么最佳实践可以参考么
    2022-03-09
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部