چگونه پایگاه داده را به اپلیکیشن خود اضافه کنیم (بدون از دست دادن داده در آینده)
برای افزودن پایگاه داده به اپلیکیشن، یک پایگاه داده رابطهای مدیریتشده انتخاب کنید (Postgres معمولاً گزینه پیشفرض است)، رشته اتصال آن را در یک Secret سمت سرور نگه دارید، برای هر نوع چیزی که اپ ذخیره میکند یک جدول بسازید و بکاند خودتان را طوری قرار دهید که داده را بخواند و بنویسد، نه مرورگر. اگر با یک ابزار ساخت اپ هوش مصنوعی کار میکنید، معمولاً کافی است بگویید «این را در پایگاه داده ذخیره کن» و عامل جداول و کد را راهاندازی میکند؛ کار شما این است که دادهها را روشن توصیف کنید و بررسی کنید که واقعاً ماندگار میشوند.
این راهنما توضیح میدهد که چه زمانی به پایگاه داده نیاز دارید، گزینههای اصلی کدامند، چگونه دادههایتان را توصیف کنید و کدام اشتباهات باعث از دست رفتن یا نشت داده میشوند.
چه زمانی اپلیکیشن شما به پایگاه داده نیاز دارد
شما به پایگاه داده نیاز دارید وقتی اپلیکیشن باید بعد از بسته شدن صفحه چیزی را به خاطر بسپارد، یا داده را بین افراد به اشتراک بگذارد. نشانههای معمول:
- بازدیدکنندگان چیزی ارسال میکنند: فرم، ثبتنام، رزرو یا سفارش
- کاربران حساب دارند و محتوای ذخیرهشده شخصی خودشان را دارند
- یک مدیر باید آنچه دیگران ساختهاند را ببیند یا ویرایش کند
- میخواهید گزارش یا شمارش در طول زمان داشته باشید
برای یک سایت ایستا که همه یک محتوا را میبینند، مانند نمونهکار شخصی یا صفحه فرود ساده، پایگاه داده لازم نیست. اگر مطمئن نیستید پایگاه داده دقیقاً چیست، ابتدا پایگاه داده چیست را بخوانید.
گزینههای شما
| گزینه | چیست | مناسب برای | معایب |
|---|---|---|---|
| پایگاه داده داخلی ابزار ساخت اپ | پایگاه دادهای که برای پروژه شما ساخته و متصل میشود | بیشتر اپهایی که با یک ابزار ساخت هوش مصنوعی ساخته میشوند | وابسته به میزبانی همان پلتفرم است؛ خروجیگرفتن و پشتیبانگیری به آن پلتفرم بستگی دارد |
| Postgres یا MySQL مدیریتشده | یک پایگاه داده رابطهای میزبانیشده که جداگانه ثبتنام میکنید | اپهایی که خودتان میزبانی میکنید یا چند سرویس از آن استفاده میکنند | کلیدها، محدودیت اتصال و طرحهای قیمتی را خودتان مدیریت میکنید |
| Backend-as-a-service | پایگاه داده به همراه احراز هویت، ذخیرهسازی و API در یک محصول | اپهای سمت کاربر که ورود آماده میخواهند | مفاهیم خاصتر هر فروشنده را باید یاد بگیرید |
| پایگاه داده سندی (NoSQL) | دادهها را به صورت سندهای انعطافپذیر شبیه JSON ذخیره میکند | دادههای خیلی نامنظم | کار با روابط و گزارشگیری سختتر است |
| صفحهگسترده بهعنوان پایگاه داده | Google Sheets یا مشابه آن از طریق API | ابزارهای داخلی کوچک و نمونههای اولیه | کند است، محدودیت واقعی ندارد و با ویرایش همزمان میشکند |
برای بیشتر اپهای وب کوچک و متوسط، یک پایگاه داده رابطهای مانند Postgres انتخاب درست پیشفرض است. در مدیریت روابط خوب عمل میکند (یک مشتری چند سفارش دارد)، یکپارچگی داده را حفظ میکند و به شما امکان میدهد بعدا با SQL به سؤالها پاسخ دهید. برای مرور سادهای از Postgres، Postgres چیست را ببینید.
پیش از ساخت، دادههایتان را توصیف کنید
مفیدترین کاری که میتوانید انجام دهید این است که چیزهایی را که اپ ذخیره میکند و ارتباطشان با هم را یادداشت کنید. لازم نیست از اصطلاحات پایگاه داده استفاده کنید. برای یک اپ رزرو:
- مشتریان: نام، ایمیل، شماره تماس
- خدمات: نام، مدت زمان، قیمت
- رزروها: مشتری، خدمت، زمان شروع، وضعیت (در انتظار، تأییدشده، لغوشده)
این سه جدول است. «کدام مشتری» و «کدام خدمت» به پیوند (کلید خارجی) میان جداول تبدیل میشوند. درست کردن این ساختار زود از هر انتخاب فناوری مهمتر است، چون تغییر شکل دادهای که از قبل ردیف واقعی دارد، سختتر از تغییر چیدمان یک صفحه است.
چند قاعده کلی:
- یک جدول برای هر نوع چیز. سفارشها را داخل یک ستون متنی روی مشتری نچپانید.
- به هر ردیف یک ID و زمان ایجاد بدهید. بعداً هر دو را لازم خواهید داشت.
- از نوع داده مناسب استفاده کنید. تاریخ را بهعنوان تاریخ، و پول را بهصورت عدد صحیح سنت یا نوع اعشاری ذخیره کنید، نه متن.
- فیلدهای ضروری را ضروری علامت بزنید. بگذارید پایگاه داده داده نادرست را رد کند، نه فقط فرم.
نمونه پرامپتها
با یک قابلیت شروع کنید، نه با ارسال کل ساختار یکجا:
یک پایگاه داده به این اپ اضافه کن. جدولی برای رزروها بساز با نام مشتری، ایمیل، خدمت، زمان شروع و وضعیت (در انتظار، تأییدشده، لغوشده؛ پیشفرض: در انتظار). ارسالهای فرم رزرو را در آن ذخیره کن، پیام موفقیت نشان بده و یک صفحه مدیریت اضافه کن که رزروها را از جدید به قدیم فهرست کند.
سپس آن را گسترش دهید:
یک جدول خدمات اضافه کن (نام، مدت زمان به دقیقه، قیمت به سنت). فیلد متنی آزادِ خدمت در رزروها را با پیوند به جدول خدمات جایگزین کن و رزروهای موجود را بدون حذف آنها مهاجرت بده.
و سپس سختگیرانهتر کنید:
مطمئن شو که همه خواندن و نوشتنهای پایگاه داده روی سرور انجام میشود. مرورگر هرگز نباید رشته اتصال پایگاه داده را دریافت کند. ایمیل و زمان شروع را روی سرور اعتبارسنجی کن، پیش از اینکه داده درج شود.
گام به گام
- دادههایتان را فهرست کنید مطابق بالا: چیزها، فیلدها و پیوندهای بین آنها.
- پایگاه داده را بسازید. در یک ابزار ساخت هوش مصنوعی، آن را در چت درخواست کنید. در جای دیگر، یک نمونه Postgres مدیریتشده بسازید و رشته اتصالش را کپی کنید.
- رشته اتصال را بهعنوان Secret ذخیره کنید (یک متغیر محیطی روی سرور)، هرگز داخل کد. راهنمای متغیرهای محیطی و Secretها را ببینید.
- جدولها را بسازید. از Migration استفاده کنید؛ یعنی اسکریپتهای نسخهدار که ساختار را تغییر میدهند تا تغییرات قابل تکرار و قابل برگشت باشند.
- مسیرهای سرور را بسازید که ردیفها را ایجاد، خواندن، بهروزرسانی و حذف میکنند (CRUD). مرورگر این مسیرها را فراخوانی میکند و هرگز مستقیم با پایگاه داده صحبت نمیکند.
- رابط کاربری را به این مسیرها وصل کنید: فرمهایی که ذخیره میکنند، فهرستهایی که بارگذاری میشوند و حالتهای خالی وقتی هنوز چیزی نیست.
- ماندگاری را آزمایش کنید. چیزی ارسال کنید، صفحه را دوباره بارگذاری کنید و در مرورگر دیگری باز کنید. اگر داده آنجا نیست، یعنی در پایگاه داده ذخیره نشده است.
- دسترسیها را بررسی کنید. با کاربر دوم وارد شوید و تأیید کنید که نمیتوانید داده کاربر اول را ببینید یا ویرایش کنید.
- منتشر کنید، سپس دوباره آزمایش کنید روی آدرس زنده، چون اپ منتشرشده ممکن است از اتصال متفاوتی نسبت به پیشنمایش شما استفاده کند.
اشتباهات رایج
- ذخیره در مرورگر و فکر کردن به اینکه ذخیره شده است. localStorage تا زمانی که کسی اپ را روی دستگاه دیگری باز کند، درست کار میکند. همیشه در مرورگر دوم آزمایش کنید.
- گذاشتن رشته اتصال در کد سمت کاربر. هر کسی میتواند کد فرانتاند را بخواند. این یعنی دسترسی کامل به پایگاه داده شما.
- نبود بررسی دسترسی. «سفارشهای من را نشان بده» باید روی سرور بر اساس کاربر واردشده فیلتر شود، نه در رابط کاربری. این رایجترین حفره امنیتی در اپهای ساختهشده با هوش مصنوعی است؛ چکلیست امنیتی این موضوع را پوشش میدهد.
- تغییرات مخرب در ساختار. درخواست «تغییر نام جدول» یا «تغییر ساختار» ممکن است آن را حذف و دوباره بسازد. وقتی داده واقعی وجود دارد، بگویید «ردیفهای موجود را مهاجرت بده، چیزی را حذف نکن».
- ذخیره فایل داخل پایگاه داده. تصاویر و PDFها باید در ذخیرهسازی فایل باشند و فقط URL یا کلید آنها در جدول قرار گیرد. راهنمای افزودن آپلود فایل را ببینید.
- نداشتن پشتیبان. پیش از داشتن مشتری بدانید پلتفرم شما چگونه از داده پشتیبان میگیرد و چطور آن را بازیابی میکنید.
چکلیست
- هر نوع چیز جدول مخصوص خودش را با ID و زمان ایجاد دارد
- فیلدهای ضروری و نوعها توسط پایگاه داده اعمال میشوند
- رشته اتصال فقط در Secretهای سمت سرور است
- همه خواندنها و نوشتنها از مسیرهای سرور عبور میکنند
- هر کاربر فقط میتواند ردیفهای خودش را بخواند و تغییر دهد
- داده بعد از بارگذاری مجدد صفحه باقی میماند و در مرورگر دیگری دیده میشود
- تغییرات ساختار از Migration استفاده میکنند و ردیفهای موجود را نگه میدارند
- میدانید پشتیبانگیری و بازیابی چگونه کار میکند
- اپ زنده پس از انتشار آزمایش شده است
افزودن پایگاه داده در Mythex
در Mythex، هر پروژه میتواند پایگاه داده Postgres اختصاصی داشته باشد، در پلنهای Free و Pro. معمولاً لازم نیست دکمه جداگانهای برای «اتصال» بزنید: در چت درخواست کنید («شمارههای لیست انتظار را در پایگاه داده ذخیره کن») یا /database را تایپ کنید، و اطلاعات اتصال به فضای کار و اپ منتشرشده شما تزریق میشود. در تنظیمات پروژه نشان داده میشود که پایگاه داده فعال است یا نه.
پایگاه داده بعد از ۵ دقیقه بیکاری به خواب میرود و با اولین درخواست بیدار میشود. هزینه مصرف منتشرشده بر اساس زمانی محاسبه میشود که واقعاً بیدار بوده، از همان موجودی اعتباری که برای ساخت استفاده میکنید. اگر بعد از انتشار پایگاه داده اضافه کنید، دوباره منتشر کنید تا اپ زنده آن را دریافت کند.
برای جزئیات به پایگاه داده و دستور آموزشی ساخت اپ CRUD در مستندات مراجعه کنید. برای بخش ورود کاربران در دادههای اختصاصی هر کاربر، چگونه ورود به اپلیکیشن را اضافه کنیم را بخوانید.
پرسشها
آیا برای اپلیکیشنم به پایگاه داده نیاز دارم؟
به محض اینکه اپلیکیشن شما باید بین بازدیدها چیزی را به خاطر بسپارد یا داده را میان کاربران به اشتراک بگذارد، به پایگاه داده نیاز دارید: ثبتنام، سفارش، رزرو، پست یا تنظیمات. یک وبسایت ایستا که فقط همان محتوا را برای همه نشان میدهد، به پایگاه داده نیازی ندارد.
برای یک اپ وب کوچک کدام پایگاه داده را باید استفاده کنم؟
یک پایگاه داده رابطهای مانند Postgres برای بیشتر اپهای وب کوچک انتخاب پیشفرض و مطمئنی است. کاربران، سفارشها، روابط و گزارشگیری را خوب مدیریت میکند، پشتیبانی گستردهای دارد و در مقیاس کوچک به ندرت از آن فراتر میروید.
آیا میتوانم داده را به جای پایگاه داده در مرورگر ذخیره کنم؟
ذخیرهسازی مرورگر مانند localStorage فقط روی یک دستگاه و در یک مرورگر وجود دارد و کاربر میتواند هر زمان آن را پاک کند. برای ترجیحاتی مانند انتخاب تم مناسب است، اما برای چیزی که شما یا دیگر کاربران بعدا باید ببینید مناسب نیست.
آیا Mythex پایگاه داده هم دارد؟
بله. هر پروژه Mythex میتواند پایگاه داده اختصاصی Postgres خودش را در پلنهای Free و Pro داشته باشد. آن را در چت درخواست میکنید یا از دستور /database استفاده میکنید و اطلاعات اتصال بهصورت خودکار در پروژه و اپ منتشرشده شما قرار میگیرد. هزینه استفاده از همان موجودی اعتباری کسر میشود که برای ساخت اپ مصرف میکنید.