一文看懂流行的Rust ORM

2023年 7月 17日 74.6k 0

译者 | 布加迪

审校 | 重楼

对象关系映射(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 sqlite

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

[dependencies]
diesel = { version = "1.4.5", features = ["sqlite"] }

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

use diesel::prelude::*;

这把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-cli

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

sea- form -cli migrate init

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

[dependencies]
sea-orm = { version = "0.9" }

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

use sea_orm::entity::prelude::*;

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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论