【Rust日报】Sea-orm, diesel, sqlx 比较

Sea-orm, diesel, sqlx 比较

很多人不知道怎么选。有位小哥深入尝试之后,做了一下比较总结。

这篇文章详细比较了三种Rust数据库ORM(Object-Relational Mapping)库:sea-orm、diesel和sqlx,并分享了作者在使用它们过程中的一些体验和看法。

sea-orm:

  • 优点:

    • 提供了强大的查询API和兼容性。

    • 依赖管理存在设计上的缺陷,导致同一个实体之间的多重关系处理不方便。

    • 近期的PR#2179大大改进了API的便利性。

    • 使用sea-query作为后备,组合查询比diesel简单。

    • 迁移操作更灵活,使用Rust代码而非纯SQL文件。

    • 文档丰富,但一些边缘情况未覆盖。

  • 缺点:

    • 关系API较弱,只能加载一个实体及其关联的实体。

    • sea-orm与sea-query的互操作性有待提升。

diesel:

  • 优点:

    • 能够轻松选择多个连接实体,使用元组进行选择。

    • 通过严格的类型系统在编译时避免无效查询。

  • 缺点:

    • 构建跨函数边界的查询十分耗时,返回类型复杂。

    • 选择了PostgreSQL作为基础,导致其他数据库(如SQLite/MySQL)的有效查询可能被拒绝。

    • 同步API在异步上下文中使用繁琐,需要嵌套闭包。

    • 缺乏详细的指南和示例,对于复杂查询的帮助不大。

sqlx:

  • 优点:

    • 支持编译时查询检查。

  • 缺点:

    • 对于需要在运行时构建的复杂查询,支持不足。

    • 缺乏ORM的帮助,编写查询比较麻烦。

总结:作者最终选择了sea-orm,尽管它也有一些缺点,但相对于diesel和sqlx,它在查询和反序列化方面更强大,语法更简洁,适合处理复杂查询。

https://www.reddit.com/r/rust/comments/1e8ld5d/my_take_on_databases_with_rust_seaorm_vs_diesel/

如何学习Rust的类型系统设计,自己写一个新语言

跟着这位小哥一起操作吧。

https://ruudvanasseldonk.com/2024/implementing-a-typechecker-for-rcl-in-rust

【行业深度】使用Rust配合RocksDB在高性能流平台领域不算一个好的选择

Feldera CTO写的总结文章,在使用RocksDB作为底层存储的时候发现一些不足之处。

https://www.feldera.com/blog/rocksdb-not-a-good-choice-for-high-performance-streaming/

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值