写点什么

一文看懂流行的 Rust ORM

作者:高端章鱼哥
  • 2023-07-14
    福建
  • 本文字数:2061 字

    阅读完需:约 7 分钟

对象关系映射(ORM)是一种通过抽象数据库交互的底层细节来简化应用程序中数据访问和操作的技术。ORM 使您能够使用首选编程语言来处理对象和类型,同时与关系数据库管理系统(RDBMS)无缝集成。



如果您不精通 SQL(结构化查询语言)或数据库管理,ORM 的框架设计对用户友好。ORM 提供了一个高级抽象层,让您可以使用熟悉的面向对象编程概念与数据库进行交互,从而大大简化了应用程序数据库集成。

Rust、SQL 数据库和 ORM


在 Rust 中构建应用程序时,可能需要某种形式的持久性。您可以从 Rust 生态系统中的许多数据库范式和库中进行选择。


假设您希望使用关系数据库,您可以选择使用 SQL 客户端通过程序中的原始 SQL 查询在数据库管理系统上运行 SQL 操作,或者使用 ORM 允许您使用的 Rust 内置类型来处理数据库。


Rust 应用程序中使用 ORM 有几个好处。ORM 让用户不需要手动编写复杂的、容易出错的查询。相反,您可以利用 ORM 框架的强大功能,通过简单直观的 API 进行日常数据库操作,比如插入、更新和查询数据。使用 ORM,您可以编写在多个数据库管理系统上工作的 Rust 程序,不必重写数据库管理系统特有的 SQL 查询。


与其他语言不同,Rust 没有广泛采用的 ORM。然而,Rust 生态系统中有许多 ORM 用于各种目的,并支持多种数据库,包括 Diesel、SQLx、Sled 和 SeaORM 等。

Diesel ORM



Diesel 是一个 Rust ORM,提供了全面的特性,使开发人员能够高效地使用多个受支持的 SQL 数据库。

Diesel 提供了强类型和编译时间安全特性、富有表现力的查询 API、自动模式迁移、事务和错误处理等特性。


由于其性能、效率、安全性和可靠性,以及社区积极地对项目做贡献,Diesel 是首选的 ORM。此外,Diesel 兼容 Rocket 等其他 Rust Web 框架。


Diesel 为数据库操作提供了 crate(库)和 CLI 工具。


您可以运行该命令为首选数据库安装 diesel_cli 工具(在本例中是 sqlite 数据库,将参数更改为首选的支持 diesel 的 SQL 数据库的名称)。


cargo install diesel_cli --no-default-features --features sqlite1.
复制代码


此外,您可以将 Diesel 添加到项目的依赖项部分,以便在项目中使用该 crate。


[dependencies]diesel = { version = "1.4.5", features = ["sqlite"] }1.2.
复制代码


下面介绍如何在 Rust 文件中为项目的数据库操作导入 Diesel。


use diesel::prelude::*;1.
复制代码


这把 diesel::prelude 模块中的所有类型和特性导入当前作用域。这样一来就很容易使用 Diesel 的特性,不需要显式导入每个类型或特性。


总的来说,Diesel 是一个非常适合您数据库项目的 ORM 和数据库工具,因为它有一个充满活力的社区、大量在线教程以及对库的大力支持。

SeaORM ORM



SeaORM 是面向 Rust 的关系型 ORM,可以帮助构建 Web 服务。SeaORM 拥有大量的特性和功能,旨在简化处理数据库的过程,包括强大的查询构建、模式定义和迁移、关系映射、事务和连接池,并借助 Rust 的 async/await 语法支持异步操作。


值得注意的是,SeaORM 的 API 旨在符合人体工程学、富有表现力,允许您编写清晰简洁的数据库查询和操作。SeaORM 直观的语法和深思熟虑的抽象尽量减少了样板代码,并提高了生产力。


SeaORM 为数据库操作提供了 CLI 工具和 crate。


下面是安装 sea- form –cli CLI 工具的命令:


cargo install sea-orm-cli1.
复制代码


您可以使用 migrate init 命令来编写一个迁移文件,以设置数据库和模式。


sea- form -cli migrate init1.
复制代码


将 sea-orm crate 添加到项目 Cargo.toml 文件的依赖项部分,以安装和使用 SeaORM。


[dependencies]sea-orm = { version = "0.9" }1.2.
复制代码


在安装了 SeaORM 之后,您可以用 use 语句将库导入到 Rust 文件中,如下所示:


use sea_orm::entity::prelude::*;1.
复制代码


use sea_orm::entity::prelude::*;语句将 sea_orm::entity::prelude 模块中的所有类型和特性导入到当前作用域,以允许您使用这些类型和特性,而不必使用 sea_orm::entity::prelude 前缀来限定它们的名称。


SeaORM 是一个出色的 ORM,拥有充满活力的社区,还有出色的描述性文档来帮助您入门。

SeaORM vs Diesel


为 Rust 项目选择合适的 ORM 需要仔细考虑各种因素。


SeaORM 和 Diesel 都提供了出色的性能,充分利用 Rust 的优势来优化数据库交互。SeaORM 侧重于简单性和直观的 API 设计,而 Diesel 注重编译时检查和安全性。


下面的表格比较了两种 ORM 的特性和功能:



在 Diesel 和 SeaORM 之间进行选择取决于您的项目规格。Diesel 已建立了社区支持,并因其强大的特性和性能而受到青睐。如果您注重编译时检查、安全性和简单性,那么 Diesel 很合适。


另一方面,SeaORM 是新颖的,在不断扩展,它支持更多的 SQL 数据库引擎和懒加载。如果您注重直观的 API 设计和生产力,SeaORM 可能更合适。


这两种 ORM 都支持查询、模式迁移和编译时检查。在做出决定之前,请考虑您在使用的数据库管理系统和项目的大小。

Diesel 让处理数据库轻而易举


Rust 的开源社区继续在增强现有及新兴软件包和 ORM 的成熟度和功能方面取得重大进展。


据称,Diesel 是 Rust 生态系统中最流行的 ORM 之一。Diesel 的广泛采用证明了其强大的功能、高效的性能和积极的社区支持。Diesel 开发团队致力于完善和扩展其功能,以确保它仍然是 Rust 开发人员眼里一款可靠、稳健的 ORM 解决方案。


原文标题:An Overview of Popular Rust ORMs,作者:Ukeje Chukwuemeriwo Goodness

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
一文看懂流行的Rust ORM_sql_高端章鱼哥_InfoQ写作社区