ایپ میں ڈیٹا بیس کیسے شامل کریں (بعد میں ڈیٹا ضائع ہونے سے بچنے کے لیے)
ایپ میں ڈیٹا بیس شامل کرنے کے لیے ایک منیج شدہ ریلیشنل ڈیٹا بیس چنیں (Postgres عام طور پر پہلی پسند ہوتا ہے)، اس کی کنکشن اسٹرنگ سرور سائیڈ سیکرٹ میں رکھیں، اپنی ایپ میں محفوظ ہونے والی ہر قسم کی چیز کے لیے ایک ٹیبل بنائیں، اور یقینی بنائیں کہ آپ کا بیک اینڈ ڈیٹا بیس سے پڑھتا اور اس میں لکھتا ہے، براؤزر نہیں۔ اگر آپ AI ایپ بلڈر سے بنا رہے ہیں تو اکثر آپ صرف “اس کو ڈیٹا بیس میں محفوظ کرو” کہہ سکتے ہیں اور ایجنٹ ٹیبلز اور کوڈ خود بنا دیتا ہے۔ آپ کا کام ڈیٹا کو واضح طور پر بیان کرنا اور یہ جانچنا ہے کہ وہ واقعی محفوظ ہو رہا ہے۔
یہ گائیڈ بتاتی ہے کہ ڈیٹا بیس کب ضروری ہے، بنیادی آپشنز کیا ہیں، اپنے ڈیٹا کو کیسے بیان کریں، اور وہ غلطیاں کیا ہیں جن سے ڈیٹا ضائع یا لیک ہوتا ہے۔
ایپ کو ڈیٹا بیس کب چاہیے
ڈیٹا بیس کی ضرورت تب ہوتی ہے جب آپ کی ایپ کو صفحہ بند ہونے کے بعد کچھ یاد رکھنا ہو، یا لوگوں کے درمیان ڈیٹا شیئر کرنا ہو۔ عام نشانیاں یہ ہیں:
- وزیٹرز کچھ جمع کراتے ہیں: فارم، سائن اپ، بکنگ یا آرڈر
- صارفین کے اپنے اکاؤنٹس ہیں جن میں ان کا محفوظ کردہ مواد ہے
- ایڈمن کو وہ چیزیں دیکھنی یا بدلنی ہوں جو دوسروں نے بنائی ہیں
- آپ کو وقت کے ساتھ رپورٹس یا گنتی چاہیے
اگر آپ کی سٹیٹک سائٹ ہے جہاں سب کو ایک ہی مواد نظر آتا ہے، جیسے پورٹ فولیو یا سادہ لینڈنگ پیج، تو آپ کو ڈیٹا بیس کی ضرورت نہیں۔ اگر آپ کو یقین نہیں کہ ڈیٹا بیس اصل میں کیا ہوتا ہے تو پہلے ڈیٹا بیس کیا ہے پڑھیں۔
آپ کے آپشنز
| آپشن | یہ کیا ہے | کس کے لیے بہتر | نقصانات |
|---|---|---|---|
| آپ کے ایپ بلڈر کا بنیاد سے آیا ہوا ڈیٹا بیس | ایک ڈیٹا بیس جو آپ کے پروجیکٹ کے لیے بنایا اور جوڑا جاتا ہے | AI بلڈر سے بنی زیادہ تر ایپس | اس پلیٹ فارم کی ہوسٹنگ سے جڑا ہوتا ہے؛ ایکسپورٹ اور بیک اپ پلیٹ فارم پر منحصر ہیں |
| منیج شدہ Postgres یا MySQL | ایک ہوسٹڈ ریلیشنل ڈیٹا بیس جو آپ الگ سے سائن اپ کر کے لیتے ہیں | وہ ایپس جنہیں آپ خود ہوسٹ کرتے ہیں، یا جو کئی سروسز مل کر استعمال کرتی ہیں | کیز، کنکشن کی حدیں اور پلانز آپ خود سنبھالتے ہیں |
| بیک اینڈ-اَز-اے-سروس | ایک ہی پروڈکٹ میں ڈیٹا بیس، آتھ، اسٹوریج اور APIs | فرنٹ اینڈ پر زیادہ زور والی ایپس جنہیں تیار لاگ اِن چاہیے | زیادہ مخصوص وینڈر تصورات سیکھنے پڑتے ہیں |
| ڈاکیومنٹ (NoSQL) ڈیٹا بیس | لچکدار JSON جیسے ڈاکیومنٹس محفوظ کرتا ہے | بہت غیر یکساں ڈیٹا | تعلقات اور رپورٹنگ مشکل ہو جاتی ہے |
| اسپریڈشیٹ کو ڈیٹا بیس کے طور پر | Google Sheets یا ملتی جلتی سروس API کے ذریعے | چھوٹے اندرونی ٹول، پروٹوٹائپس | سست، کوئی حقیقی پابندیاں نہیں، ایک ساتھ ایڈٹ ہونے پر ٹوٹ جاتا ہے |
زیادہ تر چھوٹی اور درمیانی ویب ایپس کے لیے Postgres جیسا ریلیشنل ڈیٹا بیس صحیح بنیادی انتخاب ہے۔ یہ تعلقات سنبھالنے میں اچھا ہے (ایک گاہک کے کئی آرڈرز ہو سکتے ہیں)، ڈیٹا کو مستقل رکھتا ہے، اور بعد میں SQL کے ذریعے سوالات کے جواب دینے دیتا ہے۔ سادہ زبان میں جانکاری کے لیے Postgres کیا ہے دیکھیں۔
بنانے سے پہلے اپنا ڈیٹا بیان کریں
سب سے مفید کام یہ ہے کہ وہ چیزیں لکھیں جو آپ کی ایپ محفوظ کرتی ہے اور یہ کہ وہ آپس میں کیسے جڑی ہیں۔ آپ کو ڈیٹا بیس کی اصطلاحات کی ضرورت نہیں۔ بکنگ ایپ کی مثال:
- گاہک: نام، ای میل، فون
- سروسز: نام، دورانیہ، قیمت
- بکنگز: کون سا گاہک، کون سی سروس، شروع کا وقت، حیثیت (زیر التوا، تصدیق شدہ، منسوخ)
یہ تین ٹیبلز ہیں۔ “کون سا گاہک” اور “کون سی سروس” ان کے درمیان لنک (فارن کیز) بن جاتے ہیں۔ اسے شروع میں درست کرنا کسی بھی ٹیکنالوجی کے انتخاب سے زیادہ اہم ہے، کیونکہ جس ڈیٹا میں پہلے سے اصل قطاریں موجود ہوں اس کی ساخت بدلنا صفحے کے لے آؤٹ بدلنے سے زیادہ مشکل ہے۔
چند عملی اصول:
- ہر قسم کی چیز کے لیے ایک ٹیبل۔ آرڈرز کو گاہک کے کسی ٹیکسٹ کالم میں نہ ٹھونسیں۔
- ہر قطار کو ایک ID اور بنانے کا وقت دیں۔ بعد میں دونوں کی ضرورت پڑے گی۔
- درست ڈیٹا ٹائپس استعمال کریں۔ تاریخیں تاریخ کے طور پر، رقم سینٹس میں یا decimal ٹائپ میں، ٹیکسٹ کے طور پر نہیں۔
- ضروری فیلڈز کو لازمی نشان زد کریں۔ صرف فارم نہیں، ڈیٹا بیس بھی غلط ڈیٹا کو مسترد کرے۔
مثالی پرامپٹس
پورا schema ایک ساتھ ڈالنے کے بجائے ایک وقت میں ایک فیچر سے شروع کریں:
اس ایپ میں ڈیٹا بیس شامل کرو۔ bookings ٹیبل بناؤ جس میں گاہک کا نام، ای میل، سروس، شروع کا وقت اور حیثیت ہو (pending، confirmed، cancelled؛ ڈیفالٹ pending)۔ بکنگ فارم کی جمع شدہ معلومات اس میں محفوظ کرو، کامیابی کا پیغام دکھاؤ، اور ایک ایڈمن صفحہ بناؤ جو بکنگز کو نئی سب سے پہلے دکھائے۔
پھر اسے بڑھائیں:
services ٹیبل شامل کرو (نام، منٹس میں دورانیہ، سینٹس میں قیمت)۔ bookings پر موجود مفت متنی سروس فیلڈ کو services سے لنک سے بدل دو، اور موجودہ بکنگز کو حذف کیے بغیر منتقل کرو۔
اور اسے مزید سخت کریں:
یقینی بناؤ کہ تمام ڈیٹا بیس ریڈز اور رائٹس سرور پر ہوں۔ براؤزر کو کبھی بھی ڈیٹا بیس کنکشن اسٹرنگ نہ ملے۔ ڈالنے سے پہلے سرور پر ای میل اور شروع کے وقت کی تصدیق کرو۔
مرحلہ وار طریقہ
- اپنا ڈیٹا فہرست بنائیں، جیسا اوپر بتایا: چیزیں، فیلڈز، اور ان کے درمیان تعلقات۔
- ڈیٹا بیس بنائیں۔ AI بلڈر میں چیٹ میں درخواست کریں۔ کہیں اور منیج شدہ Postgres بنائیں اور اس کی کنکشن اسٹرنگ کاپی کریں۔
- کنکشن اسٹرنگ کو سیکرٹ کے طور پر محفوظ کریں (سرور پر ایک environment variable)، کبھی کوڈ میں نہیں۔ دیکھیں environment variables اور secrets۔
- ٹیبلز بنائیں۔ migrations استعمال کریں، یعنی ورژن شدہ اسکرپٹس جو schema بدلتے ہیں، تاکہ تبدیلیاں دہرائی جا سکیں اور واپس لی جا سکیں۔
- سرور راؤٹس بنائیں جو قطاریں بنائیں، پڑھیں، اپڈیٹ کریں اور حذف کریں (CRUD)۔ براؤزر انہی راؤٹس کو کال کرتا ہے، ڈیٹا بیس کو براہ راست نہیں۔
- UI کو ان راؤٹس سے جوڑیں: وہ فارم جو محفوظ کریں، وہ فہرستیں جو لوڈ ہوں، اور جب کچھ نہ ہو تو خالی حالت کا پیغام۔
- محفوظ ہونے کی جانچ کریں۔ کچھ جمع کرائیں، صفحہ ری لوڈ کریں، پھر کسی دوسرے براؤزر میں کھولیں۔ اگر ڈیٹا نظر نہ آئے تو وہ ڈیٹا بیس میں محفوظ نہیں ہوا۔
- رسائی چیک کریں۔ دوسرے صارف سے لاگ اِن کریں اور تصدیق کریں کہ آپ پہلے صارف کا ڈیٹا نہ دیکھ سکتے ہیں نہ بدل سکتے ہیں۔
- پبلش کریں، پھر لائیو URL پر دوبارہ جانچیں، کیونکہ پبلش شدہ ایپ آپ کے preview سے مختلف کنکشن استعمال کر سکتی ہے۔
عام غلطیاں
- براؤزر میں محفوظ کرنا اور سمجھنا کہ ڈیٹا بیس میں محفوظ ہو گیا۔ localStorage اس وقت تک ٹھیک لگتا ہے جب تک کوئی دوسری ڈیوائس پر ایپ نہ کھولے۔ ہمیشہ دوسرے براؤزر میں جانچیں۔
- فرنٹ اینڈ کوڈ میں کنکشن اسٹرنگ ڈالنا۔ فرنٹ اینڈ کوڈ کوئی بھی پڑھ سکتا ہے۔ اس سے انہیں آپ کے پورے ڈیٹا بیس تک رسائی مل جاتی ہے۔
- رسائی کی جانچ نہ ہونا۔ “میرے آرڈرز دکھاؤ” کو لاگ اِن صارف کے مطابق سرور پر فلٹر ہونا چاہیے، UI میں نہیں۔ AI سے بنی ایپس میں یہ سب سے عام سیکیورٹی خامی ہے؛ ہمارا سیکیورٹی چیک لسٹ اسے تفصیل سے بیان کرتی ہے۔
- خطرناک schema تبدیلیاں۔ “ٹیبل کا نام بدلو” یا “ساخت بدلو” کہنے سے ٹیبل ڈراپ اور دوبارہ بن سکتا ہے۔ جب حقیقی ڈیٹا موجود ہو تو کہیں “موجودہ قطاروں کو منتقل کرو، کچھ حذف نہ کرو”۔
- ڈیٹا بیس میں فائلیں رکھنا۔ تصاویر اور PDFs فائل اسٹوریج میں ہونی چاہئیں، اور ٹیبل میں صرف ان کا URL یا key ہو۔ دیکھیں فائل اپ لوڈز کیسے شامل کریں۔
- بیک اپ نہ ہونا۔ گاہک آنے سے پہلے جانیں کہ آپ کا پلیٹ فارم ڈیٹا کا بیک اپ کیسے لیتا ہے اور بحالی کیسے ہوتی ہے۔
چیک لسٹ
- ہر قسم کی چیز کا اپنا ٹیبل ہو، جس میں ID اور بنانے کا وقت ہو
- ضروری فیلڈز اور ٹائپس ڈیٹا بیس کے ذریعے نافذ ہوں
- کنکشن اسٹرنگ صرف سرور سائیڈ سیکرٹس میں ہو
- تمام ریڈز اور رائٹس سرور راؤٹس کے ذریعے ہوں
- ہر صارف صرف اپنی قطاریں پڑھ اور بدل سکے
- ڈیٹا ری لوڈ کے بعد بھی موجود رہے اور دوسرے براؤزر میں نظر آئے
- schema تبدیلیاں migrations سے ہوں اور موجودہ قطاریں محفوظ رہیں
- آپ جانتے ہوں کہ بیک اپ اور بحالی کیسے کام کرتے ہیں
- پبلش کے بعد لائیو ایپ کی جانچ ہو چکی ہو
Mythex میں ڈیٹا بیس شامل کرنا
Mythex پر ہر پروجیکٹ کو اپنا مخصوص Postgres ڈیٹا بیس مل سکتا ہے، Free اور Pro دونوں پر۔ عام طور پر آپ کو الگ “attach” بٹن دبانے کی ضرورت نہیں: چیٹ میں پوچھیں (“ویٹ لسٹ کی ای میلز ڈیٹا بیس میں محفوظ کرو”) یا /database لکھیں، اور کنکشن کی تفصیلات ورک اسپیس اور آپ کی پبلش شدہ ایپ میں شامل ہو جاتی ہیں۔ پروجیکٹ سیٹنگز میں دکھتا ہے کہ ڈیٹا بیس فعال ہے یا نہیں۔
ڈیٹا بیس 5 منٹ کی غیر فعالیت کے بعد سو جاتا ہے اور اگلی درخواست پر جاگ جاتا ہے۔ پبلش شدہ استعمال کا معاوضہ اس وقت کے لیے لیا جاتا ہے جب وہ واقعی جاگ رہا ہو، اور یہ اسی کریڈٹ بیلنس سے کٹتا ہے جو آپ ایپ بنانے کے لیے استعمال کرتے ہیں۔ اگر آپ پبلش کرنے کے بعد ڈیٹا بیس شامل کریں تو دوبارہ پبلش کریں تاکہ لائیو ایپ اسے اٹھا لے۔
تفصیل کے لیے docs میں Database اور CRUD ایپ بنانا دیکھیں۔ صارف کے ڈیٹا کی لاگ اِن والی جانب کے لیے اپنی ایپ میں لاگ اِن کیسے شامل کریں پڑھیں۔
سوالات
کیا میری ایپ کو ڈیٹا بیس کی ضرورت ہے؟
جیسے ہی آپ کی ایپ کو ملاقاتوں کے درمیان کچھ یاد رکھنا ہو یا صارفین کے درمیان ڈیٹا شیئر کرنا ہو، آپ کو ڈیٹا بیس کی ضرورت ہوگی، جیسے سائن اپس، آرڈرز، بکنگز، پوسٹس یا سیٹنگز۔ ایک سادہ سٹیٹک ویب سائٹ جو سب کو ایک ہی مواد دکھاتی ہے، اسے ڈیٹا بیس کی ضرورت نہیں ہوتی۔
چھوٹی ویب ایپ کے لیے کون سا ڈیٹا بیس استعمال کریں؟
Postgres جیسا ریلیشنل ڈیٹا بیس زیادہ تر چھوٹی ویب ایپس کے لیے محفوظ انتخاب ہے۔ یہ صارفین، آرڈرز، آپس کے تعلقات اور رپورٹنگ اچھی طرح سنبھالتا ہے، وسیع پیمانے پر دستیاب ہے، اور چھوٹے پیمانے پر آپ اسے شاذ ہی ناکافی پاتے ہیں۔
کیا ڈیٹا بیس کے بجائے براؤزر میں ڈیٹا محفوظ کیا جا سکتا ہے؟
localStorage جیسی براؤزر اسٹوریج صرف ایک ڈیوائس اور ایک براؤزر میں رہتی ہے، اور صارف اسے کسی بھی وقت صاف کر سکتا ہے۔ تھیم کے انتخاب جیسی ترجیحات کے لیے یہ ٹھیک ہے، لیکن ایسی چیز کے لیے نہیں جو آپ یا دوسرے صارفین بعد میں دیکھنا چاہیں۔
کیا Mythex میں ڈیٹا بیس شامل ہے؟
ہاں۔ Mythex پر ہر پروجیکٹ کو Free اور Pro دونوں پلانز میں اپنا مخصوص Postgres ڈیٹا بیس مل سکتا ہے۔ آپ چیٹ میں درخواست کریں یا /database کمانڈ لکھیں، اور کنکشن کی تفصیلات آپ کے ورک اسپیس اور پبلش شدہ ایپ میں خود بخود شامل ہو جاتی ہیں۔ اس کا استعمال اسی کریڈٹ بیلنس سے ادا ہوتا ہے جو ایپ بنانے کے لیے استعمال ہوتا ہے۔