مضمون کا ترجمہ کورس کے آغاز کے موقع پر تیار کیا گیا تھا۔
جھلکیاں:
- اسکیما تیار کرنا انتہائی ضروری ہے حالانکہ یہ MongoDB میں اختیاری ہے۔
- اسی طرح، اشاریہ جات کو آپ کے اسکیما اور رسائی کے نمونوں سے مماثل ہونا چاہیے۔
- بڑی اشیاء اور بڑی صفوں کے استعمال سے گریز کریں۔
- MongoDB سیٹنگز کے ساتھ محتاط رہیں، خاص طور پر جب بات سیکورٹی اور قابل اعتماد کی ہو۔
- MongoDB کے پاس کوئی استفسار آپٹیمائزر نہیں ہے، لہذا آپ کو استفسار کی کارروائیوں کو انجام دیتے وقت محتاط رہنا چاہیے۔
میں کافی عرصے سے ڈیٹا بیس کے ساتھ کام کر رہا ہوں، لیکن حال ہی میں مونگو ڈی بی کو دریافت کیا ہے۔ کچھ چیزیں ایسی ہیں جو میری خواہش ہے کہ میں اس کے ساتھ کام شروع کرنے سے پہلے جانتا۔ جب کسی شخص کو پہلے سے ہی کسی خاص شعبے میں تجربہ ہوتا ہے، تو اس کے پاس پہلے سے تصورات ہوتے ہیں کہ ڈیٹا بیس کیا ہیں اور وہ کیا کرتے ہیں۔ دوسروں کو سمجھنے میں آسانی پیدا کرنے کی امید میں، میں عام غلطیوں کی فہرست پیش کرتا ہوں۔
بغیر تصدیق کے MongoDB سرور بنانا
بدقسمتی سے، MongoDB بغیر تصدیق کے بطور ڈیفالٹ انسٹال ہے۔ مقامی طور پر رسائی حاصل کرنے والے ورک سٹیشن کے لیے، یہ عمل معمول کی بات ہے۔ لیکن چونکہ MongoDB ایک ملٹی یوزر سسٹم ہے جو بڑی مقدار میں میموری استعمال کرنا پسند کرتا ہے، اس لیے بہتر ہو گا کہ آپ اسے زیادہ سے زیادہ RAM والے سرور پر رکھیں، چاہے آپ اسے صرف ترقی کے لیے ہی استعمال کر رہے ہوں۔ پہلے سے طے شدہ پورٹ کے ذریعے سرور پر انسٹال کرنا مشکل ہو سکتا ہے، خاص طور پر اگر درخواست میں جاوا اسکرپٹ کوڈ کو عمل میں لایا جا سکتا ہے (مثال کے طور پر، $where
کے لئے ایک خیال کے طور پر
تصدیق کے کئی طریقے ہیں، لیکن سب سے آسان یوزر آئی ڈی/پاس ورڈ سیٹ کرنا ہے۔ اس خیال کا استعمال کریں جب آپ اس کی بنیاد پر فینسی تصدیق کے بارے میں سوچتے ہیں۔
حملے کی سطح کو MongoDB سے باندھنا نہ بھولیں۔
,
یا
. چونکہ ڈیٹا فائلوں کو معیاری MongoDB میں انکرپٹ نہیں کیا جاتا ہے، اس لیے MongoDB کو اس کے ساتھ چلانا سمجھ میں آتا ہے۔
سرکٹ تیار کرتے وقت خرابی
MongoDB اسکیما استعمال نہیں کرتا ہے۔ لیکن اس کا مطلب یہ نہیں ہے کہ اسکیم کی ضرورت نہیں ہے۔ اگر آپ دستاویزات کو بغیر کسی مستقل پیٹرن کے ذخیرہ کرنا چاہتے ہیں، تو انہیں ذخیرہ کرنا تیز اور آسان ہوسکتا ہے، لیکن بعد میں انہیں بازیافت کرنا مشکل ہوسکتا ہے۔
کلاسیکی مضمون "
ترتیب دینے کو مت بھولنا
ترتیب کو بھول جانا کسی بھی دوسری غلط ترتیب کے مقابلے میں زیادہ مایوسی اور زیادہ وقت ضائع کر سکتا ہے۔ بطور ڈیفالٹ MongoBD استعمال کرتا ہے۔
بڑی دستاویزات کے ساتھ مجموعے بنائیں
MongoDB 16MB تک کی بڑی دستاویزات جمع کرنے میں خوش ہے، اور
بڑی صفوں کے ساتھ دستاویزات بنانا
دستاویزات میں صفوں پر مشتمل ہوسکتا ہے۔ یہ بہتر ہے اگر صف میں عناصر کی تعداد چار ہندسوں کی تعداد سے دور ہو۔ اگر عناصر کو ایک صف میں کثرت سے شامل کیا جاتا ہے، تو یہ اس پر مشتمل دستاویز کو بڑھا دے گا اور اس کی ضرورت ہوگی۔
MongoDB نامی کچھ ہے
آپ سوچ سکتے ہیں کہ آپ سرنی اشاریہ سازی کے بغیر کر سکتے ہیں۔ بدقسمتی سے، اشاریہ جات کی کمی آپ کو دیگر مسائل کا باعث بن سکتی ہے۔ چونکہ دستاویزات کو شروع سے آخر تک اسکین کیا جاتا ہے، اس لیے صف کے آخر میں عناصر کی تلاش میں زیادہ وقت لگے گا، اور اس طرح کے دستاویز سے وابستہ زیادہ تر آپریشنز ہوں گے۔
یہ نہ بھولیں کہ مجموعے میں مراحل کی ترتیب اہمیت رکھتی ہے۔
ڈیٹا بیس سسٹم میں استفسار کے اصلاح کار کے ساتھ، آپ جو سوالات لکھتے ہیں وہ اس کی وضاحت ہوتی ہے کہ آپ کیا حاصل کرنا چاہتے ہیں، نہ کہ اسے کیسے حاصل کرنا ہے۔ یہ طریقہ کار ریستوراں میں آرڈر دینے سے مشابہت کے ساتھ کام کرتا ہے: عام طور پر آپ صرف ڈش آرڈر کرتے ہیں، اور باورچی کو تفصیلی ہدایات نہیں دیتے ہیں۔
MongoDB میں، آپ باورچی کو ہدایت دیتے ہیں۔ مثال کے طور پر، آپ کو یہ یقینی بنانا ہوگا کہ ڈیٹا گزرتا ہے۔ reduce
جتنی جلدی ممکن ہو پائپ لائن کا استعمال کرتے ہوئے $match
и $project
، اور چھانٹنا صرف اس کے بعد ہوتا ہے۔ reduce
، اور یہ کہ تلاش بالکل اسی ترتیب میں ہوتی ہے جس طرح آپ چاہتے ہیں۔ ایک استفسار آپٹیمائزر کا ہونا جو غیر ضروری کام کو ختم کرتا ہے، بہترین طریقے سے مراحل کو ترتیب دیتا ہے، اور جوائن کی قسموں کو منتخب کرتا ہے آپ کو خراب کر سکتا ہے۔ MongoDB کے ساتھ، آپ کے پاس سہولت کی قیمت پر زیادہ کنٹرول ہے۔
جیسے اوزار
فوری ریکارڈنگ کا استعمال
تیز رفتار لیکن کم قابل اعتماد ہونے کے لیے کبھی بھی MongoDB لکھنے کے اختیارات متعین نہ کریں۔ یہ موڈ "فائل اور بھول جاؤ" تیز لگتا ہے کیونکہ لکھنے سے پہلے کمانڈ واپس آ جاتا ہے۔ اگر ڈسک پر ڈیٹا لکھے جانے سے پہلے سسٹم کریش ہو جاتا ہے، تو یہ گم ہو جائے گا اور ایک متضاد حالت میں ختم ہو جائے گا۔ خوش قسمتی سے، 64 بٹ مونگو ڈی بی نے لاگنگ کو فعال کر دیا ہے۔
MMAPv1 اور WiredTiger سٹوریج انجن اس کو روکنے کے لیے لاگنگ کا استعمال کرتے ہیں، حالانکہ WiredTiger آخری مستقل تک بحال ہو سکتا ہے۔
جرنلنگ اس بات کو یقینی بناتی ہے کہ ڈیٹا بیس بحالی کے بعد ایک مستقل حالت میں ہے اور تمام ڈیٹا کو اس وقت تک برقرار رکھتا ہے جب تک کہ اسے جرنل میں نہیں لکھا جاتا۔ ریکارڈنگ کی فریکوئنسی پیرامیٹر کا استعمال کرتے ہوئے ترتیب دی گئی ہے۔
.
اندراجات کو یقینی بنانے کے لیے، یقینی بنائیں کہ کنفیگریشن فائل میں لاگنگ فعال ہے۔
، اور ریکارڈنگ کی فریکوئنسی اس معلومات کی مقدار کے مساوی ہے جسے آپ کھو سکتے ہیں۔
انڈیکس کے بغیر چھانٹنا
تلاش اور جمع کرتے وقت، اکثر ڈیٹا کو ترتیب دینے کی ضرورت ہوتی ہے۔ آئیے امید کرتے ہیں کہ یہ نتیجہ کو فلٹر کرنے کے بعد آخری مراحل میں سے کسی ایک پر کیا جائے گا تاکہ ترتیب دیے جانے والے ڈیٹا کی مقدار کو کم کیا جا سکے۔ اور اس صورت میں بھی، چھانٹنے کے لیے آپ کو ضرورت ہو گی۔
اگر کوئی مناسب انڈیکس نہیں ہے تو، MongoDB اس کے بغیر کام کرے گا۔ میں تمام دستاویزات کے کل سائز پر 32 ایم بی کی میموری کی حد ہے۔
انڈیکس سپورٹ کے بغیر تلاش کریں۔
تلاش کے سوالات SQL میں JOIN آپریشن کی طرح ایک فنکشن انجام دیتے ہیں۔ بہترین کام کرنے کے لیے، انہیں غیر ملکی کلید کے طور پر استعمال ہونے والی کلید کی قدر کا اشاریہ درکار ہے۔ یہ واضح نہیں ہے کیونکہ استعمال میں ظاہر نہیں ہوتا ہے۔ explain()
. اس طرح کے اشاریے لکھے گئے انڈیکس کے علاوہ ہیں۔ explain()
، جس کے نتیجے میں پائپ لائن آپریٹرز استعمال کرتے ہیں۔ $match
и $sort
، جب وہ پائپ لائن کے آغاز میں ملتے ہیں۔ اشاریہ جات اب کسی بھی مرحلے کا احاطہ کر سکتے ہیں۔
ملٹی اپ ڈیٹس استعمال کرنے سے آپٹ آؤٹ کرنا
طریقہ۔
آپ کے بیان کردہ پیرامیٹر پر منحصر ہے، کسی موجودہ دستاویز یا پوری دستاویز کا حصہ تبدیل کرنے کے لیے استعمال کیا جاتا ہے، مکمل تبدیلی تک
. جو بات اتنی واضح نہیں ہے وہ یہ ہے کہ یہ مجموعہ میں موجود تمام دستاویزات پر کارروائی نہیں کرے گا جب تک کہ آپ آپشن سیٹ نہ کریں۔
درخواست کے معیار پر پورا اترنے والے تمام دستاویزات کو اپ ڈیٹ کرنے کے لیے۔
ہیش ٹیبل میں کیز کے آرڈر کی اہمیت کو مت بھولنا
JSON میں، ایک آبجیکٹ سائز صفر یا اس سے زیادہ نام/قدر کے جوڑوں کے ایک غیر ترتیب شدہ مجموعہ پر مشتمل ہوتا ہے، جہاں نام ایک سٹرنگ ہے اور قدر ایک سٹرنگ، نمبر، بولین، نال، آبجیکٹ، یا سرنی ہے۔
بدقسمتی سے، BSON تلاش کرتے وقت آرڈر پر بہت زیادہ زور دیتا ہے۔ MongoDB میں، بلٹ ان اشیاء کے اندر چابیاں کی ترتیب { firstname: "Phil", surname: "factor" }
- یہ ایک جیسا نہیں ہے۔ { { surname: "factor", firstname: "Phil" }
. یعنی، اگر آپ ان کو تلاش کرنے کا یقین کرنا چاہتے ہیں تو آپ کو اپنے دستاویزات میں نام/قدر کے جوڑوں کی ترتیب کو ذخیرہ کرنا ہوگا۔
الجھن میں نہ پڑو "خالی" и "غیر متعینہ"
ویلیو "غیر متعینہ" کے مطابق، JSON میں کبھی درست نہیں تھا۔ $null
، جو ہمیشہ اچھا حل نہیں ہوتا ہے۔
استعمال کریں $limit()
بغیر $sort()
اکثر جب آپ MongoDB میں ترقی کر رہے ہوتے ہیں، تو نتیجہ کا صرف ایک نمونہ دیکھنا مفید ہوتا ہے جو کسی استفسار یا جمع سے واپس کیا جائے گا۔ اس کام کے لیے آپ کو ضرورت ہو گی۔ $limit()
، لیکن یہ کبھی بھی حتمی کوڈ میں نہیں ہونا چاہئے جب تک کہ آپ اسے پہلے استعمال نہ کریں۔ $sort
. یہ میکینک ضروری ہے کیونکہ بصورت دیگر آپ نتیجہ کی ترتیب کی ضمانت نہیں دے سکتے، اور آپ ڈیٹا کو قابل اعتماد طریقے سے نہیں دیکھ پائیں گے۔ نتیجہ کے اوپری حصے میں آپ کو ترتیب کے لحاظ سے مختلف اندراجات ملیں گے۔ قابل اعتماد طریقے سے کام کرنے کے لیے، استفسارات اور مجموعوں کو تعیین پسند ہونا چاہیے، یعنی جب بھی ان پر عمل کیا جائے تو ایک جیسے نتائج پیدا کریں۔ کوڈ جس پر مشتمل ہو۔ $limit()
، لیکن نہیں $sort
, تعیین پسند نہیں ہو گا اور اس کے نتیجے میں ایسی غلطیاں پیدا ہو سکتی ہیں جن کا سراغ لگانا مشکل ہو گا۔
حاصل يہ ہوا
MongoDB سے مایوس ہونے کا واحد طریقہ یہ ہے کہ اس کا براہ راست کسی دوسرے قسم کے ڈیٹا بیس سے موازنہ کیا جائے، جیسے کہ ڈی بی ایم ایس، یا کچھ توقعات کی بنیاد پر اسے استعمال کرنا ہے۔ یہ ایک کانٹے سے سنتری کا موازنہ کرنے جیسا ہے۔ ڈیٹا بیس سسٹم مخصوص مقاصد کی تکمیل کرتے ہیں۔ ان اختلافات کو اپنے لیے سمجھنا اور ان کی تعریف کرنا بہتر ہے۔ MongoDB ڈویلپرز پر ایک ایسے راستے پر دباؤ ڈالنا شرم کی بات ہوگی جس نے انہیں DBMS کے راستے پر مجبور کیا۔ میں پرانے مسائل کو حل کرنے کے نئے اور دلچسپ طریقے دیکھنا چاہتا ہوں، جیسے کہ ڈیٹا کی سالمیت کو یقینی بنانا اور ایسے ڈیٹا سسٹم بنانا جو ناکامی اور بدنیتی پر مبنی حملوں سے محفوظ ہوں۔
MongoDB کا ورژن 4.0 میں ACID ٹرانزیکشنلٹی کا تعارف ایک اختراعی طریقے سے اہم اصلاحات متعارف کرانے کی ایک اچھی مثال ہے۔ کثیر دستاویزی اور کثیر بیانیہ لین دین اب جوہری ہیں۔ تالے حاصل کرنے اور پھنسے ہوئے لین دین کو ختم کرنے کے ساتھ ساتھ تنہائی کی سطح کو تبدیل کرنے کے لیے درکار وقت کو ایڈجسٹ کرنا بھی ممکن ہے۔
مزید پڑھ:
ماخذ: www.habr.com