مضمون جو ترجمو ڪورس جي شروعات جي موقعي تي تيار ڪيو ويو
نمايان
- اهو انتهائي اهم آهي هڪ اسڪيما کي ترقي ڪرڻ جيتوڻيڪ اهو اختياري آهي MongoDB ۾.
- ساڳئي طرح، انڊيڪسس کي توهان جي اسڪيما ۽ رسائي جي نمونن سان ملائڻ گهرجي.
- وڏيون شيون ۽ وڏيون صفون استعمال ڪرڻ کان پاسو ڪريو.
- مونگو ڊي بي سيٽنگن سان محتاط رھو، خاص طور تي جڏھن اھو اچي ٿو سيڪيورٽي ۽ اعتبار جي.
- مونگو ڊي بي وٽ ڪو سوال آپٽمائزر نه آهي، تنهن ڪري توهان کي محتاط رهڻ گهرجي جڏهن سوال جي عملن کي انجام ڏيو.
مان تمام گهڻي عرصي کان ڊيٽابيس سان ڪم ڪري رهيو آهيان، پر تازو ئي مونگو ڊي بي دريافت ڪيو آهي. ڪجھ شيون آھن جيڪي مون کي ڄاڻڻ کان پھريان ان سان ڪم ڪرڻ شروع ڪيو. جڏهن ڪو ماڻهو اڳ ۾ ئي ڪنهن خاص فيلڊ ۾ تجربو رکي ٿو، انهن وٽ اڳ ۾ ئي تصور آهي ته ڊيٽابيس ڇا آهن ۽ اهي ڇا ڪندا آهن. ٻين لاءِ سمجھڻ ۾ آساني پيدا ڪرڻ جي اميد ۾، مان عام غلطين جي فهرست پيش ڪريان ٿو.
بغير تصديق جي مونگو ڊي بي سرور ٺاهڻ
بدقسمتي سان، MongoDB ڊفالٽ جي تصديق جي بغير نصب ٿيل آهي. مقامي طور تي رسائي واري ورڪ اسٽيشن لاءِ، هي عمل عام آهي. پر جيئن ته MongoDB هڪ ملٽي يوزر سسٽم آهي جيڪو ميموري جي وڏي مقدار کي استعمال ڪرڻ پسند ڪندو آهي، اهو بهتر ٿيندو جيڪڏهن توهان ان کي سرور تي وڌ کان وڌ ريم سان لڳايو، جيتوڻيڪ توهان صرف ان کي ترقي لاءِ استعمال ڪرڻ وارا آهيو. ڊفالٽ پورٽ ذريعي سرور تي انسٽال ڪرڻ مشڪل ٿي سگهي ٿو، خاص طور تي جيڪڏهن ڪو جاوا اسڪرپٽ ڪوڊ درخواست ۾ عمل ڪري سگهجي ٿو (مثال طور، $where
لاء هڪ خيال جي طور تي
تصديق جا ڪيترائي طريقا آھن، پر سڀ کان آسان آھي يوزر آئي ڊي/پاسورڊ سيٽ ڪرڻ. هن خيال کي استعمال ڪريو جڏهن توهان سوچيو ته فينسي تصديق جي بنياد تي
پنهنجي حملي واري مٿاڇري کي MongoDB تي پابند ڪرڻ نه وساريو
,
يا
. جيئن ته ڊيٽا فائلون معياري MongoDB ۾ انڪوڊ ٿيل نه آهن، اهو مونگو ڊي بي سان هلائڻ جو احساس آهي
سرڪٽ کي ترقي ڪرڻ دوران غلطي
MongoDB اسڪيما استعمال نٿو ڪري. پر هن جو مطلب اهو ناهي ته منصوبي جي ضرورت ناهي. جيڪڏهن توهان صرف دستاويزن کي ذخيرو ڪرڻ چاهيو ٿا بغير ڪنهن هڪجهڙائي واري نموني، انهن کي محفوظ ڪرڻ تڪڙو ۽ آسان ٿي سگهي ٿو، پر بعد ۾ انهن کي ٻيهر حاصل ڪرڻ ڏکيو ٿي سگهي ٿو.
کلاسي مضمون "
ترتيب جي ترتيب کي نه وساريو
ترتيب جي ترتيب کي وسارڻ ڪنهن ٻئي غلط ترتيب جي ڀيٽ ۾ وڌيڪ مايوسي ۽ وڌيڪ وقت ضايع ڪري سگهي ٿو. ڊفالٽ طور MongoBD استعمال ڪري ٿو
وڏن دستاويزن سان گڏ مجموعو ٺاهيو
MongoDB 16MB تائين وڏن دستاويزن کي گڏ ڪرڻ ۾ خوش آهي، ۽
وڏين صفن سان دستاويز ٺاهڻ
دستاويز arrays تي مشتمل ٿي سگھي ٿو. اھو بھترين آھي جيڪڏھن صف ۾ عناصر جو تعداد چار عددي نمبر کان پري آھي. جيڪڏهن عناصر هڪ صف ۾ بار بار شامل ڪيا ويندا آهن، اهو ان ۾ موجود دستاويز کي وڌائي ڇڏيندو ۽ ان جي ضرورت پوندي.
مونگو ڊي بي کي ڪجهه سڏيو ويو آهي
توهان شايد اهو سوچيو ته توهان بغير سرن جي ترتيب جي بغير ڪري سگهو ٿا. بدقسمتي سان، انڊيڪس جي کوٽ سبب توهان کي ٻين مسئلن جو سبب بڻائي سگھي ٿو. جيئن ته دستاويز شروع کان ختم ٿيڻ تائين اسڪين ڪيا ويندا آهن، صف جي آخر ۾ عناصر جي ڳولا ۾ گهڻي وقت لڳندي، ۽ اهڙي دستاويز سان لاڳاپيل اڪثر آپريشنز هوندا.
اهو نه وساريو ته هڪ مجموعي ۾ مرحلن جو حڪم اهم آهي
ڊيٽابيس سسٽم ۾ هڪ سوال آپٽمائزر سان، سوال جيڪي توهان لکندا آهيو انهن جي وضاحت آهي ته توهان ڇا حاصل ڪرڻ چاهيو ٿا، نه ته اهو ڪيئن حاصل ڪجي. هي ميکانيزم هڪ ريسٽورنٽ ۾ ترتيب ڏيڻ سان قياس سان ڪم ڪري ٿو: عام طور تي توهان صرف هڪ ڊش آرڊر ڪندا آهيو، ۽ ڪڪ کي تفصيلي هدايتون نه ڏيو.
MongoDB ۾، توهان ڪڪ کي هدايت ڪندا آهيو. مثال طور، توهان کي پڪ ڪرڻ جي ضرورت آهي ته ڊيٽا گذري ٿو reduce
جيترو جلدي ممڪن ٿي سگهي پائپ لائن ۾ استعمال ڪندي $match
и $project
، ۽ ترتيب صرف ان کان پوء ٿيندي آهي reduce
، ۽ اهو ته ڳولها انهي ترتيب ۾ ٿئي ٿي جيئن توهان چاهيو ٿا. هڪ سوال آپٽمائزر هجڻ جيڪو غير ضروري ڪم کي ختم ڪري ٿو، بهتر طريقي سان قدمن کي ترتيب ڏئي ٿو، ۽ شامل ٿيڻ جا قسم چونڊي ٿو توهان کي خراب ڪري سگهي ٿو. MongoDB سان، توهان وٽ سهولت جي قيمت تي وڌيڪ ڪنٽرول آهي.
اوزار وانگر
جلدي رڪارڊنگ استعمال ڪندي
ڪڏهن به مقرر نه ڪريو MongoDB لکڻ جي اختيارن کي تيز رفتار حاصل ڪرڻ لاءِ پر گهٽ قابل اعتماد. هن موڊ "فائل ۽ وساريو" تڪڙو لڳي ٿو ڇاڪاڻ ته لکڻ کان اڳ حڪم واپس ڪيو ويو آهي. جيڪڏهن سسٽم حادثو ٿيڻ کان اڳ ڊيٽا کي ڊسڪ ۾ لکيو ويو آهي، اهو گم ٿي ويندو ۽ هڪ متضاد حالت ۾ ختم ٿي ويندو. خوش قسمت، 64-bit MongoDB لاگنگ کي فعال ڪيو آهي.
MMAPv1 ۽ وائرڊ ٽائيگر اسٽوريج انجڻ ان کي روڪڻ لاءِ لاگنگ استعمال ڪن ٿا، جيتوڻيڪ وائرڊ ٽائيگر آخري مستقل تائين بحال ٿي سگھي ٿو.
جرنلنگ يقيني بڻائي ٿي ته ڊيٽابيس وصولي کان پوءِ هڪ جهڙي حالت ۾ آهي ۽ سڀني ڊيٽا کي برقرار رکي ٿو جيستائين اهو جرنل ڏانهن نه لکيو وڃي. رڪارڊنگ جي تعدد کي پيٽرولر استعمال ڪندي ترتيب ڏني وئي آهي
.
داخلائن جي پڪ ڪرڻ لاء، پڪ ڪريو ته لاگنگ کي ترتيب ڏيڻ واري فائل ۾ فعال ڪيو ويو آهي
، ۽ رڪارڊنگ جي تعدد معلومات جي مقدار سان مطابقت رکي ٿي جيڪا توهان وڃائي سگهو ٿا.
انڊيڪس کان سواءِ ترتيب ڏيڻ
جڏهن ڳولها ۽ گڏ ڪرڻ، اتي اڪثر ڊيٽا کي ترتيب ڏيڻ جي ضرورت آهي. اچو ته اميد رکون ته اهو آخري مرحلن مان هڪ تي ڪيو ويو آهي، نتيجن کي فلٽر ڪرڻ کان پوء ترتيب ڏنل ڊيٽا جي مقدار کي گھٽائڻ لاء. ۽ جيتوڻيڪ هن حالت ۾، توهان کي ترتيب ڏيڻ جي ضرورت پوندي
جيڪڏهن ڪو مناسب انڊيڪس نه آهي، MongoDB ان کان سواء ڪندو. سڀني دستاويزن جي ڪل سائيز تي 32 MB جي ياداشت جي حد آهي
ڳولا انڊيڪس سپورٽ کان سواءِ
ڳولا جا سوال 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 سان مايوس ٿيڻ جو واحد طريقو اهو آهي ته ان کي سڌو سنئون ڪنهن ٻئي قسم جي ڊيٽابيس سان، جهڙوڪ ڊي بي ايم ايس، يا ڪجهه اميدن جي بنياد تي استعمال ڪرڻ لاء. اهو هڪ نارنگي کي ڪانٽو سان ڀيٽڻ جهڙو آهي. ڊيٽابيس سسٽم خاص مقصدن جي خدمت ڪن ٿا. اھو بھترين آھي ته توھان پنھنجي لاءِ انھن فرقن کي سمجھو ۽ ان جي تعريف ڪريو. اهو مونگو ڊي بي ڊولپرز تي دٻاءُ وجهڻ لاءِ شرم جوڳو هوندو جنهن رستي تي انهن کي مجبور ڪيو DBMS رستي تي. مان پراڻن مسئلن کي حل ڪرڻ لاءِ نوان ۽ دلچسپ طريقا ڏسڻ چاهيان ٿو، جيئن ڊيٽا جي سالميت کي يقيني بڻائڻ ۽ ڊيٽا سسٽم ٺاهڻ جيڪي ناڪامي ۽ بدسلوڪي حملن لاءِ لچڪدار آهن.
MongoDB جو نسخو 4.0 ۾ ACID ٽرانزيڪشن جو تعارف هڪ جديد طريقي سان اهم سڌارن کي متعارف ڪرائڻ جو هڪ سٺو مثال آهي. ملٽي دستاويزن ۽ گھڻن بيانن جو معاملو ھاڻي ايٽمي آھي. اهو پڻ ممڪن آهي ته لاڪ حاصل ڪرڻ لاءِ گهربل وقت کي ترتيب ڏيو ۽ اڪيلائي واري ٽرانزيڪشن کي ختم ڪيو وڃي، انهي سان گڏ اڪيلائي جي سطح کي تبديل ڪرڻ.
وڌيڪ پڙهو:
جو ذريعو: www.habr.com