Prisma 4 ORM مدرن با پشتیبانی از پایگاههای داده پیشرفته!

Prisma چیست؟ + تجربه استفاده من از ORM پریسما پریزما عرفان رنجبران

می‌توانید کد سرور ما را در فهرست ۴ ببینید، که در داخل فایل iniw-prisma/server.js قرار می‌گیرد. لیست ۴ کد وانیلی اکسپرس است، اما به لطف Prisma می‌توانیم با کمترین تلاش در برابر پایگاه داده کارهای زیادی انجام دهیم. Prisma یک لایه نگاشت داده محبوب (ORM) برای جاوا اسکریپت و TypeScript سمت سرور است. هدف اصلی آن ساده سازی و خودکارسازی نحوه حرکت داده ها بین ذخیره سازی و کد برنامه است. Prisma از طیف وسیعی از ذخیره‌گاه‌های داده پشتیبانی می‌کند و یک لایه انتزاعی قدرتمند و در عین حال انعطاف‌پذیر برای ماندگاری داده‌ها فراهم می‌کند.

زبان Prisma schema یک زبان declarative است که به ما این امکان را می‌دهد که مدل داده و روابط بین مدل‌های خود را تعریف کنیم. قبل از Prisma، ابزارهای پایگاه داده‌ای که در اکوسیستم Node و TypeScript وجود داشتند، از توسعه‌دهندگان می‌خواستند بین بهره‌وری و انتزاع یا کنترل، انتخاب سختی داشته باشند. مخازن از دکوراتورها برای تعیین نگاشت بین ویژگی های موجودیت و ستون های پایگاه داده استفاده می کنند. ORMهای Mapper داده، انعطاف‌پذیری بیشتری را بین حوزه مشکل که در کد پیاده‌سازی می‌شود و پایگاه داده امکان‌پذیر می‌کنند. به سمت خود حرکت کنید sign-up مسیر و sign-in مسیر و سعی کنید ابتدا کاربر را با ایمیل، نام و رمز عبور ثبت نام کنید و سپس از ایمیل یا نام کاربری استفاده کنید. را به روز کنید email میدان به emailOrUsername.برای تعیین اینکه آیا ورودی یک ایمیل یا نام کاربری است از یک تابع ابزار استفاده کنید.

علاوه بر این، کلاس‌های مدل می‌توانند منطق تجاری مختص داده‌های مدل را حمل کنند. سنسور‌های هوشمند نصب شده در زیر کف کاذب و سقف مرکزداده، پوشش کاملی برای تشخیص هرگونه حریق احتمالی فراهم می‌کنند. سیستم اطفای اتوماتیک با استفاده از گاز FM200 سازگار با محیط زیست، به صورت زون‌‌‌بندی شده عمل کرده و قادر است در کمتر از ۱۰ ثانیه، بدون آسیب به تجهیزات حساس مرکز‌داده، عملیات اطفاء را انجام دهد. این سیستم‌‌ها به صورت مداوم توسط مرکز کنترل پایش شده و به طور منظم و به صورت ادواری مورد تست و نگهداری قرار می‌گیرند تا از عملکرد صحیح آنها اطمینان حاصل شود. شیلد الکترومغناطیسی مرکز داده ابرآمد در راستای الزامات پدافند غیرعامل و حفاظت از تجهیزات حساس در برابر تهدیدات الکترومغناطیسی طراحی و اجرا شده است. این سیستم حفاظتی پیشرفته با استفاده از لایه‌های محافظ ویژه در دیوارها، سقف و کف مرکز داده، محیطی کاملاً ایزوله در برابر امواج الکترومغناطیسی (EMI) و پالس‌های الکترومغناطیسی (EMP) ایجاد میکند.

به خاطر داشته باشید که Prisma ممکن است برای پروژه هایی که به شدت به کوئری های SQL متکی هستند یا به کنترل پایگاه داده بیشتری نیاز دارند مناسب نباشد. با این حال، ویژگی‌های قدرتمند آن از جمله ایمنی نوع، سهولت یکپارچه‌سازی، دسترسی و مدیریت پایگاه داده، DX و موارد دیگر به آن برتری نسبت به SQL ساده، سازندگانکوئری SQL یا سایر ORM ها می‌دهد. عملکرد پریسما عمیقاً ریشه در انتزاع سطح بالایی از کوئریها و تعاملات پایگاه داده دارد در حالی که کوئری های ایمن برای نوع ارائه می دهد. این به توسعه دهندگان اجازه می دهد تا با ایجاد کوئری های مبتنی بر SQL از اسکیما Prisma، واکشی داده ها را انجام دهند. این فایل مایگرشن SQLite را در برابر پایگاه داده ای که ارائه کرده اید اجرا می کند و یک فایل مایگرشن SQLite جدید برای این مایگرشن در دایرکتوری prisma/migrations ایجاد می کند. هنگامی که پایگاه داده SQLite خود را بارگیری مجدد می کنید، خواهید دید که اکنون جدولی به نام کاربران دارید که می توانید با آن تعامل داشته باشید.

همانطور که قبلا ذکر شد، Prisma بسیاری از گردش‌های کاری پایگاه داده را که توسعه‌دهندگان هنگام تعامل با پایگاه‌های داده به آن نیاز دارند، پوشش می‌دهد. این معماری به ما امکان می‌دهد از ویژگی‌های امنیتی عملکرد شگفت‌انگیز Next.js با رندر سمت سرور بهره ببریم، در حالی که همچنان با استفاده از NestJS یک باطن مقیاس‌پذیر تمیز حفظ می‌کنیم. با ساختن یک برنامه خرید واقعی و کارآمد یکپارچه با Stripe برای پذیرش پرداخت‌ها، فراتر از مستندات خواهیم آموخت که چه چیزی برای ساخت و استقرار یک برنامه وب تمام پشته برای تولید لازم است. فهرست ۱ شامل یک تعریف منبع داده (یک پایگاه داده ساده SQLite که Prisma برای اهداف توسعه شامل می‌شود) و یک تعریف مشتری با “مشتری ژنراتور” تنظیم شده روی prisma-client-js است. دومی به این معنی است که Prisma یک کلاینت جاوا اسکریپت تولید می کند که برنامه می تواند از آن برای تعامل با نقشه ایجاد شده توسط تعریف استفاده کند.

این اسناد همه چیز را از اصول اولیه چیستی Prisma و چرایی ایجاد آن گرفته تا نصب، راهنماهای شروع کار و آموزش های ویدیویی، موضوعات پیشرفته و مراجع API را پوشش می دهد. به این ترتیب Prisma مایگرشن های پایگاه داده را ساده می کند و فرآیند را کمتر پیچیده می کند. توجه داشته باشید که باید مقدار فیلد env(\"DATABASE_URL\") را با آدرس پایگاه داده واقعی خود در فایل env. اکنون که در مورد اینکه چرا باید از Prisma استفاده کنید و مراحل شروع سریع را بررسی کردیم، بحث کردیم، اجازه دهید برخی از ویژگی های برجسته Prisma را بررسی کنیم. این به ما کمک می کند تا در مورد آنچه که این ابزار را متمایز می کند و آن را به گزینه ای عالی برای پروژه های فرانت اند تبدیل می کند بیشتر بدانیم. GenerateUsernameتابع برای تولید نام کاربری تصادفی از نام داده شده کاربر استفاده می شود.

برخی از توسعه دهندگان باید با درایورهای پایگاه داده سطح پایین و سازندگان کوئری کار کنند تا کنترل بیشتری بر کوئریها، تراکنش ها و بهینه سازی پایگاه داده خود داشته باشند. این به Prisma برتری نسبت به سازندگانکوئری SQL و SQL ساده از چندین جهت می دهد. Prisma Migrate به خودکارسازی فرآیند مدیریت تغییرات در اسکیما پایگاه داده پایگاه کد شما کمک می کند. این یک تاریخچه از فایل مایگرشن تولید می کند و به شما امکان می دهد که اسکیما پایگاه داده خود را با اسکیما Prisma خود هماهنگ کنید، زیرا در طول توسعه و تولید تغییر می کند. Prisma Client یک سازنده کوئری به صورت خودکار و ایمن است که بر اساس داده های شما طراحی شده است و راه راحت تری برای تعامل با پایگاه های داده ارائه می دهد. این ویژگی به این معنی است که شما نیازی به نوشتن کوئری های خام SQL به صورت دستی ندارید، که تعاملات پایگاه داده را ساده می‌کند و فرآیند توسعه frontend را بهبود می‌بخشد.

در اینجا مدل داده خود را مشخص کرده و نام آن را User می گذاریم. یک مدل در Prisma اساسا یک جدول (پایگاه داده رابطه ای) یا یک مجموعه (پایگاه داده غیر رابطه ای) را نشان می دهد. این مدل دارای دو فیلد است که با اجرای مایگرشن اولیه ایجاد می شود. سیستم اعلام و اطفای حریق مرکز داده ابرآمد با بهره‌گیری از پیشرفته‌ترین تجهیزات و مطابق با استانداردهای بین‌المللی طراحی و پیاده‌‌سازی شده است. این سیستم با استفاده از سنسورهای دود و حرارت پیشرفته، قابلیت تشخیص زودهنگام دود در مراحل اولیه را داراست و با شبکه یکپارچه مانیتورینگ به صورت ۲۴/۷ پایش می‌شود. علاوه بر این، ما استقرار تولید را با استفاده از AWS Vercel پوشش خواهیم داد تا یک خط لوله تحویل مداوم را پیاده سازی کنیم و برنامه خود را در یک دامنه واقعی در معرض اینترنت قرار دهیم.

سپس، به Prisma بگویید که SQLite را با طرحی آماده کند، همانطور که در فهرست ۳ نشان داده شده است. یک تور عملی از ابزار پیشرو نگاشت شی رابطه‌ای جاوا اسکریپت، که می‌توانید با MongoDB و پایگاه‌های داده سنتی استفاده کنید، دریافت کنید. اگر از PostgreSQL یا چیز دیگری هم استفاده می‌کردیم، همین کار را انجام می‌دادیم. تنها تفاوت این است که باید اتصال دیتابیس خود را در فایل env. Flag --name به ما اجازه می‌دهد تا یک نام به migration خود اختصاص بدهیم، که گزینه اختیاری است. زیرا، اگر نامی ارائه نکنیم Prisma یک نام برای آن ایجاد خواهد کرد.

باز کنید auth.ts در مخزن پروژه خود فایل کنید و سپس آن را اضافه کنید username()پلاگین به آرایه پلاگین از تابع betterAuth. فول‌استک (full-stack) به کسی گفته میشه که می‌تونه هم سمت سرور (back-end) و هم سمت ظاهر وب سایت (front-end) رو کد بزنه و پیاده‌سازی کنه. نقطه پایانی POST که برای افزودن یک برچسب استفاده می‌شود، از نمونه‌های قبلی آشناست. در فهرست ۸، نقطه پایانی POST را نیز برای مرتبط کردن یک ایده با یک برچسب اضافه کرده‌ایم. فهرست ۵ به ما نشان می‌دهد که همه کاربران را دریافت می‌کنیم و یک مجموعه خالی پیدا می‌کنیم، سپس کاربران را اضافه می‌کنیم، سپس مجموعه پر شده را دریافت می‌کنیم. روش findMany() بدون هیچ آرگومان، تمام ردیف‌های پایگاه داده را برمی‌گرداند.

قبل از Prisma، کار با اشیاء ORM پیچیده و کوئری های SQL با استفاده از پایگاه‌های داده رابطه‌ای اغلب باعث ایجاد گلوگاه‌های مهم در فرآیند توسعه می‌شد. همه چیز با اسکیمای Prisma شروع می شود، جایی که می توانید مدل های پایگاه داده و روابط را با استفاده از زبان اسکیمای Prisma، یک زبان مدل سازی داده بصری تر تعریف کنید. تمامی تابلوهای توزیع برق مجهز به سیستم‌‌های حفاظتی پیشرفته و تجهیزات اندازه‌‌گیری دقیق هستند که علاوه بر تأمین برق پایدار، از تجهیزات در برابر اختلالات الکتریکی محافظت می‌کنند. این زیرساخت پیشرفته برق، همراه با سیستم‌‌های پشتیبان UPS و ژنراتور، تضمین‌کننده در دسترس بودن مداوم سرویس‌ها با بالاترین کیفیت توان الکتریکی است. باز کنید login-schema.tsدر مخزن پروژه خود فایل کنید و طرحواره را با کد زیر به روز کنید.

همچنین روابط بین مدل‌های خود را این گونه تنظیم کرده‌ایم که یک کاربر می‌تواند دارای چندین تعداد مقاله باشد اما هر مقاله فقط می‌تواند یک نویسنده داشته باشد. همینطور، فیلد autorId در مدل Article به فیلد id در مدل User رفرنس دارد. Prisma دارای یک جامعه بزرگ و همیشه در حال تکامل از توسعه دهندگان و مشارکت کنندگان مهمان است. همچنین دارای یک مخزن فعال GitHub است که در آن توسعه دهندگان می توانند مشکلات مربوط به کیت ابزار Prisma را ماسکیما کنند و درخواست های ادغام را برای رفع مشکل و ویژگی های جدید ارسال کنند. همچنین کانال های Discord و Slack برای سوالات و پیشنهادات جامعه وجود دارد.

کلیه پارامترهای حیاتی از جمله دما، رطوبت، مصرف برق، وضعیت UPS‌ها، عملکرد باتری‌ها، ژنراتور‌ها و سیستم‌های سرمایشی به طور مداوم رصد و تحلیل می‌شوند تا از عملکرد صحیح آنها اطمینان حاصل شود. این نظارت هوشمند و پیش‌‌دستانه، امکان شناسایی و رفع مشکلات احتمالی را پیش از بروز اختلال فراهم می‌کند. برای تضمین برق بدون وقفه، مرکز داده ابرآمد از UPS‌های پیشرفته با باتری‌های لیتیوم-یون و ژنراتورهای دیزلی با قابلیت کارکرد مداوم بهره می‌برد. سیستم UPS علاوه بر تامین برق اضطراری، با فیلتر کردن نوسانات و اختلالات برق ورودی، برق پایدار و با کیفیت را برای تجهیزات حساس مرکز داده فراهم می‌کند. حالا اجازه ایجاد کاربران با نقطه پایانی RESTful در Express.js را می دهیم.

سیستم تأمین برق مرکز داده ابرآمد با بهره‌گیری از دو پست برق مستقل از شبکه توزیع شهری و معماری افزونگی کامل (2N)، از دو مسیر کاملاً مجزا با ظرفیت ۷۵۰ کیلووات برای هر منبع برخوردار است. این طراحی دوگانه تضمین می‌کند که در صورت بروز اختلال در یکی از مسیرهای برق، تجهیزات مرکز‌‌داده از مسیر دوم برق استفاده کرده و بدون وقفه به کار خود ادامه می‌دهند. کل پروژه با احراز هویت استاندارد صنعتی JWT محافظت می شود، بنابراین فقط کاربران احراز هویت می توانند به برنامه ما دسترسی داشته باشند. ما از WebSockets استفاده می کنیم تا هر زمان که محصول جدیدی اضافه یا خریداری شود، به روز رسانی های بلادرنگ را از باطن خود دریافت کنیم. برای مرتبط کردن یک ایده و یک برچسب، از نگاشت چند به چند از تعریف مدل استفاده می‌کنیم.

Introspection بیشتر برای تولید نسخه اولیه مدل داده هنگام اضافه کردن Prisma به یک پروژه موجود استفاده می شود. عملکرد کلیدی درون نگری پر کردن اسکیمای پریسما با مدل داده ای است که اسکیمای پایگاه داده فعلی را منعکس می کند. اجرای این دستور یک دایرکتوری برای پروژه شما ایجاد می کند، به آن دایرکتوری تغییر می کند و سپس با استفاده از دستور، یک پروژه اصلی Node.js ایجاد می کند. Prisma نه تنها پایگاه داده آگنوستیک است، بلکه پلتفرم نیز آگنوستیک است. این با چندین فن‌آوری frontend سازگار است، به این معنی که می‌توانیم از Prisma برای عملیات پایگاه داده در حین کار با APIهای Backend در Next.js، Vue.js، Angular و موارد دیگر استفاده کنیم.

این اطمینان حاصل می کند که برنامه به طور خودکار با هر commit بدون نیاز به انجام کاری ساخته می شود. برای مدل User یک فیلد id داریم که یک Int است و کلید اصلی می‌باشد. همچنین یک فیلد email داریم که هم تایپ رشته دارد و منحصربه‌فرد است. پس از آن یک فیلد name داریم که تایپ آن هم رشته می‌باشد و یک ? همچنین یک فیلد articles هم داریم که آرایه‌ای از مدل‌های Article را شامل می‌شود.

بیایید همانطور که در فهرست ۵ نشان داده شده است، نقاط پایانی خود را با CURL آزمایش کنیم. اکنون اگر مقالات و یا کاربران همراه با مقاله را در کنسول نمایش دهیم، می‌بینیم که این مقاله دیگر وجود ندارد. با این کد یک کاربر جدید می‌سازیم و آن را در کنسول نمایش می‌دهیم. اسکیما Prisma به عنوان فایل پیکربندی پایه برای راه اندازی Prisma شما عمل می کند. به عبارت دیگر، به عنوان پایه ای برای ساخت و ساختار مدل های پایگاه داده، روابط و محدودیت های شما عمل می کند.

بعد با پشتیبانی از SSG و SSR شکاف بین کلاینت و سرور را پر می کند. سیستم امنیتی چندلایه دیتاسنتر ابرآمد با رعایت بالاترین استانداردهای امنیتی طراحی و پیاده‌‌سازی شده است. این سیستم شامل چندین لایه حفاظتی است که از بیرونی‌‌ترین محیط تا حساس ترین نقاط مرکز داده را پوشش می‌دهد. تیم حفاظت فیزیکی متشکل از نگهبانان آموزش دیده به صورت ۲۴/۷ از محیط مرکز داده محافظت کرده و تمامی ترددها را کنترل و ثبت می‌کنند. ورود به مرکز داده از طریق درب‌‌های هوشمند با سیستم اکسس کنترل پیشرفته کنترل می‌شود که دسترسی به نواحی مختلف را بر اساس سطوح دسترسی از پیش تعریف شده محدود می‌کند.

به این صورت که، statementهای SQL را می‌سازد تا تغییرات لازم را در دیتابیس ایجاد نماید و در عین حال از دست دادن داده یا خرابی را به حداقل برساند. یک اشکال بالقوه Prisma این است که منحنی یادگیری برای توسعه دهندگانی که از نوشتن کوئری های ساده SQL یا استفاده از سازندگان کوئری SQL می توانند شیب دار باشد. با این حال، این جایگزین‌ها معمولاً ویژگی‌ها و سهولت استفاده را که Prisma ارائه می‌کند، ارائه نمی‌کنند. در همین حال، مانند Prisma، سازندگان کوئری های SQL مانند Knex یا Sequelize به توسعه دهندگان اجازه می دهند کوئری های خود را با استفاده از رابط خود بسازند و به آنها کنترل بیشتری بر ساخت کوئری می دهد. این سازندگان کوئری ممکن است به اندازه Prisma کارآمد نباشند، زیرا توسعه دهندگان هنوز باید اطمینان حاصل کنند که کوئری های آنها به درستی برای عملکرد بهینه شده است.

برای آزمایش نقاط پایانی جدید، می‌توانیم از دستورات CURL نشان داده شده در فهرست ۷ استفاده کنیم. همانطور که در این مقاله دیدیم، Prisma کار با دیتابیس را ساده‌تر می‌کند. برای کسب اطلاعات بیشتر درمورد Prisma مطالعه مستندات می‌تواند مفید باشد. تابع main را فراخوانی می‌کنیم و در نمونه prisma که ساختیم، متد $disconnect را فراخوانی می‌نماییم. همچنین هر گونه خطا را شناسایی کرده و آن‌ها را در کنسول ثبت می‌کنیم.

به طوری که کاربر می تواند با استفاده از ایمیل یا نام کاربری وارد سیستم شود. می‌توانیم از Prisma Client با هر برنامه Node.js یا تایپ اسکریپتی استفاده کنیم. این مورد شامل برنامه‌های Full Stack، REST API، GraphQL API، CLI و موارد دیگر می‌شود. این زیرساخت شامل فایروال‌های نسل جدید (NGFW)، سیستم‌های پیشرفته WAF (Web Application Firewall) ،IPS/IDS و راهکارهای جامع Anti-DDoS است که همگی در لبه تکنولوژی قرار دارند. سرورها و تجهیزات شبکه از برترین تولیدکنندگان جهانی انتخاب شده‌اند تا بالاترین سطح کارایی، امنیت و پایداری را برای مشتریان فراهم آورند. این معماری چندلایه امنیتی همراه با سیستم‌های مانیتورینگ پیشرفته و تیم‌های تخصصی، تضمین‌کننده ارائه سرویس‌های امن و پایدار در سطح استانداردهای جهانی است.

در دنیای دائماً در حال توسعه توسعه وب، انتخاب ابزارها و فریم‌ورک‌های مناسب می‌تواند تغییرات مفید بسیار زیادی را ایجاد کند. یکی از ابزارهایی که مدتی است مورد توجه توسعه‌دهندگان قرار گرفته است، Prisma می‌باشد. Prisma یک ORM و جعبه ابزار دیتابیس مدرن متن باز است که کار با دیتابیس را برای توسعه‌دهندگان آسان‌تر می‌کند. نحوه کار Prisma شبیه به نحوه کار مواردی مانند Sequelize یا Mongoose برای MongoDB است. ما می‌توانیم از Prisma تقریباً برای هر چیزی، از REST API گرفته تا GraphQL API و CLI و برنامه‌های Full-Stack استفاده نماییم.

در این راهنما اجرا خواهیم کرد احراز هویت نام کاربری و رمز عبور برای یک برنامه وب مدرن با استفاده از پشته ای قوی و ایمن از ابزار. این ویژگی موجود را تکمیل خواهد کرد احراز هویت ایمیل و رمز عبور در برنامه. در پایان این آموزش، برنامه شما به کاربران اجازه می دهد تا با هر کدام از آنها وارد سیستم شوند نام کاربری یا ایمیل، با اختیاری احراز هویت دو عاملی مبتنی بر OTP (2FA) برای امنیت بیشتر. Summarize this content to 400 words in Persian Langدر این راهنما اجرا خواهیم کرد احراز هویت نام کاربری و رمز عبور برای یک برنامه وب مدرن با استفاده از پشته ای قوی و ایمن از ابزار. قبل از اینکه به پیاده سازی احراز هویت نام کاربری و رمز عبور در برنامه کامل پشته شما بپردازیم. به اطلاع شما می‌رسانم که در این وبلاگ احراز هویت نام کاربری و رمز عبور با احراز هویت ایمیل و رمز عبور موجود را پیاده‌سازی می‌کنیم.


برنامه نویسی جاوا