در این نمای کلی جامع، محبوب ترین Rust ORM ها را کشف و کاوش کنید.
نگاشت شی-رابطه ای (ORM) تکنیکی برای ساده کردن دسترسی به داده ها و دستکاری در برنامه ها با انتزاع جزئیات سطح پایین تعاملات پایگاه داده است. ORM ها شما را قادر می سازند تا با اشیا و انواع در زبان برنامه نویسی دلخواه خود کار کنید و در عین حال به طور یکپارچه با سیستم های مدیریت پایگاه داده رابطه ای (RDBMS) یکپارچه شوید.
چارچوب های ORM به گونه ای طراحی شده اند که کاربر پسند باشند، به خصوص اگر در SQL (زبان پرس و جو ساختاریافته) یا مدیریت پایگاه داده مهارت کافی نداشته باشید. ORM ها یک لایه انتزاعی سطح بالا را ارائه می کنند که به شما امکان می دهد با استفاده از مفاهیم برنامه نویسی شی گرا آشنا با پایگاه های داده تعامل داشته باشید و در نتیجه یکپارچه سازی پایگاه داده برنامه ها را بسیار ساده می کند.
Rust، پایگاه های داده SQL و ORM ها
هنگام ساخت برنامه های کاربردی در Rust، ممکن است به نوعی پایداری نیاز داشته باشید. شما می توانید از بین پارادایم ها و کتابخانه های بسیاری از پایگاه های داده در اکوسیستم Rust انتخاب کنید.
فرض کنید می خواهید با یک پایگاه داده رابطه ای کار کنید. در این صورت، میتوانید بین استفاده از کلاینتهای SQL برای اجرای عملیات SQL بر روی سیستمهای مدیریت پایگاه داده از طریق پرسوجوهای SQL خام در برنامهها یا ORMهایی که به شما اجازه میدهند از انواع داخلی Rust برای کار با پایگاه داده خود استفاده کنید، یکی را انتخاب کنید.
استفاده از ORM ها در برنامه های Rust مزایای متعددی دارد. ORM ها نیاز به نوشتن پرس و جوهای پیچیده و مستعد خطا را به صورت دستی از بین می برند. در عوض، میتوانید از قدرت چارچوب ORM برای عملیات روزمره پایگاه داده مانند درج، بهروزرسانی و جستجوی دادهها از طریق یک API ساده و شهودی استفاده کنید. با استفاده از یک ORM، میتوانید برنامههای Rust را بنویسید که بر روی چندین سیستم مدیریت پایگاه داده کار میکنند، بدون اینکه نیازی به بازنویسی پرسوجوهای SQL خاص سیستم مدیریت پایگاه داده باشند.
برخلاف سایر زبانها، Rust دارای یک ORM گسترده نیست. با این حال، ORM های زیادی در اکوسیستم Rust برای اهداف مختلف وجود دارد که از پایگاه های داده متعددی از جمله Diesel، SQLx، Sled، SeaORM و بسیاری دیگر پشتیبانی می کنند.
ORM دیزل
Diesel یک Rust ORM است که ویژگی های جامعی را ارائه می دهد که توسعه دهندگان را قادر می سازد تا به طور موثر با چندین پایگاه داده SQL پشتیبانی شده کار کنند.
Diesel قابلیت تایپ قوی و کامپایل ویژگی های ایمنی زمان، API پرس و جوی رسا، انتقال خودکار طرحواره، تراکنش ها و مدیریت خطا را از جمله ویژگی های دیگر فراهم می کند.
دیزل به دلیل عملکرد و کارایی، ایمنی و قابلیت اطمینان و مشارکت فعال جامعه در پروژه، یک ORM ارجح است. همچنین، دیزل به خوبی با سایر چارچوب های وب Rust مانند Rocket بازی می کند.
دیزل یک جعبه و یک ابزار CLI برای عملیات پایگاه داده فراهم می کند.
شما می توانید این دستور را برای نصب ابزار diesel_cli برای پایگاه داده دلخواه خود اجرا کنید (در این مورد، sqlite، آرگومان را به نام پایگاه داده SQL مورد علاقه خود که از دیزل پشتیبانی می شود تغییر می دهید).
cargo install diesel_cli --no-default-features --features sqlite
همچنین، می توانید دیزل را به بخش وابستگی های پروژه خود اضافه کنید تا از جعبه در پروژه خود استفاده کنید.
[dependencies]
diesel = { version = "1.4.5", features = ["sqlite"] }
در اینجا نحوه وارد کردن Diesel در فایل های Rust برای عملیات پایگاه داده پروژه شما آمده است.
use diesel::prelude::*;
این همه انواع و ویژگیها را از ماژول دیزل::پرلود وارد محدوده فعلی میکند. این کار استفاده از ویژگی های دیزل را بدون وارد کردن صریح هر نوع یا ویژگی آسان می کند.
به طور کلی، دیزل یک ابزار ORM و پایگاه داده عالی برای پروژه پایگاه داده شما است، زیرا یک جامعه پر جنب و جوش، بسیاری از آموزش های آنلاین و پشتیبانی عالی از کتابخانه وجود دارد.
SeaORM ORM
SeaORM یک ORM رابطهای برای Rust است که به ساخت سرویسهای وب کمک میکند. SeaORM دارای مجموعه گستردهای از ویژگیها و قابلیتهای طراحی شده برای سادهسازی فرآیند کار با پایگاههای داده است، از جمله ساخت پرس و جو قدرتمند، تعریف طرحواره و مهاجرت، نقشهبرداری رابطه، تراکنشها و ادغام اتصال با پشتیبانی از عملیات ناهمزمان با دستور Rust’s async/wait.
مهمتر از همه، API SeaORM به گونهای طراحی شده است که ارگونومیک و رسا باشد و به شما امکان میدهد تا کوئریها و عملیات پایگاه داده واضح و مختصر بنویسید. نحو بصری SeaORM و انتزاعات به خوبی فکر شده کد دیگ بخار را به حداقل می رساند و بهره وری را افزایش می دهد.
SeaORM یک ابزار CLI و جعبه برای عملیات پایگاه داده فراهم می کند.
در اینجا دستور نصب ابزار sea-orm-cli CLI آمده است:
cargo install sea-orm-cli
می توانید از دستور migrate init برای نوشتن یک فایل مهاجرت برای تنظیم پایگاه داده و طرحواره خود استفاده کنید.
sea-orm-cli migrate init
جعبه sea-orm را به بخش وابستگی ها در فایل Cargo.toml پروژه خود اضافه کنید تا SeaORM را نصب و استفاده کنید.
[dependencies]
sea-orm = { version = "0.9" }
پس از نصب SeaORM، میتوانید جعبه را در فایلهای Rust خود با یک عبارت use به صورت زیر وارد کنید:
use sea_orm::entity::prelude::*;
استفاده از sea_orm::entity::prelude::*; بیانیه همه انواع و ویژگیها را از ماژول sea_orm::entity::prelude وارد محدوده فعلی میکند تا به شما امکان میدهد از این انواع و ویژگیها بدون نیاز به واجد شرایط بودن نام آنها با پیشوند sea_orm::entity::prelude استفاده کنید.
SeaORM یک ORM عالی با یک جامعه پر جنب و جوش است و دارای اسناد توصیفی عالی برای کمک به شما برای شروع است.
SeaORM در مقابل دیزل
انتخاب ORM مناسب برای پروژه Rust مستلزم بررسی دقیق عوامل مختلف است.
SeaORM و Diesel هر دو عملکرد عالی را ارائه می دهند و از نقاط قوت Rust برای بهینه سازی تعاملات پایگاه داده استفاده می کنند. در حالی که SeaORM بر سادگی و طراحی شهودی API تمرکز دارد، دیزل بررسی های زمان کامپایل و ایمنی را در اولویت قرار می دهد.
در اینجا جدولی وجود دارد که ویژگی ها و عملکردهای دو ORM را با هم مقایسه می کند:
معیارهای
دیزل
SeaORM
پشتیبانی از پایگاه داده
PostgreSQL، MySQL، SQLite
PostgreSQL، MySQL، SQLite، SQL Server، Oracle
Query Builder
آره
آره
مهاجرت طرحواره
آره
آره
ادغام اتصال
خیر
آره
بارگذاری تنبل
خیر
آره
چک های زمان کامپایل
آره
آره
مستندات
گسترده اما ممکن است برای مبتدیان چالش برانگیزتر باشد
جامع با مثال های واضح
پشتیبانی جامعه
با پایگاه کاربر بزرگتر، منابع فراوان و کانال های چت ایجاد شده است
با یک مخزن فعال GitHub و مشارکت کنندگان به سرعت در حال رشد است
انتخاب بین دیزل و SeaORM به مشخصات پروژه شما بستگی دارد. دیزل پشتیبانی جامعه را ایجاد کرده است و به دلیل ویژگی ها و عملکرد قوی آن ترجیح داده می شود. اگر بررسی های زمان کامپایل، ایمنی و سادگی را در اولویت قرار دهید، دیزل مناسب است.
از سوی دیگر، SeaORM جدید و در حال گسترش است، با پشتیبانی از موتورهای پایگاه داده SQL بیشتر و بارگذاری تنبل. اگر طراحی و بهره وری بصری API را در اولویت قرار دهید SeaORM ممکن است بهتر باشد.
هر دو ORM از پرس و جوها، مهاجرت طرحواره و بررسی های زمان کامپایل پشتیبانی می کنند. قبل از تصمیم گیری، سیستم مدیریت پایگاه داده ای که استفاده می کنید و اندازه پروژه خود را در نظر بگیرید.
دیزل کار با پایگاه های داده را آسان می کند
جامعه منبع باز Rust همچنان به گام های مهمی در ارتقای بلوغ و عملکرد بسته ها و ORM های موجود و آتی ادامه می دهد.
ادعا می شود که دیزل یکی از محبوب ترین ORM ها در اکوسیستم Rust است. پذیرش گسترده دیزل گواهی بر ویژگی های قوی، عملکرد کارآمد و حمایت فعال جامعه است. تیم توسعه دیزل به پالایش و گسترش قابلیتهای خود اختصاص دارد تا اطمینان حاصل شود که راهحل ORM قابل اعتماد و قوی برای توسعهدهندگان Rust باقی میماند.