一文看懂流行的Rust ORM
譯文譯者 | 布加迪
審校 | 重樓
對象關系映射(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